有没有办法/dev/ramX
在 Linux 中打开块设备的 IO 统计?我已经尝试过echo 1 > /sys/block/ram1/queue/iostat
,但没有成功。
请注意,除了底部的内存设备外,所有设备都有统计信息,因此性能测量工具如dool
无法测量 IO 速度:
# 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
模块)不会更新统计数据(*),我猜是出于效率原因。
如果您不介意小的开销,这里有一个解决方法:使用设备映射器在您的 ramdisk 上创建一个透明(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年但显然被忽视了