Linux で iostat コマンドを使用するチュートリアル

Linux で iostat コマンドを使用するチュートリアル

序文

運用・保守を行う人がスキルを持っていなければ、サーバーを操作するのに恥ずかしさを感じてしまうと言われています。幸い、私は運用保守担当者ではありません。私はずっと開発者だと主張してきました。しかし、現在の勤務先の運用保守担当者はあまりにも無能で、開発者だと主張する私に、自分で袖をまくってやらせようとします。まあ、仕方がありません。以前の注文を引き継いで、もう一度やり直すしかありません~~~

運用・保守においては、監視ディスクが欠かせません。ディスク監視に関しては、iostat コマンドについて話す必要があります。この記事では、私がかつてよく知っていた iostat コマンドの詳細な概要を説明します。

コマンドの詳細

Linux システムの iostat は、I/O 統計の略語です。iostat ツールは、システムのディスク操作アクティビティを監視します。ディスクアクティビティ統計のレポート機能があり、CPU 使用率もレポートします。 vmstat と同様に、iostat にも弱点があり、特定のプロセスの詳細な分析を実行できず、システム全体の状況のみを分析する点です。

iostat の一般的なコマンド形式は次のとおりです。

iostat [パラメータ] [時間] [回数]

コマンドパラメータの説明は次のとおりです。

-c CPU使用率を表示する
-d ディスク使用量を表示
-k K単位で表示
-m M単位で表示
-N ディスクアレイ(LVM)情報を表示する
-n NFSの使用状況を表示
-pは各ディスクの各パーティションの使用状況を報告できます
-t 端末とCPUの情報を表示する
-x 詳細情報を表示する

以下は、弊社のよく使用される使用方法の詳細な概要です。

使用事例

コマンド: iostat -x

説明: 2秒ごとに表示を更新し、3回表示します

出力:

[user1@Test_Server ~]$ iostat -x
Linux 3.10.0-693.2.2.el7.x86_64 (jellythink) 2019 年 1 月 5 日 _x86_64_ (1 CPU)

平均 CPU: %user %nice %system %iowait %steal %idle
  1.83 0.00 0.31 0.09 0.00 97.77

デバイス: rrqm/s wrqm/sr/sw/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
0.03 0.78 0.24 1.38 12.64 20.67 41.01 0.02 10.98 55.50 3.17 0.71 0.12

詳細な出力内容:

  • %user: CPUがユーザーモードになっている時間の割合
  • %nice: CPUがNICE値を持つユーザーモードになっている時間の割合
  • %system: CPUがシステムモードになっている時間の割合
  • %iowait: CPUが入力と出力の完了を待つのに費やす時間の割合
  • %steal: ハイパーバイザーが別の仮想プロセッサを維持している間に、仮想CPUが意図せず待機している時間の割合
  • %idle: CPUアイドル時間の割合

もちろん、iostat コマンドの目的は CPU を表示することではなく、ディスクのパフォーマンスを監視することです。

  • デバイス: デバイス名
  • rrqm/s: 1秒あたりにデバイスにマージされた読み取り要求の数
  • wrqm/s: 1秒あたりにデバイスにマージされた書き込み要求の数
  • r/s: 1秒あたりにディスクに対して開始された読み取り操作の数
  • w/s: 1秒あたりにディスクに開始された書き込み操作の数
  • rkB/s: 1秒あたりの読み取りバイト数
  • wkB/s: 1秒あたりKバイトの書き込み
  • avgrq-sz: デバイス I/O 操作あたりの平均データ サイズ
  • avgqu-sz: 平均 I/O キューの長さ
  • 待機: 各デバイス I/O 操作の平均待機時間 (ミリ秒単位)。通常、システム I/O 応答時間は 5 ミリ秒未満である必要があります。10 ミリ秒を超える場合は、比較的長い時間です。
  • r_await: 各読み取り操作に必要な平均時間。ハードディスク デバイスが操作を読み取る時間だけでなく、カーネル キューで待機する時間も含まれます。
  • w_await: 各書き込み操作に必要な平均時間。ハードディスク デバイスの書き込み時間だけでなく、カーネル キューでの待機時間も含まれます。
  • svctm: 各デバイス I/O 操作の平均サービス時間 (ミリ秒単位) (このデータは信頼できません)
  • %util: 1 秒間に I/O 操作に使用される時間の割合、つまり、IO によって消費される CPU の割合。通常、このパラメータが 100% の場合、デバイスがほぼフル稼働していることを意味します。

コマンド: iostat -d 2 3

出力:

[jelly@jellythink ~]$ iostat -d 2 3
Linux 3.10.0-693.2.2.el7.x86_64 (jellythink) 2019 年 1 月 5 日 _x86_64_ (1 CPU)

デバイス: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
1.62 12.64 20.67 337375593 551756524

デバイス: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
1.00 0.00 8.00 0 16

デバイス: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
0.00 0.00 0.00 0 0

詳細な出力内容:

  • tps: 1秒あたりのI/O数 (IOPS、ディスクへの連続読み取りと書き込みの合計)
  • kB_read/s: ディスクから1秒あたりに読み取られるデータのサイズ(KB/秒)
  • kB_wrtn/s: 1 秒あたりにディスクに書き込まれるデータのサイズ (KB/秒)
  • kB_read: ディスクから読み取られたデータの合計量(KB単位)
  • kB_wrtn: ディスクに書き込まれたデータの合計量(KB単位)

