首頁/ 汽車/ 正文

效能測試之磁碟記憶體讀寫效能分析

磁碟

效能測試之磁碟記憶體讀寫效能分析

扇區sector: 是磁碟中最小的物理儲存單元,單位 512位元組(byte)

塊Block:在linux檔案系統中多個連續的扇區,被稱為block,塊的概念,也是系統中認為最小的儲存單元

linux:類似Ext4檔案系統,就是磁碟分塊

windows: 類似NTFS檔案系統,也是塊,只是被叫做簇

頁page:作業系統與記憶體資料交換的最小單位

緩衝區: buffer 記憶體與磁碟速度不匹配,在資料與磁碟進行10時,資料先進入緩衝區

頁快取: linux記憶體中對磁碟部分資料的副本,加快程式讀取磁碟的速度和程序間資料共享

在linux系統中,

一切都是檔案

。它把一切資源都看作是檔案, 像是硬體裝置等,我們對硬體的訪問,可以透過讀寫檔案的方式來進行。

磁碟檔案系統 :ext4,xfs,nfs

記憶體檔案系統:/proc,/sys 基於記憶體的檔案系統

網路檔案系統:用於訪問其他裝置資料的檔案系統,nfs,smb

讀寫檔案的操作流程 :

效能測試之磁碟記憶體讀寫效能分析

fdisk -l 檢視磁碟資訊

效能測試之磁碟記憶體讀寫效能分析

磁碟陣列RAID (Redundant Array of Independent Disks)

-- 獨立磁碟構成具有冗餘能力的陣列

由多塊獨立的磁碟組合成一個容量巨大的磁碟組,利用磁碟提供資料所產生的加成效果提升整個磁碟系統的效能。利用這個技術,把資料切割成多段,分別存在不同磁碟上

RAID0:資料分片存在2塊磁碟,

讀寫速度提升

2倍,主要用於SWAPITMP,但是資料不幾餘,資料恢復難 ——-提速

RAID1:相同資料幾餘存入2塊磁碟,寫速度不變,讀速度提升2倍,資料幾餘1份,主要用於

資料備份

,但磁碟利用率低 ——-備份

RAID5:資料分片和校驗碼混合儲存3份,

讀寫速度

提升2倍,主要在要求高速時用,可以用於

資料還原

RAID10:2塊磁碟1組先做RAID1,多組RAID1,再做RAIDO。讀寫速度N倍 兼顧RAID 0 和1 的優點

效能測試之磁碟記憶體讀寫效能分析

磁碟監聽命令

iostat

需要透過 yum install systat -y 安裝

效能測試之磁碟記憶體讀寫效能分析

iostat -dx 2

效能測試之磁碟記憶體讀寫效能分析

rrqm/s: 每秒進行merge的讀運算元目,即delta(rmerge)/s

wrqm/s:每秒進行merge的寫運算元目 即 delta(wmerge)/s

r/s: 每秒完成的讀I/0裝置次數 即delta(rio)/s

w/s:每秒完成的寫I/0裝置次數

rsec/s: 每秒讀扇區數

wsec/s: 每秒寫扇區數

rkB/s: 每秒讀k位元組數

wkB/s:每秒寫k位元組數

檢視具體磁碟使用空間使用 df-h

效能測試之磁碟記憶體讀寫效能分析

df -h 跟上詳細系統名

效能測試之磁碟記憶體讀寫效能分析

du -sh 檢視當前資料夾的磁碟大小

效能測試之磁碟記憶體讀寫效能分析

磁碟的效能指標

使用率: 指磁碟處理I/O的時間百分比

飽和度: 磁碟處理I/0的繁忙程度

IOPS: inputloutput per second 每秒的I/0請求

吞吐量: 每秒的I/O請求大小

響應時間: 指I/O請求從發出到手到響應的時間間隔

磁碟寫效能分析

