最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

【技術(shù)】FIO測(cè)硬盤(pán)的IOPS、吞吐量

2022-01-27 18:06 作者:村雨Mura  | 我要投稿

就是一個(gè)磁盤(pán)IO測(cè)試工具,為什么說(shuō)這個(gè),是因?yàn)檠芯縉AS中的zfs系統(tǒng)后,要測(cè)試raid下的一個(gè)讀寫(xiě)性能IOPS,用這個(gè)工具很nice


而且FIO 是一個(gè)多線程io生成工具,可以生成多種IO模式,用來(lái)測(cè)試磁盤(pán)設(shè)備的性能,可以測(cè)順序讀寫(xiě),隨機(jī)讀寫(xiě) 這兩大類(lèi)。另外,fio 還可以對(duì) blktrace 生成的文件進(jìn)行回放,然后讓我們?nèi)ザㄎ粚?shí)際系統(tǒng)的 I/O 問(wèn)題,fio 還支持將中間的操作輸出到文件,然后使用工具繪制圖表展示


此外,還有一個(gè)叫iostat的,主要用于監(jiān)控系統(tǒng)設(shè)備的IO負(fù)載情況,當(dāng)然用netdata也行


基本參數(shù)

參數(shù)說(shuō)明:

首先就是 I/O engine,這個(gè)就是告訴 fio 使用什么樣的方式去測(cè)試 I/O,我們需要根據(jù)業(yè)務(wù)的實(shí)際情況選擇不同的類(lèi)型,主要幾個(gè):

  • libaio - Linux 原生的異步 I/O,這也是通常我們這邊用的最多的測(cè)試盤(pán)吞吐和延遲的方法

  • sync - 也就是最通常的 read / write 操作

  • vsync - 使用 readv / writev,主要是會(huì)將相鄰的 I/O 進(jìn)行合并

  • psync - 對(duì)應(yīng)的 pread / pwrite,增量同步,一般sync是全量的

  • pvsync / pvsync2 - 對(duì)應(yīng)的 preadv / pwritev,以及 preadv2 / p writev2

  • ------

  • filename=/dev/sdb1 ????????????測(cè)試文件名稱(chēng),通常選擇需要測(cè)試的盤(pán)的data目錄。

  • direct=1 ????????????是否使用directIO,測(cè)試過(guò)程繞過(guò)OS自帶的buffer,使測(cè)試磁盤(pán)的結(jié)果更真實(shí)。所以有一種模式叫做DirectIO,跳過(guò)緩存,直接讀寫(xiě)SSD。?

  • rw=randwrite ????測(cè)試隨機(jī)寫(xiě)的I/O

  • rw=randrw? ? ?????測(cè)試隨機(jī)寫(xiě)和讀的I/O

  • bs=16k ??????????????單次io的塊文件大小為16k,也就是一次 I/O 操作的大小,通常我們都是讀寫(xiě)使用相同的 block,譬如 bs=4k,但實(shí)際還會(huì)不一樣,我們可以用 bs=4k,16k 來(lái)設(shè)置讀是 4k,但寫(xiě)是 16k

  • bsrange=512-2048 ????????????????同上,提定數(shù)據(jù)塊的大小范圍

  • size=5G ????????????? 每個(gè)線程讀寫(xiě)的數(shù)據(jù)量是5GB。

  • numjobs=1 ??????????每個(gè)job(任務(wù))開(kāi)1個(gè)線程,這里用了幾,后面每個(gè)用-name指定的任務(wù)就開(kāi)幾個(gè)線程測(cè)試。所以最終線程數(shù)=任務(wù)數(shù)(幾個(gè)name=jobx)* numjobs。?

  • name=job1????????? ??一個(gè)任務(wù)的名字,重復(fù)了也沒(méi)關(guān)系。如果fio -name=job1 -name=job2????????? ??建立了兩個(gè)任務(wù),共享-name=job1之前的參數(shù)。-name之后的就是job2任務(wù)獨(dú)有的參數(shù)。 并發(fā)測(cè)試容易滿(mǎn)死

  • thread? ????????????????? 使用pthread_create創(chuàng)建線程,另一種是fork創(chuàng)建進(jìn)程。

  • runtime=1000? ? ????測(cè)試時(shí)間為1000秒,如果不寫(xiě)則一直將5g文件分4k每次寫(xiě)完為止。測(cè)試時(shí)間runime的值應(yīng)盡量不低于1h,如果時(shí)間很短沒(méi)有測(cè)試實(shí)際意義

  • ioengine=libaio? ? ? 指定io引擎使用libaio方式。libaio:Linux本地異步I/O。請(qǐng)注意,Linux可能只支持具有非緩沖I/O的排隊(duì)行為(設(shè)置為“direct=1”或“buffered=0”);rbd:通過(guò)librbd直接訪問(wèn)CEPH Rados?

  • iodepth=16????????????隊(duì)列的深度為16.在異步模式下,CPU不能一直無(wú)限的發(fā)命令到SSD。比如SSD執(zhí)行讀寫(xiě)如果發(fā)生了卡頓,那有可能系統(tǒng)會(huì)一直不停的發(fā)命令,幾千個(gè),甚至幾萬(wàn)個(gè),這樣一方面SSD扛不住,另一方面這么多命令會(huì)很占內(nèi)存,系統(tǒng)也要掛掉了。這樣,就帶來(lái)一個(gè)參數(shù)叫做隊(duì)列深度。


  • rwmixwrite=30 ????????在混合讀寫(xiě)的模式下,寫(xiě)占30%

  • group_reporting ????? 關(guān)于顯示結(jié)果的,匯總每個(gè)進(jìn)程的信息。

  • 此外

  • lockmem=1g ????????????只使用1g內(nèi)存進(jìn)行測(cè)試。

  • zero_buffers? ? ????????? 用0初始化系統(tǒng)buffer。

  • nrfiles=8 ????????????????? ?每個(gè)進(jìn)程生成文件的數(shù)量。



