91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Linux系統中FIO常用命令有哪些

發布時間:2022-02-03 14:18:08 來源:億速云 閱讀:318 作者:小新 欄目:開發技術

小編給大家分享一下Linux系統中FIO常用命令有哪些,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

FIO是測試IOPS的非常好的工具,用來對硬件進行壓力測試和驗證,支持13種不同的I/O引擎,他可以通過多線程或進程模擬各種io操作。

Linux系統中FIO常用命令有哪些

FIO 工具常用參數:

 參數說明:
 
 filename=/dev/sdb1 測試文件名稱,通常選擇需要測試的盤的data目錄。
 
 direct=1 是否使用directIO,測試過程繞過OS自帶的buffer,使測試磁盤的結果更真實。Linux讀寫的時候,內核維護了緩存,數據先寫到緩存,后面再后臺寫到SSD。讀的時候也優先讀緩存里的數據。這樣速度可以加快,但是一旦掉電緩存里的數據就沒了。所以有一種模式叫做DirectIO,跳過緩存,直接讀寫SSD。
 
 rw=randwrite 測試隨機寫的I/O
 
 rw=randrw 測試隨機寫和讀的I/O
 
 bs=16k 單次io的塊文件大小為16k
 
 bsrange=512-2048 同上,提定數據塊的大小范圍
 
 size=5G 每個線程讀寫的數據量是5GB。
 
 numjobs=1 每個job(任務)開1個線程,這里用了幾,后面每個用-name指定的任務就開幾個線程測試。所以最終線程數=任務數(幾個name=jobx)* numjobs。
 
 name=job1:一個任務的名字,重復了也沒關系。如果fio -name=job1 -name=job2,建立了兩個任務,共享-name=job1之前的參數。-name之后的就是job2任務獨有的參數。
 
 thread  使用pthread_create創建線程,另一種是fork創建進程。進程的開銷比線程要大,一般都采用thread測試。
 
 runtime=1000 測試時間為1000秒,如果不寫則一直將5g文件分4k每次寫完為止。
 
 ioengine=libaio 指定io引擎使用libaio方式。libaio:Linux本地異步I/O。請注意,Linux可能只支持具有非緩沖I/O的排隊行為(設置為“direct=1”或“buffered=0”);rbd:通過librbd直接訪問CEPH Rados
 
 iodepth=16 隊列的深度為16.在異步模式下,CPU不能一直無限的發命令到SSD。比如SSD執行讀寫如果發生了卡頓,那有可能系統會一直不停的發命令,幾千個,甚至幾萬個,這樣一方面SSD扛不住,另一方面這么多命令會很占內存,系統也要掛掉了。這樣,就帶來一個參數叫做隊列深度。
 
 Block Devices(RBD),無需使用內核RBD驅動程序(rbd.ko)。該參數包含很多ioengine,如:libhdfs/rdma等
 
 rwmixwrite=30 在混合讀寫的模式下,寫占30%
 
 group_reporting 關于顯示結果的,匯總每個進程的信息。
 
 此外
 
 lockmem=1g 只使用1g內存進行測試。
 
 zero_buffers 用0初始化系統buffer。
 
 nrfiles=8 每個進程生成文件的數量。
 
 磁盤讀寫常用測試點:
 
 1. Read=100% Ramdon=100% rw=randread (100%隨機讀)
 
 2. Read=100% Sequence=100% rw=read (100%順序讀)
 
 3. Write=100% Sequence=100% rw=write (100%順序寫)
 
 4. Write=100% Ramdon=100% rw=randwrite (100%隨機寫)
 
 5. Read=70% Sequence=100% rw=rw, rwmixread=70, rwmixwrite=30
 
 (70%順序讀,30%順序寫)
 
 6. Read=70% Ramdon=100% rw=randrw, rwmixread=70, rwmixwrite=30
 
 (70%隨機讀,30%隨機寫)

