多くの場合、オンサイトのdebian-stableベースのアプリケーションのインストールは、仮想マシン(通常はVMware ESXi)で実行されます。一般的なケースでは、仮想化環境に対する可視性や影響力はなく、VMware vCenterクライアントや同等のものへのアクセスもありません。ここではVMwareに焦点を当てます。これは、私たちが目にする最も一般的な方法だからです。
私たちがしたいこと:
- お客様のVMware管理者に伝える:パフォーマンス基準X、Y、Zを満たしている限り、VMware ESX環境などでアプリケーションを実行できます。
- 実行中のシステムであっても、基準X、Y、Zが実際に継続的に満たされているかどうかを判断できます(たとえば、現在も)(アプリケーションを停止してベンチマークを実行することはできません。仮想環境は時間とともに変化します)。
- 基準X、Y、およびZが満たされた場合、十分なパフォーマンスでアプリケーションを実行するための適切な仮想HWリソースがあることを確信してください。
X、Y、Zとは何ですか?
パフォーマンスの問題がある場合、問題はアプリケーションではなく、仮想化環境にあることが何度もあります。たとえば、別の仮想マシンが大量のCPU、メモリ、またはディスクが実際に格納されているSANを使用している場合、アプリケーション以外のものが頻繁に使用します。現在、それを証明または反証する方法はありません。
理論的には、アプリケーションが遅い場合もあります... ;-)
パフォーマンスの問題の根本的な原因(仮想環境またはアプリケーション)をどのように判断しますか?
通常、CPU、メモリ、およびディスクI / Oのパフォーマンスの問題には3つの領域があります。
CPU
たとえばVMwareでは、管理者はMHzで表される予約と制限を指定できますが、たとえば、あるESXホストの512MHzは別のESXホストの512MHzとまったく同じです。
そして、私たちが実際にそれを得るかどうかをどのように測定しますか?アプリケーションの実行中に、おそらく4つのCPUで212%のCPU使用率になっていることがわかります。私たちのアプリケーションが多くのことをしているからか、同じホスト上の別のVMがCPUを集中的に使用してすべてのCPUを使用しているからでしょうか?
メモリー(バルーニング?)
たとえば16GB RAMを要求すると、多くの場合構成されますが、バルーニングのために、実際には4GBしか得られず、驚くことに、アプリケーションのパフォーマンスが低下します。
VMwareツールに現在のバルーニングについて尋ねることができますが、それはしばしば嘘をつく(または少なくとも不正確である)ことがわかりました。OSが合計16GBのRAMがあり、すべてのプロセスの常駐メモリ(RSS)の合計が4GBのRAMであると考える例を見てきましたが、VMwareツールからバルーンが0であると通知された場合でも2GBのRAMしかありません: -(
また、コピーオンライトメモリなどの共有RAMが簡単に存在する可能性があるため、RSSを一緒に追加するだけでは有効ではありません。そのため、すべてのプロセスからRSSを単純に差し引いて、RAMの空き容量を測定し、バルーニングを確実に検出することはできません。バルーニングのいくつかのケースを検出できますが、バルーニングが有効であるが、この方法では検出できない他のケースがあります。
ディスクI / O
ディスクの読み取りと書き込みの数、読み取りと書き込みのバイト数、およびIO待機%を経時的にグラフ化できると思います。しかし、それはディスクI / Oの正確な状況を教えてくれますか?すべてのCPUを使用する別のVMでビットコインマイナーが実行されている場合、CPUリソースが低下し、IO待機(%で測定されます)上がります。
要約すると、VMware管理者などに、どの言語を使用してどのようなパフォーマンスが必要かを、ポータブルで測定可能な方法で説明できますか?
"It runs fine with x, y, and z"
だけでは十分ではありません。アプリケーションに必要なものを顧客に正確に伝えることができる必要があります。それらがあなたにそれらのリソースを提供し、アプリケーションのパフォーマンスが悪い場合、問題はそう"What do we need from a resource perspective?"
ではありませんが"Why is it performing poorly even though the proper resources have been allocated?"