标签:start 数据 run add 自定义显示 min 理解 size 内存
在使用系统级性能工具找出是哪个进程降低了系统速度之后,需要使用特定进程性能工具来发现这个进程的行为。
要了解一个应用程序的性能,重要的是理解它与操作系统、CPU和存储系统是怎样进行交互的。大多数应用程序不是独立的,需要一些对Linux内核和不同函数库的系统调用。
一个应用程序所耗时间最基本的划分是内核时间与用户时间。
Linux可以使用time和ps大致表明应用程序将其时间花在了应用程序代码上还是花在了内核代码上。
Linux还可以使用oprofile和strace这样的命令跟踪哪些内核调用时代表进程发起的,以及每个调用完成需要多长时间。
任何应用程序都需要依赖系统库才能执行复杂的操作。这些库可能会导致性能问题,在库被应用程序使用时,ltrace命令和oprofile工具包提供了分析库性能的途径。Linux加载器Id的内置工具可以确定使用多个库是否会减慢应用程序的启动时间。
工具gprof和oprofile可以生成应用程序的配置文件,确定是哪些源代码行花费了大量的时间。
time命令完成一项基本功能,当需要测试一条命令的性能时,通常会首先运行它。time命令如同秒表一样,可以测量命令执行的时间。它测量的时间有三种类型:
命令行:time [-v] application 对application程序计时,在其完成后通过标准输出显示它的CPU使用情况
-v:详细显示了程序的时间和统计信息
内部命令time(提供进程执行信息的子集)
[root@bogon ~]# time find / -name etc /run/initramfs/state/etc /etc /etc/avahi/etc /usr/lib64/festival/etc /usr/share/doc/m2crypto-0.21.1/demo/Zope27/instance_home/etc /usr/share/doc/m2crypto-0.21.1/demo/ZopeX3/instance_home/etc /usr/share/doc/oddjob-0.31.5/sample/etc /usr/share/festival/lib/etc /usr/etc /usr/local/etc real 0m27.618s user 0m0.807s sys 0m6.930s
外部命令/usr/bin/time [root@bogon ~]# /usr/bin/time find / -name etc /run/initramfs/state/etc /etc /etc/avahi/etc /usr/lib64/festival/etc /usr/share/doc/m2crypto-0.21.1/demo/Zope27/instance_home/etc /usr/share/doc/m2crypto-0.21.1/demo/ZopeX3/instance_home/etc /usr/share/doc/oddjob-0.31.5/sample/etc /usr/share/festival/lib/etc /usr/etc /usr/local/etc 0.31user 0.60system 0:00.92elapsed 99%CPU (0avgtext+0avgdata 4524maxresident)k 0inputs+0outputs (0major+1216minor)pagefaults 0swaps
使用-v参数详细的显示程序的时间和统计信息(大多数统计数据为0是因为Linux并不支持它们) [root@bogon ~]# /usr/bin/time -v find / -name etc /run/initramfs/state/etc /etc /etc/avahi/etc /usr/lib64/festival/etc /usr/share/doc/m2crypto-0.21.1/demo/Zope27/instance_home/etc /usr/share/doc/m2crypto-0.21.1/demo/ZopeX3/instance_home/etc /usr/share/doc/oddjob-0.31.5/sample/etc /usr/share/festival/lib/etc /usr/etc /usr/local/etc Command being timed: "find / -name etc" User time (seconds): 0.32 CPU花费在应用程序上的秒数 System time (seconds): 0.66 CPU代表应用程序花费在Linux内核上的秒数 Percent of CPU this job got: 99% 进程运行时消耗CPU的百分比 Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.99 应用程序从启动到完成所经历的时间 Average shared text size (kbytes): 0 Average unshared data size (kbytes): 0 Average stack size (kbytes): 0 Average total size (kbytes): 0 Maximum resident set size (kbytes): 4524 Average resident set size (kbytes): 0 Major (requiring I/O) page faults: 0 主缺页故障的数量或需要从磁盘读取内存页的页故障数量(没有主缺页故障说明应用程序运行的时候系统没有访问磁盘) Minor (reclaiming a frame) page faults: 1217 次缺页故障的数量或不需要访问磁盘即可解决的页故障 Voluntary context switches: 5 Involuntary context switches: 135 Swaps: 0 进程被交换到磁盘的次数 File system inputs: 0 File system outputs: 0 Socket messages sent: 0 Socket messages received: 0 Signals delivered: 0 Page size (bytes): 4096 系统的页面大小 Exit status: 0 应用程序的退出状态
ps(Process Status),ps命令可以列出系统中当前运行的那些进程(进程的快照,执行ps命令那个时刻的进程)如果想要动态显示进程信息,可以使用top。使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等。
Linux系统进程有5种状态:
常用命令行选项:
EG:ps -ef
[root@bogon ~]# ps -ef UID PID PPID C STIME TTY TIME CMD root 1 0 0 14:19 ? 00:00:04 /usr/lib/systemd/systemd --switched-root --system --de serialize 22 root 2 0 0 14:19 ? 00:00:00 [kthreadd] root 3 2 0 14:19 ? 00:00:00 [ksoftirqd/0]
UID: 进程拥有者的UID
PID:进程的PID
PPID:父进程的PID
C:CPU使用的资源百分比
STIME:系统启动时间
TTY:进程运行的终端
TIME:使用的CPU时间
CMD:执行指令
EG:ps aux
[root@bogon ~]# ps aux | more USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.3 203260 6928 ? Ss 14:19 0:04 /usr/lib/systemd/systemd --switched-ro ot --system --deserialize 22 root 2 0.0 0.0 0 0 ? S 14:19 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? S 14:19 0:00 [ksoftirqd/0]
USER:进程拥有者
PID:进程的PID
%CPU:CPU占用率
%MEM:内存占用率
VSZ:虚拟内存
RSS:实际内存
TTY:进程运行的终端
STAT:进程状态
START:进程启动时间
TIME:进程占用CPU总时间
COMMAND:进程执行指令
STAT: 进程状态
ps有很多不同的选项,能检索正在运行中的应用程序的各种统计信息:ps [ -o etime, time, pcpu, command ] [ -u user ] [ -U user ] [ PID ]
[root@bogon ~]# ps -o etime,time,pcpu,cmd 24501 ELAPSED TIME %CPU CMD 00:53 00:00:52 99.6 dd if=/dev/zero of=/dev/null bs=100 通过此测试,该进程运行了53秒,消耗CPU的时间为52秒(可见系统确实没啥进程在运行),CPU占用率为99.6%。
技术参考书籍:《Linux性能优化》 Phillip G. Ezolt 著
参考博客:https://www.cnblogs.com/skyzy/p/9433473.html
标签:start 数据 run add 自定义显示 min 理解 size 内存
原文地址:https://www.cnblogs.com/wanao/p/12863959.html