Як виявити, чи шукає диск?


16

Я можу використовувати різні інструменти для вимірювання обсягу вводу / виводу диска, який зараз проходить через систему (наприклад, 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.
Стефан Шазелас

Відповіді:


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 -x 5), щоб вказати інтервал оновлення. Таким чином ви можете постійно контролювати.


Імовірно, багато запитів на читання в парі з низьким rkB / s свідчать про таку ситуацію
Gearoid Murphy

8

Не впевнені, чи шукаєте ви інструменти, які відображають цей тип інформації в режимі реального часу або протягом певного періоду часу, але ось два інструменти, які показують аспекти реального часу доступу до диска.

нмон

Ви викликаєте це подобається так, nmon. Потім після відкриття ви натискаєте на j(Файлові системи), а потім d(Графіки дискового вводу / виводу 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                                                                │
│──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────│

Ще один інструмент, на який я натрапив, який робить принаймні перегляд дискових вводу-виводу 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 -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) покаже вам оброблювані прочитані введення / виведення безпосередньо з ядра.

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в ситуаціях , коли ви не можете або не хоче встановлювати будь - які інструменти.

Список літератури


Дякую за детальну відповідь, але надані вами показники все ще зосереджені на
вході

@GearoidMurphy - я не бачив способу отримати такий тип телеметричних даних про доступ до дисків за межами вводу-виводу.
slm

Я думаю, що Марко потрапив на нього в коментарі вище, рішенням було б подивитися на співвідношення дискових транзакцій до фактичного обсягу прочитаних / записаних даних.
Gearoid Murphy

1
@GearoidMurphy - так, тому я попросив роз'яснити у коментарях, чи хочете ви в реальному часі тип рішення або тип періоду часу. Якщо ви знайдете дієве рішення, я б написав це як відповідь і прийму його. При пошуку вашого конкретного нахилу з цього приводу не було багато.
slm
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.