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 の複数条件クエリ ステートメント

推薦する

Nginx ロケーションマッチングルールの例

1. 文法 場所 [=|~|~*|^~|@] /uri/ { ... } 2. 説明上記の構文から、...

HTML のテキストエリアの改行問題の概要

最近、Textrea に転送したときに、データが本当に行ごとに保存できるかどうかという問題に遭遇しま...

MySQL はどのようにしてマルチバージョンの同時実行性を実現するのでしょうか?

目次MySQL マルチバージョン同時実行1. マルチバージョン同時実行制御1. 一貫した読み取り2....

CUDA8.0とCUDA9.0はUbuntu16.04で共存します

序文Github にある以前のコードには、CUDA 8.0 環境が必要なものもあります。初心者の場合...

Vueの監視プロパティの詳細な説明

目次Vue モニターのプロパティリスナープロパティとは何ですか?リスニングプロパティと計算プロパティ...

Vueモバイル端末は画面上で指をスライドさせる方向を判定する

vueモバイル端末は、画面上で指をスライドさせる方向を判断します。具体的な内容は次のとおりです。これ...

Windows 10 での MySQL 5.7.17 のインストールと設定方法のグラフィック チュートリアル

この記事では、最新バージョンの MySQL データベース、つまり MySQL 5.7.17 圧縮バー...

CentOS 環境で NFS リモート ディレクトリ マウントを使用する手順の紹介

目次1. NFS の概要2. NFS構築1. NFSサーバーの構築2. NFSクライアントの構築3....

Dockerコンテナの構築と実行のプロセスの詳細な説明

イメージをプルし、コンテナを作成してコンテナを実行するだけです。 docker run -d --r...

写真のプレビューとアップロード機能を実現するhtml+css+js

はじめに: Web ページを作成するときに、画像をアップロードする必要がある場合がよくあります。画像...

入力ファイルのカスタムボタンの美化(デモ)

以前にも同じような記事を書いたことがありますが、js スクリプトを使用しており、ファイルパスを表示で...

jsを使ってシンプルなディスククロックを実現する

この記事では、参考までに、シンプルなディスククロックを実装するためのjsの具体的なコードを紹介します...

モバイル端末におけるビューポートの具体的な使用法についての簡単な説明

目次1. 基本概念1.1 2種類のピクセル1.2 3つのビューポート2. ビューポート設定3. 1回...

Linux nohup はプログラムをバックグラウンドで実行し、表示します (nohup と &)

1. バックグラウンド実行一般的に、Linux 上のプログラムは .sh ファイル (./sh フ...

Eclipseを使用してMySQLデータベースに接続する方法を説明します

序文常にエラーが発生するため、MySQL データベースに接続するプロセスを記録します。接続プロセス1...