OpenVZコンテナにデータベースサーバー(MySQL)をセットアップしようとしていますが、それにいくつのCPUを割り当てる必要があるのか疑問に思っていました。私はそれをベンチマークすることにしました。 2つのOS/MySQLディストリビューションを比較し、1、2、3、および4つのCPUでどのように動作するかをテストしました。
最初のソフトウェア構成は次のとおりです。
二番目:
両方とも同じカーネルで実行されていました-2.6.32-openvz-042stab083.2-AMD64#1 SMP Fri Nov 8 17:59:25 MSK 2013 x86_64 GNU/Linux。
すべてのソフトウェアはパッケージからインストールされ、カスタム構成を調整することなく、すぐに使用できました。
ハードウェア:6GB RAM、1-4 CPU 3.5GHz。
ベンチマークには、次のシナリオでsysbenchを使用しました。
sysbench --test=oltp --oltp-table-size=1000000 --mysql-db=test --mysql-user=root --db-driver=mysql --mysql-password=d prepare
sysbench --test=oltp --oltp-table-size=1000000 --mysql-db=test --mysql-user=root --db-driver=mysql --mysql-password=d --max-time=60 --oltp-read-only=on --max-requests=0 --num-threads=8 run
どちらの場合も、テーブルのエンジンはInnoDBでした。
私が見ていた出力は、1秒あたりのトランザクション数でした。結果は非常に安定しており、誤差は1%未満でした。
結果は素晴らしく、CentOS/MySQL5.1では期待されていましたが、Debian /MySQL5.5では非常に奇妙でした。
ご覧のとおり、Debian上のMySQL5.5は複数のCPUを適切に利用できません。 2つのCPUを使用した場合のパフォーマンスは1を使用した場合よりも高くなりますが、CentOS /MySQL5.1よりも明らかに低くなります。さらに、2の上にCPUを追加するとダウンしますが、これは本当に奇妙なことです。
誰かがそこで何が起こっているのか説明できますか? CPUを追加すると、いったいなぜMySQLのパフォーマンスが低下するのでしょうか。
誰かの推測の泡を破裂させることはありませんが、これは MySQL 5.5のバグ です。
実行しているアーキテクチャについて最初に何も知らなくても、それは本当に主要な質問です。しかし、一般に、CPU容量、特に複数のマルチコアプロセッサをサポートするアーキテクチャを追加すると、バスのスループットに指数関数的な影響があります。展開されているバス帯域幅の制限にまたがる割り込みサイクルへの影響....パフォーマンスが発生した場合...アーキテクチャがボトルネックI/Oまたはビット/サイクルのいずれかになることを理解し、複数のCPUには複数のスレッドが必要であることを再度覚えておいてください.. FSBの速度に関係なく...ハードウェアが64ビットしかない場合、物理的な電気的接続は、同じクロックサイクル内の多くのコア間でこの制限を共有する必要があります...今すぐ停止して考えてください64ビットから256ビットのシステムボードにアップグレードすることのプラスの影響の1つは、オペラのスレッド化/保守にx1が費やされることを考えると、フルチルトでx3倍のスループットが得られる可能性があります。オーバーヘッド..ただし、通常の操作では、プロセッサ/オペレータが1つだけ必要な場合に、オーバーヘッドについて不快な現実を経験する可能性があります。バランスをとる行為、より具体的には、適切なコースに適した馬です。SteveoReedonextfriend @ live.co.uk
CPUを追加すると、より多くの操作が並行して実行されます。 RAMの数を増やしていない場合、特にテストしているソフトウェアのより太い(そして新しいものはほとんどが太い)バージョンを使用している場合、スワッピングが発生する可能性があります。