Linux 常用命令之性能统计
常用性能指标
- cpu 代表算法的高效性
- mem 代表数据结构的使用合理性
- net io 等更多指标
统计方法
- 临时性分析 命令交互
- 系统性分析 prometheus grafana
CPU使用统计
cpu 信息 /proc/cpuinfo
系统负载与进程 cpu 占用 top
cpu 的关键指标
- cpu 利用率 进程的 cpu 利用情况
- load average 系统负载情况
ps 命令的 cpu 是平均 cpu 利用率,不适合做性能分析
内存(mem)占用统计
常用命令
- free
- ps
- top
free -m
/proc/meminfo 保存了更多的内存使用数据
进程级别的内存分析
- ps
ps -e -o uid,pid,ppid,pcpu,pmem,rss,vsz,comm --sort -%mem | head -10
- top
网络连接(Net)统计
查看网络连接
netstat -tnp | head -10
网络状态
- ESTABLISHED 成功连接 The socket has an established connection
- SYN_SENT The socket is actively attempting to establish a connection
- SYN_RECV A connection request has been received from the network.
- FIN_WAIT1 The socket is closed, and the connection is shutting down.
- FIN_WAIT2 Connection is closed, and the socket is waiting for a shutdown from the remote end
- TIME_WAIT 主动关闭 The socket is waiting after close to handle packets still in the network
- CLOSE The socket is not being used
- CLOSE_WAIT 被动关闭 The remote end has shut down, waiting for the socket to close.
- LISTEN The socket is listening for incoming connections
数据统计
netstat -tn | awk 'NR>2{print $NF}'| sort | uniq -c | sort -nr
统计命令分类
- 排序
- 去重
- 统计
排序 sort
- sort 常用参数
- -b:忽略开头的空白字符
- -f:将小写字母看做大写字母
- -h:根据存储容量排序(KB、MB、GB)
- -n:按数字排序
- -o:把结果写入文件
- -r:以相反的顺序来排序
- -t:指定分隔符,默认为空格
- -V:按照数字版本排序
- -k:指定排序的关键字,与-t 参数配合使用
去重 uniq
- uniq 常用参数
- -c:统计重复出现的次数
- -d:所有邻近的重复行只被打印一次。重复次数要大于等于 2
- -D:所有邻近的重复行将全部打印
- -f:跳过对前 n 个列的比较
- -s:跳过对前 n 个字符的比较
- -w:只对每行前 n 个字符进行比较
统计数量 wc
- wc 常用参数
- -c:统计字节数:chars
- -l:统计行数
- -w:统计单词数
- -L:打印最长行的长度
进程与线程
- 示例代码 多进程与多线程的示例代码
进程
- 可执行程序的运行态
- 操作系统调度的基本单位
- 线程容器
- 进程本身包含指令、数据等资源
线程
- 进程中被执行的最小单元
- cpu 调度的基本单位
- 线程带有指令、数据等资源
进程的生命周期
- created
sleep 100
./demo.py
- ready
- running
- waiting
- terminated
kill
killall
进程状态
- D uninterruptible sleep (usually IO)
- R running or runnable (on run queue)
- S interruptible sleep (waiting for an event to complete)
- T stopped by job control signal
- t stopped by debugger during the tracing
- W paging (not valid since the 2.6.xx kernel)
- X dead (should never be seen)
- Z defunct (“zombie”) process, terminated but not reaped by its parent
常用进程管理命令
- ps 进程列表快照
- top 交互式进程观测
- kill killall 结束进程
- fg 进程切换到前台
- bg 进程切换到后台
- ctrl z 挂起进程
ps 命令
- unix 风格参数
ps -ef
- bsd 风格参数
ps aux
- gnu 风格参数
ps --pid pidlist