วิธีการตรวจสอบว่าดิสก์กำลังมองหา?


16

ฉันสามารถใช้เครื่องมือที่หลากหลายเพื่อวัดปริมาณของดิสก์ I / O ที่ไหลผ่านระบบในปัจจุบัน (เช่นiotopและiostat) แต่ฉันอยากรู้ว่าเป็นไปได้ที่จะตรวจสอบได้อย่างง่ายดายหรือไม่ว่าดิสก์กำลังมองหามากด้วยจำนวนเล็กน้อย I / O

ฉันรู้ว่าเป็นไปได้ที่จะดึงข้อมูลนี้มาใช้blktraceแล้วถอดรหัสโดยใช้bttแต่สิ่งเหล่านี้ค่อนข้างไม่สะดวกและฉันหวังว่าจะมีทางเลือกที่ง่ายกว่า


4
ใส่หูของคุณไว้ใกล้กับไดรฟ์ของคุณ? :)
terdon

2
อัตราส่วนที่ต่ำควร(rkB/s + wkB/s)/%utilแสดงว่าดิสก์กำลังค้นหา (ในiostat -x) ใช่หรือไม่
มาร์โก

1
คุณต้องการเครื่องมือที่แสดงรายการสดนี้หรือคุณกำลังมองหาข้อมูลในช่วงเวลาที่กำหนดหรือไม่?
slm

1
AFAIK, kernel.org/doc/Documentation/iostats.txtเป็นสถิติเดียวที่ดูแลโดยเคอร์เนลดังนั้นฉันไม่คาดหวังว่าคุณจะพบดีกว่า blktrace
Stéphane Chazelas

คำตอบ:


4

อัตราส่วน(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 (เช่นiostat -x 5) เพื่อระบุช่วงเวลาการอัปเดต ด้วยวิธีนี้คุณสามารถตรวจสอบได้อย่างต่อเนื่อง


สันนิษฐานว่าคำขอการอ่านจำนวนมากที่จับคู่กับ rkB / s ต่ำจะบ่งบอกถึงสถานการณ์ดังกล่าว
Gearoid Murphy

8

ไม่แน่ใจว่าคุณกำลังมองหาเครื่องมือที่แสดงข้อมูลประเภทนี้ในแบบเรียลไทม์หรือในช่วงเวลาหนึ่ง แต่นี่เป็นเครื่องมือ 2 อย่างที่แสดงลักษณะเรียลไทม์ของดิสก์ที่เข้าถึง

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

โดยตรงจากเคอร์เนล

รหัสบล็อกนี้ (ทุบตี) จะแสดงการอ่านของ 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

แหล่งที่มา: /server//a/525248/2518

ข้อมูลยังสามารถได้จาก/sys/block/sda/statหรือ/proc/diskstatsในสถานการณ์ที่คุณไม่สามารถหรือไม่ต้องการติดตั้งเครื่องมือใด ๆ

อ้างอิง


ขอบคุณสำหรับคำตอบโดยละเอียด แต่ตัวชี้วัดที่คุณให้ไว้ยังคงเน้น I / O อยู่โดยสมบูรณ์ฉันต้องการเห็นกิจกรรมการค้นหาดิสก์โดยไม่คำนึงถึงปริมาณงาน I / O
Gearoid Murphy

@GearoidMurphy - ฉันไม่เห็นวิธีรับข้อมูล telemetry ประเภทนี้เกี่ยวกับการเข้าถึงดิสก์นอก I / O
slm

ฉันคิดว่ามาร์โกกระทบกับมันในความคิดเห็นด้านบนโซลูชันจะดูอัตราส่วนของการทำธุรกรรมดิสก์ต่อปริมาณการอ่าน / เขียนข้อมูลจริง
Gearoid Murphy

1
@GearoidMurphy - ใช่นั่นเป็นเหตุผลที่ฉันขอคำชี้แจงในความคิดเห็นว่าคุณต้องการโซลูชั่นแบบเรียลไทม์หรือประเภทของช่วงเวลา หากคุณคิดวิธีแก้ปัญหาที่ใช้การได้ฉันจะเขียนมันเป็นคำตอบและยอมรับมัน มีไม่มากเมื่อค้นหาความลาดเอียงเฉพาะของคุณในเรื่องนี้
slm
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.