知道系统运行了哪些服务也许并不能告诉你是谁拖慢了系统。 top 命令可以报告CPU占用情况以及I/O等待时间,但这可能也不足以找出导致系统过载的任务。
跟踪I/O以及上下文切换有助于揪出问题的源头。
dstat 实用工具可以为你指出系统潜在的瓶颈。
安装dstat
dstat 通常并没有预装,你需要使用包管理器自行安装。它要用到Python,如今大部分Linux发行版本都会安装Python,如果没有安装,自己安装一下也很方便。
apt-get install dstat
或
yum install dstat
用法
dstat 支持多种选项,可用于跟踪占用资源位于前列的用户。如果不使用任何选项, dstat 会每隔一秒显示出CPU占用、磁盘I/O、网络I/O、分页、中断以及上下文切换信息。如果不特别指定,输出内容每隔一秒钟就会更新一行,可以非常方便地与之前的数据进行对比。
下面是一个输出样例:
第一行输出可以忽略,这些值都是 dstat 输出的初始化内容。余下的行显示了一段时间内的系统活动。有一个表头,把每行数据分为五个部分,分别显示了CPU、磁盘IO、网络流量、内存换页和上下文切换。
在这个例子中,CPU大部分时间都处于闲置状态,磁盘活动很少。系统产生了网络流量,不过流量也不大。 该系统并没有发生换页操作。Linux只有在主存不足的时候才会将内存页面换出到磁盘。尽管换页机制可以让系统运行比原先更多的程序,但是磁盘的访问速度要比内存慢了数千倍,由此也会相应地拖慢系统的运行速度。 如果你在系统中发现持续的换页活动,这表示需要增添更多的内存或是减少运行的程序数量。 在每一次系统调用或者时间片到期,轮到另一个进程访问CPU的时候都会发生上下文切换(context switch,csw)。无论是I/O操作还是调整进程内存占用都需要执行系统调用。 如果系统每秒钟要完成数以万计的上下文切换,那么可以认为这是一种潜在的问题。
本质上,dstat 是一个Python脚本,从 /proc 文件系统中收集并分析数据。
常用参数
dstat 可以按类别找出占用资源最多的进程。参数也好记,英语单词的首字母
- -c
- -d
- -n
- -p
- -s