Тесты с помощью fio показывают интересную картину (multipath включен на сервере).
Конфиги fio:
seqread.ini:
Код: Выделить всё
[readtest]
blocksize=4m
filename=/dev/mapper/stor1
rw=read
direct=1
buffered=0
ioengine=libaio
iodepth=4
seqwrite.ini:
Код: Выделить всё
[readtest]
blocksize=4m
filename=/dev/mapper/stor1
rw=write
direct=1
buffered=0
ioengine=libaio
iodepth=4
На storage активирован 1 порт на 1 контроллере
Код: Выделить всё
stor1 (3600000e00d280000002808f600000000) dm-5 FUJITSU,ETERNUS_DXL
size=128G features='1 queue_if_no_path' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=1 status=active
|- 31:0:0:0 sde 8:64 failed faulty running
|- 29:0:0:0 sdc 8:32 failed faulty running
|- 30:0:0:0 sdd 8:48 active ready running
`- 28:0:0:0 sdb 8:16 failed faulty running
Запись:
Код: Выделить всё
# fio seqwrite.ini
readtest: (g=0): rw=write, bs=4M-4M/4M-4M, ioengine=libaio, iodepth=4
2.0.8
Starting 1 process
Jobs: 1 (f=1): [W] [100.0% done] [0K/604.0M /s] [0 /151 iops] [eta 00m:00s]
readtest: (groupid=0, jobs=1): err= 0: pid=487373
write: io=131072MB, bw=623338KB/s, iops=152 , runt=215321msec
slat (usec): min=172 , max=2525 , avg=390.99, stdev=90.93
clat (msec): min=7 , max=45 , avg=25.89, stdev= 4.55
lat (msec): min=7 , max=46 , avg=26.28, stdev= 4.55
clat percentiles (usec):
| 1.00th=[13632], 5.00th=[18304], 10.00th=[20352], 20.00th=[22912],
| 30.00th=[24192], 40.00th=[24960], 50.00th=[25728], 60.00th=[26752],
| 70.00th=[27776], 80.00th=[29056], 90.00th=[31616], 95.00th=[33536],
| 99.00th=[37632], 99.50th=[38656], 99.90th=[41728], 99.95th=[42240],
| 99.99th=[44800]
bw (KB/s) : min=585142, max=654051, per=100.00%, avg=623953.28, stdev=12749.25
lat (msec) : 10=0.24%, 20=9.05%, 50=90.71%
cpu : usr=3.05%, sys=2.89%, ctx=46260, majf=0, minf=21
IO depths : 1=0.1%, 2=0.1%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.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.0%
issued : total=r=0/w=32768/d=0, short=r=0/w=0/d=0
Run status group 0 (all jobs):
WRITE: io=131072MB, aggrb=623337KB/s, minb=623337KB/s, maxb=623337KB/s, mint=215321msec, maxt=215321msec
Чтение:
Код: Выделить всё
# fio seqread.ini
readtest: (g=0): rw=read, bs=4M-4M/4M-4M, ioengine=libaio, iodepth=4
2.0.8
Starting 1 process
Jobs: 1 (f=1): [R] [100.0% done] [560.0M/0K /s] [140 /0 iops] [eta 00m:00s]
readtest: (groupid=0, jobs=1): err= 0: pid=500362
read : io=131072MB, bw=610580KB/s, iops=149 , runt=219820msec
slat (usec): min=168 , max=2312 , avg=253.80, stdev=75.24
clat (msec): min=3 , max=158 , avg=26.58, stdev=16.80
lat (msec): min=3 , max=158 , avg=26.83, stdev=16.80
clat percentiles (msec):
| 1.00th=[ 5], 5.00th=[ 7], 10.00th=[ 9], 20.00th=[ 12],
| 30.00th=[ 17], 40.00th=[ 20], 50.00th=[ 23], 60.00th=[ 28],
| 70.00th=[ 32], 80.00th=[ 40], 90.00th=[ 51], 95.00th=[ 60],
| 99.00th=[ 73], 99.50th=[ 87], 99.90th=[ 112], 99.95th=[ 119],
| 99.99th=[ 151]
bw (KB/s) : min=396648, max=760916, per=100.00%, avg=611253.28, stdev=55713.56
lat (msec) : 4=0.95%, 10=13.92%, 20=28.45%, 50=46.00%, 100=10.43%
lat (msec) : 250=0.25%
cpu : usr=0.09%, sys=3.72%, ctx=40318, majf=0, minf=4118
IO depths : 1=0.1%, 2=0.1%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.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.0%
issued : total=r=32768/w=0/d=0, short=r=0/w=0/d=0
Run status group 0 (all jobs):
READ: io=131072MB, aggrb=610580KB/s, minb=610580KB/s, maxb=610580KB/s, mint=219820msec, maxt=219820msec
Что видим: запись=чтение, скорости примерно одинаковы, упираются скорее всего в сеть, latency одинакова.
На storage активировано 2 порта на одном контроллере
Код: Выделить всё
stor1 (3600000e00d280000002808f600000000) dm-5 FUJITSU,ETERNUS_DXL
size=128G features='1 queue_if_no_path' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=0 status=active
|- 31:0:0:0 sde 8:64 failed faulty running
|- 29:0:0:0 sdc 8:32 failed faulty running
|- 30:0:0:0 sdd 8:48 active ready running
`- 28:0:0:0 sdb 8:16 active ready running
Запись:
Код: Выделить всё
# fio seqwrite.ini
readtest: (g=0): rw=write, bs=4M-4M/4M-4M, ioengine=libaio, iodepth=4
2.0.8
Starting 1 process
Jobs: 1 (f=1): [W] [100.0% done] [0K/716.0M /s] [0 /179 iops] [eta 00m:00s]
readtest: (groupid=0, jobs=1): err= 0: pid=577515
write: io=131072MB, bw=734667KB/s, iops=179 , runt=182692msec
slat (usec): min=181 , max=4164 , avg=399.33, stdev=98.60
clat (msec): min=7 , max=44 , avg=21.90, stdev= 4.95
lat (msec): min=7 , max=44 , avg=22.30, stdev= 4.94
clat percentiles (usec):
| 1.00th=[ 9792], 5.00th=[13504], 10.00th=[15424], 20.00th=[17792],
| 30.00th=[19328], 40.00th=[20864], 50.00th=[22144], 60.00th=[23168],
| 70.00th=[24448], 80.00th=[25984], 90.00th=[28032], 95.00th=[29824],
| 99.00th=[33024], 99.50th=[34048], 99.90th=[37632], 99.95th=[38144],
| 99.99th=[41216]
bw (KB/s) : min=660908, max=781741, per=100.00%, avg=735398.28, stdev=18669.70
lat (msec) : 10=1.19%, 20=32.53%, 50=66.29%
cpu : usr=3.56%, sys=3.58%, ctx=46325, majf=0, minf=21
IO depths : 1=0.1%, 2=0.1%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.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.0%
issued : total=r=0/w=32768/d=0, short=r=0/w=0/d=0
Run status group 0 (all jobs):
WRITE: io=131072MB, aggrb=734666KB/s, minb=734666KB/s, maxb=734666KB/s, mint=182692msec, maxt=182692msec
Чтение:
Код: Выделить всё
# fio seqread.ini
readtest: (g=0): rw=read, bs=4M-4M/4M-4M, ioengine=libaio, iodepth=4
2.0.8
Starting 1 process
Jobs: 1 (f=1): [R] [100.0% done] [536.0M/0K /s] [134 /0 iops] [eta 00m:00s]
readtest: (groupid=0, jobs=1): err= 0: pid=586382
read : io=131072MB, bw=513434KB/s, iops=125 , runt=261412msec
slat (usec): min=148 , max=6235 , avg=260.83, stdev=79.10
clat (msec): min=3 , max=154 , avg=31.65, stdev=17.41
lat (msec): min=3 , max=155 , avg=31.91, stdev=17.41
clat percentiles (msec):
| 1.00th=[ 5], 5.00th=[ 8], 10.00th=[ 10], 20.00th=[ 17],
| 30.00th=[ 21], 40.00th=[ 26], 50.00th=[ 31], 60.00th=[ 36],
| 70.00th=[ 40], 80.00th=[ 46], 90.00th=[ 55], 95.00th=[ 63],
| 99.00th=[ 83], 99.50th=[ 91], 99.90th=[ 109], 99.95th=[ 117],
| 99.99th=[ 139]
bw (KB/s) : min=372363, max=709543, per=100.00%, avg=514005.99, stdev=58255.54
lat (msec) : 4=0.66%, 10=9.68%, 20=18.87%, 50=56.77%, 100=13.82%
lat (msec) : 250=0.20%
cpu : usr=0.08%, sys=3.20%, ctx=43295, majf=0, minf=4118
IO depths : 1=0.1%, 2=0.1%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.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.0%
issued : total=r=32768/w=0/d=0, short=r=0/w=0/d=0
Run status group 0 (all jobs):
READ: io=131072MB, aggrb=513433KB/s, minb=513433KB/s, maxb=513433KB/s, mint=261412msec, maxt=261412msec
Что видно: запись стала чуть побольше - на СХД принимают данные 2 интерфейса, но на сервере отправка идёт через 1. Latency на чтение больше чем на запись, скорость чтения и IOPS-ы просели по сравнению с работой через 1 интерфейс.
На storage активировано 2 порта на разных контроллерах.
Код: Выделить всё
stor1 (3600000e00d280000002808f600000000) dm-5 FUJITSU,ETERNUS_DXL
size=128G features='1 queue_if_no_path' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=0 status=active
|- 31:0:0:0 sde 8:64 failed faulty running
|- 29:0:0:0 sdc 8:32 active ready running
|- 30:0:0:0 sdd 8:48 active ready running
`- 28:0:0:0 sdb 8:16 failed faulty running
Последовательная запись:
Код: Выделить всё
# fio seqwrite.ini
readtest: (g=0): rw=write, bs=4M-4M/4M-4M, ioengine=libaio, iodepth=4
2.0.8
Starting 1 process
^Cbs: 1 (f=1): [W] [24.6% done] [0K/940.0M /s] [0 /235 iops] [eta 01m:47s]
fio: terminating on signal 2
readtest: (groupid=0, jobs=1): err= 0: pid=876149
write: io=31748MB, bw=950611KB/s, iops=232 , runt= 34199msec
slat (usec): min=208 , max=2116 , avg=410.06, stdev=108.58
clat (msec): min=5 , max=33 , avg=16.82, stdev= 3.51
lat (msec): min=5 , max=33 , avg=17.23, stdev= 3.51
clat percentiles (usec):
| 1.00th=[ 7008], 5.00th=[10304], 10.00th=[12096], 20.00th=[14144],
| 30.00th=[15424], 40.00th=[16320], 50.00th=[17280], 60.00th=[18048],
| 70.00th=[18816], 80.00th=[19584], 90.00th=[20608], 95.00th=[22144],
| 99.00th=[24704], 99.50th=[26240], 99.90th=[28544], 99.95th=[30592],
| 99.99th=[33024]
bw (KB/s) : min=905689, max=1009749, per=100.00%, avg=951471.64, stdev=16969.05
lat (msec) : 10=4.32%, 20=80.62%, 50=15.06%
cpu : usr=4.48%, sys=4.97%, ctx=12026, majf=0, minf=21
IO depths : 1=0.1%, 2=0.1%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.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.0%
issued : total=r=0/w=7937/d=0, short=r=0/w=0/d=0
Run status group 0 (all jobs):
WRITE: io=31748MB, aggrb=950611KB/s, minb=950611KB/s, maxb=950611KB/s, mint=34199msec, maxt=34199msec
Последовательное чтение:
Код: Выделить всё
# fio seqread.ini
readtest: (g=0): rw=read, bs=4M-4M/4M-4M, ioengine=libaio, iodepth=4
2.0.8
Starting 1 process
Jobs: 1 (f=1): [R] [99.7% done] [560.0M/0K /s] [140 /0 iops] [eta 00m:01s]
readtest: (groupid=0, jobs=1): err= 0: pid=878178
read : io=131072MB, bw=361941KB/s, iops=88 , runt=370828msec
slat (usec): min=146 , max=7701 , avg=267.41, stdev=89.38
clat (msec): min=3 , max=259 , avg=45.00, stdev=32.78
lat (msec): min=3 , max=259 , avg=45.26, stdev=32.78
clat percentiles (msec):
| 1.00th=[ 5], 5.00th=[ 8], 10.00th=[ 10], 20.00th=[ 17],
| 30.00th=[ 22], 40.00th=[ 30], 50.00th=[ 40], 60.00th=[ 48],
| 70.00th=[ 52], 80.00th=[ 68], 90.00th=[ 91], 95.00th=[ 110],
| 99.00th=[ 137], 99.50th=[ 155], 99.90th=[ 174], 99.95th=[ 178],
| 99.99th=[ 217]
bw (KB/s) : min=126273, max=697536, per=100.00%, avg=362980.35, stdev=97454.38
lat (msec) : 4=0.43%, 10=10.40%, 20=15.84%, 50=39.46%, 100=27.63%
lat (msec) : 250=6.23%, 500=0.01%
cpu : usr=0.06%, sys=2.31%, ctx=43426, majf=0, minf=4118
IO depths : 1=0.1%, 2=0.1%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.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.0%
issued : total=r=32768/w=0/d=0, short=r=0/w=0/d=0
Run status group 0 (all jobs):
READ: io=131072MB, aggrb=361940KB/s, minb=361940KB/s, maxb=361940KB/s, mint=370828msec, maxt=370828msec
Что видим: чтение через 2 контроллера медленнее чем запись и медленнее чем чтение через 1 контроллер. Latency по чтению более чем в 2 раза выше чем по записи. WTF?