磁盤(pán)讀寫(xiě)常用測(cè)試點(diǎn):

1. Read=100% Ramdon=100% rw=randread (100%隨機(jī)讀)

2. Read=100% Sequence=100% rw=read (100%順序讀)

3. Write=100% Sequence=100% rw=write (100%順序?qū)懀?/p>

4. Write=100% Ramdon=100% rw=randwrite (100%隨機(jī)寫(xiě))

5. Read=70% Sequence=100% rw=rw, rwmixread=70, rwmixwrite=30

(70%順序讀,30%順序?qū)懀?/p>

6. Read=70% Ramdon=100% rw=randrw, rwmixread=70, rwmixwrite=30

(70%隨機(jī)讀,30%隨機(jī)寫(xiě))


實(shí)戰(zhàn)解讀

這是一臺(tái)12核CPU+128G DDR4內(nèi)存+1T數(shù)據(jù)中心級(jí)NVME+10*10TB企業(yè)級(jí)機(jī)械硬盤(pán)的機(jī)器

配置如下:

最新的fio可以在https://github.com/axboe/fio進(jìn)行下載,但可能會(huì)由于系統(tǒng)自帶的gcc版本較低導(dǎo)致無(wú)法順利安裝。升級(jí)gcc后即可順利安裝。升級(jí)gcc請(qǐng)參考:https://blog.csdn.net/weixin_40343504/article/details/107843661


前面說(shuō)了,iostat是一個(gè)實(shí)時(shí)監(jiān)測(cè)工具,所以能看到后面operations和bandwidth有一些小小的讀寫(xiě)活動(dòng),屬于正常

這十塊盤(pán)可以看到是組了raidz1,就是raid5


開(kāi)始IO測(cè)試,執(zhí)行代碼

這里隨機(jī)寫(xiě)入測(cè)試,增量同步,每個(gè)線程都寫(xiě)入總量為10G的文件,但10G文件的單個(gè)塊大小為16K,30個(gè)線程一起,運(yùn)行10秒(比較恐怖的一個(gè)測(cè)試)


顯示結(jié)果

來(lái)解讀一下:

  • w=153MiB/s????寫(xiě)入速度

  • w=9782 IOPS????寫(xiě)IOPS指標(biāo)


  • IOPS=11.1k????IOPS值

  • BW=173MiB/s (182MB/s)(1734MiB/10002msec)????指帶寬,平均值173,峰值182,1734MB 每10000微秒(10秒內(nèi)總共走了1734M數(shù)據(jù))

  • bw 小文件傳輸時(shí)的帶寬數(shù)值


  • slat=提交延遲,提交該IO請(qǐng)求到kernel所花的時(shí)間(不包括kernel處理的時(shí)間)

  • clat=完成延遲, 提交該IO請(qǐng)求到kernel后,處理所花的時(shí)間

  • lat=響應(yīng)時(shí)間,總共花了多少時(shí)間

  • 后面是lat測(cè)試響應(yīng)時(shí)間的一個(gè)分布情況:例如lat (msec)? ?: 2=11.54%, 4=46.17%, 10=19.38%, 20=0.29%, 50=0.07%,表示在2微秒內(nèi)有11.54%,4微秒內(nèi)的有46.17%...以此類(lèi)推

