精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

SSD性能測試應該使用什么工具?。縎SD性能測試第一神器FIO

SSDFans ? 來源:未知 ? 作者:易水寒 ? 2018-07-07 10:29 ? 次閱讀

SSD性能測試第一神器——FIO

對于SSD性能測試來說,最好的工具莫過于FIO了。

FIO作者Jens大神

圖中這個可愛的小伙子名字叫Jens Axboe,他是丹麥哥本哈根大學計算機系沒畢業的學生,他還有一個有名的同鄉叫Linus,沒想到老鄉后來也成了他的領導。Jens今年(2017年)40歲,16歲開始就接觸Linux,后來也成了Linux開發者,現在是Linux Kernel大拿了,負責塊設備層的維護。這個塊設備層就是跟我們SSD關系最緊密的層級,聯系了上層文件系統和下層設備驅動程序。他開發了不少有用的程序,比如Linux IO Scheduler里面的Deadline, CFQ Scheduler,還有著名的王牌測試工具FIO。Jens曾經在Fusion-IO、Oracle等公司工作,現在在Facebook,阿呆聽說在硅谷Facebook給碼農的薪水是最高的。

FIO是Jens開發的一個開源測試工具,功能非常強大,本文就只介紹其中一些基本功能。

線程,隊列深度,Offset,同步異步,DirectIO,BIO

使用FIO之前,首先要有一些SSD性能測試的基礎知識。

線程指的是同時有多少個讀或寫任務在并行執行,一般來說,CPU里面的一個核心同一時間只能運行一個線程。如果只有一個核心,要想運行多線程,只能使用時間切片,每個線程跑一段時間片,所有線程輪流使用這個核心。Linux使用Jiffies來代表一秒鐘被劃分成了多少個時間片,一般來說Jiffies是1000或100,所以時間片就是1毫秒或10毫秒。

一般電腦發送一個讀寫命令到SSD只需要幾微秒,但是SSD要花幾百微秒甚至幾毫秒才能執行完這個命令。如果發一個讀寫命令,然后線程一直休眠,等待結果回來才喚醒處理結果,這種叫做同步模式。可以想象,同步模式是很浪費SSD性能的,因為SSD里面有很多并行單元,比如一般企業級SSD內部有8-16個數據通道,每個通道內部有4-16個并行邏輯單元(LUN,Plane),所以同一時間可以執行32-256個讀寫命令。同步模式就意味著,只有其中一個并行單元在工作,暴殄天物。

為了提高并行性,大部分情況下SSD讀寫采用的是異步模式。就是用幾微秒發送命令,發完線程不會傻傻的在那里等,而是繼續發后面的命令。如果前面的命令執行完了,SSD通知會通過中斷或者輪詢等方式告訴CPU,CPU來調用該命令的回調函數來處理結果。這樣的好處是,SSD里面幾十上百個并行單元大家都能分到活干,效率暴增。

不過,在異步模式下,CPU不能一直無限的發命令到SSD。比如SSD執行讀寫如果發生了卡頓,那有可能系統會一直不停的發命令,幾千個,甚至幾萬個,這樣一方面SSD扛不住,另一方面這么多命令會很占內存,系統也要掛掉了。這樣,就帶來一個參數叫做隊列深度。舉個例子,隊列深度64就是說,系統發的命令都發到一個大小為64的隊列,如果填滿了就不能再發。等前面的讀寫命令執行完了,隊列里面空出位置來,才能繼續填命令。

一個SSD或者文件有大小,測試讀寫的時候設置Offset就可以從某個偏移地址開始測試。比如從offset=4G的偏移地址開始。

Linux讀寫的時候,內核維護了緩存,數據先寫到緩存,后面再后臺寫到SSD。讀的時候也優先讀緩存里的數據。這樣速度可以加快,但是一旦掉電緩存里的數據就沒了。所以有一種模式叫做DirectIO,跳過緩存,直接讀寫SSD。

