# Linux 性能分析工具 ## 1.CPU and Memory ```bash top htop # vmstat命令输出分成六个部分 # [procs] # r:在运行队列中等待的进程数 # b:在等待io的进程数 # [memoy] # swpd:现时可用的交换内存(单位KB) # free:空闲的内存(单位KB) # buff: 缓冲去中的内存数(单位:KB) # cache:被用来做为高速缓存的内存数(单位:KB) # [swap] # si: 从磁盘交换到内存的交换页数量,单位:KB/秒 # so: 从内存交换到磁盘的交换页数量,单位:KB/秒 # [io block] # bi: 发送到块设备的块数,单位:块/秒 # bo: 从块设备接收到的块数,单位:块/秒 # [system] # in: 每秒的中断数,包括时钟中断 # cs: 每秒的环境(上下文)切换次数 # [cpu] # cs:用户进程使用的时间 。以百分比表示 # sy:系统进程使用的时间。 以百分比表示 # id:中央处理器的空闲时间 。以百分比表示 vmstat vmstat -s free # 每2秒钟更新一次 free -s2 # (2) cat /proc/meminfo ``` ## 2.IO ```bash iotop ``` ## 3.Net ```bash netstat ``` ## 4.Mult ```bash nmon # sysstat pidstat iostat # System Activity Reporter系统活动情况报告 sar ``` ## 5.Others ```bash dstat # 跟踪程序执行过程中产生的系统调用及接收到的信号,帮助分析程序或命令执行中遇到的异常情况 strace # lsof(list open files)是一个列出当前系统打开文件的工具 lsof # 是Linux kernel自带的系统性能优化工具。优势在于与Linux Kernel的紧密结合,它可以最先应用到加入Kernel的new feature,用于查看热点函数,查看cashe miss的比率,从而帮助开发者来优化程序性能 perf uptime mpstat isstat vmstat nicstat dstat tcpdump blktrace slabtop sysctl ``` ## 6.常见参数解读 ## 6.1.内存参数 * Buffer Cache:缓冲区,一个用于存储速度不同步的设备或优先级不同的设备之间传输数据的区域。通过缓冲区,可以使进程之间的相互等待变少,从而使从速度慢的设备读入数据时,速度快的设备的操作进程不发生间断。对应磁盘上一个块(block),块通常为1K。在linux下,为了更有效的使用物理内存,操作系统自动使用所有空闲内存作为 Buffer/Cache 使用。当程序需要更多内存时,操作系统会自动减小Cache的大小。 * Page Cache:作为 Page Cache 的内存, 文件系统的 Cache。 * Shared memory:主要用于在UNIX 环境下不同进程之间共享数据,是进程间通信的一种方法,一般的应用程序不会申请使用共享内存。 ## 8.内部参考关键字 * Meminfo * Sysstat