一:概述
假如你是一名Linux系统管理员,需要处理应用程序遇到的各种问题,优化系统配置。硬件问题、软件问题、网络问题等都会导致系统中应用程序响应速度变得缓慢,优化应用程序、提高系统资源利用率是系统管理员应该掌握的技能之一。
二:检查应用程序的资源占用情况
Linux系统中处理应用程序的速度主要取决于CPU、内存和磁盘等资源的使用情况。用户可以通过查看系统中应用程序进程的资源使用情况处理系统资源分配的方式。ps、top这些命令可以检查每个进程的状态,vmstat命令可以检查内存和cpu的使用率等信息,hdparm命令可以检查磁盘的性能。
<1>ps命令
ps命令用于检查每个进程的的CPU使用率、内存使用率,其中ps命令的-o选项可以指定的参数如下表所示:
参数 | 说明 |
pid | 进程ID |
comm | 命令名称 |
nice | nice值。设置在=20(最高优先级)和19(最低优先级)之间,只有root可以设置负数,默认值为0 |
pri | ps命令显示的操作系统的优先级139(最高优先级)至0(最低优先级) |
%cpu | CPU的使用率(百分比) |
%mem | 内存的使用率(百分比) |
rss | 进程占用的固定内存。以千字节为单位 |
vsize | 虚拟内存的大小(单位KiB) |
通过这些参数,我们可以判断这个应用程序到底占用了多少资源。以Firefox浏览器为例,使用ps命令检查firefox的状态,指定上述8个参数,如下图所示:
FireFox浏览器进程的ip为2481,命令名称为firefox,nice值为0(默认值为0),pri值为19,CPU的使用率为18.7%,内存的使用率为2.5%,尚未使用的区域大小为211928,虚拟内存大小为3014920。随着Firefox浏览器显示网页数量的增多,该进程的数据区域也会不断的扩大。
<2>top命令
如果想通过CPU的使用率查看进程的信息,可以使用top命令。top命令会在显示结果的顶部列出一个五行摘要的信息区域,该区域显示系统的总体利用率等统计信息,摘要信息下面是任务区域,该区域列出正在运行中的进程信息,默认情况下是CPU的使用率降序显示,也可以通过执行过程中按键输入以内存使用率等顺序显示。
更改显示顺序字段:按下f建进入选择字段界面,按下s键选择字段,按下q键退出。
突出显示选中的字段:按下b键,黑白翻转选中的字段,按下x键执行黑白翻转。
更改显示行数:按下n键输入指定显示的行数。
设置top命令的显示结果为15行,如下如所示。在top命令的执行结果中按下n键,会出现输入行数的提示界面,在此界面输入15即可了。
如果发现无关的程序太多了就将它们关闭即Kill掉即可.
<3>free命令
系统的容量和磁盘性能也是重要的指标。free命令用于显示系统内存和交换空间的使用情况,如果指定-h选项,则会以MB或GB为单位显示系统容量的使用情况。使用free命令指定-h选项显示内存和交换空间的使用情况如下图所示。内存大小总计(total)7.8G,已用(used)1G,可用(available)6.5G,交换空间的大小总计(total)8G,已用(used)0B.
还有hdparm命令可以检查磁盘的性能,指定-t选项检查磁盘的传输速度,如下图所示:
<4>可以将应用程序作为系统性能的测试对象。
以bc为例,它是Linux系统中的计算工具,在终端执行bc命令可以进行四则运算,还可以使用数学函数执行计算。我们计算所需的时间来衡量,进行性能评估。使用bc命令指定-l选项加载math函数库进行计算,计算6666的100000次幂.如下图所示:
测量计算次幂的所需时间,通过管道将计算公式传递给bc命令,并使用time命令评估执行时间。然后将显示结果重定向到/dev/null。通过time命令测量计算所须的时间为1min21.335秒,如下图所示:
time命令显示的字段含义如下。
- real:从开始到结束的时间。
- user:用户模式下CPU的执行时间。
- sys:内核模式下的CPU执行时间。
执行上述操作之后,再重新打开一个终端,使用ps命令检查bc进程资源使用情况,如下图所示。结果显示有关于bc的进程,最后一个进程号为的bc进程是计算6666的1000000次幂的进程。该进程的rss和vsize分别为,这种面向计算的的进程性能主要取决于CPU的分配时间,并且几乎不受内存使用情况的影响。
除了通过计算评估性能之外,还可以通过计算圆周率来检查性能。数学函数a()就是arctan,用于计算PI,根据tan(n /4)=1以及arctan(1) = pi / 4,计算4 * a(1),计算圆周率如下图所示。在计算圆周率之前可以使用scale来指定计算到小数点后几位数。
然后执行time命令评估PI所需的时间,如下图所示。计算Pi的小数点后1000位数字所用的时间为。
即使每次执行相同的命令它们的花费时间也是不同的。这个时间和系统运行情况相关。
三:降低基于计算的应用程序的处理时间
Linux系统有一个分时处理系统(TSS,time-sharing System),系统中的多个进程分别叫做时间片,并且在分配极短的CPU时间内执行处理(时间通常以几十毫秒到几百毫秒为单位)。
可以通过以下的方式分配更多的CPU处理时间来缩短整体的处理时间。
- 终止不必要的进程。
- 增加优进程的优先级。
- 降低其他进程的优先级。
更改优先级测试bc命令的次幂计算时间,如下图所示。
通过处理可以发现优先级越高,处理时间越快。
如果你想知道磁盘存储的处理速度,使用hdparm -T命令。基于磁盘I/O程序的性能取决于磁盘处理速度,用户可以使用高速存储在较短时间内处理磁盘。使用parted命令可以显示内置磁盘的信息。通过磁盘内置高速缓存时,大容量读写或小容量读写频繁读写不能达到高速缓存的效果。