Linux讀寫SSD等塊設備使用的是BIO,Block-IO,這是個數據結構,包含了數據塊的邏輯地址LBA,數據大小和內存地址等。

FIO初體驗

一般Linux系統是自帶FIO的,如果沒有或者版本太老,要自己從https://github.com/axboe/fio下載最新版本源代碼編譯安裝。進入代碼主目錄,輸入下列命令就編譯安裝好了。

./configure;make && make install

幫助文檔用下面命令查看:

man fio

先來看一個簡單的例子:

fio -rw=randwrite -ioengine=libaio -direct=1 –thread –numjobs=1 -iodepth=64 -filename=/dev/sdb4 -size=10G -name=job1 -offset=0MB -bs=4k -name=job2 -offset=10G -bs=512 –output TestResult.log

每一項的意思都可以從fio幫助文檔查到,這里的參數解釋如下:

fio:軟件名稱。

-rw=randwrite:讀寫模式,randwrite是隨機寫測試,還有順序讀read,順序寫write,隨機讀randread,混合讀寫等。

-ioengine=libaio:libaio指的是異步模式,如果是同步就要用sync。

-direct=1:是否使用directIO。

-thread:使用pthread_create創建線程,另一種是fork創建進程。進程的開銷比線程要大,一般都采用thread測試。

–numjobs=1:每個job是1個線程,這里用了幾,后面每個用-name指定的任務就開幾個線程測試。所以最終線程數=任務數* numjobs。

-iodepth=64:隊列深度64.

-filename=/dev/sdb4:數據寫到/dev/sdb4這個盤(塊設備)。這里可以是一個文件名,也可以是分區或者SSD。

-size=10G:每個線程寫入數據量是10GB。

-name=job1:一個任務的名字,名字隨便起,重復了也沒關系。這個例子指定了job1和job2,建立了兩個任務,共享-name=job1之前的參數。-name之后的就是這個任務獨有的參數。

-offset=0MB:從偏移地址0MB開始寫。

-bs=4k:每一個BIO命令包含的數據大小是4KB。一般4KB IOPS測試,就是在這里設置。

–output TestResult.log:日志輸出到TestResult.log。

FIO結果解析

我們來看一個FIO測試隨機讀的結果。命令如下,2個任務并行測試,隊列深度64,異步模式,每個任務測試數據1GB,每個數據塊4KB。所以,這個命令是在測試兩個線程、隊列深度64下的4KB隨機讀IOPS。

# fio -rw=randread -ioengine=libaio -direct=1 -iodepth=64 -filename=/dev/sdc -size=1G -bs=4k -name=job1 -offset=0G -name=job2 -offset=10G

job1: (g=0): rw=randread, bs=4K-4K/4K-4K/4K-4K, ioengine=libaio, iodepth=64

job2: (g=0): rw=randread, bs=4K-4K/4K-4K/4K-4K, ioengine=libaio, iodepth=64

fio-2.13

Starting 2 processes

Jobs: 2 (f=2)

job1: (groupid=0, jobs=1): err= 0: pid=27752: Fri Jul 28 14:16:50 2017

read : io=1024.0MB, bw=392284KB/s, iops=98071, runt= 2673msec

slat (usec): min=6, max=79, avg= 9.05, stdev= 2.04

clat (usec): min=148, max=1371, avg=642.89, stdev=95.08

lat (usec): min=157, max=1380, avg=651.94, stdev=95.16

clat percentiles (usec):

| 1.00th=[ 438], 5.00th=[ 486], 10.00th=[ 516], 20.00th=[ 564],

| 30.00th=[ 596], 40.00th=[ 620], 50.00th=[ 644], 60.00th=[ 668],

| 70.00th=[ 692], 80.00th=[ 724], 90.00th=[ 756], 95.00th=[ 796],

| 99.00th=[ 884], 99.50th=[ 924], 99.90th=[ 1004], 99.95th=[ 1048],

