磁盘IO性能监控(Linux 和 Windows)

作者:终南   <[email protected]>

磁盘的IO性能是衡量计算机总体性能的一个重要指标。Linux提供了iostat命令来获却磁盘输入/输出(即IO)统计信息,Windows则提供了WMI接口,可以通过编写一个简单的脚本来获取与iostat相当的功能。

1、Linux下的iostat命令

iostat -d -k -t 2

每隔2秒统计一次磁盘IO信息,直到按Ctrl+C终止程序,-d 选项表示统计磁盘信息, -k 表示以每秒KB的形式显示,-t
要求打印出时间信息,2 表示每隔 2
秒输出一次。第一次输出的磁盘IO负载状况提供了关于自从系统启动以来的统计信息。随后的每一次输出则是每个间隔之间的平均IO负载状况。

运行该命令后,输出:

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: 表示每秒钟输出到物理磁盘的传输次数。一次传输就是一个对物理磁盘的 I/O 请求。多个逻辑请求可被并为对磁盘的一个单一 I/O 请求。传输具有中等的大小。
kB_read/s: 每秒从磁盘读取的数据量,单位为KB。
kB_wrtn/s: 每秒从写入磁盘的数据量,单位为KB。
Kb_read: 读取的 KB 总数。
Kb_wrtn: 写入的 KB 总数。

2、WMI中的 Win32_PerfFormattedData_PerfDisk_LogicalDisk 对象

Win32_PerfFormattedData_PerfDisk_LogicalDisk
代表逻辑磁盘性能数据对象,利用该对象可以获得磁盘的心能信息。
Win32_PerfFormattedData_PerfDisk_LogicalDisk对象有以下一些主要的属性:

Name: 磁盘名称
DiskTransfersPerSec:每秒磁盘传输次数。
DiskReadBytesPerSec:每秒从磁盘读取得数据量,单位为Byte。
DiskWriteBytesPerSec:每秒从磁盘读取得数据量,单位为Byte。
PercentFreeSpace:可用磁盘百分比。

3、使用 Win32_PerfFormattedData_PerfDisk_LogicalDisk 的注意事项

在使用 Win32_PerfFormattedData_PerfDisk_LogicalDisk 时,需要注意:

(1)不能使用 objWMIService.ExecQuery 执行 Select 语句来获取磁盘性能数据
(2)必须使用 WbemScripting.SWbemRefresher 将 Win32_PerfFormattedData_PerfDisk_LogicalDisk 加入,然后不断调用 Refresh 方法刷新数据来获取性能信息
(3)第一次刷新的时候,并不能获取有用的数据,从第二次开始,才能获取到磁盘性能数据
(4)以上问题与 WMI 中性能监控使用计数器的机制有关

4、使用举例

为了对监控磁盘性能提供一个良好的用户界面,可以利用VBScript编写脚本来获取磁盘性能数据。脚本的代码如下:

‘Script File Name: DiskMonitor.vbs

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
   & "{impersonationLevel=impersonate}!//" & strComputer & "/root/cimv2")
set objRefresher = 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 对象,不会获取到有用的数据。

(2)CSCript DiskMonitor.vbs 2
每隔 2 秒获取一次磁盘性能数据并输出,直到按 Ctrl+C 终止程序。

(3)CSCript DiskMonitor.vbs 2 100
每隔 2 秒获取一次磁盘性能数据并输出,总共获取 100 次,然后退出。

该脚本输出的信息包括 DiskTransfersPerSec、DiskReadBytesPerSec、DiskWriteBytesPerSec 和 PercentFreeSpace。

转载:

http://blog.csdn.net/magicbreaker/archive/2008/11/22/3351964.aspx

http://blog.csdn.net/forandever/article/details/5464902

时间: 2024-08-02 16:47:37

磁盘IO性能监控(Linux 和 Windows)的相关文章

Linux运维 第三阶段(8) 磁盘IO性能监控 iostat

Linux下的iostat命令 #iostat -d -k -t 2 -d:显示系统中的设备 -k:表示以每秒kb的形式显示 -t:打印出时间信息 2:表示每2秒统计一次 每次输出都会打印时间信息, 接下来显示磁盘IO情况列表. Device: 显示磁盘名称tps: 表示每秒钟输出到物理磁盘的传输次数.一次传输就是一个对物理磁盘的 I/O 请求.多个逻辑请求可被并为对磁盘的一个单一 I/O 请求.传输具有中等的大小.kB_read/s: 每秒从磁盘读取的数据量,单位为KB.kB_wrtn/s:

