作为程序员,对应用程序做性能分析是一项必备技能。本系列将用三篇文章介绍一些常用的性能分析工具,主要涵盖三个操作系统平台(Linux/AIX/Solaris),硬件体系涉及X86,PowerPC, SPARC。三篇文章分别为基础工具篇,高级工具篇,总结和比较。
time 命令(所有平台)
time命令是所有Unix系统上最简单,也是很常用的观察应用程序时间性能工具,比如,
>/usr/bin/time -p sleep 1real 1.00user 0.00sys 0.00
实际时间(real time)有时也叫挂钟时间(wall clock time),而用户态时间(user time)和内核态时间(sys time) 之和也常叫做CPU时间。
ps 命令(所有平台)
通过ps命令可以获取更多与进程相关的信息,比如查看当前shell进程的虚拟内存消耗,
> ps -o cmd,vsz $$CMD VSZbash 6880
top命令(Linux平台)
top命令提供了一些和系统相关的信息,比如cpu的负载情况,内存及交换空间的使用情况,也包括各个应用程序的资源使用情况。比如,
> top -b | head -20top - 14:18:36 up 130 days, 2:52, 13 users, load average: 1.02, 1.08, 1.03Tasks: 270 total, 2 running, 255 sleeping, 0 stopped, 13 zombieCpu(s): 2.5%us, 0.4%sy, 0.0%ni, 96.9%id, 0.1%wa, 0.0%hi, 0.0%si, 0.0%stMem: 2829004k total, 2715996k used, 113008k free, 95180k buffersSwap: 2977784k total, 1452712k used, 1525072k free, 152916k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 3154 yichunw 20 0 1278m 1.1g 4548 R 97 42.1 2427:11 nautilus 27236 yichunw 20 0 188m 11m 5564 S 31 0.4 144:52.03 gnome-terminal 22544 yichunw 20 0 17872 11m 1796 S 8 0.4 103:54.98 Xvnc4 13671 root 20 0 17992 5228 1104 S 2 0.2 9:09.25 ruby 13834 yichunw 20 0 2544 1160 796 R 2 0.0 0:00.02 top 1 root 20 0 2796 1484 1100 S 0 0.1 0:03.02 init 2 root 20 0 0 0 0 S 0 0.0 0:00.00 kthreadd 3 root RT 0 0 0 0 S 0 0.0 0:00.80 migration/0 4 root 20 0 0 0 0 S 0 0.0 0:28.42 ksoftirqd/0 5 root RT 0 0 0 0 S 0 0.0 0:00.00 watchdog/0 6 root RT 0 0 0 0 S 0 0.0 0:00.80 migration/1
在AIX上,类似的命令是topas
总结
如果作为系统管理员,可能需要考察硬盘,网络等其它硬件的使用情况,因此需要用到更多的工具(sar,vmstat等)。但从程序员角度,主要考察指标还是时间和空间性能,也就是CPU和内存消耗情况,以上列出的工具可以用作初步性能分析,进一步就需要利用高级工具观察程序内部的性能情况。