サーバーが常に最大で動作しないのはなぜですか?


12

これはしばらくの間私を悩ませてきた質問であり、それについて話しているものをオンラインで見つけることができないようです。VMware Hypervisor ESXiを実行しているサーバーがあります。仮想マシンを起動すると、通常2〜3分で起動します。それほど長い時間ではありませんが、瞬時ではありません。ただし、サーバーのパフォーマンスログを見ると、プロセッサ、RAM、またはディスクの使用率はいずれも約100%ではありません。通常、平均は60%から80%程度です。それで、サーバーが実行すべき作業がある場合、なぜ100%で実行しないのでしょうか。

いつでも、パフォーマンスを制限しているコンポーネントは100%で実行されるはずです。たとえば、非常に遅いハードドライブがある場合、ほぼ常に100%で実行されるはずです。したがって、サーバーが完全にアイドル状態でない限り、少なくとも1つの領域(プロセッサ、RAM、ディスク、およびネットワーク)は常に100%である必要があります。

なぜそうではないのですか?


systemdに基づいていない古いLinuxディストリビューションでは、起動を効率的に並列化できませんでした。* BSDは依然としてこれに苦しんでいます。最新のLinuxディストリビューションを起動して、違いを確認してください。
マイケルハンプトン

回答:


18

遅延が1つの理由になります。「ディスクが必要なデータを提供してから、他の処理を実行できるようになるまで」とデータが戻ってくるまでの時間差は、その間CPUをアイドル状態のままにします。

リソースはおそらく100%で実行されますが、非常に短い期間です。オペレーティングシステムの起動は、「何かを処理または決定し、ディスクから何かを取得し、メモリ内で何かを行い、デバイスで何かを行う」という一般的なパターンに従い、1秒間に何度も繰り返されます。したがって、2秒間に25%のディスクが表示される場合は、おそらく0.5秒間100%で実行されていて、残りの時間はアイドル状態になっていることを意味します。

EEAAが指摘したように、マルチコアシステムはこれをもう少し複雑にします。4つのスレッドを実行できるCPU上の単一のスレッドソフトウェアは、フルスピードで実行している場合に25%しかヒットしません。マルチスレッドソフトウェアであっても、データがハードドライブ、RAM、キャッシュ、CPUに(通常)流れる必要があるため、100%に達することはほとんどありません。そのパイプラインをフルに維持することは難しく、主にビデオエンコーディングなどの予測可能なワークロードで発生する傾向があります。この場合、オペレーティングシステムは読み取りパターンを監視し、必要になる前にデータを取得して、RAMのディスクキャッシュなどの適切なキャッシュに入れます。


16

あなたは非常に単純な方法でこれについて考えているので、間違った仮定を立てる原因になっています。

マルチコアシステムでは、CPU使用率を理解するために、プロセスの負荷がマルチスレッドであるかどうかを考慮し、複数のコアを活用するように設計する必要があります。そうでない場合、実行中のプロセスの組み合わせによっては、100%の使用率が表示されない場合があります。今まで。

次に、IOデバイスのパフォーマンスを考慮する必要があります。システムは、たとえば、デバイスが可能なIOpsの数をどのように知っていますか?そうではありません。監視するためのより意味のあるメトリックは、iowaitブート中の値(ブートプロセス中に取得するのが困難な場合があります)またはブート中のディスクキュー/レイテンシ(ハイパーバイザーから取得しやすいはずです)です。キューまたは遅延の急上昇が見られる場合、IOデバイスがパフォーマンスの問題の原因となっている可能性があります。


11

私は今、約20年間サーバーで作業しています。通常、コンポーネントが常に100%で実行されている場合、それは良いことではありません。

たとえば、ディスクにスワップしたくないが、完全にメモリを使い果たしたいSQLデータベースがあるとしましょう。

データベースが24GBで、OSが8GBを必要とする場合、32GBのRAMだけをマシンに割り当てたくないので、間違ったコード、DDOS、アプリケーションの大量使用など、多くの「問題」があります。サーバーに問題があることをどのように確認できますか?

データセンターに約2000台のサーバーがあり、それらすべてが約75%のCPUとRAMで実行されていることを確認します。CPUまたはRAMが85%に達したときに通知するアラート、および90%に達したときに通知するアラームもあります。


あなたはここで少し軌道に乗ったと思います。仮想マシンを実行していると言ったので、要求を取得してリソースを割り当てるときに実行されるデータベースサーバーとは非常に異なる一貫した負荷があります。パフォーマンスを制限する要因が何であれ、それらのリソースがどのように割り当てられるかではなく、私はもっと心配でした。しかし、答えてくれてありがとう!
カーネルスターズ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.