您的位置:首页 > 运维架构

进程性能检测命令gprof和top

2011-08-09 16:03 357 查看
1 gprof

是GNU工具之一,它在编译的时候在每个函数的出入口加入了profiling的代码,运行时统计程序在用户态的执行信息,可以得到每个函数的调用次数,执行时间,调用关系等信息,简单易懂。适合于查找用户级程序的性能瓶颈,对于很多时间都在内核态执行的程序,gprof不适合。

我们以编译运行hello.c为例

gprof Quick Start

    gprof是gnu binutils工具之一,默认情况下linux系统当中都带有这个工具。

使用 -pg 选项来编译hello.c,如果要得到带注释的源码清单,则需要增加 -g 选项。运行:
gcc -pg -g -o hello hello.c
运行应用程序: ./hello  会在当前目录下产生gmon.out文件

使用gprof来分析gmon.out文件,需要把它和产生它的应用程序关联起来:
gprof hello gmon.out -p 得到每个函数占用的执行时间

gprof hello gmon.out -q 得到call graph,包含了每个函数的调用关系,调用次数,执行时间等信息。

gprof hello gmon.out -A 得到一个带注释的“源代码清单”,它会注释源码,指出每个函数的执行次数。这需要在编译的时候增加 -g选项。

2 top

作为Linux下常用的性能分析工具,它类似于Windows的任务管理器,能够实时显示系统中各个进程的资源占用状况。

top - 02:10:17 up 10 days, 4:42, 1 user, load average: 0.06, 0.10, 0.09

Tasks: 41 total, 1 running, 40 sleeping, 0 stopped, 0 zombie

Cpu(s): 0.0% us, 0.0% sy, 0.0% ni, 99.8% id, 0.2% wa, 0.0% hi, 0.0% si

Mem: 25065556k total, 230728k used, 24834828k free, 0k buffers

Swap: 0k total, 0k used, 0k free, 0k cached

PID  USER PR NI VIRT RES SHR  S  %CPU  %MEM TIME+ COMMAND

各项参数指标详解:

每一行:

02:10:17 当前时间

up 系统运行时间

user 当前登陆用户数

load average 分别代表前1分钟、5分钟、15分钟系统负载平均值

每二行:

Tasks 进程总数

running  处运行状态的进程数

sleeping 处休眠状态的进程数

stop 停止的进程数

zombie 僵死的进程数

每三行:(以下皆指CPU占用百分比)

us 用户空间占用比

sy 内核空间占用比

ni 用户进程空间内改变过优先级的进程占用比

id 空闲CPU百分比

wa 等待输入输出的CPU时间百分比

hi 硬件中断

si 软件中断

最后一行:

PID 进程id

USER 进程所有者的用户名

PR 优先级

NI 负值高优先,正值低优先

VIRT 进程使用的虚拟内存总量,等于swap+res

RES 进程使用的未被换出的物理内存大小,等于code+data

SHR 共享内存大小

S 进程状态(D为不可中断的睡眠状态、R为运行、S为睡眠、T为跟踪/停止、Z为僵尸进程)

%CPU cpu占用比

%MEM 内存占用比

TIME+ 运行的时间

COMMAND  执行的命令

查看系统负载的常用命令还有,如uptime、cat /proc/loadavg、tload等。

top命令使用过程中,可以通过快捷键启动一些交互的命令来完成其它参数的功能

<空格键>:立刻刷新。

P:根据CPU使用大小进行排序。

T:根据时间、累计时间排序。

q:退出top命令。

m:切换显示内存信息。

t:切换显示进程和CPU状态信息。

c:切换显示命令名称和完整命令行。

M:根据使用内存大小进行排序。

W:将当前设置写入~/.toprc文件中。

1: cpus切换.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息