其實(shí)主要看開(kāi)頭,結(jié)尾,中間這三個(gè)部分就行

IOPS差不多10000,寫(xiě)入帶寬速度173M/s


再來(lái)一個(gè)

主要看這幾個(gè)數(shù)值就行

這是一塊Optane 盤(pán),固態(tài)的,性能很強(qiáng)


擴(kuò)展補(bǔ)充

硬盤(pán)性能衡量

衡量硬盤(pán)性能,最直觀的就是IOPS和吞吐量。

1、IOPS,每秒處理的IO次數(shù) 指存儲(chǔ)設(shè)備(HDD、SSD、SAN)單位時(shí)間內(nèi)能處理的IO請(qǐng)求數(shù)量,對(duì)隨機(jī)讀寫(xiě)頻繁的應(yīng)用,如OLTP數(shù)據(jù)庫(kù)、圖片、是最關(guān)鍵的衡量指標(biāo)。IOPS數(shù)值受讀寫(xiě)比例、隨機(jī)IO、IO大小、隊(duì)列深度等因數(shù)影響。數(shù)據(jù)庫(kù)通常訪問(wèn)一系列不連續(xù)的數(shù)據(jù),根據(jù)文件物理位置,需要很多次IO才能完成。所以需要隨機(jī)IO高的設(shè)備。

決定因素有:磁盤(pán)個(gè)數(shù),cache命中率,陣列算法

2、Throughput,吞吐量 指單位時(shí)間內(nèi)可以成功傳輸?shù)臄?shù)據(jù)數(shù)量,傳輸包括讀和寫(xiě)的總和。對(duì)于大文件或者流媒體的應(yīng)用,擁有大量順序讀寫(xiě),則更關(guān)注數(shù)據(jù)吞吐量。數(shù)據(jù)吞吐量還受到存儲(chǔ)設(shè)備接口速度限制,比如IDE、SATA、SAS、FC,SSD使用PCIE Nvme接口最佳,但同時(shí)期推出的接口都大于存儲(chǔ)設(shè)備吞吐量上限。

決定因素有:陣列架構(gòu),光纖通道大小,硬盤(pán)個(gè)數(shù)


存儲(chǔ)性能

1、機(jī)械硬盤(pán)的性能計(jì)算?

對(duì)機(jī)械硬盤(pán)來(lái)說(shuō),IOPS = 1000 / (尋道時(shí)間 + 旋轉(zhuǎn)延時(shí) + 傳輸時(shí)間)。?

?IOPS計(jì)算完整公式:

IO Time = Seek Time + 60 sec/Rotational Speed/2 + IO Chunk Size/Transfer Rate

于是計(jì)算IOPS公式為:

IOPS = 1/IO Time?

= 1/(Seek Time + 60 sec/Rotational Speed/2 + IO Chunk Size/Transfer Rate)

又因?yàn)?s=1000ms,通常時(shí)間都是ms級(jí)別的,下面公式就用1000來(lái)除了


  1. 尋道時(shí)間,磁頭移動(dòng)到對(duì)應(yīng)磁道上的耗時(shí)。 Sata 7200RPM,平均尋道時(shí)間是9ms。 Sas 10000RPM,平均尋道時(shí)間是6ms。 Sas 15000RPM,平均尋道時(shí)間是4ms。  

  2. 旋轉(zhuǎn)延時(shí),盤(pán)片旋轉(zhuǎn)至需要的扇區(qū)移至磁頭下方耗時(shí)。 平均為磁盤(pán)旋轉(zhuǎn)一周所需時(shí)間的一半,60 * 1000/7200/2。 Sata 7200RPM,旋轉(zhuǎn)延時(shí) 60 * 1000 / 7200 / 2 = 4.17ms。 Sas 10000RPM,旋轉(zhuǎn)延時(shí)3ms。 Sas 15000RPM,旋轉(zhuǎn)延時(shí)約2ms。?

  3. ?傳輸時(shí)間,傳輸讀寫(xiě)數(shù)據(jù)耗時(shí)。 平均數(shù)據(jù)大小除以接口傳輸率,耗時(shí)很小粗略計(jì)算可以忽略。 Sata,300~600MB/s。 Sas,3Gbit/s。 FC,2~4Gbit/s。 NVME,32Gbit/s。 根據(jù)上述信息,我們常用的Sas 15000RPM,MySQL應(yīng)用16k塊,機(jī)械硬盤(pán)IOPS = 1000 / (4 + 2 + 16K / 375K) = 165。


