xfsで大量のファイルのメタ情報を取得するみたいなことをやりたい機会があった。この場合はIOよりも別のところにボトルネックが行きそうって感覚的には思ったがメトリクスの見方が不明だったので調べたメモを残す
extent_alloc 33041844 32847498 5218475 35199341 abt 1090510 1084735 456 0 blk_map 506817799 7990467 7420108 2427464 356917164 bmbt 2435655 2434993 0 0 dir 37908957 3027486 1696665 51169 trans 128273625 72450223 43750727 ig 249214424 143634046 35764650 1153127 0 log 25152497 13034972 0 13372978 0
各行の意味
1. **extent_alloc**: - `33041844`: 成功したブロック割り当ての数。 - `32847498`: 割り当てが失敗した回数。 - `5218475`: フリーブロックバイナリツリーの最上部のエントリ数。 - `35199341`: コヒーレントメタデータへのアクセス数。 2. **abt (allocation btree)**: - `1090510`: ABT (Allocation Btree) の新規作成数。 - `1084735`: ABT の削除数。 - `456`: ABT のバランスを取るための操作数。 - `0`: ABT のスキャン数。 3. **blk_map (block mapping)**: - `506817799`: ブロックのマッピング数。 - `7990467`: ブロックのマッピング削除数。 - `7420108`: ブロックのマッピングエラー数。 - `2427464`: ブロックマップの再計算数。 - `356917164`: フリーブロックバイナリツリーへのアクセス数。 4. **bmbt (block mapping btree)**: - `2435655`: BMBT (Block Mapping Btree) の新規作成数。 - `2434993`: BMBT の削除数。 - `0`: BMBT のスキャン数。 - `0`: BMBT のバランスを取るための操作数。 5. **dir (directory operations)**: - `37908957`: ディレクトリの読み取り数。 - `3027486`: ディレクトリの書き込み数。 - `1696665`: ディレクトリの検索数。 - `51169`: ディレクトリの削除数。 6. **trans (transactions)**: - `128273625`: 成功したトランザクションの数。 - `72450223`: 失敗したトランザクションの数。 - `43750727`: コミットされたトランザクションの数。 7. **ig (inode generation)**: - `249214424`: 新規 inode の生成数。 - `143634046`: inode の削除数。 - `35764650`: inode のクリーンアップ数。 - `1153127`: inode の更新数。 - `0`: inode のスキャン数。 8. **log (logging)**: - `25152497`: ログの書き込み数。 - `13034972`: ログの読み取り数。 - `0`: ログのスキャン数。 - `13372978`: ログのクリーンアップ数。 - `0`: ログのバランスを取るための操作数。
統計値のリセット
リセットする方法もある。
echo "1" > /proc/fs/xfs/stat
https://www.kernel.org/doc/Documentation/filesystems/xfs.txt