打印

Solaris 性能入门 (6) 了解 IO

本帖已经被作者加入个人空间 本主题由 sun029 于 2008-6-11 08:43 设置高亮

Solaris 性能入门 (6) 了解 IO

了解 IO(输入/输出)


iobar [Tools CD] - 用图形显示磁盘设备的 I/O
iobar 为每个磁盘设备显示两个条形图。读取和写入数据率分别在左边和右边区域以绿色显示。磁盘利用率显示在中间(红色)。在条形栏底部,以数字显示输入和输出率,使用鼠标中键可以在上一次(绿色)、平均(白色)、最大(红色)三种值中选择。使用鼠标左键可以在对数模式和线性模式之间切换显示模式。在线性模式中,缩放比例是自动的。所有值的单位都是字节/秒。


iotop [Tools CD] – 使用排名样式显示 iostat -x
iotop 是一个二进制工具,可收集磁盘、磁带、NFS 挂载、分区(片状)、SVM 元设备和磁盘路径的统计数据。这些统计信息的显示可以通过设备类或使用正则表达式进行过滤。排序顺序也可以修改。


[ 本帖最后由 云杉上的蝴蝶 于 2008-6-11 04:22 编辑 ]
|-- AI by Spruce Lab -- | Discover the Info. Tech. for Personal! && Powered by Solaris & Oracle

TOP

iostat

iostat – I/O 向导

要理解运行系统上的 I/O 行为,首先应该使用命令 iostat。iostat 可以快速回答以下问题:

    * 每秒中有多少输入/输出操作 (IOPS) 和吞吐量(MB/秒)?
    * I/O 子系统的工作负载如何(时延问题和利用率)?

在最简单的形式下,iostat -x <interval>(即 iostat -x 2)将检查所有 I/O 通道并报告统计数据。查看 iostat -xc 2:


可以从屏幕截图中看出,iostat -x <interval> 命令将报告每 <interval> 秒中的设备统计数据。每个设备使用一个单独的行进行报告,包括以下信息:

    *device:设备名称
    *r/s:每秒钟的设备读取操作,即读 IOPS。
    *w/s:每秒钟的设备写入操作,即写 IOPS。
    *kr/s:每秒中读取的千字节。
    *kw/s:每秒中写入的千字节。
    *wait:事务等待服务的平均数量(队列长度)
    *actv:将服务的活动事务的平均数量(从队列中删除但未完成)。这是设备接受的 I/O 操作数,但尚未提供服务。
    *svc_t:事务平均响应时间(以毫秒为单位)。svc_t 输出报告整个相应时间,而不是设备的服务时间。整个时间包括事务在队列中的时间和服务事务的时间。
    *%w:有事务在等待服务的时间占总时间的百分比(队列非空)。
    *%b:磁盘忙碌的时间占总时间的百分比(事务正在处理)。

将 -M 选项添加到 iostat 可以报告输出 MB 而不是 KB。

iostat 使用场景 – 顺序 I/O

我们开始研究系统执行顺序 I/O 时 iostat 的输出。要做到这一点,作为超级用户登录并在终端窗口中输入以下命令:

    *dd if=/dev/rdsk/c1d0s0 of=/dev/null bs=128k &

然后启动 iostat 命令(iostat -xM 10),观察输出。一分钟后,停止 iostat 和 dd 进程。

正如屏幕截图中看到的那样,测试系统的磁盘可以维持的读吞吐量稍大于 25 MB/秒,平均服务时间低于 5 毫秒。

iostat 使用场景 – 随机 I/O

我们开始研究系统执行随机 I/O 时 iostat 的输出。要做到这一点,启动命令:

    *find / >/dev/null 2>&1 &

然后启动 iostat 命令(iostat -xM 10),观察输出。一分钟后,停止 iostat 和 find 进程。

iostat – 随机 I/O

可以从上面的屏幕截图中看到,测试系统中同一个磁盘对于随机 I/O 仅交付 1 MB/秒以下的性能。

恰当调整 I/O 子系统的大小很有意义。必须考虑以下因素:

    *每秒中的 I/O 操作数量 (IOPS)
    *吞吐量,单位为每秒钟的 MB 数量 (MB/s)
    *服务时间(以毫秒为单位)
    *I/O 模式(顺序或随机)
    *缓存可用性
|-- AI by Spruce Lab -- | Discover the Info. Tech. for Personal! && Powered by Solaris & Oracle

TOP

iosnoop [DtraceToolkit] – 打印磁盘 I/O 事件

iosnoop 程序可以在发生 I/O 事件时打印磁盘,能提供详细的信息,比如 UID、PID、文件名、命令等等。iosnoop 测量使之通过系统缓存的磁盘事件。

我们开始研究系统执行随机 I/O 时 iosnoop 的输出。要做到这一点,启动命令:

    *find / >/dev/null 2>&1 &

然后启动 iosnoop 命令并观察输出。一分钟后,停止 iosnoop 和 find 进程。

iopattern – 示例输出
|-- AI by Spruce Lab -- | Discover the Info. Tech. for Personal! && Powered by Solaris & Oracle

TOP

iopattern [DtraceToolkit] – 打印磁盘 I/O 模式

iopattern 打印 I/O 磁盘访问模式的详细信息,比如随机或顺序事件所占的百分比。默认情况下,打印全部磁盘的所有内容。

我们开始研究系统执行随机 I/O 时 iopattern 的输出。要做到这一点,启动命令:

    *find / >/dev/null 2>&1 &

然后启动 iopattern 命令并观察输出。一分钟后,停止 iopattern 和 find 进程。

iopattern – 示例输出
|-- AI by Spruce Lab -- | Discover the Info. Tech. for Personal! && Powered by Solaris & Oracle

TOP

iotop [DtraceToolkit] – 按照进程显示磁盘 I/O 事件排名

iotop 按照进程打印 I/O 事件排名的详细信息。

我们开始研究系统执行随机 I/O 时 iotop 的输出。要做到这一点,启动命令:

    *find / >/dev/null 2>&1 &

然后启动 iotop 命令并观察输出。一分钟后,停止 iotop 和 find 进程。
|-- AI by Spruce Lab -- | Discover the Info. Tech. for Personal! && Powered by Solaris & Oracle

TOP

fsstat [Solaris 10+] – 报告文件系统统计数据

fsstat 按照文件系统类型或者路径名(转化为挂载点)报告内核文件操作活动。有关所有选项的详细内容,请参考主页 fsstat(1)。

我们开始研究系统执行随机 I/O 时 fsstat 的输出。要做到这一点,启动命令:

find / >/dev/null 2>&1 &

然后启动 fsstat / 1 命令并观察输出。一分钟后,停止 fsstat 和 find 进程。


fsstat – 示例输出
|-- AI by Spruce Lab -- | Discover the Info. Tech. for Personal! && Powered by Solaris & Oracle

TOP


感谢一直以来您对我们的支持!
当前时区 GMT+8, 现在时间是 2008-10-8 06:45 京ICP证060528 号

Designed By 17DST