第四章 性能工具:特定进程CPU

4.1进程性能统计信息

4.1.1. 内核时间VS用户时间

一个应用程序所耗时间最基本的划分是内核时间与用户时间。内核时间是消耗在Linux内核上的时间,而用户时间则是消耗在应用程序或库代码上的时间。Linux有工具,如time和ps,可以(大致)表明应用程序将其时间花费在应用程序代码上还是话费在内核代码上。

4.1.2 库时间VS应用程序时间

任何应用程序,即便其复杂性非常低,也需要依赖系统库才能执行复杂的操作。这些库可能导致性能问题,因此,能够查看应用程序在某个库中花费了多少时间很重要了。在库被应用程序使用时,ltrace命令和oprofile工具包提供了分析库性能的途径。Linux加载器ld的内置工具帮助你确定使用多少个库是否会减慢应用程序的启动时间。

4.2工具

4.2.1 time

time命令完成一项基本功能,当需要测试一条命令的性能时,通常会首先运行它。time命令如同秒表一样,可以测量命令执行的时间。

4.2.2 strace

starce是当程序执行时,追踪其发起的系统调用工具。系统调用是由或代表一个应用程序进行的Linux内核函数调用。strace可以展示准确的系统调用,它在确定应用程序是如何使用Linux内核方面是相当有用的。在分析大型程序或你完全不懂的程序时,跟踪系统调用的频率和长度是特别有价值的。通过查看strace的输出,你可以了解应用程序如何使用内核,以及它依赖什么类型的函数。

语法

strace [-c] [-p pid] [-o file] [--help] [command   [arg …]]

strace命令行选项

选项 说明
-c 打印出统计信息的概要,而非所有系统调用的独立列表
-p pid 将给定PID添加到进程,并开始跟踪
-o file 输出保存到file文件里面

与CPU相关的strace输出

输出 说明
%time 对全部系统调用的总时间来说,该项为这一个系统调用所花时间的百分比
second 这一个系统调用所花费的总秒数
calls 这个类型的所有调用的总数

4.2.3 ltrace

ltrace与strace的概念相似,但它跟踪的是应用程序对库的调用而不是对内核的调用。虽然ltrace主要用于提供对库调用的参数和返回值的精确跟踪,但是你也可以用它来汇总每个调用所花的时间。这使得你既可以发现应用程序有哪些调用,又可以发现每个调用时间是多长。

4.2.4 ps(进程状态)

ps能给出运行进程的详细的静态和动态统计信息。ps提供静态信息包括命令名和PID,动态信息保存内存和CPU的当前使用情况。

ps命令行选项

选项 说明
etime 统计信息:经过时间是指从程序开始执行耗费的总的时间
time 统计信息:CPU时间是指进程运行于CPU所话费的系统时间加上用户时间
pcpu 统计信息:进程当前消耗的CPU百分比
cmd 统计信息:命令名

你可能感兴趣的:(第四章 性能工具:特定进程CPU)