# linux系統讀寫速度檢測

前言

記錄一下在 Linux 下測試硬盤讀寫速度的命令和方法。測試的工具是linux系統自帶的 dd 命令工具 + time 命令工具

正文

dd 命令介紹

dd命令是一個功能強大的Linux命令,用於複製文件、轉換格式和計算文件和設備的吞吐量。它的基本語法如下:

dd [選線]

以下是dd命令中常用的選項:

  • if=<輸入文件>:infile 縮寫;指定輸入文件的路徑。可以是設備文件(如硬盤、光驅)或普通文件。
  • of=<輸出文件>:outfile縮寫;指定輸出文件的路徑。可以是設備文件或普通文件。
  • bs=<塊大小>:指定每次讀取和寫入的塊大小。默認爲512字節。
  • count=<塊數>:指定要複製的塊數。
  • skip=<塊數>:指定從輸入文件開始跳過的塊數。
  • seek=<塊數>:指定在輸出文件中開始寫入的塊數。
  • iflag=<輸入標記>:指定輸入文件的標記。例如,使用direct可以繞過文件系統緩存。
  • oflag=<輸出標記>:指定輸出文件的標記。
  • status=<顯示選項>:指定要顯示的進度信息類型。例如,使用progress可以顯示進度條。

time 命令介紹

time命令用於測量執行命令的時間以及資源使用情況。它在Linux系統中非常有用,可以幫助你評估命令的性能和效率。time命令有兩種形式:內部time和外部time。

1. 內部time

內部time是bash shell的內建命令,它可以記錄命令的執行時間。當你在終端中直接輸入命令並在前面加上time關鍵字時,實際上使用的是內部time。
內部time顯示的統計信息包括:

  • 實際時間(real):命令從開始到結束所經過的實際時間。
  • 用戶CPU時間(user):命令在用戶模式下花費的CPU時間。
  • 系統CPU時間(sys):命令在內核模式下花費的CPU時間。
  • CPU佔用比例(%CPU):命令使用的CPU資源百分比。

示例

# 命令將顯示ls -l命令的執行時間和CPU使用情況。
time ls -l

2. 外部time

外部time是獨立於bash shell的實用程序,可以更詳細地報告命令的執行時間和系統資源使用情況。外部time顯示的統計信息包括:

  • 實際時間(real):命令從開始到結束所經過的實際時間。
  • 用戶CPU時間(user):命令在用戶模式下花費的CPU時間。
  • 系統CPU時間(sys):命令在內核模式下花費的CPU時間。
  • 子進程用戶CPU時間(user-child):由命令創建的子進程在用戶模式下花費的CPU時間。
  • 子進程系統CPU時間(sys-child):由命令創建的子進程在內核模式下花費的CPU時間。

示例

# 命令將顯示更詳細的命令執行時間和資源使用信息
/usr/bin/time -v ls -l

延伸知識

/dev/null 目錄

/dev/null 是一個特殊的設備文件,在 Linux 和類 Unix 系統中起着很重要的作用。它通常被稱爲“黑洞”,因爲它會接收所有寫入它的數據,但不會將這些數據存儲在任何地方,相當於直接把這些數據扔掉,因此它被用來丟棄不需要的輸出。

具體來說,當程序向 /dev/null 寫入數據時,數據實際上被丟棄了,而不是寫入磁盤或其他地方。這對於一些程序需要輸出日誌或其他信息,但又不想實際將這些信息存儲在磁盤上非常有用。

除了寫入數據,/dev/null 還可以讀取和重定向。當嘗試從 /dev/null 讀取數據時,它會返回空數據,即沒有數據可讀取。同時,可以使用重定向符號“>”將輸出重定向到 /dev/null 中,從而完全禁止某些程序的輸出,使其運行更加安靜。

/dev/zero 目錄

/dev/zero 是一個特殊的設備文件,在 Linux 和類 Unix 系統中也發揮着重要的作用。它提供了一種快速生成大量二進制零的方法,因此經常用於測試、調試和初始化操作。與 /dev/null 不同,/dev/zero 會返回連續的零字節數據而不是什麼都不返回。

當讀取 /dev/zero 時,將返回連續的二進制零字節,直到請求的字節數被滿足。這使得 /dev/zero 成爲用於填充文件或緩衝區的理想源,或者作爲計算機程序中內存初始化的來源。

測試硬盤【寫】速度

測試硬盤的寫速度,基本原理是使用 dd 命令從 /dev/zero 中讀區數據,然後寫入到某個文件中。

溫馨提示: 控制寫入數據大小,別把硬盤寫爆了。

# 往當前目錄寫入一個文件,大小是 2G;(bs是每次寫入的大小,count 是寫入次數,bs * count = 總大小)
time dd if=/dev/zero of=./test.file bs=1K count=2048k conv=fsync

測試硬盤【讀】速度

我們可以創建一個比較大的文件,10G以上,然後讀取這個文件,測試讀取速度。

# 創建10G文件
dd if=/dev/zero of=./read.file bs=100M count=100 conv=fsync

# 測試讀取速度
time dd if=./read.file of=/dev/null bs=8k

後記

記錄一下

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章