fio例子:

 [root@docker sda]# fio -ioengine=libaio -bs=4k -direct=1 -thread -rw=read -filename=/dev/sda -name="BS 4KB read test" -iodepth=16 -runtime=60
 
 BS 4KB read test: (g=0): rw=read, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=libaio, iodepth=16
 
 fio-3.7
 
 Starting 1 thread
 
 Jobs: 1 (f=1): [R(1)][100.0%][r=89.3MiB/s,w=0KiB/s][r=22.9k,w=0 IOPS][eta 00m:00s]
 
 BS 4KB read test: (groupid=0, jobs=1): err= 0: pid=18557: Thu Apr 11 13:08:11 2019
 
    read: IOPS=22.7k, BW=88.5MiB/s (92.8MB/s)(5313MiB/60001msec)
 
     slat (nsec): min=901, max=168330, avg=6932.34, stdev=1348.82
 
     clat (usec): min=90, max=63760, avg=698.08, stdev=240.83
 
      lat (usec): min=97, max=63762, avg=705.17, stdev=240.81
 
     clat percentiles (usec):
 
      |  1.00th=[  619],  5.00th=[  627], 10.00th=[  627], 20.00th=[  635],
 
      | 30.00th=[  635], 40.00th=[  685], 50.00th=[  717], 60.00th=[  725],
 
      | 70.00th=[  725], 80.00th=[  725], 90.00th=[  734], 95.00th=[  816],
 
      | 99.00th=[ 1004], 99.50th=[ 1020], 99.90th=[ 1057], 99.95th=[ 1057],
 
      | 99.99th=[ 1860]
 
    bw (  KiB/s): min=62144, max=91552, per=100.00%, avg=90669.02, stdev=3533.77, samples=120
 
    iops        : min=15536, max=22888, avg=22667.27, stdev=883.44, samples=120
 
   lat (usec)   : 100=0.01%, 250=0.01%, 500=0.01%, 750=93.85%, 1000=5.14%
 
   lat (msec)   : 2=0.99%, 4=0.01%, 10=0.01%, 50=0.01%, 100=0.01%
 
   cpu          : usr=5.35%, sys=23.17%, ctx=1359692, majf=0, minf=17
 
   IO depths    : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=100.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.1%, 32=0.0%, 64=0.0%, >=64=0.0%
 
      issued rwts: total=1360097,0,0,0 short=0,0,0,0 dropped=0,0,0,0
 
      latency   : target=0, window=0, percentile=100.00%, depth=16
 
 
 
 Run status group 0 (all jobs):
 
    READ: bw=88.5MiB/s (92.8MB/s), 88.5MiB/s-88.5MiB/s (92.8MB/s-92.8MB/s), io=5313MiB (5571MB), run=60001-60001msec
 
 
 
 Disk stats (read/write):
 
   sda: ios=1357472/0, merge=70/0, ticks=949141/0, in_queue=948776, util=99.88%

io=執行了多少M的IO

bw=平均IO帶寬 iops=IOPS runt=線程運行時間 slat=提交延遲,提交該IO請求到kernel所花的時間(不包括kernel處理的時間) clat=完成延遲, 提交該IO請求到kernel后,處理所花的時間 lat=響應時間 bw=帶寬 cpu=利用率 IO depths=io隊列 IO submit=單個IO提交要提交的IO數 IO complete=Like the above submit number, but for completions instead. IO issued=The number of read/write requests issued, and how many of them were short. IO latencies=IO完延遲的分布

io=總共執行了多少size的IO aggrb=group總帶寬 minb=最小.平均帶寬. maxb=最大平均帶寬. mint=group中線程的最短運行時間. maxt=group中線程的最長運行時間.

ios=所有group總共執行的IO數. merge=總共發生的IO合并數. ticks=Number of ticks we kept the disk busy. io_queue=花費在隊列上的總共時間. util=磁盤利用率

fio 有很多測試任務配置文件,在git工程 examples 文件夾中,我們可以使用命令行參數進行直接配置,也可以直接通過配置文件配置一次測試的內容。

更詳細對fio輸出說明請參考博文:Fio Output Explained

IO狀態監控:

進行磁盤測試的時候,我們可以使用iostat 等監控工具,查看所有磁盤當前的讀寫狀態(fedora 系統上 sysstat-11.7.3-2.fc29.x86_64 收錄了此工具)。

監控磁盤IO命令:iostat –mx 1

Iostat介紹

