磁碟檔案讀效能測試

2021-09-25 14:58:19 字數 1876 閱讀 8854

未快取前:

time ./x bin.tar 

file size is 816322560

816322560 bytes read now

real    0m3.378s

user    0m0.000s

sys     0m0.996s

被快取後:

time ./x bin.tar 

file size is 816322560

816322560 bytes read now

real    0m0.770s

user    0m0.000s

sys     0m0.768s

硬碟讀取效能:

hdparm -t /dev/sdb 

/dev/sdb:

timing buffered disk reads: 2454 mb in  3.00 seconds = 817.84 mb/sec

10塊物理磁碟,做了raid10,因此讀效能高,達每秒817.84mb。

測試程式:

// 非優化方式編譯:g++ -g -o x x.cpp

#include 

#include 

#include 

#include 

#include 

#include 

#include 

#include 

// 帶乙個引數,為被讀取檔案的大小

int main(int argc, char* ar**)

int fd = open(ar**[1], o_rdonly);

if (-1 == fd)

perror(strerror(errno));

exit(1);

struct stat st;

if (0 == fstat(fd, &st))

// 輸出檔案大小,單位為位元組

printf("file size is %d\n", st.st_size);

// 一次性將整個檔案讀到記憶體中

char* bytes = new char[st.st_size];

int bytes_read = read(fd, bytes, st.st_size);

// 顯示實際成功讀取的位元組數

printf("%d bytes read now\n", bytes_read);

delete bytes;

close(fd);

return 0;

清快取:

使用free命令觀察下列操作的變化,以root使用者執行:先執行下sync命令,以將資料更新到磁碟,再執行echo 3 > /proc/sys/vm/drop_caches,以清除系統的cached。

檔案記憶體的快取會反應出free命令輸出的cached值的變化,實際就是page cache,檔案內容的讀取會快取在這裡。如果讀取乙個大檔案,可以看到cached的值明顯增漲,並且增漲大小差不多就是檔案的大小,buffers相當於cached的元資訊,比如檔案的inode。

cached影響檔案的讀取效能,而buffers影響到檔案的開啟效能。

drop_caches使用彙總:

echo 0 > /proc/sys/vm/drop_caches

不做釋放

echo 1 > /proc/sys/vm/drop_caches

釋放page cache

echo 2 > /proc/sys/vm/drop_caches

釋放dentries/inodes cache(其中,dentry是目錄資訊,inode是檔案資訊)

echo 3 > /proc/sys/vm/drop_caches

釋放page和dentries/inodes cache

磁碟效能測試

有時候我們對乙個新的磁碟陣列進行簡單測試,但是又不知道用什麼的工具合適,其實linux unix本身已經提供了這樣的工具 dd 1.測試磁碟寫能力 time dd if dev zero of opt test.db bs 1m count 3000 3000 0 records in 3000 0...

linux磁碟效能測試

120 test apt get install hdparm 真實機器120上測試結果 測試磁碟效能 不cache 120 test home lai hdparm t dev sda dev sda timing buffered disk reads 346 mb in 3.02 second...

FIO磁碟效能測試

一,fio安裝 wget yum install libaio devel tar zxvf fio 2.0.7.tar.gz cd fio 2.0.7 make make install fio用法 fio分順序讀,隨機讀,順序寫,隨機寫,混合隨機讀寫模式。filename 指定檔案 裝置 的名稱...