udev ルールが `DEVPATH=="/kernel"` で動作しないのはなぜですか?

udev ルールが `DEVPATH=="/kernel"` で動作しないのはなぜですか?

udevルールをテストするためにファイルを使用しています/etc/udev/rules.d/10-test.rules

この行は:

DEVPATH=="/devices/system/node/node0", ATTR{hugepages/hugepages-1048576kB/nr_hugepages}="4"

/sys/devices/system/node/node0/hugepages/hugepages-1048576kB/nr_hugepagesで作ってみてください4

しかし、この行は:

DEVPATH=="/kernel/mm", ATTR{hugepages/hugepages-1048576kB/nr_hugepages}="4"

影響はありません/sys/kernel/mm/hugepages/hugepages-1048576kB/nr_hugepages

次の行も同じです。

DEVPATH=="/kernel", ATTR{mm/hugepages/hugepages-1048576kB/nr_hugepages}="4"

(再起動しても動作しません。)

なぜ?

答え1

/sys/devices/system/node/node0システムの残りの部分とは無関係にオフラインに切り替えるコマンドを受け入れることができるNUMAハードウェアノードを表します。テーマとして使えるようにudev イベント、これは以下に基づいて行うことができます。udevルール

/sys/kernel/mmハードウェアに関する何も示していません。これはカーネルの一般的なメモリ管理パラメータのための場所です。カーネルが起動すると存在し、消えないため、udevイベントはそれを参照しません。 udevイベントがないと、udevルールはトリガーできません。

/sys/devicesあるいは、次のエントリにのみudevルールを関連付けることができると言うこともできます。/sys/kernelそれ以下ではありません/sys/devices

一般的なメモリ管理パラメータを操作するためにudevルールを使用することは非常に珍しいです。/etc/sysctl.conf[.d]カスタマイズはより標準的な場所になります。

関連情報