|
vmstatコマンドは、特定の時間間隔でのサーバーの状態値(サーバーのCPU使用率、メモリ使用量、仮想メモリスワップ、IO読み書き。 このコマンドはLinux/Unixを確認するためのお気に入りのコマンドで、一つはLinux/Unixがサポートされていること、もう一つは上位と比べて、各プロセスのCPU使用率やメモリ使用量だけでなく、マシン全体のCPU、メモリ、IO使用量が見られることです(使用状況が異なります)。 一般的に、vmstatツールの使用は2つの数値パラメータで行われます。最初のパラメータはサンプリングされる時間区間の数、単位は秒、2つ目のパラメータはサンプル数です。例えば:
root@ubuntu:~# VMstat 2 1 procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu---- R b SWPD 無料バフキャッシュ SI so bi bo in CS US SY ID WA 1 0 0 3498472 315836 3819540 0 0 0 1 2 0 0 0 100 0 2はサーバー状態が2秒ごとに1回ずつ収集されることを意味します。1はサーバー状態が1回だけ収集されることを意味します。 実際、申請プロセス中は一定期間監視し、監視したくない場合はvmstatを直接終了させることもできます。例えば:
root@ubuntu:~# VMSTAT 2 procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu---- R b SWPD 無料バフキャッシュ SI so bi bo in CS US SY ID WA 1 0 0 3499840 315836 3819660 0 0 0 1 2 0 0 0 100 0 0 0 0 3499584 315836 3819660 0 0 0 0 88 158 0 0 100 0 0 0 0 3499708 315836 3819660 0 0 0 2 86 162 0 0 100 0 0 0 0 3499708 315836 3819660 0 0 0 10 81 151 0 0 100 0 1 0 0 3499732 315836 3819660 0 0 0 2 83 154 0 0 100 0
つまり、vmstatは2秒ごとにデータを収集し、プログラムを終了するまで続きます。ここでは5回データを収集した後にプログラムを終了します。 では、コマンドを紹介します。次は各パラメータの意味を説明し始めましょう。 rつまり、キュー(つまりCPUに実際に割り当てられているプロセスの数)を実行し、私がテストしたサーバーは現在比較的アイドル状態で、プログラムが動いていないため、この数値がCPU数を超えるとCPUボトルネックが発生します。 これはトップの負荷にも関係しており、一般的に負荷が3を超えると高くなり、5を超えると負荷が高くなり、10を超えると正常ではなく、サーバーの状態は非常に危険です。 トップの負荷は、1秒あたりのランニングキューに似ています。 ランニングキューが大きすぎるとCPUが忙しいということで、通常はCPU使用率が高くなります。 bそれは「妨げられたプロセス」という意味で、これは大したことではありませんが、手続きは妨げられている、みんな理解しています。 南西太平洋地区使用される仮想メモリのサイズが0より大きい場合は、マシンの物理メモリが不足していることを意味します。もしそれがプログラムのメモリリークの原因でなければ、メモリをアップグレードするか、メモリを消費するタスクを別のマシンに移行する時期です。 無料 空いている物理メモリ、マシンメモリの容量は合計8G、残りは3415Mです。 バフ Linux/Unixシステムはディレクトリ内のコンテンツ、権限などのキャッシュを保存するために使われており、このマシンではおそらく3億台以上を占めています キャッシュキャッシュは開いたファイルを記憶し、バッファリングするために直接使われます。私は自分のマシンで3億以上を占めています(LinuxやUnixの巧妙な点は、空いている物理メモリの一部を使ってファイルやディレクトリをキャッシュし、プログラム実行の性能を向上させることです。プログラムがメモリを使うと、バッファやキャッシュは素早く使われます)。 ) シ この値が0より大きい場合は、物理メモリが不足しているか、メモリがリークされていることを意味します。 私のマシンは十分なメモリがあり、すべて問題ありません。 だから 仮想メモリに書き込まれるディスクのサイズは、この値が0より大きい場合、上記と同じです。 バイ ブロック機器1秒あたりのブロック数で、ここでのブロックデバイスはシステム上のすべてのディスクおよび他のブロックデバイスを指し、デフォルトのブロックサイズは1024バイトです。マシンにはIO操作がないので常に0ですが、大量のデータ(2〜3T)を処理するマシンでは140000/sに達することがあり、ディスクの書き込み速度はほぼ140M/sです ボー例えば、ブロックデバイスが1秒間に送信するブロック数、例えばファイルを読み取ったとき、boは0より大きいです。 BIとBOは一般的に0に近いです。そうでなければIOが頻繁すぎて調整が必要です。 においてCPUの1秒あたりの割り込み数(時間割り込みを含む) CS例えば、システム関数を呼び出すときにコンテキストを切り替える必要があることや、スレッド切り替えは1秒あたりのコンテキスト切り替え数ですプロセスコンテキスト例えば、Apacheやnginxのようなウェブサーバーでは、数千から数万の同時実行でのパフォーマンステストを行うことが一般的で、ウェブサーバーの選択プロセスはプロセスやスレッドのピーク、ストレステストで比較的小さな値を落とすことができ、プロセスやスレッドの数がより適切な値となります。 システムコールも同様で、システム関数が呼び出されるたびにコードがカーネル空間に入り、コンテキストスイッチングが発生し、非常にリソースを消費します。システム関数への頻繁な呼び出しは避けるべきです。 コンテキストスイッチが多すぎると、CPUの大部分がコンテキストスイッチングに無駄になってしまい、CPUが本格的な作業をする時間が減り、CPUが十分に活用できなくなります。これは推奨されません。 アメリカ利用者CPU時間以前、暗号化と復号が非常に頻繁に行われるサーバーで、米国のキューがほぼ100に達し、rの実行キューが80に達していたのを見たことがあります(マシンはストレステストを受けましたが、パフォーマンスは良くありませんでした)。 シシステムのCPU時間が長すぎる場合、頻繁な輸入入出力(IO)操作など、システムコールが長くなっていることを意味します。 身分証明書 アイドル中のCPU時間は一般的にid + us + sy = 100です。一般的にidはアイドルCPU使用率、usはユーザーのCPU使用率、syはシステムのCPU使用量です。 WTIOのCPU時間が待つ。
|