| 99.99th=[ 1144]

lat (usec) : 250=0.01%, 500=6.82%, 750=81.14%, 1000=11.93%

lat (msec) : 2=0.11%

cpu : usr=9.09%, sys=90.08%, ctx=304, majf=0, minf=98

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.1%, >=64=0.0%

issued : total=r=262144/w=0/d=0, short=r=0/w=0/d=0, drop=r=0/w=0/d=0

latency : target=0, window=0, percentile=100.00%, depth=64

job2: (groupid=0, jobs=1): err= 0: pid=27753: Fri Jul 28 14:16:50 2017

read : io=1024.0MB, bw=447918KB/s, iops=111979, runt= 2341msec

slat (usec): min=5, max=41, avg= 6.30, stdev= 0.79

clat (usec): min=153, max=1324, avg=564.61, stdev=100.40

lat (usec): min=159, max=1331, avg=570.90, stdev=100.41

clat percentiles (usec):

| 1.00th=[ 354], 5.00th=[ 398], 10.00th=[ 430], 20.00th=[ 474],

| 30.00th=[ 510], 40.00th=[ 540], 50.00th=[ 572], 60.00th=[ 596],

| 70.00th=[ 620], 80.00th=[ 644], 90.00th=[ 684], 95.00th=[ 724],

| 99.00th=[ 804], 99.50th=[ 844], 99.90th=[ 932], 99.95th=[ 972],

| 99.99th=[ 1096]

lat (usec) : 250=0.03%, 500=27.57%, 750=69.57%, 1000=2.79%

lat (msec) : 2=0.04%

cpu : usr=11.62%, sys=75.60%, ctx=35363, majf=0, minf=99

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.1%, >=64=0.0%

issued : total=r=262144/w=0/d=0, short=r=0/w=0/d=0, drop=r=0/w=0/d=0

latency : target=0, window=0, percentile=100.00%, depth=64

Run status group 0 (all jobs):

READ: io=2048.0MB,aggrb=784568KB/s, minb=392284KB/s, maxb=447917KB/s, mint=2341msec, maxt=2673msec

Disk stats (read/write):

sdc: ios=521225/0, merge=0/0, ticks=277357/0, in_queue=18446744073705613924, util=100.00%

FIO會為每個Job打印統計信息。最后面是合計的數值。我們一般看重的總的性能和延遲。

首先看的是最后總的帶寬,aggrb=784568KB/s,算成4KB就是196KIOPS。

再來看看延遲Latency。Slat是發命令時間,slat (usec): min=6, max=79, avg= 9.05, stdev= 2.04說明最短時間6微秒,最長79微秒,平均9微秒,標準差2.04。clat是命令執行時間,lat就是總的延遲??吹贸鰜恚x的平均延遲在571微秒左右。

clat percentiles (usec)給出了延遲的統計分布。比如90.00th=[684]說明90%的讀命令延遲都在684微秒以內。

用FIO做數據校驗

用FIO可以檢驗寫入數據是否出錯。用-verify=str來選擇校驗算法,有md5 crc16 crc32 crc32c crc32c-intel crc64 crc7 sha256 sha512 sha1等。為了校驗,需要用do_verify參數。如果是寫,那么do_verify=1就意味著寫完再讀校驗,這種會很占內存,因為FIO會把每個數據塊的校驗數據保存在內存里。do_verify=0時只寫校驗數據,不做讀校驗。

讀的時候do_verify=1,那么讀出來的數據都會做校驗值檢查,do_verify=0的話,只讀數據,不做檢查。

另外,verify=meta時,fio會在數據塊內寫入時間戳、邏輯地址等,此時還能verify_pattern指定寫入數據pattern。

FIO其他功能

FIO功能非常強大,可以通過man來查看每一個功能,也有網頁版幫助文檔https://linux.die.net/man/1/fio。

FIO配置文件

前面的例子都是用命令行來測試,其實也可以用配置文件把這些參數寫進去。比如新建FIO配置文件test.log內容如下:

