dd是進行資料塊拷貝的命令,可以很好的測試硬碟讀寫效能,網上例子很多,但是有時候我們並沒有很好的理解它。
我用單機單塊硬碟重新測試下。並且分析。
寫效能測試
[root@localhost ~]# dd if=/dev/zero bs=1024 count=1000000 of=./1gb.file conv=fdatasync
記錄了1000000+0 的讀入
記錄了1000000+0 的寫出
1024000000位元組(1.0 gb)已複製,9.07139 秒,113 mb/秒
解釋:
if=/dev/zero 提供資料源頭。一般認為提供資料耗時佔總比例很低,進而可以忽略它的耗時。
bs=1024 一次產生1024個位元組數。
count=1000000 迴圈產生1000000次1024位元組
cony=fdatasync 寫檔案為了減少對磁碟的頻繁訪問,所以除非你關閉檔案的讀寫快取,不然檔案的寫入是先寫進快取的。fdatasync的作用就是將資料寫入磁碟
讀效能測試
[root@localhost ~]# dd if=./1gb.file bs=1024 of=/dev/null
記錄了1000000+0 的讀入
記錄了1000000+0 的寫出
1024000000位元組(1.0 gb)已複製,0.762979 秒,1.3 gb/秒
[root@localhost ~]# free
total used free shared buffers cached
mem: 3847976 2859992 987984 134476 0 2297636
-/+ buffers/cache: 562356 3285620
swap: 4079612 286208 3793404
解釋:
of=/dev/null 理解為乙個不占用寫時間的地方就可以。
常識告訴我,機械硬碟讀速度不可能有1.3gb/秒。我覺得是cache對它進行了干擾。
所以我們需要清空cache,以前測試oom,寫過類似的程式把資料從cache擠出去。
我們清空cache後重新測試!
[root@localhost ~]# free
total used free shared buffers cached
mem: 3847976 470032 3377944 130980 0 12388
-/+ buffers/cache: 457644 3390332
swap: 4079612 432476 3647136
[root@localhost ~]# dd if=./1gb.file bs=1024 of=/dev/null
記錄了1000000+0 的讀入
記錄了1000000+0 的寫出
1024000000位元組(1.0 gb)已複製,7.82455 秒,131 mb/秒
131mb/秒這個資料是比較正常的,如果資料有偏差,可以按這種步驟多試幾次求眾數吧。
目前來看。這樣測試出來的資料是可信的。也沒有明顯的弊端。
Linux硬碟讀寫測試
linux伺服器想要知道硬碟的讀寫是否能滿足服務的需要,我們可以使用linux自帶的dd命令測試硬碟的讀寫速度,方法如下 登入ssh,輸入以下命令即可,根據測試資料的大小等待返回的時間不同 linux硬碟寫入速度 time dd if dev zero of var test bs 2k count...
linux測試硬碟讀寫速度
time有計時作用,dd用於複製,從if讀出,寫到of。if dev zero不產生io,因此可以用來測試純寫速度。同理of dev null不產生io,可以用來測試純讀速度。bs是每次讀或寫的大小,即乙個塊的大小,count是讀寫塊的數量。1.測 目錄所在磁碟的純寫速度 time dd if de...
linux測試硬碟讀寫速度
time有計時作用,dd用於複製,從if讀出,寫到of。if dev zero不產生io,因此可以用來測試純寫速度。同理of dev null不產生io,可以用來測試純讀速度。bs是每次讀或寫的大小,即乙個塊的大小,count是讀寫塊的數量。1.測 目錄所在磁碟的純寫速度 time dd if de...