1ソケット1コア構成のESXでWindowsServer 2k3R2 VM)上で実行される約100GBのOracleデータベースがあります。主要なクエリを処理する必要がある場合は常にそのクエリの期間中(50%〜75%のCPU使用率)「ペグ」され、場合によってはそれを使用するアプリケーションの機能が制限されます。最も一般的なケースは、大量のレポートを実行する場合、クエリだけでアプリケーションの速度が大幅に低下することです。クエリの実行中のパフォーマンス、タスクをキューに入れているかのように。私の質問は、VMを1ソケット、2コア構成に「アップグレード」するか大幅にこの「ペギング」の問題を改善しますか?
場合によります。 CPU使用率がユーザーによるものである場合、答えはおそらく「はい」です。 CPU使用率がiowaitによるものである場合は、ストレージシステムをアップグレードするまでお金を無駄にしています。ほとんどがシステムからのものである場合は、おそらく、割り込みリソースを大量に消費しているドライバーまたはハードウェアデバイスがあります(ネットワークカードなど)。
これらを仮想マシンにも追加する限り、CPU(カウント)のアップグレードにはパフォーマンス上の利点があると確信しています。ただし、オーバーコミットしないように注意してください。つまり、32 GBサーバー上に4つの仮想マシンがあり、各仮想マシンに25GBのRAMを割り当てたとします。
ただし、私の意見では、仮想環境で実行されているOracleを使用することを制限しています。
仮想化レイヤーのない専用サーバーでOracleを実行することを真剣に検討したいと思います。 Oracleは非常に獣であり、取得できるすべてのリソースを必要とします。また、少なくとも8つのディスクを備えたハードウェアraid10を使用すると、ディスクが多いほどよいでしょう。これはESXiサーバーにも当てはまります。