溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何進(jìn)行磁盤IO性能監(jiān)控

發(fā)布時間:2021-11-05 10:08:00 來源:億速云 閱讀:517 作者:柒染 欄目:建站服務(wù)器

今天就跟大家聊聊有關(guān)如何進(jìn)行磁盤IO性能監(jiān)控,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

windows命令行下如何查看磁盤空間大小
文章分類:操作系統(tǒng) 查看所有
wmic DiskDrive get Size /value
::查看C盤
wmic LogicalDisk where "Caption='C:'" get FreeSpace,Size /value
::查看D盤
wmic LogicalDisk where "Caption='D:'" get FreeSpace,Size /value

磁盤的IO性能是衡量計算機總體性能的一個重要指標(biāo)。Linux提供了iostat命令來獲卻磁盤輸入/輸出(即IO)統(tǒng)計信息,Windows則提供了WMI接口,可以通過編寫一個簡單的腳本來獲取與iostat相當(dāng)?shù)墓δ堋?/p>

1、Linux下的iostat命令

iostat -d -k -t 2

每隔2秒統(tǒng)計一次磁盤IO信息,直到按Ctrl+C終止程序,-d 選項表示統(tǒng)計磁盤信息, -k 表示以每秒KB的形式顯示,-t 要求打印出時間信息,2 表示每隔 2 秒輸出一次。第一次輸出的磁盤IO負(fù)載狀況提供了關(guān)于自從系統(tǒng)啟動以來的統(tǒng)計信息。隨后的每一次輸出則是每個間隔之間的平均IO負(fù)載狀況。

運行該命令后,輸出:

Linux 2.6.9-67.0.7.ELsmp (localhost.localdomain)        11/19/2008

Time: 03:15:25 PM
Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               3.53        26.66        54.76   30122033   61864280
sda1              0.51         1.07         1.73    1207649    1949740
sda2              0.00         0.00         0.00        538        256
sda3             13.84        25.59        53.03   28913291   59914092

Time: 03:15:27 PM
Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda             275.38         0.00      1738.69          0       3460
sda1             14.57         0.00        58.29          0        116
sda2              0.00         0.00         0.00          0          0
sda3            419.60         0.00      1678.39          0       3340

...

每次輸出都會打印時間信息, 接下來顯示磁盤IO情況列表。

Device: 顯示磁盤名稱
tps: 表示每秒鐘輸出到物理磁盤的傳輸次數(shù)。一次傳輸就是一個對物理磁盤的 I/O 請求。多個邏輯請求可被并為對磁盤的一個單一 I/O 請求。傳輸具有中等的大小。
kB_read/s: 每秒從磁盤讀取的數(shù)據(jù)量,單位為KB。
kB_wrtn/s: 每秒從寫入磁盤的數(shù)據(jù)量,單位為KB。
Kb_read: 讀取的 KB 總數(shù)。
Kb_wrtn: 寫入的 KB 總數(shù)。

2、WMI中的 Win32_PerfFormattedData_PerfDisk_LogicalDisk 對象

Win32_PerfFormattedData_PerfDisk_LogicalDisk 代表邏輯磁盤性能數(shù)據(jù)對象,利用該對象可以獲得磁盤的心能信息。Win32_PerfFormattedData_PerfDisk_LogicalDisk對象有以下一些主要的屬性:

Name: 磁盤名稱
DiskTransfersPerSec:每秒磁盤傳輸次數(shù)。
DiskReadBytesPerSec:每秒從磁盤讀取得數(shù)據(jù)量,單位為Byte。
DiskWriteBytesPerSec:每秒從磁盤讀取得數(shù)據(jù)量,單位為Byte。
PercentFreeSpace:可用磁盤百分比。

3、使用 Win32_PerfFormattedData_PerfDisk_LogicalDisk 的注意事項

在使用 Win32_PerfFormattedData_PerfDisk_LogicalDisk 時,需要注意:

(1)不能使用 objWMIService.ExecQuery 執(zhí)行 Select 語句來獲取磁盤性能數(shù)據(jù)
(2)必須使用 WbemScripting.SWbemRefresher 將 Win32_PerfFormattedData_PerfDisk_LogicalDisk 加入,然后不斷調(diào)用 Refresh 方法刷新數(shù)據(jù)來獲取性能信息
(3)第一次刷新的時候,并不能獲取有用的數(shù)據(jù),從第二次開始,才能獲取到磁盤性能數(shù)據(jù)
(4)以上問題與 WMI 中性能監(jiān)控使用計數(shù)器的機制有關(guān)

