第26章 I/O およびファイルシステムパフォーマンスに影響を与える要因
ストレージおよびファイルシステムパフォーマンスに適した設定は、ストレージの目的より大きく左右されます。
I/O およびファイルシステムのパフォーマンスは、以下のいずれかの要因により影響を受ける可能性があります。
- データの書き込みまたは読み取りパターン
- 順次または無作為
- バッファーまたはダイレクト IO
- 基礎となるジオメトリーとのデータ調整
- ブロックサイズ
- ファイルシステムのサイズ
- ジャーナルサイズおよび場所
- アクセス時間の記録
- データの信頼性確保
- 事前にフェッチするデータ
- ディスク領域の事前割り当て
- ファイルの断片化
- リソースの競合
26.1. I/O およびファイルシステムの問題を監視および診断するツール リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Enterprise Linux 10 では、システムパフォーマンスを監視し、I/O、ファイルシステム、その設定に関連するパフォーマンス問題を診断するために、以下のツールを利用できます。
-
vmstatツールは、システム全体のプロセス、メモリー、ページング、ブロック I/O、割り込み、および CPU アクティビティーに関する報告を行います。管理者はこのツールを使用することで、パフォーマンスの問題が I/O サブシステムによるものかを判断しやすくなります。vmstatを使用した分析で、I/O サブシステムが原因でパフォーマンスが低下していることがわかった場合に、管理者はiostatツールを使用して原因となる I/O デバイスを判別できます。 -
iostatは、システムでの I/O デバイスの負荷を報告します。このツールはsysstatパッケージで提供されます。 -
blktraceは、I/O サブシステムでの時間の使用に関する詳細にわたる情報を提供します。同梱のユーティリティーであるblkparseは、blktraceからのロー出力を読み取り、blktraceが記録した入出力操作を人間が判読できるようにまとめます。 bttはblktrace出力を分析し、I/O スタックのエリアごとにデータが費やした時間を表示するので、I/O サブシステムのボトルネックを見つけやすくなります。このユーティリティーは、blktraceパッケージの一部として提供されます。blktraceメカニズムで追跡され、bttが分析する重要なイベントには、以下のようなものがあります。-
I/O イベント (
Q) のキュー -
ドライバーイベント (
D) への I/O のディスパッチ -
I/O イベントの完了 (
C)
-
I/O イベント (
-
iowatcherはblktrace出力を使用して、I/O を経時的にグラフ化できます。このツールは、ディスク I/O の論理ブロックアドレス (LBA)、1 秒あたりのスループット (メガバイト単位)、シーク数および I/O 操作に重点を置いています。これを使用することで、デバイスの演算回数の上限に到達するタイミングを判断しやすくなります。 BPF コンパイラーコレクション (BCC) は、
eBPF(extended Berkeley Packet Filter) プログラムの作成を容易にするライブラリーです。eBPFプログラムは、ディスク I/O、TCP 接続、プロセス作成などのイベントでトリガーされます。BCC ツールは、/usr/share/bcc/tools/ディレクトリーにインストールされます。以下のbcc-toolsは、パフォーマンスの分析に役立ちます。-
biolatencyは、ブロックデバイス I/O(ディスク I/O) のレイテンシーをヒストグラムにまとめています。これにより、デバイスのキャッシュヒット、キャッシュミス、レイテンシーアウトライナーの 2 つのモードなど、分散を調査できます。 -
biosnoopは、基本的なブロック I/O 追跡ツールで、各 I/O イベントの表示、プロセス ID および I/O レイテンシーの発行を行います。このツールを使用して、ディスク I/O パフォーマンスの問題を調査できます。 -
biotopは、カーネルのブロック I/O 操作に使用します。 -
filelifeツールは、stat()システムコールを追跡します。 -
fileslowerは、読み取りと書き込みが遅い同期ファイルを追跡します。 -
filetopは、プロセスによるファイルの読み取りと書き込みを表示します。 ext4slower、nfsslowerおよびxfsslowerは、特定のしきい値よりも操作速度の遅いファイルを表示するツールです (デフォルト値10ms)。詳細は、eBPF を使用したシステムパフォーマンスの分析 を参照してください。
-
-
bpftaceは、パフォーマンスの問題の分析に使用されるeBPFのトレース言語です。また、システムの監査用に BCC のような追跡ユーティリティーが含まれており、I/O のパフォーマンスの問題を調査するのに役立ちます。 以下の
SystemTapスクリプトは、ストレージまたはファイルシステムのパフォーマンスの問題の診断に役立ちます。-
disktop.stp: 5 秒ごとにディスクの読み取りまたは書き込みのステータスを確認し、その期間の上位 10 エントリーを出力します。 -
iotime.stp: 読み取り、書き込み操作に使用した時間、読み取りおよび書き込みバイト数を出力します。 -
traceio.stp: 確認された累積 I/O トラフィックに基づいて上位 10 の実行可能ファイルを秒単位で出力します。 -
traceio2.stp: 指定したデバイスに読み取りおよび書き込みが行われると、実行可能ファイル名とプロセス識別子を出力します。 -
inodewatch.stp: 指定したメジャー/マイナーデバイスで、指定の inode に対して読み取りまたは書き込みが行われるたびに、実行可能ファイル名とプロセス識別子を出力します。 -
inodewatch2.stp: 指定したメジャー/マイナーデバイスの指定の inode で属性が変更されるたびに、実行可能ファイル名とプロセス識別子、属性を出力します。
-
詳細は以下を参照してください。
-
システム上の
vmstat(8)、iostat(1)、blktrace(8)、blkparse(1)、btt(1)、bpftrace、およびiowatcher(1)man ページ - eBPF を使用したシステムパフォーマンス分析