先清除快取 使用命令 echo 3 > /proc/sys/vm/drop_caches

echo 1 > /proc/sys/vm/drop_caches 釋放頁快取

echo 2 > /proc/sys/vm/drop_caches 釋放目錄項

echo 3 > /proc/sys/vm/drop_caches 釋放目錄項加頁快取和 節點

執行完該命令後 buffer會清空為0,cache會減少空間,free 會增大

效能測試之磁碟記憶體讀寫效能分析

清除後的磁碟資訊

再模擬寫操作: dd if=/dev/sda of=$PWD/outfile bs=25MB count=99

效能測試之磁碟記憶體讀寫效能分析

if :輸入檔案(input file), of 輸出檔案 (out file)

/dev/sda 讀取裝置的第一個磁碟會有IO產生

of=$PWD/outfile 輸出到當前目錄的下的outfile檔案

bs=25mb count=99塊檔案25mb ,執行99次

效能測試之磁碟記憶體讀寫效能分析

vmstat 1 指標得出:

cache

增大,

b

o(寫)變大,

in

(每秒中斷)也有明顯資料變化 ,

free

資料開始變小 ,

buff

資料不變

效能測試之磁碟記憶體讀寫效能分析

iostat -dx 1 指標得出:

wkB/s

(每秒寫k位元組數)有大量資料 await也有資料 w/s (每秒完成的寫I/0裝置次數)資料變大

寫檔案的速度大概是72MB/s

效能測試之磁碟記憶體讀寫效能分析

生成的檔案

磁碟讀效能分析

先清除快取 使用命令 echo 3 > /proc/sys/vm/drop_caches

再模擬讀操作:time dd if=/dev/sda of=/dev/null bs=25MB count=99

if :輸入檔案(input file), of 輸出檔案 (out file)

/dev/sda 表示一個偽裝置只產生字元流不會產生IO

of= dev/null 偽裝置,回收站可以無限放資料

bs=25mb count=99塊檔案25mb ,執行99次

/dev/null裝置

是個黑洞裝置,它丟棄一切寫入其中資料,空裝置通常被用於丟棄不需要的輸出流。記得當年用windows時候,有個類似的裝置:NUL ,跟這個功能一樣。任何寫入該裝置資料都會被丟棄掉。從這個裡面讀取資料返回是空。將一些不用內容經常傳送給這個裝置,丟棄不需要的資料。

效能測試之磁碟記憶體讀寫效能分析

vmstat 1 指標得出:

cache部分

減少,

b

i(讀)變大,

in

(每秒中斷)也有明顯資料變化 ,

free

資料開始變小 ,

buff

大幅增大

效能測試之磁碟記憶體讀寫效能分析

iostat -dx 1 指標得出:rKB/s

/s

(每秒讀k位元組數)有大量資料 await也有資料 w/s (每秒完成的寫I/0裝置次數)資料有但是比較小

讀取檔案的速度大概是228MB/s

效能測試之磁碟記憶體讀寫效能分析

記憶體讀寫效能分析

/dev/zero裝置 使用記憶體生成字元流

在類UNIX 作業系統中, /dev/zero 是一個特殊的檔案,當你讀它的時候,它會提供無限的空字元(NULL, ASCII NUL, 0x00)。其中的一個典型用法是用它提供的字元流來覆蓋資訊,另一個常見用法是產生一個特定大小的空白檔案。

先清空快取 echo 3 >/proc/sys/vm/drop_caches

再模擬操作:time dd if=/dev/zero of=/dev/null bs=25MB count=999 (產生資料丟到回收站 所以沒有磁碟的操作只會有記憶體的操作)

磁碟的讀寫速度,幾百MB/s 記憶體 幾GB/s

效能測試之磁碟記憶體讀寫效能分析

總結:寫操作時 ,cache增大,

b

o(寫)有明顯資料,

讀資料時,buff增大,

b

i(讀)有明顯資料

相關文章

頂部