/dev/ramX デバイスの/proc/diskstatsになぜすべてゼロがあるのですか?

/dev/ramX デバイスの/proc/diskstatsになぜすべてゼロがあるのですか?

/dev/ramXLinuxでブロックデバイスのIO統計を有効にする方法はありますか?私はecho 1 > /sys/block/ram1/queue/iostat成功せずにこれを試しました。

参考までに、下部のメモリデバイスを除くすべてのデバイスに統計があるため、次のパフォーマンス測定ツールがあります。doolIO速度を測定できません。

# cat /proc/diskstats 
  11       0 sr0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  11       1 sr1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
   8       0 sda 723676 35000 88332842 15213728 1023996 4665548 516093800 245971648 0 17497453 262613130 0 0 0 0 45125 1427753
   8      16 sdb 160138 25031 9086236 1901857 5894107 1629435 99783746 263249749 0 34043114 273161200 0 0 0 0 319611 8009594
   8      17 sdb1 126 30 8994 751 9 0 24 117 0 862 869 0 0 0 0 0 0
   8      18 sdb2 159872 25001 9072882 1900962 5894094 1629435 99783722 263249569 0 34042604 265150532 0 0 0 0 0 0
 253       0 dm-0 2910 0 55490 64862 6575840 0 52901448 295198662 0 20973198 295263524 0 0 0 0 0 0
 253       1 dm-1 112625 0 3832882 2024582 103580 0 1755640 12405574 0 1639466 14430156 0 0 0 0 0 0
 253       2 dm-2 757922 0 88327794 16122171 5450438 0 516093800 1273579273 0 16577985 1289701444 0 0 0 0 0 0
 253       3 dm-3 729 0 805332 9620 58317 0 13217898 6701775 0 868402 6711395 0 0 0 0 0 0
 253       4 dm-4 68487 0 4373706 650891 766343 0 31908736 44931626 0 13503972 45582517 0 0 0 0 0 0
   7       0 loop0 741 0 32160 69 159 0 912 4296 0 4336 8536 6 0 6 10 45 4160
   1       0 ram0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
   1       1 ram1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
   1       2 ram2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
   1       3 ram3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
   1       4 ram4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
   1       5 ram5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
   1       6 ram6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
   1       7 ram7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
   1       8 ram8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
   1       9 ram9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
   1      10 ram10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
   1      11 ram11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
   1      12 ram12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
   1      13 ram13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
   1      14 ram14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
   1      15 ram15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

答え1

Ramdisk /dev/ram*(またはbrdモジュール)は、効率性のために統計(*)を更新しません。

小さなオーバーヘッドが気に入らない場合、回避策は次のとおりです。デバイスマッパーを使用して、RAMディスクに透明な(1:1)レイヤーを作成します。これにより、dmデバイスを介して統計にアクセスできます。

# ramsize=$(< /sys/block/ram0/size)
# dmsetup create ram0 --table "0 $ramsize linear /dev/ram0 0"
# dmsetup info ram0
(...)
Major, minor:      253, 6
(...)
# grep -Fw dm-6 /proc/diskstats

(*)パッチ提案2012年だが明らかに無視

関連情報