Linux sarコマンドによるシステム性能の詳細解析事例
2022-01-13 16:23:24
強力なsarコマンドは、システムのパフォーマンスを分析するための最も重要なツールの1つです。システムのCPU、ランキュー、ディスクの読み書き(I/O)、パーティション(スワップ領域)、メモリ、CPU割り込み、ネットワーク性能データなどを総合的に表示します。
sarコマンドの基本的な書式は次のとおりです。
[root@localhost ~]# sar [options] [-o filename] interval [count]
このコマンドフォーマットにおける各パラメータの意味は以下のとおりです。
- -o filename: filename はファイルの名前である。このオプションは、コマンドの結果がバイナリ形式でファイルに保存されることを示す。
- interval: サンプリング間隔を表します。このパラメータは手動で設定する必要があります。
- count: サンプル数。オプションのパラメータで、デフォルト値は1です。
- options: コマンドラインオプション。sarコマンドには多くのオプションが用意されているので、ここではすべてを紹介せず、表1に示すような一般的なオプションとそれに対応する機能のみを列挙します。
<テーブル <キャプション 表1 sarのコマンドラインオプションと機能 sarコマンドのオプション 機能紹介 -A システム上のすべてのリソースデバイス(CPU、メモリ、ディスク)の動作状態を表示します。 -u サンプリング時間中のシステム上の全CPUの負荷状況を表示します。 -P システム上の指定された CPU の現在の使用率を表示します。 -d サンプリング時間中のシステム上の全ハードディスクデバイスの使用状況を表示します。 -r プレゼンスサンプリング時間中のシステム内の使用量を表示します。 -b サンプル時間中のバッファの使用量を表示します。 -v inodeノード、ファイル、その他のカーネル・テーブルの統計情報を表示します。 -n ネットワークの動作状態を表示します。このオプションの後に、DEV(ネットワークインターフェイス情報を表示)、EDEV(ネットワークエラー統計を表示)、SOCK(ソケット情報を表示)、FULL(DEV、EDEV、SOCKを使った場合と同等)などを追加することができます。その他のオプションについては、man sarコマンドを実行することで確認できます。 -q 実行リスト内のプロセス数、プロセスサイズ、平均システム負荷などを表示します。 -R サンプリング時のプロセスの活性度を表示する。 -y サンプリング時のエンドデバイスのアクティビティを表示します。 -w サンプリング時間中のシステムスイッチングアクティビティの状態を表示する。
<ブロッククオート
sarコマンドで利用できるオプションや機能についての詳細は、man sarコマンドを実行することで確認することができます。
例1
システムCPUの負荷状況を、3秒ごとに5回カウントして照合したい場合は、次のコマンドを実行します。
[root@localhost ~]# sar -u 3 5
Linux 2.6.32-431.el6.x86_64 (localhost) 10/25/2019 _x86_64_ (1 CPU)
06:18:23 AM CPU %user %nice %system %iowait %steal %idle
06:18:26 AM all 12.11 0.00 2.77 3.11 0.00 82.01
06:18:29 AM all 6.55 0.00 2.07 0.00 0.00 0.00 91.38
06:18:32 AM all 6.60 0.00 2.08 0.00 0.00 0.00 91.32
06:18:35 AM all 10.21 0.00 1.76 0.00 0.00 0.00 88.03
06:18:38 AM all 8.71 0.00 1.74 0.00 0.00 0.00 89.55
Average: all 8.83 0.00 2.09 0.63 0.00 88.46
この出力における各リスト項目の意味は次のとおりです。
- user:ユーザーモードで消費されたCPU時間の割合です。
- nice: スケジューリングの優先順位を nice 経由で変更したプロセスによって、ユーザーモードで消費された CPU 時間の割合。
- system: システムモードで消費される CPU 時間の割合。
- iowait:アイドル状態の原因となるディスクI/Oの待ち時間に消費されたCPU時間の割合です。
- Xenなどのオペレーティングシステム仮想化技術を使用して、他の仮想CPUの計算を待つために費やされる時間の割合。
- %idle: CPUアイドル時間の割合。
[例2】です。]
システムディスクの読み書きの性能を確認したい場合は、以下のコマンドを実行します。
[root@localhost ~]# sar -d 3 5
Linux 2.6.32-431.el6.x86_64 (localhost) 10/25/2019 _x86_64_ (1 CPU)
06:36:52 AM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
06:36:55 AM dev8-0 3.38 0.00 502.26 148.44 0.08 24.11 4.56 1.54
06:36:55 AM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
06:36:58 AM dev8-0 1.49 0.00 29.85 20.00 0.00 1.75 0.75 0.11
06:36:58 AM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
06:37:01 AM dev8-0 68.26 6.96 53982.61 790.93 3.22 47.23 3.54 24.17
06:37:01 AM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
06:37:04 AM dev8-0 111.69 3961.29 154.84 36.85 1.05 9.42 3.44 38.43
06:37:04 AM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
06:37:07 AM dev8-0 1.67 136.00 2.67 83.20 0.01 6.20 6.00 1.00
Average: DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
Average: dev8-0 34.45 781.10 9601.22 301.36 0.78 22.74 3.50 12.07
この出力における各リストヘッダの意味は以下の通りです。
- tps: 1秒あたりの物理ディスクからのI/O数。複数の論理要求が1つのI/Oディスク要求にまとめられ、1回の転送サイズは不定であることに注意。
- rd_sec/s: 1秒あたりのセクタ読み出し回数です。
- wr_sec/s: 1秒間に書き込むセクタ数。
- avgrq-sz: デバイスI/O操作ごとの平均データサイズ(セクタ)。
- avgqu-sz: ディスク要求キューの平均長さ。
- await: ディスク操作が要求されてからシステムが処理を完了するまでの、要求キュー待ち時間を含む1要求あたりの平均消費時間(ミリ秒単位、1秒=1000ミリ秒)。
- svctm: システムが各要求を処理するために消費した平均時間。ただし、要求キューで消費された時間は除く。
- util:CPUに対するI/O要求の割合で、割合が大きいほど飽和していることを示す。
また、システムのメモリ使用量を確認したい場合は、sar -r 5 3、ネットワークの動作状況を確認したい場合は、sar -n DEV 5 3、といったコマンドを実行することができます。ネットワークの状態を確認したい場合は、sar -n DEV 5 3、などを実行します。その他のパラメータについては、ここでは具体的な例を挙げませんので、ご自身でテストして結果をご覧ください。
Linuxのsarコマンドでシステムのパフォーマンス事例を分析する方法は、今回で終了です。Linuxのsarコマンドの詳細については、スクリプトハウスの過去の記事を検索するか、以下の関連記事を引き続きご覧ください。
関連
-
Linuxでファイルパーミッションを与えるには?Linuxでファイルに実行可能なパーミッションを追加するためのヒント
-
virtualboxが仮想マシンを開けない場合は?linuxがvirtualboxにアクセスできない時の解決策
-
Centos7のインストールと展開無料のconfluence wikiの(知識ベース)詳細な操作手順
-
deepin20ターミナルでサーバーをリモート管理する方法
-
deepin20の不正確な時刻表示を調整する方法は?Deepinの時刻補正方法
-
Kali Linuxのデフォルトのひげメニューアイコンを変更する方法は?
-
Kali Linuxのマウスを左利き用に設定する方法は?Linuxマウス左利き操作選択方法
-
deepin20を使って、ドローイングボードで画像を開くには?deepinのお絵かき掲示板で画像を開く2つの方法
-
deepin20のデフォルトブラウザを設定するには?deepinにデフォルトブラウザを追加するためのヒント
-
ディープインシステムの画面解像度を設定する方法は?ディープインシステムの解像度を設定する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
deepin20のファイルを共有する方法を教えてください。Windowsでdeepinファイルを共有するためのヒント
-
deepin20にフォントを追加する方法は?deepin20にフォントをインストールする方法は?
-
Manjaro linuxでマウスの速度を設定する方法は?Manjaroのマウスのカーソル速度を設定する方法に関するヒント
-
Kali Linuxのマウスライトテーマを変更する方法は?マウスカーソルのテーマを変更するためのヒント
-
deepinシステムのバージョン番号を見るには?deepinシステムのバージョン情報を見るコツ
-
Linux NICがRTNETLINK answersというエラーで起動できない場合、どうすればよいですか?ファイルが存在するか?
-
deepin linuxからmacosx仮想マシンに直接ファイルをドラッグ&ドロップする方法は?
-
deepin depth systemはどのような内容でアップデートされましたか?deepinの最新版アップデート内容まとめ
-
deepin20のソフトをアンインストールする方法を教えてください。deepinのアプリケーションをアンインストールする2つの方法
-
sudo が sudo として表示される: setuid root である必要がある