ホームページ  >  記事  >  システムチュートリアル  >  Linux ディスク I/O パフォーマンスを監視する方法

Linux ディスク I/O パフォーマンスを監視する方法

WBOY
WBOY転載
2024-02-15 09:54:03769ブラウズ

Linux のストレージ システム I/O スタックは、ファイル システム層 (ファイル システム層) 汎用ブロック層 (汎用ブロック層)**、および **デバイス層 (デバイス) の 3 つの部分で構成されます。層)###。

このうち、

一般ブロック層は、Linux ディスク I/O の中核です。ファイル システムやアプリケーションのブロック デバイスにアクセスするための上向きの標準インターフェイスを提供し、下向きにはさまざまな異種ディスク デバイスを統合ブロック デバイスに抽象化し、ファイル システムやアプリケーションによって送信される I/O に応答します。

この記事では、ディスク パフォーマンス メトリックとその表示方法について説明します。

如何监测 Linux 的磁盘 I/O 性能

Linux ディスク パフォーマンス インジケーター

ディスクのパフォーマンスを測定する場合、使用率、飽和度、IOPS、スループット、応答時間という 5 つの一般的な指標について言及することがよくあります。これら 5 つの指標は、ディスクのパフォーマンスを測定するための基本的な指標です。

  1. Utilization: ディスクが I/O を処理する時間の割合。過度の使用率 (80% 以上など) は、通常、ディスク I/O にパフォーマンスのボトルネックがあることを意味します。
  2. Saturation: ディスクが I/O を処理する際のビジー度を指します。過飽和は、ディスクに深刻なパフォーマンスのボトルネックがあることを意味します。飽和が 100% になると、ディスクは新しい I/O リクエストを受け入れることができなくなります。
  3. IOPS (1 秒あたりの入力/出力) : 1 秒あたりの I/O リクエストの数を指します。
  4. スループット: 1 秒あたりの I/O リクエストのサイズ。
  5. 応答時間 (応答時間): I/O リクエストを送信してから応答を受信するまでの間隔を指します。

使用率に関しては、I/O のサイズではなく、I/O があるかどうかのみが考慮されることに注意してください。つまり、使用率が 100% の場合でも、ディスクは新しい I/O 要求を受け入れることができます。

一般的に、アプリケーション用のサーバーを選択するときは、まずディスクの I/O パフォーマンスのベンチマークを実行して、ディスクのパフォーマンスを正確に評価し、アプリケーションのニーズを満たせるかどうかを判断する必要があります。

もちろん、これには、

ランダム読み取りシーケンシャル読み取りランダム書き込みシーケンシャル書き込み##などのさまざまなアプリケーション シナリオを使用する必要があります。 # など。さまざまな I/O サイズ (通常は 512B ~ 1MB) のパフォーマンスをテストします。

ディスク I/O の観察

最初に観察する必要があるのは、各ディスクの使用状況です。 iostat は、最も一般的に使用されるディスク I/O パフォーマンス観察ツールです。ディスクごとの

Utilization

IOPSThroughput など、さまざまな一般的なパフォーマンス メトリックを提供します。もちろん、これらのメトリクスは実際には /proc/diskstats から取得されます。 以下は、

iostat

: の出力の例です。 リーリー 上記の指標のうち、注目すべき点は次のとおりです。

  • %util 是我们前面提到的磁盘 I/O 使用情况
  • r/sw/s 是 IOPS
  • rkB/swkB/s 是吞吐量
  • r_awaitw_await 是响应时间

您可能已经注意到 iostat 不能直接获取磁盘的饱和度。事实上,通常没有什么简单的方法可以测量饱和度。但是,您可以将观察到的平均请求队列长度完成读写请求的等待时间基准测试(例如通过 fio)的结果进行比较,以综合评估磁盘饱和度。

进程 I/O 观察

除了每个磁盘的 I/O 情况,每个进程的 I/O 情况也是大家关注的重点。

上面提到的 iostat 只提供了观察磁盘的整体 I/O 性能数据。缺点是无法知道哪些进程正在读写磁盘。要观察进程的 I/O,还可以使用 pidstatiotop 工具。

例如,要使用 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 情况,这包括以下内容:

  • 用户 ID (UID) 和进程 ID (PID)。
  • 每秒读取的数据大小 (kB_rd/s),以 KB 为单位。
  • 每秒发出的写请求数据的大小(kB_wr/s),单位为KB。
  • 每秒取消写入请求的数据大小 (kB_ccwr/s),以 KB 为单位。
  • 块 I/O 延迟 (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 情况,包括 线程 IDI/O 优先级每秒磁盘读取大小每秒磁盘写入大小换入百分比等待 I/O 时钟百分比

结论

在本文中,我介绍了 Linux 磁盘 I/O 的性能指标和查看性能工具。我们通常使用 IOPS吞吐量利用率饱和度响应时间等几个指标来评估磁盘的 I/O 性能。

可以使用 iostat 获取磁盘的 I/O 情况,也可以使用 pidstatiotop 等观察进程的 I/O 情况。但在分析这些性能指标时,要注意结合读写比率I/O 类型I/O 大小等综合分析。

以上がLinux ディスク I/O パフォーマンスを監視する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はlxlinux.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。