windows磁盤I/O的性能評估方法詳解
通常,我們很容易觀察到數(shù)據(jù)庫服務(wù)器的內(nèi)存和CPU壓力。但是對I/O壓力沒有直觀的判斷方法。
磁盤有兩個重要的參數(shù): Seek time、 Rotational latency。正常的I/O計數(shù)為:①1000/(Seek time+Rotational latency)*0.75,在此范圍內(nèi)屬正常。當(dāng)達到85%的I/O計數(shù)以上時則基本認(rèn)為已經(jīng)存在I/O瓶勁。
理論情況下,磁盤的隨機讀計數(shù)為125、順序讀計數(shù)為225。對于數(shù)據(jù)文件而言是隨機讀寫,日志文件是順序讀寫。因此,數(shù)據(jù)文件建議存放于RAID5上,而日志文件存放于RAID10或RAID1中。
下面假設(shè)在有4塊硬盤的RAID5中觀察到的Physical Disk性能對象的部分值:
- Avg. Disk Queue Length 12
- Avg. Disk Sec/Read .035
- Avg. Disk Sec/Write .045
- Disk Reads/sec 320
- Disk Writes/sec 100
- Avg. Disk Queue Length,12/4=3,每塊磁盤的平均隊列建議不超過2。
- Avg. Disk Sec/Read一般不要超過11~15ms。
- Avg. Disk Sec/Write一般建議小于12ms。
從上面的結(jié)果,我們看到磁盤本身的I/O能力是滿足我們的要求的,原因是因為有大量的請求才導(dǎo)致隊列等待,這很可能是因為你的SQL語句導(dǎo)致大量的表掃描所致。在進行優(yōu)化后,如果還是不能達到要求,下面的公式可以幫助你計算使用幾塊硬盤可以滿足這樣的并發(fā)要求:
- Raid 0 -- I/Os per disk = (reads + writes) / number of disks
- Raid 1 -- I/Os per disk = [reads + (2 * writes)] / 2
- Raid 5 -- I/Os per disk = [reads + (4 * writes)] / number of disks
- Raid 10 -- I/Os per disk = [reads + (2 * writes)] / number of disks
我們得到的結(jié)果是:(320+400)/4=180,這時你可以根據(jù)公式①來得到磁盤的正常I/O值。假設(shè)現(xiàn)在正常I/O計數(shù)為125,為了達到這個結(jié)果:720/125=5.76。就是說要用6塊磁盤才能達到這樣的要求。
但是上面的Disk Reads/sec和Disk Writes/sec是個很難正確估算的值。因此只能在系統(tǒng)比較忙時,大概估算一個平均值,作為計算公式的依據(jù)。另一個是你很難從客戶那里得到Seek time、Rotational latency參數(shù)的值,這也只能用理論值125進行計算。
如何通過Performance Log確定SQL的磁盤有性能問題?
1. 查看Disk Bytes/sec. 舉個例子, 這個counter的最大值如果是11M, 那么說明work load并不高.
2. 查看Avg. Disk sec/Transfer. 舉例, 這個counter的推薦值是<0.015.
3. 查看Avg. Disk Queue Length, 這個推薦值是<2.
一些比較重要的performance counter:
Counter |
Description |
LogicalDisk\ % Free Space |
報告磁盤空間中未被分配的空間占邏輯卷中總可用空間的百分比. 當(dāng)選擇_Total實例的時候, 該計數(shù)器會重新計算每個盤總和. PhysicalDisk對象沒有這個計數(shù)器. |
LogicalDisk|PhysicalDisk\ Avg. Disk Bytes/Transfer |
衡量輸入/輸出(I/O)操作的數(shù)據(jù)量的大小. 如果磁盤相對快速地傳輸大量數(shù)據(jù), 那么磁盤是高效的. 當(dāng)衡量最大吞吐量的時候, 應(yīng)該觀察這個計數(shù)器. 要進一步地分析數(shù)據(jù)傳輸, 應(yīng)當(dāng)查看Avg. Disk Bytes/Read 和Avg. Disk Bytes/Write兩個計數(shù)器. |
LogicalDisk|PhysicalDisk\ Avg. Disk sec/Transfer |
標(biāo)示著數(shù)據(jù)被移動的速度(以秒衡量). 衡量每次數(shù)據(jù)傳輸?shù)钠骄鶗r間, 而不論讀或?qū)懙臄?shù)據(jù)的大小. 它展示了從數(shù)據(jù)離開Diskperf.sys, 到操作完成的讀或?qū)懙目倳r間. 這個計數(shù)器的高數(shù)值可能意味著系統(tǒng)因為隊列太長而在重試請求, 或者由于不常見地磁盤錯誤而重試請求. 要進一步地分析數(shù)據(jù)傳輸, 應(yīng)當(dāng)查看Avg. Disk sec/Read 和Avg. Disk sec/Write兩個計數(shù)器. |
LogicalDisk|PhysicalDisk\ Avg. Disk Queue Length |
記錄了在計數(shù)器數(shù)據(jù)采樣點之間的時間內(nèi)被放入隊列中等待磁盤的請求的數(shù)量, 也包括正在被處理的請求在內(nèi). 所以, 這有可能是有點夸大的數(shù)據(jù). 如果有多于兩個的請求持續(xù)地在一個單磁盤的系統(tǒng)中等待, 那么磁盤可能就是瓶頸. 要進一步地分析隊列長度的數(shù)據(jù), 應(yīng)當(dāng)查看Avg. Disk Read Queue Length 和Avg. Disk Write Queue Length兩個計數(shù)器. |
LogicalDisk|PhysicalDisk\ Current Disk Queue Length |
標(biāo)示著當(dāng)前正在等待的磁盤請求的數(shù)量, 也包括正在被處理的請求. 受許多因素的影響, 除非工作量的狀態(tài)比較穩(wěn)定, 并且你收集了充足的采樣, 才能建立一個模式. 這是一個即刻的數(shù)值或是當(dāng)前隊列的長度, 跟Avg. Disk Queue Length, Avg. Disk Read Queue Length, 和Avg. Disk Write Queue Length不一樣, 那三個反應(yīng)的是平均值. |
LogicalDisk|PhysicalDisk\ Disk Bytes/sec |
標(biāo)示著字節(jié)被傳輸?shù)乃俾? 該計數(shù)器是磁盤吞吐量的主要衡量指標(biāo). 要進一步地分析讀或?qū)懙膫鬏數(shù)臄?shù)據(jù), 應(yīng)當(dāng)分別查看Disk Read Bytes/sec 或Disk Write Bytes/sec兩計數(shù)器. |
LogicalDisk|PhysicalDisk\ Disk Transfers/sec |
標(biāo)示著每秒鐘完成的讀和寫操作數(shù), 而不論這些讀寫操作涉及到多少數(shù)據(jù). 該計數(shù)器衡量磁盤的利用率. 如果該值超過50(如果是striped的分卷, 那就是看平均到每塊物理磁盤上), 那么這可能就是一個瓶頸了. 要進一步地分析讀或?qū)懙臄?shù)據(jù)傳輸, 應(yīng)當(dāng)分別查看Disk Read/sec 和Disk Writes/sec |
LogicalDisk\ Free Megabytes |
匯報磁盤上沒被分配的字節(jié)的量. PhysicalDisk對象上, 沒有這個計數(shù)器. |
LogicalDisk|PhysicalDisk\ Split IO/sec |
匯報操作系統(tǒng)將I/O請求分為多個磁盤請求的比率. 如果一個程序請求的數(shù)據(jù)大小太大, 以至于不能放在一個單個請求中, 或是磁盤有碎片, 那么一個split I/O請求可能會發(fā)生. 影響IO請求大小的因素可以包括應(yīng)用程序設(shè)計, 文件系統(tǒng), 驅(qū)動程序. 高比率的split I/O可能本身不會作為一個問題出現(xiàn). 然而, 在單磁盤系統(tǒng)中, 這個計數(shù)器的高數(shù)值趨向于標(biāo)志著磁盤碎片. |
LogicalDisk|PhysicalDisk\ % Disk Time |
報告選擇的磁盤驅(qū)動器忙于服務(wù)讀寫請求的時間比率. 因為這個計數(shù)器的數(shù)據(jù)會跨越多個采樣, 持續(xù)地夸大磁盤利用率, 那這個值跟%Idle Time比較, 這樣能獲得更清晰的認(rèn)識. 默認(rèn)這個計數(shù)器的值不會超過100%的. |
LogicalDisk|PhysicalDisk\ % Disk Write Time |
匯報被選擇的磁盤忙于處理寫請求所占的時間的百分比. |
LogicalDisk|PhysicalDisk\ % Disk Read Time |
匯報被選擇的磁盤忙于處理讀請求所占的時間的百分比. |
LogicalDisk|PhysicalDisk\ % Idle Time |
匯報磁盤系統(tǒng)沒在處理任何請求, 而且沒有任何工作在隊列中的時間的百分比. 注意這個計數(shù)器和%Disk Time相加的時候可能結(jié)果不是100%, 因為%Disk Time可能會夸打磁盤的利用率. |
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
windows下使用Xshell時出現(xiàn)丟失msvcr110.dll等dll問題
這篇文章主要介紹了windows下使用Xshell時出現(xiàn)丟失msvcr110.dll等dll問題,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-04-04BIOS設(shè)置圖解教程 Award Bios最新(轉(zhuǎn))
我們來介紹一下Award Bios的設(shè)置,其實Award Bios和AMI Bios里面有很多東西是相同的,可以說基本上是一樣的,雖然有些名字叫法不同,但是實際作用是一樣的2007-01-01XP系統(tǒng)優(yōu)化和安全限制 IE相關(guān)修改方法與注冊表文件
XP系統(tǒng)優(yōu)化和安全限制 IE相關(guān)修改方法與注冊表文件...2007-04-04100%完美恢復(fù)因重裝XP而丟失的Vista啟動菜單
(干嗎要找回因重裝XP而丟失的Vista啟動菜單?——不想重裝Vista?。。? 本人找到這個簡單完美的方法所花去的時間已遠遠超過重裝Vista的時間…… 特此分享給那些安裝過雙系統(tǒng)(XP+Vista)后,在沒有備份啟動信息的情況下重裝了XP,然后就丟失了Vista啟動菜單而無法進入Vista而又想進入Vista卻又不想重裝Vista的同志們。(繞口令?)2008-03-03windows操作系統(tǒng)更改 遠程桌面端口號的方法
這篇文章主要介紹了windows操作系統(tǒng)更改遠程桌面 端口號的方法,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-09-09Windows服務(wù)器修改遠程桌面默認(rèn)端口過程圖示
這篇文章主要介紹了Windows服務(wù)器修改遠程桌面默認(rèn)端口過程圖示,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-11-11