IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

disktop per设备per应用层面的IO读写统计

Erlang非业余研究 2011-05-17 08:46:38 累计浏览 2,931 次
本机暂存

    我们在调优IO 密集型的应用是通常需要知道IO的使用情况. 但是iostat只能知道系统全局的,iotop只能知道每个应用的, 我们有时候需要细化到每个应用对每个设备的使用情况. 比如说mysql数据库我们通常把日志和数据分开到不同的设备, 那我们需要知道数据读写多少,日志读写多少,分开的了解.

    目前还没有工具能够很轻松的了解. 幸运的是systemtap自己带的disktop可以帮我们做到,位于/usr/share/doc/systemtap/examples/io/disktop.stp.

    我们先来配置下环境:

$ uname -r
2.6.18-164.el5
$ rpm -i kernel-debuginfo-common-2.6.18-164.el5.x86_64.rpm
$ rpm -i kernel-debuginfo-2.6.18-164.el5.x86_64.rpm
$stap -V
Systemtap translator/driver (version 1.5 /0.137 commit release-1.4-144-gdce37b5 + changes)
Copyright (C) 2005-2011 Red Hat, Inc. and others
This is free software; see the source for copying conditions.
enabled features: AVAHI LIBRPM LIBSQLITE3 NSS BOOST_SHARED_PTR TR1_UNORDERED_MAP NLS

    这样就好了.

     我们接着看如何使用:

$mount
/dev/sda11 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/sda6 on /tmp type ext3 (rw)
/dev/sda5 on /home type ext3 (rw)
/dev/sda3 on /usr type ext3 (rw)
/dev/sda2 on /var type ext3 (rw)
/dev/sda1 on /boot type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/dev/sdb1 on /u01 type ext3 (rw,noatime,nodiratime,barrier=0)

$sudo stap /usr/share/doc/systemtap/examples/io/disktop.stp

Mon May 16 05:39:20 2011 , Average:4054Kb/sec, Read:    2219Kb, Write:  18051Kb

     UID      PID     PPID                       CMD   DEVICE    T        BYTES
     502     8914     8639                    mysqld     sdb1    W     18366678
     502     8914     8639                    mysqld    sda11    R      2020497
   50672    24711     9796                     mysql     sda5    W       117430
     502    24748    30385                     mysql    sda11    R        47895
     502    24752    30385                     mysql    sda11    R        47895
     502    24756    30385                     mysql    sda11    R        47895
     502    24760    30385                     mysql    sda11    R        47895
     502    24747    24745                      grep     sda3    R         4528
     502    24751    24749                      grep     sda3    R         4528
     502    24755    24753                      grep     sda3    R         4528

...

    很简单的把,每5秒打印出使用IO最多的10个进程,有需要的话可以自己改下脚本.

同分类推荐文章

  1. 从零重建 macOS 开发机:可复现的环境初始化流程 (2026-06-14 20:36:00)
  2. 百度物理网络监控工具开源第二弹:毫秒级监控工具 baize,让你的网络问题无处遁形 (2026-06-11 08:10:28)
  3. How to Set Up Homebrew Tap for Private CLI Tools: A Complete Guide (2026-05-27 02:13:03)

查看更多 DevOps 文章 →

建议继续学习

  1. nginx、php-fpm默认配置与性能–TCP socket还是unix domain socket (累计阅读 6,183)
  2. [调优] Squid 不同版本的性能对比 (累计阅读 5,592)
  3. 通过『iostat -dx 1』命令监控IO性能 (累计阅读 5,172)
  4. 如何验证SQL PROFILE的性能? (累计阅读 4,355)
  5. 《高性能网站建设指南》笔记 (累计阅读 3,888)
  6. Java正则引发的思考 (累计阅读 3,801)
  7. Linux下获取IO压力数据 (累计阅读 3,664)
  8. 极不和谐的 fork 多线程程序 (累计阅读 3,655)
  9. 良好的书写规范提高PHP代码执行效率 (累计阅读 3,522)
  10. 稳定性思考-强弱依赖2 (累计阅读 3,491)