有人可能看不懂ransfer Rate 375K哪來(lái)的,一般就是硬盤(pán)固定的傳輸?shù)乃俣?,那我找了著名的HC550 16T盤(pán)的數(shù)據(jù),這里看4K,基本讀寫(xiě)都在個(gè)位數(shù),單位兆,附近,一般機(jī)械硬盤(pán)7200轉(zhuǎn)的傳輸,尤其是讀取,很難超過(guò)1M,都是幾百K,所以上述用了375K算是較為老舊一點(diǎn)的盤(pán)了,不過(guò)差距也沒(méi)那么大,現(xiàn)在的盤(pán)性能更強(qiáng),那么最后一項(xiàng)接近于0

對(duì)比一下NVme固態(tài)的,也是讀取低于寫(xiě)入,但讀取大約能超過(guò)30M,50-60倍的一個(gè)差距,所以如果你用牛X的固態(tài)來(lái)計(jì)算,最后第三個(gè)值可以忽略不計(jì)


2. SSD硬盤(pán)IO計(jì)算?

固態(tài)硬盤(pán)沒(méi)有尋道時(shí)間和旋轉(zhuǎn)時(shí)間。IO耗時(shí)是通過(guò)地址查找數(shù)據(jù)耗時(shí),根據(jù)芯片顆粒SLC、MLC,中控芯片、隊(duì)列深度32~64、接口Sata、PCIE的不同,一般負(fù)載非太高時(shí)是相對(duì)固定值(控制在60%利用率)。 IOPS = 1000 / IO耗時(shí)。因?yàn)镾SD比較固定,比如Intel 320 SSD對(duì)8K avgrq-sz耗時(shí)0.1ms,1000/0.1ms=10000 IOPS。


1、美光(Crucial)M4系列 128G 2.5英寸 SATA-3固態(tài)硬盤(pán)(CT128M4SSD2)??
500 MB/sec (SATA 6Gb/s),175 MB/sec (SATA 6Gb/s)
隨機(jī)讀取 4k 45,000 IOPS,,隨機(jī)寫(xiě)入 4k 20,000 IOPS

2、三星(SAMSUNG)830系列 512G 2.5英寸 SATA-3固態(tài)硬盤(pán)(MZ-7PC512B/WW)?
連續(xù)讀取:最大 520 MB/秒 連續(xù)寫(xiě)入:最大 400MB/秒?

隨機(jī)讀取: 80,000 IOPS 隨即寫(xiě)入:最大 36,000 IOPS

3、三星980pro

隨機(jī)讀取 4k 45,000 IOPS,隨機(jī)寫(xiě)入 4k 20,000 IOPS




3、iops估算raid盤(pán)數(shù)

如果單盤(pán)不能滿(mǎn)足性能需求,需要通過(guò)Raid實(shí)現(xiàn),計(jì)算所需硬盤(pán)數(shù)公式如下(不同讀寫(xiě)策略不一定相同,以下只是常見(jiàn)的一種)

Raid1、10,Drive IOPS = Read IOPS + 2*Write IOPS?

Raid3、5,Drive IOPS = Read IOPS + 4*Write IOPS?

Raid6,Drive IOPS = Read IOPS + 6*Write IOPS?


假設(shè)需要IOPS 5000,讀寫(xiě)比例2:1,則RAID10后IOPS需求為。 RAID10,(2/3) * 5000 + 2 * (1/3) * 5000 = 6666 IOPS c、已知Sas 15000RPM機(jī)械硬盤(pán)IOPS165。 5000IOPS所需硬盤(pán)個(gè)數(shù), 6666 / 165 = 40。


另外還需要了解raid的寫(xiě)懲罰,參考:

http://www.dostor.com/article/2013-08-26/349588.shtml


可用的IOPS = (物理磁盤(pán)總的IOPS × 寫(xiě)百分比 ÷ RAID寫(xiě)懲罰) + (物理磁盤(pán)總的IOPS × 讀百分比)


