非常经典的UNIX系统调优的文章( 三 )


 0.0 0.2320085920 /usr/sbin/named -f
 0.0 1.1 16820122240 /usr/libexec/mysqld --basedir=/usr
--datadir=/var/mysql --user=mysql --pid-file=/var/mysq
 0.0 0.58572158164 /usr/libexec/slapd -d 0 -h ldap:///
ldapi:///var/run/ldapi
 0.0 0.0204289396 rpc.statd
在上面两个例子中,进程列表中显示了 CPU 和内存使用率,以便您能够清楚地了解系统中的负载情况 。‘s’和‘stat’列(分别对应于 SVR4 和 BSD)显示了进程的当前状态 。对于大量的运行的进程,状态‘R’表示该进程当前正在运行 。
通过使用状态、CPU 和内存百分比的组合,您应该可以确定是否存在失控的 和大量消耗系统资源的进程 。
使用 iostat
iostat 工具提供了关于终端、磁盘活动和 CPU 利用率的信息 。您可以指定单个数值参数来设置报告的时间间隔,并指定另一个数值参数来设置报告的数量 。例如,清单 4 显示了如何每 5 秒钟报告相应的统计信息 。
清单 4. 每隔 5 秒报告统计信息
$ iostat 5
ttydad1 sd1nfs1cpu
tin tout kps tps serv kps tps serv kps tps servus sy wt id
07 440 39140030005 18 0 77
0392000000000 0 0 100
0134300000000 0 0 100
0130000000000 0 0 100
对于不同的系统,缺省情况下显示的确切的信息也有所不同,清单 4 来自于一个 Solaris 系统 。清单 5 中的示例来自于一个 BSD 环境 。
清单 5. 一个 BSD 系统中的 iostat
disk1disk0cpu
 KB/t tps MB/sKB/t tps MB/s us sy id
167.670 0.02 20.705 0.096 3 90
 0.000 0.000.000 0.00 15 3 82
 0.000 0.000.000 0.00 16 2 82
 0.000 0.00 14.33 24 0.33 18 4 79
 0.000 0.002.831 0.00 23 4 73
先来看看 CPU 统计信息,这些列分别显示了用户 (us)、系统 (sy) 和空闲 (id) 百分比 。用户时间显示了用于该用户进程的时间 。系统时间则显示了系统进程耗费的时间(在没有显示等待时间时,包括系统等待 I/O 的时间) 。空闲时间显示了 CPU 处于空闲状态的时间的百分比 。
磁盘的输出显示了各个物理磁盘(在合适的情况下包括 NFS 加载)的工作情况,通常以每秒处理事务数和每秒传输的 MB 或 KB 作为单位 。其中的较大数值,尤其是同时具有较高的等待/系统时间,可能表示对于该系统而言,磁盘的速度太慢 。您可以尝试展开您的应用程序,以便它使用不同的磁盘,这样可能可以改善它的性能 。
如果该磁盘同时用作虚拟内存,那么可能是因为缺少内存和过多的交换的问题 。
使用 vmstat
您可以使用 vmstat 工具来监视虚拟内存统计信息 。与 iostat 一样,它接受一个数值时间间隔(请参见清单 6) 。
清单 6. 使用 vmstat 监视内存统计信息
$ vmstat 5
kthr memorypagedisk faults cpu
r b wswap free re mf pi po fr de sr dd s1 -- insy 
cs us sy id
0 0 0 2820888 809552 94 525 121 69 50 0 26 16 0 0 297 1342 
272 9 4 87
0 0 0 2824752 778872 27 0 0 0 0 0 0 0 0 22934 
109 0 1 99
0 0 0 2824752 778872 00 0 0 0 0 0 2 0 0 23328 
116 0 0 100
0 0 0 2824752 778872 00 0 0 0 0 0 0 0 0 22826 
110 0 0 100
0 0 0 2824752 778872 00 0 0 0 0 0 0 0 0 22928 
111 0 0 100
【非常经典的UNIX系统调优的文章】vmstat 工具输出线程/进程信息、内存/交换区使用率、换进/换出页面、磁盘 I/O、页面错误和 CPU 统计信息 。
CPU/线程块显示了运行队列 (r) 中的进程/线程、等待 I/O 资源的阻塞进程 (b) 和那些被交换的进程 。阻塞进程列中较高的值表示磁盘的速度较慢 。交换列中较高的数值表示存在许多进程使用了太多的内存,需要对它们进行换入和换出 。交换是一项开销非常高的处理,并且将明显地降低系统的性能 。

推荐阅读