다양한 도구를 사용하여 현재 시스템을 통해 흐르는 디스크 I / O의 볼륨을 측정 할 수 있습니다 (예 : iotop
및 iostat
). 디스크가 적은 양만으로도 많은 것을 찾고 있는지 쉽게 감지 할 수 있는지 궁금합니다. I / O
나는 그것을 사용 하여이 정보를 추출 blktrace
한 다음 해독 할 수 btt
있지만 다소 다루기 힘들고 더 간단한 대안이 있기를 바랐습니까?
답변
결과의 비율 (rkB/s + wkB/s)/%util
은 iostat -x
다음과 같은 통찰력을 제공합니다.
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 0.04 3.65 7.16 6.37 150.82 212.38 53.71 0.03 1.99 0.82 3.31 0.76 1.03
이 비율이 디스크 탐색과 정확히 일치하는지 잘 모르겠습니다. 그러나 디스크 사용량이 많고 처리량이 많지 않다면 디스크를 찾는 것이 좋습니다. 그러나 보장되지는 않습니다. 손상된 디스크는 때때로 높은 활용도를 보이며 처리량이 거의 없습니다. 그러나 그것은 적어도 지표입니다.
iostat -x 5
업데이트 간격을 지정 하기 위해 iostat에 숫자를 제공 할 수도 있습니다 (예 🙂 . 그렇게하면 지속적으로 모니터링 할 수 있습니다.
답변
이러한 유형의 정보를 실시간으로 또는 일정 기간 동안 표시하는 도구를 찾고 있는지 확실하지 않지만 액세스되는 디스크의 실시간 측면을 보여주는 두 가지 도구가 있습니다.
nmon
당신은 그렇게 호출합니다 nmon
. 그런 다음 j(파일 시스템)을 누른 다음 d(디스크 I / O 그래프 D = 통계) 를 누르십시오 . 자세한 내용은 내장 도움말 ( h)을 참조하십시오.
$ nmon
┌nmon─13g─────────────────────Hostname=manny────────Refresh= 2secs ───11:15.32─────────────────────────────────────────────────────┐
│ Filesystems ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────│
│Filesystem SizeMB FreeMB %Used Type MountPoint │
│v/mapper/ubuntu-root 465389.0 457483.9 1.7 ext4 / │
│/proc proc not a real filesystem │
│/sys sysfs not a real filesystem │
│/sys/fs/fuse/connections fusectl not a real filesystem │
│/sys/kernel/debug debugfs not mounted │
│/sys/kernel/security security not a real filesystem │
│/dev devtmpfs not a real filesystem │
│/dev/pts devpts not a real filesystem │
│tmpfs 740.5 739.4 0.1 tmpfs /run │
│none 5.0 5.0 0.0 tmpfs /run/lock │
│none 1851.2 1849.8 0.1 tmpfs /run/shm │
│none 100.0 99.9 0.1 tmpfs /run/user │
│/dev/sda1 910.9 606.5 33.4 ext2 /boot │
│/run/rpc_pipefs rpc_pipe fstatfs returned zero blocks!! │
│/run/user/emma/gvfs fuse.gvf not mounted │
│/run/user/emily/gvfs fuse.gvf not mounted │
│ Disk I/O ──/proc/diskstats────mostly in KB/s─────Warning:contains duplicates─────────────────────────────────────────────────────│
│DiskName Busy Read WriteMB|0 |25 |50 |75 100| │
│sda 100% 0.0 66.4|RWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW> │
│sda1 0% 0.0 0.0|> | │
│sda2 0% 0.0 0.0|> | │
│sda5 100% 0.0 66.4|RWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW> │
│dm-0 100% 0.0 48.0|RWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW> │
│dm-1 0% 0.0 0.0| > | │
│Totals Read-MB/s=0.0 Writes-MB/s=180.9 Transfers/sec=363.2 │
│──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────│
내가 접한 또 다른 도구는 적어도 디스크 I / O의 라이브 뷰입니다 atop
.
$ atop
ATOP - grinchy 2013/08/23 11:10:58 ------ 10s elapsed
PRC | sys 2.18s | user 26.26s | #proc 315 | #trun 5 | #tslpi 764 | #tslpu 1 | #zombie 0 | #exit 1 |
CPU | sys 22% | user 264% | irq 0% | idle 110% | wait 4% | guest 0% | curf 1.20GHz | curscal 44% |
cpu | sys 5% | user 76% | irq 0% | idle 19% | cpu003 w 0% | guest 0% | curf 1.20GHz | curscal 44% |
cpu | sys 5% | user 67% | irq 0% | idle 26% | cpu001 w 2% | guest 0% | curf 1.20GHz | curscal 44% |
cpu | sys 5% | user 62% | irq 0% | idle 31% | cpu000 w 1% | guest 0% | curf 1.20GHz | curscal 44% |
cpu | sys 7% | user 58% | irq 0% | idle 34% | cpu002 w 1% | guest 0% | curf 1.20GHz | curscal 44% |
CPL | avg1 3.83 | avg5 4.59 | avg15 4.76 | | csw 54101 | intr 45315 | | numcpu 4 |
MEM | tot 7.6G | free 194.3M | cache 495.5M | dirty 2.7M | buff 38.9M | slab 86.7M | | |
SWP | tot 5.7G | free 5.5G | | | | | vmcom 12.4G | vmlim 9.5G |
LVM | nchy-lv_home | busy 11% | read 1 | write 524 | KiB/w 3 | MBr/s 0.00 | MBw/s 0.20 | avio 2.05 ms |
LVM | nchy-lv_root | busy 1% | read 0 | write 7 | KiB/w 4 | MBr/s 0.00 | MBw/s 0.00 | avio 9.00 ms |
DSK | sda | busy 11% | read 1 | write 109 | KiB/w 19 | MBr/s 0.00 | MBw/s 0.20 | avio 10.3 ms |
NET | transport | tcpi 72 | tcpo 118 | udpi 15 | udpo 5 | tcpao 11 | tcppo 0 | tcprs 0 |
NET | network | ipi 87 | ipo 123 | ipfrw 0 | deliv 87 | | icmpi 0 | icmpo 0 |
NET | wlan0 ---- | pcki 88 | pcko 123 | si 34 Kbps | so 19 Kbps | erri 0 | erro 0 | drpo 0 |
PID RUID EUID THR SYSCPU USRCPU VGROW RGROW RDDSK WRDSK ST EXC S CPUNR CPU CMD 1/4
3649 saml saml 34 0.33s 11.98s 0K 1752K 4K 2828K -- - R 2 122% chrome
10399 saml saml 4 0.14s 3.08s 5120K -12.8M 0K 0K -- - S 2 32% chrome
특히 LVM 및 DSK 활동을 보여주는 다음 행은 다음과 같습니다.
LVM | nchy-lv_home | busy 11% | read 1 | write 524 | KiB/w 3 | MBr/s 0.00 | MBw/s 0.20 | avio 2.05 ms |
LVM | nchy-lv_root | busy 1% | read 0 | write 7 | KiB/w 4 | MBr/s 0.00 | MBw/s 0.00 | avio 9.00 ms |
DSK | sda | busy 11% | read 1 | write 109 | KiB/w 19 | MBr/s 0.00 | MBw/s 0.20 | avio 10.3 ms |
iostat
일정 기간 동안 데이터에 관심이 있다면 iostat
아마도 스크립트로 싸인 최고의 옵션 일 것입니다. 활용도 출력을 제거하여보다 쉽게 처리 할 수 있습니다.
$ iostat -dx /dev/sda 5
Linux 2.6.35.14-106.fc14.x86_64 (grinchy) 08/23/2013 _x86_64_ (4 CPU)
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sda 1.82 96.60 3.84 20.68 122.26 891.99 41.36 0.46 18.77 7.35 18.01
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sda 0.00 26.20 1.60 24.60 17.60 350.40 14.05 0.31 11.95 8.84 23.16
커널에서 직접
이 코드 블록 (bash)은 커널에서 직접 처리 된 읽기 I / O를 보여줍니다.
OLD=`awk '{print $1}' /sys/block/sda/stat` # First field is number of read I/Os processed
DT=1
for ii in `seq 1 10`
do
sleep $DT
NEW=`awk '{print $1}' /sys/block/sda/stat`
echo $((($NEW-$OLD)/$DT))
OLD=$NEW
done
이 정보는 또한에서 하나가있을 수 있습니다 /sys/block/sda/stat
또는 /proc/diskstats
위치를 할 수없는 상황에서 또는 도구를 설치하지 않습니다.