Linux のストレージ システム I/O スタックは、ファイル システム層 (ファイル システム層) 、汎用ブロック層 (汎用ブロック層)**、および **デバイス層 (デバイス) の 3 つの部分で構成されます。層)###。
このうち、一般ブロック層は、Linux ディスク I/O の中核です。ファイル システムやアプリケーションのブロック デバイスにアクセスするための上向きの標準インターフェイスを提供し、下向きにはさまざまな異種ディスク デバイスを統合ブロック デバイスに抽象化し、ファイル システムやアプリケーションによって送信される I/O に応答します。
この記事では、ディスク パフォーマンス メトリックとその表示方法について説明します。
使用率に関しては、I/O のサイズではなく、I/O があるかどうかのみが考慮されることに注意してください。つまり、使用率が 100% の場合でも、ディスクは新しい I/O 要求を受け入れることができます。
一般的に、アプリケーション用のサーバーを選択するときは、まずディスクの I/O パフォーマンスのベンチマークを実行して、ディスクのパフォーマンスを正確に評価し、アプリケーションのニーズを満たせるかどうかを判断する必要があります。もちろん、これには、
ランダム読み取り、シーケンシャル読み取り、ランダム書き込み、シーケンシャル書き込み##などのさまざまなアプリケーション シナリオを使用する必要があります。 # など。さまざまな I/O サイズ (通常は 512B ~ 1MB) のパフォーマンスをテストします。
ディスク I/O の観察、IOPS、Throughput など、さまざまな一般的なパフォーマンス メトリックを提供します。もちろん、これらのメトリクスは実際には /proc/diskstats から取得されます。
以下は、
: の出力の例です。
リーリー
上記の指標のうち、注目すべき点は次のとおりです。
%util
是我们前面提到的磁盘 I/O 使用情况r/s
和 w/s
是 IOPSrkB/s
和 wkB/s
是吞吐量r_await
和 w_await
是响应时间您可能已经注意到 iostat
不能直接获取磁盘的饱和度。事实上,通常没有什么简单的方法可以测量饱和度。但是,您可以将观察到的平均请求队列长度或完成读写请求的等待时间与基准测试(例如通过 fio)的结果进行比较,以综合评估磁盘饱和度。
除了每个磁盘的 I/O 情况,每个进程的 I/O 情况也是大家关注的重点。
上面提到的 iostat
只提供了观察磁盘的整体 I/O 性能数据。缺点是无法知道哪些进程正在读写磁盘。要观察进程的 I/O,还可以使用 pidstat
和 iotop
工具。
例如,要使用 pidstat
$ pidstat -d 1 13:39:51 UID PID kB_rd/s kB_wr/s kB_ccwr/s iodelay Command 13:39:52 102 916 0.00 4.00 0.00 0 rsyslogd
从 pidstat
的输出可以看出,它可以实时查看每个进程的 I/O 情况,这包括以下内容:
UID
) 和进程 ID (PID
)。kB_rd/s
),以 KB 为单位。kB_wr/s
),单位为KB。kB_ccwr/s
),以 KB 为单位。iodelay
),包括等待同步块(synchronized block)I/O 和换入块(swap-in block)I/O 完成的时间,以时钟周期为单位。除了使用 pidstat
实时查看进程磁盘 I/O 外,还有一个磁盘性能分析的常用方法是根据 I/O 大小对进程进行排序。为此,我推荐 iotop
工具。它是一个类似于 top
的工具,您可以按 I/O 大小对进程进行排序,并找到具有更大 I/O 的进程。
$ iotop Total DISK READ : 0.00 B/s | Total DISK WRITE : 7.85 K/s Actual DISK READ: 0.00 B/s | Actual DISK WRITE: 0.00 B/s TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND 15055 be/3 root 0.00 B/s 7.85 K/s 0.00 % 0.00 % systemd-journald
从该输出可以看到,前两行分别代表进程的磁盘读写总大小和磁盘的实际读写总大小。由于缓存、缓冲区、I/O 合并等因素,它们可能不相等。
剩下的部分从各个角度代表了进程的 I/O 情况,包括 线程 ID、I/O 优先级、每秒磁盘读取大小、每秒磁盘写入大小、换入百分比和等待 I/O 时钟百分比。
在本文中,我介绍了 Linux 磁盘 I/O 的性能指标和查看性能工具。我们通常使用 IOPS、吞吐量、利用率、饱和度和响应时间等几个指标来评估磁盘的 I/O 性能。
可以使用 iostat
获取磁盘的 I/O 情况,也可以使用 pidstat
、iotop
等观察进程的 I/O 情况。但在分析这些性能指标时,要注意结合读写比率、I/O 类型、I/O 大小等综合分析。
以上がLinux ディスク I/O パフォーマンスを監視する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。