假設(shè)組成RAID-5的物理磁盤(pán)總共可以提供500 IOPS,使用該存儲(chǔ)的應(yīng)用程序讀寫(xiě)比例是50%/50%,那么對(duì)于前端主機(jī)而言,實(shí)際可用的IOPS是:


(500 ×50% ÷ 4)+ ( 500 * 50%) = 312.5 IOPS



4、常見(jiàn)存儲(chǔ)設(shè)備參考性能,avgrq-sz 8~16K?

5400 rpm SATA,60 IOPS?

7200 rpm SATA,70 IOPS?

10000 rpm SAS,110 IOPS?

15000 rpm SAS,150 IOPS

Sequential RW 180MB/s、Radom RW 15MB/s。?

SSD Sata,3000~40000 IOPS,R 400MB/s、W 250MB/s。

SSD PCIE,20000~40000 IOPS,R 500MB/s、W 300MB/s。?

內(nèi)存,1000000+ IOPS,30~60 GB/s。


5、響應(yīng)時(shí)間和IOPS:

R=T/(1-U)?

R是響應(yīng)時(shí)間?

T是I/O控制器服務(wù)一個(gè)塊所用時(shí)間

U是硬盤(pán)利用率


磁盤(pán)利用率越高,磁盤(pán)響應(yīng)時(shí)間越慢

因此對(duì)于敏感應(yīng)用,磁盤(pán)利用率不要超過(guò)70%。即單盤(pán)最大實(shí)際能提供的IOPS,為MAX(IOPS)*70%

15000rpm的硬盤(pán),最大提供IOPS為180,實(shí)際能提供的其實(shí)只有180*70%=126

系統(tǒng)實(shí)際IOPS越接近理論的最大值,IO的響應(yīng)時(shí)間會(huì)成非線性的增長(zhǎng),越是接近最大值,響應(yīng)時(shí)間就變得越大,而且會(huì)比預(yù)期超出很多。磁盤(pán)利用率超過(guò)70%,響應(yīng)時(shí)間會(huì)急劇上升


8K IO Chunk Size (135 IOPS, 7.2 ms)   

135 => 240.0 ms   

105 => 29.5 ms   

75 => 15.7 ms   

45 => 10.6 ms   


64K IO Chunk Size(116 IOPS, 8.6 ms)   

135 => 沒(méi)響應(yīng)了……   

105 => 88.6 ms   

75 => 24.6 ms   

45 => 14.6 ms


6、IOPS和傳輸速度(吞吐量)的關(guān)系:

IOPS和傳輸速度沒(méi)有直接關(guān)系,不能使用IOPS*塊大小=傳輸速度

在沒(méi)有緩存的情況下它們共同的決定因素都是對(duì)磁盤(pán)系統(tǒng)的訪問(wèn)方式以及單個(gè)IO的大小。對(duì)磁盤(pán)進(jìn)行隨機(jī)訪問(wèn)時(shí)候我們可以利用IOPS來(lái)衡量一個(gè)磁盤(pán)系統(tǒng)的性能,此時(shí)的傳輸速度不會(huì)太大

但是當(dāng)對(duì)磁盤(pán)進(jìn)行連續(xù)訪問(wèn)時(shí),此時(shí)的IOPS已經(jīng)沒(méi)有了參考的價(jià)值,這個(gè)時(shí)候限制實(shí)際傳輸速度卻是磁盤(pán)的最大傳輸速度

因此在實(shí)際的應(yīng)用當(dāng)中,只會(huì)用IOPS來(lái)衡量小IO的隨機(jī)讀寫(xiě)的性能,而當(dāng)要衡量大IO連續(xù)讀寫(xiě)的性能的時(shí)候就要采用傳輸速度而不能是IOPS了。


【技術(shù)】FIO測(cè)硬盤(pán)的IOPS、吞吐量的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
乌什县| 喜德县| 灵寿县| 上杭县| 庆元县| 全南县| 宁国市| 邳州市| 抚顺县| 包头市| 三河市| 和硕县| 新营市| 新晃| 泸定县| 克拉玛依市| 宣汉县| 开鲁县| 冀州市| 泾阳县| 确山县| 汾阳市| 建水县| 清丰县| 遂川县| 体育| 洛阳市| 南开区| 安化县| 凌源市| 石屏县| 比如县| 明水县| 台中市| 潜江市| 嘉义市| 临潭县| 四平市| 武陟县| 时尚| 宁津县|