Как измерить производительность диска в Linux?

В данной статье я расскажу как измерять IOPS на вашем сервере.
IOPS – это количество операций ввода-вывода, выполняемых системой хранения данных, за одну секунду. Один из параметров, используемых для измерения производительности жестких дисков. Для измерения IOPS можно воспользоваться утилитой fio

Устанавливаем:

yum install fio

Cоздаем конфигурационные файлы для тестирования.

1. Измерение скорости на чтение read.ini:

[readtest]
blocksize=4k
filename=/dev/md2
rw=randread
direct=1
buffered=0
ioengine=libaio
iodepth=1024

runtime=30

2. Измерение скорости на запись write.ini:

[writetest]
blocksize=4k
filename=/dev/md2
rw=randwrite
direct=1
buffered=0
ioengine=libaio
iodepth=1024

runtime=30

Теперь переходим к практике, запускаем поочередно:

[root@nagg /home/nagg.ru]# fio ./read.ini
readtest: (g=0): rw=randread, bs=4K-4K/4K-4K/4K-4K, ioengine=libaio, iodepth=1024
fio-2.1.4
Starting 1 process
Jobs: 1 (f=1): [r] [100.0% done] [425.5MB/0KB/0KB /s] [109K/0/0 iops] [eta 00m:00s]
readtest: (groupid=0, jobs=1): err= 0: pid=112893: Thu Dec  5 10:59:46 2013
  read : io=12183MB, bw=415816KB/s, iops=103953, runt= 30003msec
    slat (usec): min=1, max=32146, avg= 8.71, stdev=51.05
    clat (msec): min=2, max=81, avg= 9.79, stdev= 1.75
     lat (msec): min=2, max=81, avg= 9.80, stdev= 1.75
    clat percentiles (usec):
     |  1.00th=[ 7520],  5.00th=[ 7904], 10.00th=[ 8160], 20.00th=[ 8512],
     | 30.00th=[ 8896], 40.00th=[ 9280], 50.00th=[ 9536], 60.00th=[ 9920],
     | 70.00th=[10304], 80.00th=[10688], 90.00th=[11456], 95.00th=[12224],
     | 99.00th=[15680], 99.50th=[17792], 99.90th=[23168], 99.95th=[27264],
     | 99.99th=[52992]
    bw (KB  /s): min=267264, max=434064, per=99.92%, avg=415463.86, stdev=28709.80
    lat (msec) : 4=0.01%, 10=62.71%, 20=37.05%, 50=0.22%, 100=0.02%
  cpu          : usr=7.04%, sys=36.98%, ctx=50969, majf=0, minf=540
  IO depths    : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.1%, 32=0.1%, >=64=100.0%
     submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.1%
     issued    : total=r=3118929/w=0/d=0, short=r=0/w=0/d=0

Run status group 0 (all jobs):
   READ: io=12183MB, aggrb=415815KB/s, minb=415815KB/s, maxb=415815KB/s, mint=30003msec, maxt=30003msec

Disk stats (read/write):
    md2: ios=3102064/137, merge=0/0, ticks=0/0, in_queue=0, util=0.00%, aggrios=1559499/111, aggrmerge=285/42, aggrticks=3388943/117, aggrin_queue=3389056, aggrutil=98.89%
  sdb: ios=1529490/107, merge=299/46, ticks=3799915/120, in_queue=3800030, util=98.89%
  sda: ios=1589508/115, merge=271/38, ticks=2977971/115, in_queue=2978083, util=97.75%
[root@nagg /home/nagg.ru]# fio ./write.ini
writetest: (g=0): rw=randwrite, bs=4K-4K/4K-4K/4K-4K, ioengine=libaio, iodepth=1024
fio-2.1.4
Starting 1 process
Jobs: 1 (f=1): [w] [100.0% done] [0KB/220.3MB/0KB /s] [0/56.4K/0 iops] [eta 00m:00s]
writetest: (groupid=0, jobs=1): err= 0: pid=113300: Thu Dec  5 11:01:10 2013
  write: io=6619.9MB, bw=225853KB/s, iops=56463, runt= 30014msec
    slat (usec): min=1, max=106663, avg=15.29, stdev=365.03
    clat (msec): min=3, max=246, avg=18.08, stdev= 9.47
     lat (msec): min=3, max=246, avg=18.10, stdev= 9.48
    clat percentiles (msec):
     |  1.00th=[    9],  5.00th=[   13], 10.00th=[   14], 20.00th=[   15],
     | 30.00th=[   15], 40.00th=[   16], 50.00th=[   16], 60.00th=[   17],
     | 70.00th=[   19], 80.00th=[   21], 90.00th=[   25], 95.00th=[   29],
     | 99.00th=[   60], 99.50th=[   87], 99.90th=[  115], 99.95th=[  139],
     | 99.99th=[  194]
    bw (KB  /s): min=158112, max=282059, per=99.95%, avg=225739.58, stdev=26594.15
    lat (msec) : 4=0.03%, 10=3.57%, 20=74.90%, 50=19.98%, 100=1.19%
    lat (msec) : 250=0.32%
  cpu          : usr=5.22%, sys=23.15%, ctx=288562, majf=0, minf=26
  IO depths    : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.1%, 32=0.1%, >=64=100.0%
     submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.1%
     issued    : total=r=0/w=1694687/d=0, short=r=0/w=0/d=0

Run status group 0 (all jobs):
  WRITE: io=6619.9MB, aggrb=225852KB/s, minb=225852KB/s, maxb=225852KB/s, mint=30014msec, maxt=30014msec

Disk stats (read/write):
    md2: ios=1383/1684294, merge=0/0, ticks=0/0, in_queue=0, util=0.00%, aggrios=210/1694859, aggrmerge=509/118, aggrticks=153/2510711, aggrin_queue=2510830, aggrutil=90.05%
  sdb: ios=218/1694856, merge=371/122, ticks=193/2222740, in_queue=2222894, util=89.46%
  sda: ios=202/1694863, merge=648/115, ticks=113/2798683, in_queue=2798766, util=90.05%

Далее несложно провести анализ полученных результатов.

Related posts:

  1. Проверка диска FSCK на LVM разделе Часто бывает, что после аппаратного сбоя сервер не поднимается. Причиной...
  2. Поиск больших файлов в linux Один из вариантов быстро найти большие файлы, скажем размером больше...
  3. Linux: защита скриптов от двойного запуска У всех в повседневной работе присутствуют скрипты, которые выполняются довольно...
  4. OpenSwan IPSec VPN Linux Cisco с контейнера OpenVZ Данную статью пишу больше для себя, чтобы не забыть, ибо...
  5. Включение query cache в MySQL – улучшаем производительность Если выхотите оптимизировать скорость ответа вашего MySQL сервера, тогда вам...
You can leave a response, or trackback from your own site.

Оставить комментарий

*