mdraid
CentOS 7.6에서 실험 중입니다 . fio
4 스트라이프 배열에 순차적 쓰기를 수행하고 있는데 RAM 버퍼에 쓸 때 속도가 훌륭하게 시작되었다가 fsync 중에 느려집니다. end_fsync
데이터가 디스크에 기록되었는지 확인하는 데 사용됩니다 . 이번 테스트에서는 iostat
다른 창에서 4개의 디스크를 모니터링했습니다.
초기에는 iostat
각 디스크당 165MBps를 보여줬고, fio
3000MBps가 넘는 쓰기 속도를 보여줬다. 따라서 우리는 RAM에 쓰고 동시에 커널은 디스크에 쓰고 있습니다. fio가 쓰기를 마치면 버퍼를 디스크에 플러시합니다. 이 기간 동안 쓰기 속도는 0이었고 iostat
약 120MBps로 떨어졌습니다. 나는 fsync가 초기 쓰기만큼 빨라야 한다고 생각했기 때문에 왜 fsync가 더 빠르지 않은지 알아내려고 노력하고 있습니다.
$ fio --name=seqwrite --rw=write --bs=1M --size=3G --directory=/mnt/raid --end_fsync=1 --numjobs=4 --group_reporting
seqwrite: (g=0): rw=write, bs=(R) 1024KiB-1024KiB, (W) 1024KiB-1024KiB, (T) 1024KiB-1024KiB, ioengine=psync, iodepth=1
...
fio-3.1
Starting 4 processes
Jobs: 2 (f=2): [_(1),F(1),_(1),F(1)][-.-%][r=0KiB/s,w=0KiB/s][r=0,w=0 IOPS][eta 00m:00s]
seqwrite: (groupid=0, jobs=4): err= 0: pid=9959: Thu Sep 12 16:47:50 2019
write: IOPS=534, BW=534MiB/s (560MB/s)(12.0GiB/23009msec)
clat (usec): min=315, max=21855, avg=1356.25, stdev=3850.63
lat (usec): min=324, max=21881, avg=1373.31, stdev=3852.25
clat percentiles (usec):
| 1.00th=[ 322], 5.00th=[ 326], 10.00th=[ 330], 20.00th=[ 343],
| 30.00th=[ 347], 40.00th=[ 359], 50.00th=[ 367], 60.00th=[ 371],
| 70.00th=[ 383], 80.00th=[ 445], 90.00th=[ 586], 95.00th=[14746],
| 99.00th=[19268], 99.50th=[19530], 99.90th=[21627], 99.95th=[21890],
| 99.99th=[21890]
bw ( KiB/s): min=14364, max=2881154, per=100.00%, avg=704062.00, stdev=949759.73, samples=35
iops : min= 14, max= 2813, avg=687.29, stdev=927.47, samples=35
lat (usec) : 500=85.28%, 750=8.30%, 1000=0.20%
lat (msec) : 2=0.02%, 4=0.01%, 10=0.15%, 20=5.57%, 50=0.46%
cpu : usr=0.30%, sys=17.58%, ctx=100619, majf=0, minf=106
IO depths : 1=100.0%, 2=0.0%, 4=0.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 rwt: total=0,12288,0, short=0,0,0, dropped=0,0,0
latency : target=0, window=0, percentile=100.00%, depth=1
Run status group 0 (all jobs):
WRITE: bw=534MiB/s (560MB/s), 534MiB/s-534MiB/s (560MB/s-560MB/s), io=12.0GiB (12.9GB), run=23009-23009msec
Disk stats (read/write):
md0: ios=0/3145734, merge=0/0, ticks=0/0, in_queue=0, util=0.00%, aggrios=0/6655, aggrmerge=0/778369, aggrticks=0/2292548, aggrin_queue=2292870, aggrutil=95.06%
sda: ios=0/6502, merge=0/778634, ticks=0/3019328, in_queue=3019466, util=95.06%
sdb: ios=0/6465, merge=0/778498, ticks=0/2554715, in_queue=2555016, util=92.24%
sdc: ios=0/6780, merge=0/778266, ticks=0/1745808, in_queue=1746414, util=92.00%
sdd: ios=0/6875, merge=0/778080, ticks=0/1850343, in_queue=1850585, util=91.34%
어레이는 4K 블록으로 스트라이프된 4개의 회전 디스크이며 XFS 파일 시스템을 갖습니다. RAID가 없는 단일 XFS 디스크에서 동일한 테스트를 실행하면 이 문제가 발생하지 않습니다. 쓰기 속도는 항상 160MBps로 안정적입니다.