測試環境
3台服務器:ceph配置內外網分離,外網使用萬兆線,內網使用千兆線,osd共21個。
1台客戶端:安裝fio工具、內核客戶端,使用萬兆線。
測試目的
針對fio工具中的iodepth(隊列深度)和numjobs(線程數)參數,分析使用fio工具時,哪個參數對帶寬值測試結果影響比較大。
測試思路
測試過程:集群通過內核客戶端掛載到客戶機上,fio工具參數中,使用塊大小為1M,一次測試寫入10G文件,測試時間300s。測試過程中,觀察磁盤的讀寫速度、使用率、IO操作的服務時間與IO請求的處理時間等參數,並記錄帶寬值與延時時間。
測試場景:
1、單獨使用iodepth參數,測試塊大小為1M隨機讀寫,記錄帶寬值與延時時間等;
2、單獨使用numjobs參數,測試塊大小為1M隨機讀寫,記錄帶寬值與延時時間等;
3、同時使用iodepth、numjobs參數,保持numjobs參數為1,加大iodepth參數,測試塊大小為1M隨機讀寫,記錄帶寬值與延時時間等;
4、同時使用iodepth、numjobs參數,保持iodepth參數為1,加大numjobs參數,測試塊大小為1M隨機讀寫,記錄帶寬值與延時時間等;
5、同時使用iodepth、numjobs參數,iodepth與numjobs參數值相等,測試塊大小為1M隨機讀寫,記錄帶寬值與延時時間等。
測試過程命令
1.1 單獨測試IO深度,IO深度為1,1M隨機寫
fio -filename=/xuqi/ceph/iow1 -direct=1 -iodepth=1 -thread -rw=randwrite -ioengine=libaio -bs=1M -size=10G -runtime=180 -group_reporting -name=Fio_Write
bw=18605KB/s,clat=55ms
1.2 單獨測試IO深度,IO深度為2,1M隨機寫
fio -filename=/xuqi/ceph/iow2 -direct=1 -iodepth=2 -thread -rw=randwrite -ioengine=libaio -bs=1M -size=10G -runtime=180 -group_reporting -name=Fio_Write
bw=18993KB/s,clat=107ms
1.3 單獨測試IO深度,IO深度為4,1M隨機寫
fio -filename=/xuqi/ceph/iow4 -direct=1 -iodepth=4 -thread -rw=randwrite -ioengine=libaio -bs=1M -size=10G -runtime=180 -group_reporting -name=Fio_Write
bw=18295KB/s,clat=223ms
1.4 單獨測試IO深度,IO深度為8,1M隨機寫
fio -filename=/xuqi/ceph/iow8 -direct=1 -iodepth=8 -thread -rw=randwrite -ioengine=libaio -bs=1M -size=10G -runtime=180 -group_reporting -name=Fio_Write
bw=18801KB/s,clat=435ms
1.5 單獨測試IO深度,IO深度為16,1M隨機寫
fio -filename=/xuqi/ceph/iow16 -direct=1 -iodepth=16 -thread -rw=randwrite -ioengine=libaio -bs=1M -size=10G -runtime=180 -group_reporting -name=Fio_Write
bw=18523KB/s,clat=882ms
2.1 單獨測試numjobs,numjobs為1,1M隨機寫
fio -filename=/xuqi/ceph/njw1 -direct=1 -numjobs=1 -thread -rw=randwrite -ioengine=libaio -bs=1M -size=10G -runtime=180 -group_reporting -name=Fio_Write
bw=18647KB/s,clat=54ms
2.2 單獨測試numjobs,numjobs為2,1M隨機寫
fio -filename=/xuqi/ceph/njw2 -direct=1 -numjobs=2 -thread -rw=randwrite -ioengine=libaio -bs=1M -size=10G -runtime=180 -group_reporting -name=Fio_Write
bw=34620KB/s,clat=59ms
2.3 單獨測試numjobs,numjobs為4,1M隨機寫
fio -filename=/xuqi/ceph/njw4 -direct=1 -numjobs=4 -thread -rw=randwrite -ioengine=libaio -bs=1M -size=10G -runtime=180 -group_reporting -name=Fio_Write
bw=57983KB/s,clat=70ms
2.4 單獨測試numjobs,numjobs為8,1M隨機寫
fio -filename=/xuqi/ceph/njw8 -direct=1 -numjobs=8 -thread -rw=randwrite -ioengine=libaio -bs=1M -size=10G -runtime=180 -group_reporting -name=Fio_Write
bw=92872KB/s,clat=88ms
2.5 單獨測試numjobs,numjobs為16,1M隨機寫
fio -filename=/xuqi/ceph/njw16 -direct=1 -numjobs=16 -thread -rw=randwrite -ioengine=libaio -bs=1M -size=10G -runtime=180 -group_reporting -name=Fio_Write
bw=134340KB/s,clat=121ms
3.1 numjobs=1,IO深度為1,1M隨機寫
fio -filename=/xuqi/ceph/inw1 -direct=1 -iodepth=1 -numjobs=1 -thread -rw=randwrite -ioengine=libaio -bs=1M -size=10G -runtime=180 -group_reporting -name=Fio_Write
bw=18494KB/s,clat=55ms
3.2 numjobs=1,IO深度為2,1M隨機寫
fio -filename=/xuqi/ceph/inw2 -direct=1 -iodepth=2 -numjobs=1 -thread -rw=randwrite -ioengine=libaio -bs=1M -size=10G -runtime=180 -group_reporting -name=Fio_Write
bw=18709KB/s,clat=109ms
3.3 numjobs=1,IO深度為4,1M隨機寫
fio -filename=/xuqi/ceph/inw4 -direct=1 -iodepth=4 -numjobs=1 -thread -rw=randwrite -ioengine=libaio -bs=1M -size=10G -runtime=180 -group_reporting -name=Fio_Write
bw=18678KB/s,clat=219ms
3.4 numjobs=1,IO深度為8,1M隨機寫
fio -filename=/xuqi/ceph/inw8 -direct=1 -iodepth=8 -numjobs=1 -thread -rw=randwrite -ioengine=libaio -bs=1M -size=10G -runtime=180 -group_reporting -name=Fio_Write
bw=18837KB/s,clat=434ms
3.5 numjobs=1,IO深度為16,1M隨機寫
fio -filename=/xuqi/ceph/inw16 -direct=1 -iodepth=16 -numjobs=1 -thread -rw=randwrite -ioengine=libaio -bs=1M -size=10G -runtime=180 -group_reporting -name=Fio_Write
bw=18792KB/s,clat=869ms
4.1 IO深度為1,numjobs=1,1M隨機寫
4.2 IO深度為1,numjobs=2,1M隨機寫
fio -filename=/xuqi/ceph/niw2 -direct=1 -iodepth=1 -numjobs=2 -thread -rw=randwrite -ioengine=libaio -bs=1M -size=10G -runtime=180 -group_reporting -name=Fio_Write
bw=34620KB/s,clat=59ms
4.3 IO深度為1,numjobs=4,1M隨機寫
fio -filename=/xuqi/ceph/niw4 -direct=1 -iodepth=1 -numjobs=4 -thread -rw=randwrite -ioengine=libaio -bs=1M -size=10G -runtime=180 -group_reporting -name=Fio_Write
bw=58827KB/s,clat=69ms
4.4 IO深度為1,numjobs=8,1M隨機寫
fio -filename=/xuqi/ceph/niw8 -direct=1 -iodepth=1 -numjobs=8 -thread -rw=randwrite -ioengine=libaio -bs=1M -size=10G -runtime=180 -group_reporting -name=Fio_Write
bw=91264KB/s,clat=89ms
4.5 IO深度為1,numjobs=16,1M隨機寫
fio -filename=/xuqi/ceph/niw16 -direct=1 -iodepth=1 -numjobs=16 -thread -rw=randwrite -ioengine=libaio -bs=1M -size=10G -runtime=180 -group_reporting -name=Fio_Write
bw=135186KB/s,clat=121ms
5.1 單獨測試IO深度,IO深度為1,1M隨機讀
fio -filename=/xuqi/ceph/iow1 -direct=1 -iodepth=1 -thread -rw=randread -ioengine=libaio -bs=1M -size=10G -runtime=180 -group_reporting -name=Fio_Read
bw=66847KB/s,clat=15ms
5.2 單獨測試IO深度,IO深度為2,1M隨機讀
fio -filename=/xuqi/ceph/iow2 -direct=1 -iodepth=2 -thread -rw=randread -ioengine=libaio -bs=1M -size=10G -runtime=180 -group_reporting -name=Fio_Read
bw=67005KB/s,clat=30ms
5.3 單獨測試IO深度,IO深度為4,1M隨機讀
fio -filename=/xuqi/ceph/iow4 -direct=1 -iodepth=4 -thread -rw=randread -ioengine=libaio -bs=1M -size=10G -runtime=180 -group_reporting -name=Fio_Read
bw=66533KB/s,clat=61ms
5.4 單獨測試IO深度,IO深度為8,1M隨機讀
fio -filename=/xuqi/ceph/iow8 -direct=1 -iodepth=8 -thread -rw=randread -ioengine=libaio -bs=1M -size=10G -runtime=180 -group_reporting -name=Fio_Read
bw=68366KB/s,clat=119ms
5.5 單獨測試IO深度,IO深度為16,1M隨機讀
fio -filename=/xuqi/ceph/iow16 -direct=1 -iodepth=16 -thread -rw=randread -ioengine=libaio -bs=1M -size=10G -runtime=180 -group_reporting -name=Fio_Read
bw=68800KB/s,clat=237ms
6.1 單獨測試numjobs,numjobs為1,1M隨機讀
fio -filename=/xuqi/ceph/njw1 -direct=1 -numjobs=1 -thread -rw=randread -ioengine=libaio -bs=1M -size=10G -runtime=180 -group_reporting -name=Fio_Read
bw=68255KB/s,clat=15ms
6.2 單獨測試numjobs,numjobs為2,1M隨機讀
fio -filename=/xuqi/ceph/njw2 -direct=1 -numjobs=2 -thread -rw=randread -ioengine=libaio -bs=1M -size=10G -runtime=180 -group_reporting -name=Fio_Read
bw=123516KB/s,clat=16ms
6.3 單獨測試numjobs,numjobs為4,1M隨機讀
fio -filename=/xuqi/ceph/njw4 -direct=1 -numjobs=4 -thread -rw=randread -ioengine=libaio -bs=1M -size=10G -runtime=180 -group_reporting -name=Fio_Read
bw=205883KB/s,clat=19ms
6.4 單獨測試numjobs,numjobs為8,1M隨機讀
fio -filename=/xuqi/ceph/njw8 -direct=1 -numjobs=8 -thread -rw=randread -ioengine=libaio -bs=1M -size=10G -runtime=180 -group_reporting -name=Fio_Read
bw=274756KB/s,clat=29ms
6.5 單獨測試numjobs,numjobs為16,1M隨機讀
fio -filename=/xuqi/ceph/njw16 -direct=1 -numjobs=16 -thread -rw=randread -ioengine=libaio -bs=1M -size=10G -runtime=180 -group_reporting -name=Fio_Read
bw=302328KB/s,clat=54ms
7.1 numjobs=1,IO深度為1,1M隨機讀
fio -filename=/xuqi/ceph/inw1 -direct=1 -iodepth=1 -numjobs=1 -thread -rw=randread -ioengine=libaio -bs=1M -size=10G -runtime=180 -group_reporting -name=Fio_Read
bw=69037KB/s,clat=14ms
7.2 numjobs=1,IO深度為2,1M隨機讀
fio -filename=/xuqi/ceph/inw2 -direct=1 -iodepth=2 -numjobs=1 -thread -rw=randread -ioengine=libaio -bs=1M -size=10G -runtime=180 -group_reporting -name=Fio_Read
bw=68272KB/s,clat=29ms
7.3 numjobs=1,IO深度為4,1M隨機讀
fio -filename=/xuqi/ceph/inw4 -direct=1 -iodepth=4 -numjobs=1 -thread -rw=randread -ioengine=libaio -bs=1M -size=10G -runtime=180 -group_reporting -name=Fio_Read
bw=66958KB/s,clat=61ms
7.4 numjobs=1,IO深度為8,1M隨機讀
fio -filename=/xuqi/ceph/inw8 -direct=1 -iodepth=8 -numjobs=1 -thread -rw=randread -ioengine=libaio -bs=1M -size=10G -runtime=180 -group_reporting -name=Fio_Read
bw=66708KB/s,clat=122ms
7.5 numjobs=1,IO深度為16,1M隨機讀
fio -filename=/xuqi/ceph/inw16 -direct=1 -iodepth=16 -numjobs=1 -thread -rw=randread -ioengine=libaio -bs=1M -size=10G -runtime=180 -group_reporting -name=Fio_Read
bw=67542KB/s,clat=241ms
8.1 IO深度為1,numjobs=1,1M隨機讀
8.2 IO深度為1,numjobs=2,1M隨機讀
fio -filename=/xuqi/ceph/niw2 -direct=1 -iodepth=1 -numjobs=2 -thread -rw=randread -ioengine=libaio -bs=1M -size=10G -runtime=180 -group_reporting -name=Fio_Read
bw=123773KB/s,clat=16ms
8.3 IO深度為1,numjobs=4,1M隨機讀
fio -filename=/xuqi/ceph/niw4 -direct=1 -iodepth=1 -numjobs=4 -thread -rw=randread -ioengine=libaio -bs=1M -size=10G -runtime=180 -group_reporting -name=Fio_Read
bw=202943KB/s,clat=20ms
8.4 IO深度為1,numjobs=8,1M隨機讀
fio -filename=/xuqi/ceph/niw8 -direct=1 -iodepth=1 -numjobs=8 -thread -rw=randread -ioengine=libaio -bs=1M -size=10G -runtime=180 -group_reporting -name=Fio_Read
bw=266208KB/s,clat=30ms
8.5 IO深度為1,numjobs=16,1M隨機讀
fio -filename=/xuqi/ceph/niw16 -direct=1 -iodepth=1 -numjobs=16 -thread -rw=randread -ioengine=libaio -bs=1M -size=10G -runtime=180 -group_reporting -name=Fio_Read
bw=295396KB/s,clat=55ms
9.1 IO深度為4,numjobs=4,1M隨機寫
fio -filename=/xuqi/ceph/dd1 -direct=1 -iodepth=4 -numjobs=4 -thread -rw=randwrite -ioengine=libaio -bs=1M -size=10G -runtime=180 -group_reporting -name=Fio_Write
bw=60076KB/s, iops=58,clat=272ms
9.2 IO深度為16,numjobs=16,1M隨機寫
fio -filename=/xuqi/ceph/dd16 -direct=1 -iodepth=16 -numjobs=16 -thread -rw=randwrite -ioengine=libaio -bs=1M -size=10G -runtime=180 -group_reporting -name=Fio_Write
Fio_Write: (g=0): rw=randwrite, bs=1M-1M/1M-1M/1M-1M, ioengine=libaio, iodepth=16
bw=136774KB/s, iops=133
測試結果匯總:
1、單獨測試IO深度
測試項 | IO深度 | 帶寬 | 延時 |
1M隨機寫 | 1 | 18.2MB/s | 55ms |
2 | 18.5MB/s | 107ms | |
4 | 17.9MB/s | 223ms | |
8 | 18.4MB/s | 435ms | |
16 | 18.1MB/s | 882ms | |
1M隨機讀 | 1 | 65.3MB/s | 15ms |
2 | 65.4MB/s | 30ms | |
4 | 65MB/s | 61ms | |
8 | 66.8MB/s | 119ms | |
16 | 67.2MB/s | 237ms |
2、單獨測試numjobs
測試項 | Numjobs值 | 帶寬 | 延時 |
1M隨機寫 | 1 | 18.2MB/s | 54ms |
2 | 33.8MB/s | 59ms | |
4 | 56.6MB/s | 70ms | |
8 | 90.7MB/s | 88ms | |
16 | 131.2MB/s | 121ms | |
1M隨機讀 | 1 | 66.7MB/s | 15ms |
2 | 120.6MB/s | 16ms | |
4 | 201.1MB/s | 19ms | |
8 | 268.3MB/s | 29ms | |
16 | 295.2MB/s | 54ms |
3、保持numjobs=1,增加IO深度
測試項 | IO深度 | 帶寬 | 延時 |
1M隨機寫 | 1 | 18.1MB/s | 55ms |
2 | 18.3MB/s | 109ms | |
4 | 18.3MB/s | 219ms | |
8 | 18.4MB/s | 434ms | |
16 | 18.4MB/s | 869ms | |
1M隨機讀 | 1 | 67.4MB/s | 14ms |
2 | 66.7B/s | 29ms | |
4 | 65.4MB/s | 61ms | |
8 | 65.1MB/s | 122ms | |
16 | 66MB/s | 241ms |
4、保持IO深度為1,增加numjobs
測試項 | Numjobs值 | 帶寬 | 延時 |
1M隨機寫 | 1 | 18.1MB/s | 55ms |
2 | 33.8MB/s | 59ms | |
4 | 57.4MB/s | 69ms | |
8 | 89.1MB/s | 89ms | |
16 | 132MB/s | 121ms | |
1M隨機讀 | 1 | 67.4MB/s | 14ms |
2 | 120.9MB/s | 16ms | |
4 | 198.2MB/s | 20ms | |
8 | 260MB/s | 30ms | |
16 | 288.5MB/s | 55ms |
5、IO深度與numjobs值相等,1M隨機寫
測試項 | Numjobs值 | Iodepth值 | 帶寬 | 延時 |
1M隨機寫 | 4 | 4 | 58.7MB/s | 272ms |
16 | 16 | 133.6MB/s | 1905ms |
測試結果:
值 | 延時 | ||
最大帶寬 | 1M隨機寫 | 132MB/s | 121ms |
1M隨機讀 | 295.2MB/s | 54ms |
分析:
在測試過程中,觀察到的情況如下:
1、單獨使用iodepth參數,來測試1M塊大小的隨機讀寫,可以看出,無論是隨機讀還是隨機寫,增加iodepth參數時,帶寬值沒有顯著變化,而每一次延時比上一次延時基本是成倍增加的。且隨着iodepth參數的加大,觀察到磁盤讀寫速度與磁盤使用率等慢慢增加,但幅度不大,說明單獨增加iodepth參數的值不會增加集群壓力。
2、單獨使用numjobs參數來測試1M塊大小的隨機讀寫,可以看出,無論是隨機讀還是隨機寫,增加numjobs參數時,每一次測出的帶寬值比起上次測出的帶寬值基本上有較大幅度的增加,有的是成倍的增加,但是延時總體來說沒有增加很多。且隨着numjobs參數的加大,觀察到磁盤讀寫速度與磁盤使用率等快速增加,幅度較大。
3、保持numjobs參數為1,增加iodepth參數值,來測試1M塊大小的隨機讀寫,可以看出,無論是隨機讀還是隨機寫,增加iodepth參數時,帶寬值沒有顯著變化,而每一次延時比上一次延時基本是成倍增加的。
4、保持iodepth參數為1,增加numjobs參數值,來測試1M塊大小的隨機讀寫,可以看出,無論是隨機讀還是隨機寫,增加numjobs參數時,每一次測出的帶寬值比起上次測出的帶寬值基本上有較大幅度的增加,有的是成倍的增加,但是延時總體來說沒有增加很多。
5、保持iodepth 和numjobs分別為4 ,測試混合設置后測試的結果值與numjobs為4但是延時較iodepth為1的時候增加4倍。,iodepth為1對比發現2者測試結果帶寬值差不多.
6、保持iodepth 和numjobs分別為16 ,測試混合設置后測試的結果值與numjobs為16,iodepth為1對比發現2者測試結果差不多. 但是延時較iodepth為1的時候增加16倍。
總結:此次測試結果中,使用numjobs參數測試出的效果要好,更能夠增加集群客戶端測試壓力,使測試結果更准確。而iodepth參數設置后,集群帶寬值幾乎不變,反而延時隨着iodepth增加而成倍增加。混合設置后也同樣如此,隨着iodepth的值增加,帶寬值沒有增加,反而延時成倍增加。所有延時增加的倍數剛好是iodepth增加的倍數。