パフォーマンス監視指標

ここまで述べ、システム出力を見てきましたが、日常の運用と保守ではどのような分野に注意を払う必要があるのでしょうか。さて、この記事の要点についてお話ししましょう。このサーバーに IO パフォーマンスのボトルネックがあるかどうかを判断するには、どのような出力内容に注意を払うべきでしょうか。

  • %iowait: この値が高い場合、ディスク上に I/O ボトルネックがあることを意味します。
  • 待機: 通常、システム I/O 応答時間は 5 ミリ秒未満である必要があります。10 ミリ秒を超える場合は、長すぎます。
  • avgqu-sz: I/O 要求の圧力がディスク処理能力を超え続けると、この値が増加します。単一ディスクのキューの長さが連続して 2 を超える場合、通常、ディスクに I/O パフォーマンスの問題があると考えられます。ディスクがディスク アレイの仮想論理ドライブである場合、単一のハード ディスクの平均 I/O 待機キューの長さを取得するには、この論理ドライブを構成する実際の物理ディスクの数で値を割る必要があることに注意してください。
  • %util: 通常、このパラメータが 100% の場合、デバイスがほぼ最大容量で動作していることを意味します。

最後に、指標に注目するだけでなく、展開したビジネスと連動した分析も必要です。画像アクセス、データベース、メール サーバーなど、ランダム ディスクの読み取りと書き込みが頻繁に行われるビジネスでは、tps が重要なポイントになります。ビデオオンデマンドやファイル同期など、大量のデータブロックの転送を必要とする、頻繁な連続読み取りおよび書き込み操作を伴うサービスの場合、ディスク スループットに重点が置かれます。

要約する

これで iostat コマンドの概要は終了です。日々の運用・保守業務では、実際のシナリオに基づいた分析をさらに行う必要があります。ツールとして、iostat の基本的な使い方をマスターすることが基礎です。この記事を通じて、誰もが iostat コマンドの基本的な使い方をマスターできることを願っています。その後の昇華については、仕事でもっと使い、もっと探求し、もっとまとめる必要があります。

さて、以上がこの記事の全内容です。この記事の内容が皆さんの勉強や仕事に一定の参考学習価値を持つことを願っています。ご質問があれば、メッセージを残してコミュニケーションしてください。123WORDPRESS.COM をご愛顧いただきありがとうございます。

以下もご興味があるかもしれません:
  • Linux IOの詳細な紹介
  • Linux IO 多重化 epoll ネットワーク プログラミング
  • Linux のソケット IO モデルの興味深い説明
  • Linux の 5 つの IO モデルの詳細な紹介
  • Linux の高性能ネットワーク IO と Reactor モデルの分析

<<:  React で setInterval 関数を使用する例

>>:  And キーワードを使用した MySQL の複数条件クエリ ステートメント

推薦する

Vueモバイル端末に最適な適応ソリューションについての簡単な説明

序文: 最近の医療モバイル プロジェクトに基づいて、Vue はさまざまな画面のさまざまな画面サイズに...

3次元画像配置効果を実現する純粋なCSSのサンプルコード

1. 要素の幅/高さ/パディング/マージンのパーセンテージ基準要素の幅/高さ/パディング/マージンの...

Ubuntu での MySQL へのリモート ログインのインストールと設定に関するチュートリアル

この記事では、MySQLのインストールと設定のリモートログインチュートリアルを参考までに紹介します。...

Vue3のいくつかの利点についての簡単な説明

目次1. ソースコード1.1 モノレポ1.2 タイプスクリプト2. パフォーマンス2.1 ソースコー...

Vueはメニューナビゲーションを実装するためにelement-uiを使用します

この記事では、Element-uiを使用してメニューナビゲーションを実装するVueの具体的なコードを...

nginx で同時接続リクエストの数を制限する方法

導入同時接続数を制限するモジュールは http_limit_conn_module です。アドレス:...

フォーム入力ボックスに関するWebデザインのヒント

この記事では、Web デザインにおけるフォーム入力ボックスに関するヒントとコードをいくつか紹介します...

Vueモバイル端末の適応化問題の詳細説明

1. vue uiでプロジェクトを作成する 2. 基本設定項目を選択する 3. プロジェクトを実行す...

MySQL内部一時テーブルの具体的な使用法

目次連合テーブルの初期化ステートメントの実行連合の結果ユニオンオールグループ化十分なメモリステートメ...

Eclipse と IDEA 用に Tomcat サーバーを構成する方法

tomcat サーバーの構成誰もが Web について学習するときに、自分のツール用に Tomcat ...

MySQL のタイムスタンプと日付時刻のタイムゾーンの問題によって生じる DTS の落とし穴の詳細な説明

目次MySQL で現在の時刻を表現するにはどうすればよいでしょうか?結論は確認するピットMySQL ...

CSS3 オーバーフロープロパティの説明

1. オーバーフローOverflow はオーバーフロー(コンテナ)です。コンテンツがコンテナを越える...

MySQLの7種類のログの概要

MySQL には次のログ ファイルがあります。 1: 再実行ログ2: ロールバックログ(元に戻すログ...

DockerにRabbitMQを素早くインストールする方法

1. 画像を取得する #Webコントロールページを含むバージョンを指定します docker pull...