Làm thế nào để phát hiện nếu một đĩa đang tìm kiếm?


16

Tôi có thể sử dụng nhiều công cụ khác nhau để đo khối lượng đĩa I / O hiện đang chảy qua hệ thống (chẳng hạn như iotopiostat) nhưng tôi tò mò liệu có thể dễ dàng phát hiện nếu một đĩa tìm kiếm nhiều chỉ với một lượng nhỏ Tôi / O.

Tôi biết có thể trích xuất thông tin này bằng cách sử dụng blktracevà sau đó giải mã nó bằng cách sử dụng bttnhưng chúng hơi khó sử dụng và tôi đã hy vọng có một sự thay thế đơn giản hơn?


4
Đặt tai của bạn gần với ổ đĩa của bạn? :)
terdon

2
Không phải tỷ lệ thấp có (rkB/s + wkB/s)/%utilnghĩa là đĩa đang tìm kiếm (trong iostat -x)?
Marco

1
Bạn có muốn một công cụ hiển thị trực tiếp này hay bạn đang muốn xem dữ liệu trong một khoảng thời gian nhất định?
slm

1
AFAIK, kernel.org/doc/Documentation/iostats.txt là số liệu thống kê duy nhất được duy trì bởi kernel, vì vậy tôi không hy vọng bạn sẽ tìm thấy tốt hơn blktrace.
Stéphane Chazelas

Câu trả lời:


4

Tỷ lệ (rkB/s + wkB/s)/%utilcủa iostat -xsản lượng nên cung cấp cho bạn một số cái nhìn sâu sắc:

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

Tôi không chắc chính xác tỷ lệ này tương ứng với tìm kiếm đĩa như thế nào. Nhưng ý tưởng là, nếu đĩa bận và không có thông lượng cao thì có lẽ nó đang tìm kiếm. Tuy nhiên, nó không được đảm bảo. Các đĩa bị hỏng đôi khi cho thấy mức độ sử dụng cao và hầu như không có thông lượng. Nhưng đó ít nhất là một chỉ số.

Bạn cũng có thể cung cấp một số cho i bổ sung (ví dụ iostat -x 5) để chỉ định khoảng thời gian cập nhật. Bằng cách đó bạn có thể theo dõi liên tục.


Có lẽ, nhiều yêu cầu đọc được ghép nối với rkB / s thấp sẽ là dấu hiệu của tình huống như vậy
Gearoid Murphy

8

Không chắc chắn nếu bạn đang tìm kiếm các công cụ hiển thị loại thông tin này theo cách thức thời gian thực hoặc trong một khoảng thời gian, nhưng đây là 2 công cụ hiển thị các khía cạnh thời gian thực của đĩa được truy cập.

cá hồi

Bạn gọi nó như vậy , nmon. Sau đó, khi nó mở, bạn nhấn j(Hệ thống tập tin) theo sau là d(Biểu đồ I / O của đĩa D = Thống kê). Xem trợ giúp tích hợp ( h) để biết thêm chi tiết.

$ 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                                                                │
│──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────│

Một công cụ khác mà tôi đã gặp đó ít nhất là một chế độ xem trực tiếp của I / O đĩa 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

Cụ thể những dòng này đang hiển thị hoạt động LVM và 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 |

i điều hòa

Nếu bạn quan tâm đến dữ liệu trong một khoảng thời gian, iostatcó lẽ vẫn là lựa chọn tốt nhất của bạn, được gói gọn trong một tập lệnh. Bạn có thể thoát khỏi đầu ra sử dụng để dễ đối phó hơn:

$ 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

Trực tiếp từ hạt nhân

Khối mã này (bash) sẽ hiển thị cho bạn các I / O đã đọc được xử lý, trực tiếp từ Kernel.

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

nguồn: /server//a/525248/2518

Các thông tin này cũng có thể có từ một trong hai /sys/block/sda/stathoặc /proc/diskstatstrong tình huống mà bạn không thể hoặc không muốn cài đặt bất kỳ công cụ.

Người giới thiệu


Cảm ơn câu trả lời chi tiết nhưng các số liệu bạn cung cấp vẫn tập trung vào I / O, lý tưởng nhất là tôi muốn xem hoạt động tìm kiếm đĩa bất kể thông lượng I / O
Gearoid Murphy

@GearoidMurphy - Tôi không thấy cách nào để có được loại dữ liệu từ xa này về các truy cập đĩa bên ngoài I / O.
slm

Tôi nghĩ Marco đánh vào nó trong một bình luận ở trên, giải pháp sẽ là xem xét tỷ lệ của các giao dịch đĩa với khối lượng dữ liệu đọc / ghi thực tế.
Gearoid Murphy

1
@GearoidMurphy - vâng đó là lý do tại sao tôi yêu cầu làm rõ trong các nhận xét về việc bạn muốn loại giải pháp hoặc khoảng thời gian thực của loại thời gian thực. Nếu bạn đưa ra một giải pháp khả thi, tôi sẽ viết nó như một câu trả lời và chấp nhận nó. Không có nhiều khi tìm kiếm nghiêng cụ thể của bạn về điều này.
slm
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.