cacti监控下添加对磁盘io的监控方法(Linux主机和Windows主机)

添加对磁盘io的监控方法 一.Linux下 1.下载snmpdiskio-0.9.6 将snmpdiskio 放到 /usr/local/bin/snmpdiskio chmod +x /usr/local/bin/snmpdiskio 2.修改snmpd.conf access  notConfigGroup ""      any       noauth    exact  all none none view all    included  .1               

standby 磁盘IO性能较差,影响Primary性能

1. 近日处理一个由于standby 磁盘IO性能较差,导致Primary的性能受到影响.主库主要是等待"log file switch completion",通过ASH dump分析,最终发现实际等待事件是"LGWR-LNS wait on channel".这个事件基本上可以将问题归结到网络性能和standby的IO性能,而客户的传输模式是"MAXIMUM AVAILABILITY"最后提出两个解决方案,(1). 更换性能更好的standb

linux系统测试磁盘IO性能和负载

使用time+dd+if测试磁盘IO速度 写速度: time dd if=/dev/zero of=test.dbf bs=8k count=300000其中/dev/zero是一个伪设备,它只产生空字符流,对它不会产生IO,所以,IO都会集中在of文件中,of文件只用于写,所以这个命令相当于测试磁盘的写能力. 输出的结果类似(因为一般更长测试时间更准确,所以可以设置count大一些):300000+0 records in300000+0 records out real    0m36.66

spotlight 性能监控Linux

spotlight 是一款性能监测工具,基于windows下的安装来实现,对Unix 性能信息采集和显示,可监测 CPU.Mem.Disk.Network.IO 使用情况. 也可以专门对Oracle.mysql 数据库进行性能检测,有各自的应用程序,它最大的特点就是将 性能信息进行 动态图形显示,界面非常清晰绚丽. 它来自美国意见专门做性能软件的Quest公司. 综合下载地址: spotlight8.0下载地址 Spotlight on Unix安装在本地Windows服务器上,可以监控Linu

LoadRunner监控Linux与Windows方法

1.首先保证被监视的windows系统开启以下二个服务Remote Procedure Call(RPC) 和Remote Registry Service: 2.被监视的WINDOWS机器:右击我的电脑,选择管理->共享文件夹->共享 在这里面要有C$这个共享文件夹: 3.然后保证在安装LR的机器上使用运行.输入//被监视机器IP/C$ 然后输入管理员帐号和密码,如果能看到被监视机器的C盘了,就说明你得到了那台机器的管理员权限,可以使用LR去连接了. (说明: LR要连接WINDOWS机器进

磁盘io性能分析

一,概念 磁盘io,顾名思义就是磁盘的输入输出.即向磁盘写入数据和从磁盘读取数据. I/O 读写的类型,大体上讲,I/O 的类型可以分为: 读 / 写 I/O.大 / 小块 I/O.连续 / 随机 I/O, 顺序 / 并发 I/O.在这几种类型中,我们主要讨论一下:大 / 小块 I/O.连续 / 随机 I/O, 顺序 / 并发 I/O. 1,读 / 写 I/O 磁盘是用来给我们存取数据用的,因此当说到IO操作的时候,就会存在两种相对应的操作,存数据时候对应的是写IO操作,取数据的时候对应的是是读

系统磁盘IO性能参数解释【转载】

再好的算法.实现.最终还是要来进行IO 使用的是传统的机械硬盘,存储大数据时还行,但是数据库内容获取就实在是差到一个境界了.特此进行一番探索: 磁盘 性能: 在了解磁盘 I/O 监控命令iostat前,我们需要了解磁盘 I/O 性能监控的指标,以及每个指标的所揭示的磁盘某方面的性能.磁盘 I/O 性能监控的指标主要包括: 1) 每秒 I/O 数(  [r/s w/s])- 每秒处理的请求数 IOPS:一次磁盘的连续读或者连续写称为一次磁盘 I/O. 随机读写频繁的应用的关键衡量指标 比如主要提到

Linux的IO性能监控

一般使用iostat命令监控I/O性能1.iostat命令可用参数列表: OPTIONS -c Display the CPU utilization report. -d Display the device utilization report. -h Make the NFS report displayed by option -n easier to read by a human. -k Display statistics in kilobytes per second inste