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

139 lines
3.4 KiB
Markdown
Raw Normal View History

# 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.Glances
```bash
pacman -S glances
```
### 5.1.Standalone Mode
```bash
glances
```
### 5.2.Client/Server Mode
```bash
# Server
glances -s [-B <address>] [-p <port>]
# Client
glances -c <server ip or hostname> [-p <port>]
```
### 5.3.Web Server Mode
```bash
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
```blk
http://@server:61208/10
```
## 6.nethogs
是一个开源的命令行工具类似于Linux的top命令用来按进程或程序实时统计网络带宽使用率。
```bash
pacman -S nethogs
nethogs
```
## 7.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
```
## 8.常见参数解读
## 8.1.内存参数
* Buffer Cache缓冲区一个用于存储速度不同步的设备或优先级不同的设备之间传输数据的区域。通过缓冲区可以使进程之间的相互等待变少从而使从速度慢的设备读入数据时速度快的设备的操作进程不发生间断。对应磁盘上一个块block块通常为1K。在linux下为了更有效的使用物理内存操作系统自动使用所有空闲内存作为 Buffer/Cache 使用。当程序需要更多内存时操作系统会自动减小Cache的大小。
* Page Cache作为 Page Cache 的内存, 文件系统的 Cache。
* Shared memory主要用于在UNIX 环境下不同进程之间共享数据,是进程间通信的一种方法,一般的应用程序不会申请使用共享内存。
## 9.内部参考关键字
1. Meminfo
2. Sysstat