得到系统实时资源使用状态,最近3s数据,可以排序
top -p:查看指定进程id的top信息,例如:
top -p 12793
top -H -p:查看指定进程id的所有线程的top信息
top -H -p 27376
跟踪程序运行的情况
| 参数 | 解释 |
|---|---|
| -c | 统计每一系统调用的所执行的时间,次数和出错的次数等 |
| -d | 输出strace关于标准错误的调试信息 |
| -f | 跟踪由目标进程及调用所产生的子进程 |
| -F | 尝试跟踪目标调用 在-f时,vfork不被跟踪 |
| -a | 设置返回值的输出位置.默认 为40 |
| -r | 打印出相对时间关于每一个系统调用 |
| -t | 在每行输出的后面,显示调用花费时间 |
| -tt | 在每行输出的前面,显示调用花费毫秒级别的时间 |
| -T | 每次系统调用所花费的时间 |
| -v | 对某些相关调用,把完整的环境变量、文件stat结构打印出来 |
| -p pid | 指定要跟踪的进程pid,同时跟踪的多个pid,重复多次-p选项即可 |
| -o filename | : 将跟踪输出写入文件名 |
| -s | 当系统调用的某个参数是字符串时,最多输出制定长度的内容,默认时32个字节 |
| -e set | 仅跟踪某些系统调用 |
| -e open,close | 仅跟踪打开/关闭系统调用 |
| -e file | 仅跟踪文件系统调用/文件操作相关的 |
| -e process | 跟踪所有涉及流程管理的系统调用 |
| -e network | 跟踪所有与网络相关的系统调用 |
| -e signal | 跟踪所有与信号相关的系统调用 |
| -e ipc | 跟踪所有与ipc相关的系统调用 |
| -e desc | 跟踪所有与文件描述符相关的系统调用 |
| -e memory | 跟踪所有与内存映射相关的系统调用 |
| -e set | 仅跟踪指定的信号子集 |
将所有进程以树状图显示,树状图将会以 pid (如果有指定) 或是以 init 这个基本进程为根 (root),如果有指定使用者 id,则树状图会只显示该使用者所拥有的进程。
| 参数 | 解释 |
|---|---|
| -a | 显示启动每个进程对应的完整指令,包括启动进程的路径、参数等。 |
| -c | 不使用精简法显示进程信息,即显示的进程中包含子进程和父进程。 |
| -n | 根据进程 PID 号来排序输出,默认是以程序名排序输出的。 |
| -p | 显示进程的 PID。 |
| -u | 显示进程对应的用户名称。 |
进程在整个生命周期的数据信息, 展示当前进程的信息,以列表呈现
| 参数 | 解释 |
|---|---|
| a | 显示所有进程 |
| -a | 显示同一终端下的所有程序 |
| -A | 显示所有进程 |
| c | 显示进程的真实名称 |
| -N | 反向选择 |
| -e | 等于“-A” |
| e | 显示环境变量 |
| f | 显示程序间的关系 |
| -H | 显示树状结构 |
| r | 显示当前终端的进程 |
| T | 显示当前终端的所有程序 |
| u | 指定用户的所有进程 |
| -au | 显示较详细的资讯 |
| -aux | 显示所有包含其他使用者的行程 |
| -C<命令> | 列出指定命令的状况 |
| –lines<行数> | 每页显示的行数 |
| –width<字符数> | 每页显示的字符数 |
| –help | 显示帮助信息 |
| –version | 显示版本显示 |
mpstat的全称为Multiprocessor Statistics,是一款常用的多核CPU性能分析工具,用来实时查询每个CPU的性能指标,以及所有CPU的平均指标
mpstat [-P {|ALL}] [internal [count]]
| 参数 | 解释 |
|---|---|
| -P | {ALL} |
| internal | 相邻的两次采样的间隔时间 |
| count | 采样的次数,count只能和delay一起使用 |
| 参数 | 解释 |
|---|---|
| centered 文本居中 | right-aligned 文本居右 |
| %usr | 在internal时间段里,用户态占用CPU的时间(%),不包含nice值为负的进程 |
| %nice | 在internal时间段里,nice值为负的进程占用CPU的时间(%) |
| %sys | 在internal时间段里,内核态占用CPU的时间(%) |
| %iowait | 在internal时间段里,等待IO占用CPU的时间(%) |
| %irq | 在internal时间段里,硬中断占用CPU的时间(%) |
| %soft | 在internal时间段里,软中断占用CPU的时间(%) |
| %guest | CPU处理虚拟进程花费的时间开销 |
| %idle | 在internal时间段里,空闲CPU的时间(%) |
vmstat主要是用来检测虚拟内存的,可以展现给定时间间隔的服务器的状态值,包括CPU使用率,内存使用率,虚拟内存交换情况,IO读写情况等。一般vmstat工具的使用是通过两个数字参数来完成的,第一个参数是采样的时间间隔数,单位是秒,第二个参数是采样的次数
| 参数 | 解释 |
|---|---|
| -a | 显示活跃和非活跃内存 |
| -f | 显示从系统启动至今的fork数量 |
| -m | 显示slabinfo |
| -s | 显示内存相关统计信息及多种系统活动数量 |
| -d | 显示磁盘相关的统计信息 |
| -S | 使用指定单位显示。参数有 k 、K 、m 、M ,分别代表1000、1024、1000000、1048576字节(Byte),默认单位为K(1024 Bytes) |
| delay | 刷新时间间隔,如果不指定,只显示一条结果 |
| count | 刷新次数,如果不指定刷新次数,但指定了刷新时间间隔,这时刷新次数为无穷 |
首先需要声明一点的是,vmstat中CPU的度量是百分比的。当us+sy的值接近100的时候,表示CPU正在接近满负荷工作。但要注意的是,CPU满负荷工作并不能说明什么,Linux总是试图要CPU尽可能的繁忙,使得任务的吞吐量最大化。唯一能够确定CPU瓶颈的还是r(运行队列)的值。
当内存的需求大于实际的物理内存时,服务器就会启动虚拟内存机制,通过虚拟内存,可以将内存段移到SWAP DISK的特殊磁盘段上,这样就会出现虚拟内存的页导入和页导出现象。页导出并不能说明出现了内存瓶颈,虚拟内存系统经常会对内存段进行页导出,但是页导入操作就表明服务器需要更多的内存了, 页导入需要从SWAP DISK上将内存段复制回内存,导致服务器速度变慢。
mpstat和vmstat命令的差别:mpstat可以显示每个CPU的统计信息,而vmstat只显示所有CPU的统计信息。因此,编写糟糕的应用程序(不使用多线程体系结构)可能会运行在一个多处理器机器上,而不使用所有处理器。从而导致一个 CPU 过载,而其他 CPU 却很空闲。通过 mpstat 可以轻松诊断这些类型的问题
vmstat中所有关于CPU的总结都适合mpstat。当您看到较低的 %idle 数字时,就知道出现了 CPU 不足的问题。当您看到较高的 %iowait 数字时,就知道在当前负载下等待IO严重
可以全面地获取系统的 CPU、运行队列、磁盘读写(I/O)、分区(交换区)、内存、CPU 中断和网络等性能数据。
sar [options] [-o filename] interval [count]
-o filename:其中,filename 为文件名,此选项表示将命令结果以二进制格式存放在文件中;
interval:表示采样间隔时间,该参数必须手动设置;
count:表示采样次数,是可选参数,其默认值为 1;
options:
| 参数 | 解释 |
|---|---|
| -A | 显示系统所有资源设备(CPU、内存、磁盘)的运行状况。 |
| -u | 显示系统所有 CPU 在采样时间内的负载状态。 |
| -P | 显示当前系统中指定 CPU 的使用情况。 |
| -d | 显示系统所有硬盘设备在采样时间内的使用状态。 |
| -r | 显示系统内存在采样时间内的使用情况。 |
| -b | 显示缓冲区在采样时间内的使用情况。 |
| -v | 显示 inode 节点、文件和其他内核表的统计信息。 |
| -n | 显示网络运行状态,此选项后可跟 DEV(显示网络接口信息)、EDEV(显示网络错误的统计数据)、SOCK(显示套接字信息)和 FULL(等同于使用 DEV、EDEV和SOCK)等,有关更多的选项,可通过执行 man sar 命令查看。 |
| -q | 显示运行列表中的进程数、进程大小、系统平均负载等。 |
| -R | 显示进程在采样时的活动情况。 |
| -y | 显示终端设备在采样时间的活动情况。 |
| -w | 显示系统交换活动在采样时间内的状态。 |
pidstat是sysstat工具的一个命令,用于监控全部或指定进程的cpu、内存、线程
pidstat [ 选项 ] [ <时间间隔> ] [ <次数> ]
| 参数 | 解释 |
|---|---|
| -u | 默认的参数,显示各个进程的cpu使用统计 |
| -r | 显示各个进程的内存使用统计 |
| -d | 显示各个进程的IO使用情况 |
| -p | 指定进程号 |
| -w | 显示每个进程的上下文切换情况 |
| -t | 显示选择任务的线程的统计信息外的额外信息 |
| -V | 版本号 |
| -h | 在一行上显示了所有活动,这样其他程序可以容易解析。 |
| -I | 在SMP环境,表示任务的CPU使用率/内核数量 |
| -l | 显示命令名和所有参数 |
注意:task和子线程的全局的统计信息和pidstat选项无关。这些统计信息不会对应到当前的统计间隔,这些统计信息只有在子线程kill或者完成的时候才会被收集。
用来进行软件性能分析的工具,可以利用 PMU,tracepoint 和内核中的特殊计数器来进行性能统计,用来分析内核和应用程序的性能。
用于设置进程(或 线程)的处理器亲和性(Processor Affinity),可以将进程(或 线程)绑定到特定的一个 或 多个CPU上去执行,而不允许将进程(或 线程)调度到其他的CPU上。