[global]

filename=/dev/sdc

direct=1

iodepth=64

thread

rw=randread

ioengine=libaio

bs=4k

numjobs=1

size=10G

[job1]

name=job1

offset=0

[job2]

name=job2

offset=10G

;–end job file

保存后,只需要fio test.log就能執行測試任務了。是不是很方便?

AS SSD Benchmark

AS SSD Benchmark測試指標

AS SSD Benchmark是一款來自德國的SSD專用測試軟件,可以測試連續讀寫、4K對齊、4KB隨機讀寫和響應時間的表現,并給出一個綜合評分。另外有兩種模式可選,即MB/s與IOPS!

AS SSD Benchmark在測試時一共會生成和寫入5GB的測試數據文件,所有3個測試傳輸率項目都是去讀寫這些數據文件來換算速度的。其4KB QD64主要是用來測NCQ(NativeCommand Queuing,原生命令隊列)差距的。IDE模式下就和普通4KB隨機沒有任何區別。由于每個測試都需要進行一定大小的數據讀寫,硬盤性能越低,測試需要花費的時間就越久,拿機械硬盤來跑這個測試并不適宜,跑完全程大約需要1個小時左右。尋址時間測試,讀取是測試尋址隨機的4KB文件(全盤LBA區域),寫入是測試尋址隨機的512B文件(指定的1GB地址范圍)。注意,運行AS SSD基準測試至少需要2GB的空閑空間。

AS SSD Benchmark除了可以測試SSD的性能外,還可以檢測出SSD的固件算法,是否打開AHCI模式,是否進行4K對齊等(如圖7-3所示),是目前應用十分廣泛的SSD測試軟件。

AS SSD Benchmark使用的測試數據是隨機的。

ATTO Disk Benchmark

ATTO Disk Benchmark是一款簡單易用的磁盤傳輸速率檢測軟件,可以用來檢測硬盤、U盤、存儲卡及其它可移動磁盤的讀取及寫入速率。該軟件使用了不同大小的數據測試包,數據包按512B、1K、 2K直到到8K進行讀寫測試,測試完成后數據用柱狀圖的形式表達出來,體現文件大小比例不同對磁盤速度的影響。

ATTO測試是極限情況下的磁盤持續讀寫性能,采用的測試模型具有很高的可壓縮性,ATTO默認測試全0數據。

CrystalDiskMark

CrystalDiskMark測試指標

CrystalDiskMark軟件是一個測試硬盤或者存儲設備的小巧工具,測試存儲設備大小和測試次數都可以選擇。測試項目里分為,持續傳輸率測試(塊單位1024KB),隨機512KB傳輸率測試,隨機4KB測試,隨機4KB QD32(隊列深度32)測試。CrystalDiskMark默認運行5次,每次1000MB的數據量,取最好成績。CrystalDiskMark軟件測試前,同樣會生成一個測試文件(大小取決于用戶設置)。一般來說,設置得越大,數據緩存起到的干擾越少,成績就更能反映SSD的真實性能,不過缺點是會嚴重影響SSD的耐久度(寫入太多數據影響P/E)。所以一般測試時都采納軟件默認值。

CrystalDiskMark設置不同填充Pattern

軟件默認測試數據為不可壓縮數據。如果設置選項中選擇了,測試成績大不一樣。其實就是把數據模型改為全部是可壓縮連續數據,這跟ATTO測試原理一樣,測試出來成績相當不錯,但實際參考意義并不大。修改數據模型后有一個明顯的特征,CDM的標題欄上會直接標注出來(如圖所示)。

PCMark Vantage

PCMark Vantage可以衡量各種類型PC的綜合性能。從多媒體家庭娛樂系統到筆記本,從專業工作站到高端游戲平臺,無論是在專業人士手中,還是屬于普通用戶,都能在PCMark Vantage里了解透徹,從而發揮最大性能。測試內容可以分為以下三個部分:

