/sys/class/bdi/settingsはどのデバイスに対応しますか?

/sys/class/bdi/settingsはどのデバイスに対応しますか?

/sys/class/bdiデバイスの先読みやダーティページ比などの設定機能を提供します。これは、注:マイナーデバイス番号またはst_devファイルシステム設定値のbdi識別子で構成されています。私の/sys/class/bdi内容は次のとおりです。

$ ls /sys/class/bdi/
0:184  0:342  0:345  0:374  0:39  0:40  0:404  0:405  0:42  253:0  253:1  7:0  7:1  8:0  8:16  8:32  default

0:私の質問は:アイテムがどのデバイス/ファイルシステムに対応しているかをどうやって知ることができますか?ゼロ以外のキー番号を持つエントリはegにリストされているデバイスですが、/proc/devices他のエントリの目的は何であるかわかりません。

答え1

仮想ディレクトリから任意のBDI識別子を取得する必要がある場合は、/sys/class/bdi次のことをお勧めします。

$ sudo find /sys -type l -exec ls -la {} + | grep -E '(bdi|block)/8:32'
lrwxrwxrwx 1 root root 0 Aug 20 12:33 /sys/class/bdi/8:32 -> ../../devices/virtual/bdi/8:32
lrwxrwxrwx 1 root root 0 Aug 20 12:33 /sys/devices/pci0000:00/0000:00:1f.2/ata3/host2/target2:0:0/2:0:0:0/block/sdc/bdi -> ../../../../../../../../virtual/bdi/8:32
lrwxrwxrwx 1 root root 0 Aug 20 12:33 /sys/devices/virtual/bdi/8:32/subsystem -> ../../../../class/bdi
lrwxrwxrwx 1 root root  0 Aug 20 12:33 /sys/dev/block/8:32 -> ../../devices/pci0000:00/0000:00:1f.2/ata3/host2/target2:0:0/2:0:0:0/block/sdc

識別子が何であるかを知りたい場合は、8:32BDIがブロックデバイスに対応していることをすでに知っている場合は、仮想ディレクトリからリンクを読み取ることができます/sys/dev/block。例えば

$ readlink /sys/dev/block/8:32
../../devices/pci0000:00/0000:00:1f.2/ata3/host2/target2:0:0/2:0:0:0/block/sdc

これにより、デバイスが何であるかについての良いアイデアを得ることができます。この例では、sdc3番目のATAコネクタに接続されているデバイスです。

ただし、特定のデバイスのBDI設定に興味がある場合は、仮想ディレクトリから仮想ファイルを読み取ることができます。たとえば、次のようになります。

$ grep . /sys/block/sda/bdi/*
/sys/block/sda/bdi/max_ratio:40
/sys/block/sda/bdi/min_ratio:0
grep: /sys/block/sda/bdi/power: Is a directory
/sys/block/sda/bdi/read_ahead_kb:128
/sys/block/sda/bdi/stable_pages_required:0
grep: /sys/block/sda/bdi/subsystem: Is a directory

私はこれがほとんどの場合にも当てはまると思います。

$ readlink /sys/dev/*/8:32
../../devices/pci0000:00/0000:00:1f.2/ata3/host2/target2:0:0/2:0:0:0/block/sdc

シェルワイルドカード拡張を使用して、正しいデバイスクラスを自動的に見つけます。

関連情報