/dev/ramX 장치의 /proc/diskstats에 왜 모두 0이 있습니까?

/dev/ramX 장치의 /proc/diskstats에 왜 모두 0이 있습니까?

/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모듈)는 효율성상의 이유로 통계(*)를 업데이트하지 않습니다.

작은 오버헤드가 마음에 들지 않는다면 해결 방법은 다음과 같습니다. 장치 매퍼를 사용하여 램디스크에 투명한(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년이지만 명백히 무시됨

관련 정보