Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

2.3. Diskdevstat 和 netdevstat

diskdevstatnetdevstatSystemTap 工具,可收集有关系统上运行的所有应用的磁盘活动和网络活动的详细信息。这些工具由 PowerTOP 增长,它显示每个应用程序每秒的 CPU 唤醒数量(请参阅 第 2.2 节 “PowerTOP”)。通过这些工具收集的统计数据,您可以识别具有许多小 I/O 操作(而非更少的大操作)的功能。仅测量传输速度的其他监控工具有助于识别此类使用情况。
root 身份使用以下命令使用 SystemTap 安装这些工具:
~]# yum install tuned-utils-systemtap kernel-debuginfo
使用以下命令运行工具:
~]# diskdevstat
或者命令:
~]# netdevstat
这两个命令最多可取三个参数,如下所示:
diskdevstat update_interval total_duration display_histogram
netdevstat update_interval total_duration display_histogram
update_interval
显示更新间隔的时间(以秒为单位)。默认: 5
total_duration
整个运行的时间(以秒为单位)。默认: 86400 (1 天)
display_histogram
标记是否在运行结束时所有收集的数据的直方图。
输出类似于 PowerTOP。以下是较长的 diskdevstat 运行的输出示例:
PID  UID  DEV WRITE_CNT WRITE_MIN WRITE_MAX WRITE_AVG READ_CNT READ_MIN READ_MAX READ_AVG COMMAND
 2789  2903 sda1     854     0.000   120.000    39.836      0     0.000     0.000     0.000 plasma
 5494     0 sda1       0     0.000     0.000     0.000    758     0.000     0.012     0.000 0logwatch
 5520     0 sda1       0     0.000     0.000     0.000    140     0.000     0.009     0.000 perl
 5549     0 sda1       0     0.000     0.000     0.000    140     0.000     0.009     0.000 perl
 5585     0 sda1       0     0.000     0.000     0.000    108     0.001     0.002     0.000 perl
 2573     0 sda1      63     0.033  3600.015   515.226      0     0.000     0.000     0.000 auditd
 5429     0 sda1       0     0.000     0.000     0.000     62     0.009     0.009     0.000 crond
 5379     0 sda1       0     0.000     0.000     0.000     62     0.008     0.008     0.000 crond
 5473     0 sda1       0     0.000     0.000     0.000     62     0.008     0.008     0.000 crond
 5415     0 sda1       0     0.000     0.000     0.000     62     0.008     0.008     0.000 crond
 5433     0 sda1       0     0.000     0.000     0.000     62     0.008     0.008     0.000 crond
 5425     0 sda1       0     0.000     0.000     0.000     62     0.007     0.007     0.000 crond
 5375     0 sda1       0     0.000     0.000     0.000     62     0.008     0.008     0.000 crond
 5477     0 sda1       0     0.000     0.000     0.000     62     0.007     0.007     0.000 crond
 5469     0 sda1       0     0.000     0.000     0.000     62     0.007     0.007     0.000 crond
 5419     0 sda1       0     0.000     0.000     0.000     62     0.008     0.008     0.000 crond
 5481     0 sda1       0     0.000     0.000     0.000     61     0.000     0.001     0.000 crond
 5355     0 sda1       0     0.000     0.000     0.000     37     0.000     0.014     0.001 laptop_mode
 2153     0 sda1      26     0.003  3600.029  1290.730      0     0.000     0.000     0.000 rsyslogd
 5575     0 sda1       0     0.000     0.000     0.000     16     0.000     0.000     0.000 cat
 5581     0 sda1       0     0.000     0.000     0.000     12     0.001     0.002     0.000 perl
 5582     0 sda1       0     0.000     0.000     0.000     12     0.001     0.002     0.000 perl
 5579     0 sda1       0     0.000     0.000     0.000     12     0.000     0.001     0.000 perl
 5580     0 sda1       0     0.000     0.000     0.000     12     0.001     0.001     0.000 perl
 5354     0 sda1       0     0.000     0.000     0.000     12     0.000     0.170     0.014 s  h
 5584     0 sda1       0     0.000     0.000     0.000     12     0.001     0.002     0.000 perl
 5548     0 sda1       0     0.000     0.000     0.000     12     0.001     0.014     0.001 perl
 5577     0 sda1       0     0.000     0.000     0.000     12     0.001     0.003     0.000 perl
 5519     0 sda1       0     0.000     0.000     0.000     12     0.001     0.005     0.000 perl
 5578     0 sda1       0     0.000     0.000     0.000     12     0.001     0.001     0.000 perl
 5583     0 sda1       0     0.000     0.000     0.000     12     0.001     0.001     0.000 perl
 5547     0 sda1       0     0.000     0.000     0.000     11     0.000     0.002     0.000 perl
 5576     0 sda1       0     0.000     0.000     0.000     11     0.001     0.001     0.000 perl
 5518     0 sda1       0     0.000     0.000     0.000     11     0.000     0.001     0.000 perl
 5354     0 sda1       0     0.000     0.000     0.000     10     0.053     0.053     0.005 lm_lid.sh
列是:
PID
应用程序的进程 ID
UID
运行应用程序的用户 ID
DEV
I/O 发生的设备
WRITE_CNT
写入操作的总数
WRITE_MIN
连续两个写入需要的最低时间(以秒为单位)
WRITE_MAX
连续两个写入的最大时间(以秒为单位)
WRITE_AVG
两个连续写入的平均时间(以秒为单位)
READ_CNT
读取操作的总数
READ_MIN
连续两个读取所需的最低时间(以秒为单位)
READ_MAX
连续两个读数的最大时间(以秒为单位)
READ_AVG
连续两个读取的平均时间(以秒为单位)
命令
进程的名称
在这个示例中,三个非常明显的应用程序代表:
PID  UID  DEV WRITE_CNT WRITE_MIN WRITE_MAX WRITE_AVG READ_CNT READ_MIN READ_MAX READ_AVG COMMAND
 2789  2903 sda1     854     0.000   120.000    39.836      0     0.000     0.000     0.000 plasma
2573     0 sda1      63     0.033  3600.015   515.226      0     0.000     0.000     0.000 auditd
 2153     0 sda1      26     0.003  3600.029  1290.730      0     0.000     0.000     0.000 rsyslogd
这三个应用具有大于 0WRITE_CNT,这意味着它们在测量期间执行某种形式的写入。在这些方面,plasma 是一大水准的先行者:它执行最多的写入操作,而在写入之间的平均时间最低。因此,如果您关注节能应用程序,Plasma 将是调查的最佳候选者。
通过追踪给定进程 ID 的所有系统调用,使用 straceltrace 命令检查应用程序。在目前示例中,您可以运行:
~]# strace -p 2789
在本例中,strace 的输出包含一次重复模式,每个 45 秒打开用户的 KDE 图标缓存文件,以便再次写入,然后立即关闭该文件。这会导致在文件元数据(特别是修改时间)时对硬盘进行必要的物理写入。最终的修复是防止没有发生对图标的更新时进行不必要的调用。