iostat主要用于監控系統設備的IO負載情況,iostat首次運行時顯示自系統啟動開始的各項統計信息,之后運行iostat將顯示自上次運行該命令以后的統計信息。用戶可以通過指定統計的次數和時間來獲得所需的統計信息。

語法

 iostat [ -c ] [ -d ] [ -h ] [ -N ] [ -k | -m ] [ -t ] [ -V ] [ -x ] [ -z ] [ device [...] | ALL ] [ -p [ device [,...] | ALL ] ] [ interval [ count ] ]

iostat使用范例:

 iostat -d -x -k 1 10
 
 Device:    rrqm/s wrqm/s   r/s   w/s  rsec/s  wsec/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
 
 sda          1.56  28.31  7.80 31.49   42.51    2.92    21.26     1.46     1.16     0.03    0.79   2.62  10.28
 
 Device:    rrqm/s wrqm/s   r/s   w/s  rsec/s  wsec/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
 
 sda          2.00  20.00 381.00  7.00 12320.00  216.00  6160.00   108.00    32.31     1.75    4.50   2.17  84.20

-d: 顯示該設備的狀態的參數;

-x:是一個比較常用的選項,該選項將用于顯示和io相關的擴展數據。

-k: 靜態顯示每秒的統計(單位kilobytes )

1: 第一個數字表示每隔1秒刷新一次數據顯示。

10:第二個數字表示總共的刷新次數

輸出信息的含義

 rrqm/s:每秒這個設備相關的讀取請求有多少被Merge了(當系統調用需要讀取數據的時候,VFS將請求發到各個FS,如果FS發現不同的讀取請求讀取的是相同Block的數據,FS會將這個請求合并Merge);
 
 wrqm/s:每秒這個設備相關的寫入請求有多少被Merge了。
 
 r/s: 該設備的每秒完成的讀請求數(merge合并之后的)
 
 w/s:  該設備的每秒完成的寫請求數(merge合并之后的)
 
 rsec/s:每秒讀取的扇區數;
 
 wsec/:每秒寫入的扇區數。
 
 rKB/s:每秒發送給該設備的總讀請求數
 
 wKB/s:每秒發送給該設備的總寫請求數
 
 avgrq-sz 平均請求扇區的大小
 
 avgqu-sz 是平均請求隊列的長度。毫無疑問,隊列長度越短越好。    
 
 await:  每一個IO請求的處理的平均時間(單位是微秒毫秒)。這里可以理解為IO的響應時間,一般地系統IO響應時間應該低于5ms,如果大于10ms就比較大了。這個時間包括了隊列時間和服務時間,也就是說,一般情況下,await大于svctm,它們的差值越小,則說明隊列時間越短,反之差值越大,隊列時間越長,說明系統出了問題。
 
 svctm:    表示平均每次設備I/O操作的服務時間(以毫秒為單位)。如果svctm的值與await很接近,表示幾乎沒有I/O等待,磁盤性能很好,如果await的值遠高于svctm的值,則表示I/O隊列等待太長,系統上運行的應用程序將變慢。
 
 %util: 在統計時間內所有處理IO時間,除以總共統計時間。例如,如果統計間隔1秒,該設備有0.8秒在處理IO,而0.2秒閑置,那么該設備的%util = 0.8/1 = 80%,所以該參數暗示了設備的繁忙程度。一般地,如果該參數是100%表示設備已經接近滿負荷運行了(當然如果是多磁盤,即使%util是100%,因為磁盤的并發能力,所以磁盤使用未必就到了瓶頸)。

看完了這篇文章,相信你對“Linux系統中FIO常用命令有哪些”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

自治县| 平和县| 昌乐县| 柘城县| 铜川市| 博兴县| 郁南县| 新郑市| 南通市| 石河子市| 韩城市| 兴宁市| 墨江| 金溪县| 和平县| 宁陕县| 天台县| 久治县| 大方县| 乡宁县| 荣成市| 诸城市| 华蓥市| 临沧市| 木里| 格尔木市| 黔南| 镇雄县| 腾冲县| 渝中区| 扶绥县| 莲花县| 富阳市| 苗栗县| 始兴县| 商都县| 营山县| 鹿泉市| 广东省| 鄯善县| 张家口市|