Bir diskin arayıp aramadığını nasıl tespit edebilirim?


16

Şu anda sistemden ( iotopve gibi iostat) akan disk G / Ç hacmini ölçmek için çeşitli araçlar kullanabilirim, ancak bir diskin çok az miktarda çok şey aradığını kolayca tespit etmenin mümkün olup olmadığını merak ediyorum G / Ç.

Biliyorum, bu bilgiyi kullanarak çıkarmak blktraceve sonra kodunu çözmek mümkün bttama bunlar biraz hantal ve daha basit bir alternatif olduğunu umuyordum?


4
Kulağınızı sürücünüze yaklaştırın? :)
terdon

2
Düşük bir oran (rkB/s + wkB/s)/%utildiskin aradığını belirtmemeli iostat -xmi?
Marco

1
Bunu canlı olarak gösteren bir araç mı istiyorsunuz yoksa belirli bir süre içindeki verilere mi bakmak istiyorsunuz?
slm

1
AFAIK, kernel.org/doc/Documentation/iostats.txt çekirdek tarafından tutulan tek istatistikler olduğundan blktrace'dan daha iyi bulacağınızı sanmıyorum.
Stéphane Chazelas

Yanıtlar:


4

Oran (rkB/s + wkB/s)/%utilbir iostat -xçıkış bazı bilgiler vermelidir:

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

Bu oranın disk aramasına tam olarak nasıl karşılık geldiğinden emin değilim. Ancak fikir şu ki, eğer disk meşgulse ve yüksek bir verime sahip değilse muhtemelen aramaktadır. Ancak, garanti edilmez. Bozuk diskler bazen yüksek kullanım gösterir ve neredeyse hiç verimi yoktur. Ama en azından bir gösterge.

iostat -x 5Güncelleme aralığını belirtmek için iostat'a (ör. ) Bir sayı da sağlayabilirsiniz . Bu şekilde sürekli izleyebilirsiniz.


Muhtemelen, düşük bir rkB / s ile eşleştirilmiş birçok okuma talebi böyle bir durumun göstergesi olacaktır
Gearoid Murphy

8

Bu tür bilgileri gerçek zamanlı olarak veya belirli bir süre içinde gösteren araçlar aradığınızdan emin değilsiniz, ancak burada erişilen diskin gerçek zamanlı yönlerini gösteren 2 araç var.

nmon

Sen öyle çağırıyorsun nmon. Sonra açıldıktan sonra j(Dosya Sistemleri) ve ardından d(Disk G / Ç Grafikleri D = İstatistikler) tuşuna basarsınız . Daha hfazla ayrıntı için yerleşik yardıma ( ) bakın.

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

Karşılaştığım başka bir araç en azından disk I / O'nun canlı görüntüsünü yapıyor 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

Özellikle LVM ve DSK aktivitesini gösteren bu satırlar:

    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

Bir süre boyunca verilerle ilgileniyorsanız, iostatmuhtemelen bir komut dosyasına sarılmış muhtemelen en iyi seçeneğinizdir. Kullanım çıktısından kurtulabilirsiniz, böylece uğraşmak daha kolaydır:

$ 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

Doğrudan Çekirdekten

Bu kod bloğu (bash), doğrudan Çekirdek'ten işlenen okuma G / Ç'lerini gösterecektir.

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

Kaynak: /server//a/525248/2518

Bilgiler aynı zamanda /sys/block/sda/statveya /proc/diskstatsherhangi bir araç yükleyemediğiniz veya istemediğiniz durumlarda da bulunabilir.

Referanslar


Ayrıntılı yanıt için teşekkürler, ancak sağladığınız metrikler hala G / Ç odaklı, ideal olarak, G / Ç
işlemine

@GearoidMurphy - G / Ç dışında disk erişimi hakkında bu tür telemetri verilerini almanın bir yolunu görmedim.
slm

Sanırım Marco bir yorumda ona çarptı, çözüm disk işlemlerinin okunan / yazılan gerçek veri hacmine oranına bakmak olacaktır.
Gearoid Murphy

1
@GearoidMurphy - evet bu yüzden yorumlarda gerçek zamanlı bir çözüm türü veya süre türü isteyip istemediğinize dair açıklama istedim. Eğer uygulanabilir bir çözüm bulursanız, bunu bir cevap olarak yazıp kabul ediyorum. Bu konuda kendi eğiminizi ararken çok fazla bir şey yoktu.
slm
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.