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

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

磁盘的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/forandever/article/details/5464902

cacti监控linux和windows磁盘IO

cacti监控linux和windows磁盘IO 标签:cacti linux磁盘IO windows磁盘IO 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则 ...

Linux如何查看与测试磁盘IO性能

1. 查看磁盘 IO 性能 1.1 top 命令 top 命令通过查看 CPU 的 wa% 值来判断当前磁盘 IO 性能,如果这个数值过大,很可能是磁盘 IO 太高了,当然也可能是其他原因,例如网络 ...

转载 IMP时数据库的IO性能监控&comma;并提供IOPS的计算方法

IMP时数据库的IO性能监控,并提供IOPS的计算方法 2011-07-15 17:36:10 分类: Linux [root@ntkdb oradata]# iostat -x 1 10     ...

Linux系统性能测试工具(六)——磁盘io性能工具之dd

本文介绍关于Linux系统(适用于centos/ubuntu等)的磁盘io性能测试工具-dd.磁盘io性能测试工具包括: fio: dd

Linux系统性能测试工具(五)——磁盘io性能工具之fio

本文介绍关于Linux系统(适用于centos/ubuntu等)的磁盘io性能测试工具-fio.磁盘io性能测试工具包括: fio: dd

windows上测试磁盘io性能

一.问题由来 前两天搭建一套演示环境,同样的java war包,放在我们这边服务器好好的,放在那边就运行缓慢. 后来把日志改成异步之后就好了. 后边找了个程序测了下io性能,竟然差了7,8倍. 二.软 ...

zabbix之 自动发现磁盘io util 监控

一.iostat Zabbix并没有提供模板来监控磁盘的IO性能,所以我们需要自己来创建一个.iostat主要用于监控系统设备的IO负载情况,iostat首次运行时显示自系统启动开始的各项统计信息,之 ...

LoadRunner监控Linux与Windows方法

1.首先保证被监视的windows系统开启以下二个服务Remote Procedure Call(RPC) 和Remote Registry Service: 2.被监视的WINDOWS机器:右击我的 ...

Linux的IO性能监控

一般使用iostat命令监控I/O性能1.iostat命令可用参数列表: OPTIONS -c Display the CPU utilization report. -d Display the d ...

随机推荐

SAM4E单片机之旅——16、NAND Flash读写

这次大概介绍了一下NAND Flash,以及在ASF中使用它的方法. 一. 接线 这个开发板搭载了一个256 MB,8位的NAND Flash(MT29F2G08ABAEA).引脚接线如下: 偷个懒, ...

JS访问剪切板中的图片

google出来一个html2canvas,它利用canvas来渲染读取的DOM树,也就是说它只能截取document里的内容,如果要像qq截图那样,应该怎么做?用过百度的Ueditor编辑器的朋友都 ...

Java多线程中线程间的通信

一.使用while方式来实现线程之间的通信 package com.ietree.multithread.sync; import java.util.ArrayList; import java.u ...

初始css

1.CSS规则由两部分构成,即选择器和声明器 声明必须放在{}中并且声明可以是一条或者多条 每条声明由一个属性和值构成,属性和值用冒号分开,每条语句用英文冒号分开 注意: css的最后一条声明,用以结 ...

bzoj千题计划288:bzoj1876&colon; &lbrack;SDOI2009&rsqb;SuperGCD

http://www.lydsy.com/JudgeOnline/problem.php?id=1876 高精压位GCD 对于  GCD(a, b)  a>b 若 a 为奇数,b 为偶数,GCD ...

【转】Python标准模块--importlib

[转]Python标准模块--importlib 作者:zhbzz2007 出处:http://www.cnblogs.com/zhbzz2007 欢迎转载,也请保留这段声明.谢谢! 1 模块简介 P ...

Rabbitmq-direct演示

在上一节中我们创建了一个日志系统.实现将日志消息广播给所有的cusumer. 在这片教程中,我们将为日志系统添加一个功能:仅仅订阅一部分消息.比如:我们可以直接将关键的错误类型日志消息保存到日志文件中 ...

【BZOJ1081】&lbrack;SCOI2005&rsqb;超级格雷码(搜索)

[BZOJ1081][SCOI2005]超级格雷码(搜索) 题面 BZOJ 洛谷 题解 找个规律吧,自己随便手玩一下,就按照正常的顺序枚举一下,发现分奇偶位考虑正序还是逆序就好了. #include& ...

&lbrack;转&rsqb;android系统各种音量的获取与设置

获取系统音量 通过程序获取android系统手机的铃声和音量.同样,设置铃声和音量的方法也很简单! 设置音量的方法也很简单,AudioManager提供了方法:publicvoidsetStreamV ...

烂笔头-Spring3

1.spring相关jar包的导入 2.配置文件bean.xml <?xml version="1.0" encoding="UTF-8"?> &l ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值