【初心者向け】ファイルシステムのパフォーマンス可観測性ツール【５分で読める】

# ファイルシステムのパフォーマンス可観測性ツール

理解のために小咄形式でまとめました。

:::note info
システムパフォーマンス関連記事の目次
- [【初心者向け】システムパフォーマンス関連まとめ【それぞれ５分で読める】](https://qiita.com/nouernet/items/d3efe67e0f52a92e061d)
:::

**登場人物**
- **太郎（後輩）**：入社1年目の若手エンジニア。
- **花子（先輩）**：システムエンジニア歴3年の先輩。

**場面：オフィスの開発ルーム**
*太郎が `ファイルシステムのパフォーマンス可観測性ツール` に関する資料を見ながら、花子に質問する。*

**太郎**：「花子先輩、`ファイルシステムのパフォーマンスを監視` するための `パフォーマンス可観測性ツール` って、どんなものがありますか？」

**花子**：「いい質問ね！ `ファイルシステムのパフォーマンス可観測性ツール` は、 `I/O の状態やファイルのアクセスパターンを監視するため` に使われるわ。 `代表的なツール 10 種類` を紹介するわね。」

---

### **ファイルシステムのパフォーマンス可観測性ツール**
**花子**：「`パフォーマンス可観測性ツール` には、 `ファイルシステムの状態や I/O の動作を調査するため` の `10 の主要なツール` があるの。」

1. **mount**：マウント情報を確認
2. **free**：メモリとキャッシュの統計情報
3. **top**：システムの全体的なリソース使用状況
4. **vmstat**：CPU、メモリ、I/O の統計情報
5. **sar**：経時的なシステムパフォーマンスの監視
6. **slabtop**：カーネルスラブキャッシュの統計情報
7. **strace**：プロセスのシステムコールをトレース
8. **fatrace**：ファイルシステムオペレーションのトレース
9. **LatencyTOP**：システムのレイテンシを分析
10. **opensnoop**：ファイルのオープン操作を監視

---

#### **1. mount**
**花子**：「`mount` コマンドは、 `システムにマウントされているファイルシステムの一覧` を表示するのに使うわ。」

- **マウントされているファイルシステムの種類やオプションを確認できる。**
- **`mount | column -t` を使うと、見やすく表示できる。**

「これは `地図アプリで、現在地の周辺の建物情報を見る` のと似てるわね。」

---

#### **2. free**
**花子**：「`free` コマンドは、 `メモリとキャッシュの統計情報を表示するツール` よ。」

- **キャッシュやバッファの使用状況を確認できる。**
- **`free -h` を使うと、 `GB` や `MB` 単位でわかりやすく表示できる。**

「例えば `冷蔵庫の収納状況をチェックする` のと同じで、 `どれだけの空きスペースがあるか` を確認できるのよ。」

---

#### **3. top**
**花子**：「`top` は `システム全体のリソース使用状況をリアルタイムで監視するツール` よ。」

- **CPU やメモリ、ロードアベレージを確認できる。**
- **`top -o %CPU` や `top -o %MEM` で、ソートして表示可能。**

「これは `監視カメラで工場の稼働状況を見る` のと同じね。」

---

#### **4. vmstat**
**花子**：「`vmstat` は `CPU、メモリ、I/O の統計情報をリアルタイムで取得するツール` よ。」

- **`vmstat 1 5` を使うと、 `1秒ごとに5回の統計情報を表示` できる。**
- **CPUの使用率、スワップ、I/O の負荷を確認できる。**

「これは `電力メーターを見て、電気の使用状況を確認する` のと似てるわ。」

---

#### **5. sar**
**花子**：「`sar` は `システムのパフォーマンス情報を経時的に記録し、分析するツール` よ。」

- **`sar -u 1 5` で、 `1秒ごとの CPU 使用率を 5 回取得` できる。**
- **`sar -d` で、 `ディスクの I/O 負荷を分析` できる。**

「これは `天気予報の過去データを見る` のと同じで、 `過去のパフォーマンスを振り返ることができる` のよ。」

---

#### **6. slabtop**
**花子**：「`slabtop` は `カーネルスラブキャッシュの使用状況をリアルタイムで表示するツール` よ。」

- **カーネルが管理するキャッシュの詳細情報を取得できる。**
- **`slabtop -o` で、 `使用率の高いものをソート` できる。**

「これは `倉庫の在庫管理リストをリアルタイムで見る` のと同じね。」

---

#### **7. strace**
**花子**：「`strace` は `プロセスのシステムコールをトレースするツール` よ。」

- **`strace -p <PID>` で、特定のプロセスのシステムコールを監視。**
- **`strace -e open,read,write ./myapp` で、ファイル I/O の動作を分析。**

「これは `レシートを見て、どこで何を買ったのかをチェックする` のと似てるわ。」

---

#### **8. fatrace**
**花子**：「`fatrace` は `ファイルシステムのオペレーションをトレースするツール` よ。」

- **`fatrace -c` で、 `特定のプロセスのファイルアクセスを監視`。**
- **`fatrace -t` で、 `タイムスタンプ付きでファイルアクセスを記録`。**

「これは `セキュリティカメラの履歴を確認する` のと同じね。」

---

#### **9. LatencyTOP**
**花子**：「`LatencyTOP` は `システムのレイテンシをリアルタイムで分析するツール` よ。」

- **`LatencyTOP` を実行すると、プロセスごとの `遅延の原因` が表示される。**
- **I/O のボトルネックを特定するのに有効。**

「これは `レストランで、料理が遅れている原因を調べる` のと同じね。」

---

#### **10. opensnoop**
**花子**：「`opensnoop` は `ファイルのオープン操作を監視するツール` よ。」

- **`opensnoop -p <PID>` で、特定のプロセスの `ファイルオープンを監視`。**
- **`opensnoop` を実行すると、 `どのプロセスがどのファイルを開いたか` が表示される。**

「これは `ドアの開閉ログを記録する` のと同じね。」

---

### **まとめ**
**花子**：「これらの `パフォーマンス可観測性ツール` を活用することで、 `システムの状態をリアルタイムで監視し、パフォーマンスのボトルネックを特定` できるわ。」

**太郎**：「ありがとうございます！ `strace` を使って、 `アプリケーションの I/O 動作を調査` してみます！」

# 参考リンク

システムパフォーマンス関連記事の目次

- [【初心者向け】システムパフォーマンス関連まとめ【それぞれ５分で読める】](https://qiita.com/nouernet/items/d3efe67e0f52a92e061d)

システムパフォーマンス関連記事は、以下の書籍を参考に記述しています。

- [［改訂新版］プロのためのLinuxシステム構築・運用技術](https://www.amazon.co.jp/dp/B01LZURAPK)
- [改訂2版 ネットワークエンジニアの教科書](https://www.amazon.co.jp/dp/B07NXQ4TDV)
- [絵で見てわかるシステムパフォーマンスの仕組み](https://www.amazon.co.jp/dp/B00LHFOTF4)
- [詳解 システム・パフォーマンス 第2版](https://www.oreilly.co.jp/books/9784814400072/)
- [入門 モダンLinux](https://www.oreilly.co.jp/books/9784814400218/)
- [Linuxシステム管理](https://www.oreilly.co.jp/books/9784873113463/)