4、使用舉例

為了對監(jiān)控磁盤性能提供一個良好的用戶界面,可以利用VBScript編寫腳本來獲取磁盤性能數(shù)據(jù)。腳本的代碼如下:

'Script. File Name: DiskMonitor.vbs

strComputer = "."
Set bjWMIService = GetObject("winmgmts:" _
   & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
set bjRefresher = CreateObject("WbemScripting.SWbemRefresher")
Set colDisks = objRefresher.AddEnum(objWMIService, "Win32_PerfFormattedData_PerfDisk_LogicalDisk").objectSet

If Wscript.Arguments.Count = 0 Then
objRefresher.Refresh
For Each objDisk in colDisks
   Wscript.Echo objDisk.Name & " " & objDisk.DiskReadBytesPerSec & " " & objDisk.DiskWriteBytesPerSec
Next
End If

If Wscript.Arguments.Count = 1 Then
Interval = CInt(Wscript.Arguments(0)) * 1000
Do While True
   objRefresher.Refresh

   Wscript.Echo
   Wscript.Echo "Time: " & " " & Time()
   Wscript.Echo FormatStr("Device:", 15, 0) & FormatStr("tps", 7, 1) & FormatStr("    kB_read/s", 13, 1) & FormatStr("kB_wrtn/s", 13, 1) & FormatStr("Free Space", 13, 1)

   For Each objDisk in colDisks
    Wscript.Echo FormatStr(objDisk.Name, 15, 0) & FormatStr(objDisk.DiskTransfersPerSec, 7, 1) & FormatStr(objDisk.DiskReadBytesPerSec, 13, 1) & FormatStr(objDisk.DiskWriteBytesPerSec, 13, 1) & FormatStr(objDisk.PercentFreeSpace & "%", 13, 1)
   Next
   Wscript.Sleep Interval
Loop
End If

If Wscript.Arguments.Count = 2 Then
i = 0
Interval = CInt(Wscript.Arguments(0)) * 1000
Count = CInt(Wscript.Arguments(1))
Do While i < Count
   objRefresher.Refresh

   Wscript.Echo
   Wscript.Echo "Time: " & " " & Time()
   Wscript.Echo FormatStr("Device:", 15, 0) & FormatStr("tps", 7, 1) & FormatStr("    kB_read/s", 13, 1) & FormatStr("kB_wrtn/s", 13, 1) & FormatStr("Free Space", 13, 1)

   For Each objDisk in colDisks
    Wscript.Echo FormatStr(objDisk.Name, 15, 0) & FormatStr(objDisk.DiskTransfersPerSec, 7, 1) & FormatStr(objDisk.DiskReadBytesPerSec, 13, 1) & FormatStr(objDisk.DiskWriteBytesPerSec, 13, 1) & FormatStr(objDisk.PercentFreeSpace & "%", 13, 1)
   Next
   Wscript.Sleep Interval
   i = i + 1
Loop
End If

Function FormatStr(str, tLen, direction)
sLen = Len(str)
fStr = ""
num = tLen - sLen

j = 0
Do While j < num
   fStr = fStr & " "
   j = j + 1
Loop

If direction = 1 Then
   fStr = fStr & str
Else
   fStr = str & fStr
End If
FormatStr = fStr
End Function


使用舉例:

(1)CSCript. DiskMonitor.vbs
止刷新一次 Win32_PerfFormattedData_PerfDisk_LogicalDisk 對象,不會獲取到有用的數(shù)據(jù)。

(2)CSCript. DiskMonitor.vbs 2
每隔 2 秒獲取一次磁盤性能數(shù)據(jù)并輸出,直到按 Ctrl+C 終止程序。

(3)CSCript. DiskMonitor.vbs 2 100
每隔 2 秒獲取一次磁盤性能數(shù)據(jù)并輸出,總共獲取 100 次,然后輸出的信息包括 DiskTransfersPerSec、DiskReadBytesPerSec、DiskWriteBytesPerSec 和 PercentFreeSpace。

看完上述內(nèi)容,你們對如何進(jìn)行磁盤IO性能監(jiān)控有進(jìn)一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI