Linux #
CPU工具 #
top
按CPU利用率排序,按q退出交互界面
top -o cpu
内存工具 #
vmstat
vmstat <interval> <count>
输出结果:
各列含义:
- r:在运行队列中等待执行的进程数;一般每颗CPU的运行队列应控制在3以内;
- b:在等待I/O的进程数;此时CPU处于空闲状态,所以应越小越好;
- free:空闲的物理内存(kb)
- si:从磁盘交换到内存的swap页数量(kb/sec);当内存满足时是不应该出现大量交换页的;
- so:从内存交换到磁盘的swap页数量(kb/sec)
- cs:每秒上下文切换次数
- us:用户进程的CPU时间占比
- sy:系统进程的CPU时间占比
- id:CPU空闲时间占比
- wa:等待I/O的CPU时间占比;过高证明瓶颈在I/O而不是CPU资源;
网络工具 #
- netstat
- tcpdump
上下文工具 #
- vnstat:需集成sysstat包,MAC平台不可用。
- pidstat:需集成sysstat包,MAC平台不可用。
- wireshark:事件记录。
磁盘工具 #
iostat
iostat <interval> <count>
添加 -tx
报告每秒向终端读取和写入的字符数和CPU的详细信息。
各列说明:
- %user:CPU处在用户模式下的时间百分比。
- %nice:CPU处在带NICE值的用户模式下的时间百分比。
- %system:CPU处在系统模式下的时间百分比。
- %iowait:CPU等待输入输出完成时间的百分比。过高表示I/O存在瓶颈;
- %steal:管理程序维护另一个虚拟处理器时,虚拟CPU的无意识等待时间百分比。
- %idle:CPU空闲时间百分比。如果%idle值高但系统响应慢时,有可能是CPU等待分配内存,此时应加大内存容量。如果持续低于10,那么系统的CPU处理能力相对较低,表明系统中最需要解决的资源是CPU。
- Device:磁盘名称
- tps:每秒I/O请求数
- kb_read/s:每秒读取的block数。
- kb_read:读取的block总数。
sar #
通用工具,位于sysstat包。
查看CPU利用率 #
注意这里的CPU信息指虚拟CPU,不是物理机上的核数。
sar -u <interval> <count>
输出结果:
各列说明:
- %user 用户级别CPU时间占比。
- %system 系统核心级别CPU时间占比。
- %iowait 等待I/O操作CPU时间占比;过高表示硬盘存在I/O瓶颈。
- %idle 空闲CPU时间占比;高但系统响应慢可能是CPU等待内存分配,需要加大内存;过低则CPU是瓶颈。
查看CPU负载 #
sar -q <interval> <count>
输出结果:
各列说明:
- runq-sz 运行队列的长度。
- plist-sz 进程和线程数的数量。
- ldavg-1 最近1分钟的CPU平均负载。
查看内存使用情况 #
sar -r <interval> <count>
输出结果:
各列说明:
- kbmemfree:空闲的物理内存大小
- kbmemused:使用中的物理内存大小
- %memused:物理内存使用率
查看I/O使用情况 #
sar -b <interval> <count>
输出结果:
各列说明:
- tps:磁盘每秒I/O数量
- rtps:每秒读取I/O总数
- wtps:每秒写入I/O总数
- bread/s 每秒钟从磁盘读取的块总数
- bwrtn/s 每秒钟此写入到磁盘的块总数
查看磁盘使用情况 #
sar -p -d <interval> <count>
输出结果:
各列说明:
- tps:每秒I/O的传输总数
- rd_sec/s 每秒读取的扇区的总数
- wr_sec/s 每秒写入的扇区的 总数
- %util I/O请求占用的CPU百分比,值越高,说明I/O越慢