NotePublic/Software/Development/System/Linux/User/Linux_性能分析工具.md

4.6 KiB
Raw Blame History

Linux 性能分析工具

1.CPU and Memory

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

iotop

3.Net

netstat

4.Mult

nmon
# sysstat
pidstat
iostat
# System Activity Reporter 系统活动情况报告
sar

5.Glances

sudo pacman -S glances

5.1.Standalone Mode

glances

5.2.Client/Server Mode

# Server
glances -s [-B <address>] [-p <port>]
# Client
glances -c <server ip or hostname> [-p <port>]

5.3.Web Server Mode

sudo pacman -S python-bottle
glances -w [-B <address>] [-p <port>] [--username] [--password]

To change the refresh rate of the page, just add the period in seconds at the end of the URL. For example, to refresh the page every 10 seconds

http://@server:61208/10

6.nethogs

是一个开源的命令行工具(类似于 Linux 的 top 命令),用来按进程或程序实时统计网络带宽使用率。

sudo pacman -S nethogs
nethogs

7.Dstat

Dstat is a versatile replacement for vmstat.

sudo pacman -S dstat
dstat
-c显示 CPU 系统占用,用户占用,空闲,等待,中断,软件中断等信息。
-C当有多个 CPU 时候,此参数可按需分别显示 cpu 状态,例:-C 0,1 是显示 cpu0 和 cpu1 的信息。
-d显示磁盘读写数据大小。
-D hda,totalinclude hda and total。
-n显示网络状态。
-N eth1,total有多块网卡时指定要显示的网卡。
-l显示系统负载情况。
-m显示内存使用情况。
-g显示页面使用情况。
-p显示进程状态。
-s显示交换分区使用情况。
-S类似 D/N。
-rI/O 请求情况。
-y系统状态。
--ipc显示 ipc 消息队列,信号等信息。
--socket用来显示 tcp udp 端口状态。
-a此为默认选项等同于-cdngy。
-v等同于 -pmgdsc -D total。
--output 文件:此选项也比较有用,可以把状态信息以 csv 的格式重定向到指定的文件中以便日后查看。例dstat --output /root/dstat.csv & 此时让程序默默的在后台运行并把结果输出到 /root/dstat.csv 文件中。

8.Others

# 跟踪程序执行过程中产生的系统调用及接收到的信号,帮助分析程序或命令执行中遇到的异常情况
strace
# lsof(list open files) 是一个列出当前系统打开文件的工具
lsof
# 是 Linux kernel 自带的系统性能优化工具。优势在于与 Linux Kernel 的紧密结合,它可以最先应用到加入 Kernel 的 new feature用于查看热点函数查看 cashe miss 的比率,从而帮助开发者来优化程序性能
perf
uptime
mpstat
isstat
vmstat
nicstat
tcpdump
blktrace
slabtop
sysctl

9.常见参数解读

9.1.内存参数

  • Buffer Cache缓冲区一个用于存储速度不同步的设备或优先级不同的设备之间传输数据的区域。通过缓冲区可以使进程之间的相互等待变少从而使从速度慢的设备读入数据时速度快的设备的操作进程不发生间断。对应磁盘上一个块block块通常为 1K。在 linux 下,为了更有效的使用物理内存,操作系统自动使用所有空闲内存作为 Buffer/Cache 使用。当程序需要更多内存时,操作系统会自动减小 Cache 的大小。
  • Page Cache作为 Page Cache 的内存, 文件系统的 Cache。
  • Shared memory主要用于在 UNIX 环境下不同进程之间共享数据,是进程间通信的一种方法,一般的应用程序不会申请使用共享内存。

9.内部参考关键字

  1. Meminfo
  2. Sysstat