1、處理器測試:基于數據加密、解密、壓縮、解壓縮、圖形處理、音頻視頻轉碼、文本編輯、網頁渲染、郵件功能、處理器人工智能游戲測試、聯系人創建與搜索。

2、圖形測試:基于高清視頻播放、顯卡圖形處理、游戲測試。

3、硬盤測試:使用Windows Defender、《Alan Wake》游戲、圖像導入、Windows Vista啟動、視頻編輯、媒體中心使用、Windows Media Player搜索和歸類,以及以下程序的啟動:Office Word 2007、Adobe Photoshop CS2、Internet Explorer、Outlook 2007。

IOMeter

IOMeter應用截圖

IOMeter是一個單機或者集群的I/O子系統測量和描述工具。與前面介紹的測試軟件相比較,IOMeter在測試軟件中是屬于比較自由的,用戶可以按照測試需求去配置測試磁盤數據范圍,隊列深度,數據模式(可壓縮或者不可壓縮,有些版本支持,有些老版本不支持),測試模式(隨機或者順序訪問),讀寫測試比例,隨機和順序訪問比例,以及測試時間等等。

本地IO性能測試

啟動程序,在windows上單擊IOMeter圖標;

在“Disk Targets”頁中選擇一個驅動器

在“AccessSpecifications”頁中選擇一個需要的測試項目;

在“ResultsDisplay”頁中設置“Update Frequency (Seconds)”設置多長時間統計一次測試結果,如果不設置不但在測試期間不顯示測試結果而且在測試結束后在測試結果文件中也沒有數據;

·Total I/Os per Second:數據存取速度,該值越大越好。

·Total MBs per Second:數據傳輸速度,該值越大越好。

·Average I/O Response Time:平均響應時間,該值越小越好。

·CPU Utilization:CPU占用率,越低越好。

單擊工具欄中的“StartTests”按鈕,選擇一個測試結果輸出文件后開始一個測試(一般一次測試運行10分鐘即可);

測試完成后單擊按鈕停止所有測試。

查看測試結果,由于IOMeter沒有提供一個GUI的查看測試報告的工具??梢允褂肊xcel打開測試結果文件“csv”,然后利用Excel的圖標工具整理測試結果?;蛘呤褂肐OMeter提供的“Import Wizard for MS Access”將測試結果導入一個Access文件。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • cpu
    cpu
    +關注

    關注

    68

    文章

    10829

    瀏覽量

    211196
  • SSD
    SSD
    +關注

    關注

    20

    文章

    2851

    瀏覽量

    117253
  • 性能測試
    +關注

    關注

    0

    文章

    207

    瀏覽量

    21315

原文標題:招標和選購固態硬盤主流測試軟件詳解

文章出處:【微信號:SSDFans,微信公眾號:SSDFans】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    探秘CPU對SSD性能影響

    從最初的SATA SSD,到PCI-Express SSD再到現在M.2 SSD,存儲速度的性能發生了顛覆性的變化,可以用飛來形容,同時近些年來TLC閃存大面積應用,成本降低,不少
    發表于 02-16 10:39 ?2838次閱讀

    企業級與消費級SSD的區別

    此前我們測試過各種消費級SSD,而測試企業級SSD還是第一次,也讓我們對SSD有了更多的認知。
    發表于 07-25 11:12 ?7640次閱讀

    致態Ti600 QLC SSD性能測試

    近日長江存儲旗下的致態家族再添新成員Ti600.Ti600是致態推出的首款QLC SSD。SSDFans第一時間體驗這款產品性能,并對Ti600(2T)做了相關測試。
    發表于 09-28 09:50 ?1415次閱讀
    致態Ti600 QLC <b class='flag-5'>SSD</b><b class='flag-5'>性能</b><b class='flag-5'>測試</b>

    NVMe SSD性能影響因素分析

    NVMe SSD 廠商Spec給出的性能非常完美,前面也給出了NVMe SSD和磁盤之間的性能對比,NVMe SSD
    的頭像 發表于 11-13 11:39 ?1095次閱讀
    NVMe <b class='flag-5'>SSD</b><b class='flag-5'>性能</b>影響因素分析

    Xilinx FPGA高性能NVMe SSD主機控制器,NVMe Host Controller IP

    SSD?易于集成的同步、可綜合Verilog設計?通過完全驗證的NVMe Host Controller IP2概述NVMe Host Controller IP作為個對PCIe SSD的高
    發表于 03-27 17:23

    SSD是什么意思,什么是SSD

    、SONY等大批國外實力廠家的不斷開發研究,SSD市場已經全面開花了。不過不要擔心,中國第一SSD已經由深圳億正存儲科技公司于2007年1月1日宣布研發完成,并可以大批量進行生產,
    發表于 03-25 16:20

    再入SSD,480G做倉庫盤真爽快

    游戲盤來說,使用這款大容量SSD個不錯的選擇,畢竟不需要大量的擦寫,所以并不用擔心壽命問題和我之前入手的SP920合照張下面就是我新入手的SP550的測試因為是TLC+480G這
    發表于 08-08 14:38

    關于AS SSD Benchmark軟件和4K讀寫性能淺析

    我們在測試SSD時經常用到AS SSD Benchmark這個軟件。通過這個軟件大致了解到SSD的讀寫情況。但是
    發表于 07-25 17:20 ?3.1w次閱讀
    關于AS <b class='flag-5'>SSD</b> Benchmark軟件和4K讀寫<b class='flag-5'>性能</b>淺析

    NVMe SSD與SATA SSD性能對比

    老說NVMe SSD性能是SATA SSD的四倍,那到底實際體驗是怎樣的呢?
    的頭像 發表于 07-27 09:43 ?3.6w次閱讀

    影響SSD性能的因素有哪些 NVMe SSD性能解析

    SSD性能影響因素進行分析,并給出存儲系統設計方面的些思考。 目錄 1 存儲介質的變革 2 NVME SSD成為主流 2.1 NAND FLASH介質發展 2.2 軟件層面看
    的頭像 發表于 11-05 09:47 ?8902次閱讀

    AS SSD Benchmark固態硬盤性能測試工具應用程序免費下載

    本文檔的主要內容詳細介紹的是AS SSD Benchmark固態硬盤性能測試工具應用程序免費下載。
    發表于 03-06 08:00 ?4次下載

    SSD測試軟件的介紹

    “跑分即性能”這個道理在科技圈直被奉為圭臬,無論是品牌廠商還是消費者。對于PC、智能手機等終端設備的跑分成績是否具有極強的參考價值還是有待商榷的,不過對于SSD這類單科技產品來說,
    的頭像 發表于 12-20 16:10 ?3134次閱讀
    <b class='flag-5'>SSD</b><b class='flag-5'>測試</b>軟件的介紹

    凱智通SSD固態硬盤測試解決方案

    關于SSD固態硬盤測試座,顧名思義SSD固態硬盤測試座是用于測試固態硬盤。 那么測試座的主要功能
    的頭像 發表于 05-22 17:19 ?779次閱讀

    WD Blue SN580 PCIe 4.0 SSD測試解析

    等基準軟件測試WD Blue SN580 1TB在這些軟件默認設置下的性能,同時我們還會使用軟件所能設置的最大測試容量,以測試SSD在大容量
    發表于 08-31 10:05 ?890次閱讀
    WD Blue SN580 PCIe 4.0 <b class='flag-5'>SSD</b><b class='flag-5'>測試</b>解析

    如何才能同時測試更多SSD硬盤?

    我國企業級SSD市場規模持續擴大,對于SSD生產企業來說是機遇,也是挑戰,傳統的SSD生產廠家在做出廠測試時,通常僅能測試4個盤
    的頭像 發表于 03-15 17:39 ?384次閱讀