范例3:定期采样(delay [count])
定期采样数据是指每隔delay时间,采样一次。当count 为0时,vmstat 将不停地定期报告信息;否则当报告count次后,vmstat 命令停止运行。
第一行的信息如同范例1,是自系统启动以来的平均信息。从第二行开始,每行的意思是:r和b采样那一时刻系统运行队列和等待队列的情况;而usystem参数(in,cs)以及CPU参数(us,sy,id,wa)对应的输出值是系统在前一个delay的情况。
从下面例子可以看出上下文交换的次数小于中断的发生次数。当系统大部分时间是空闲并且中断大部分是时间中断时,这种现象极可能发生。当时间中断发生时, 因为调度器没有什么任务可调度,所以很少发生上下文切换。
|
6. iostat
iostat [-t] [-c] [interval [count]]
参数的含义如下:
参数 解释
T 表示输出采用的时间
C 表示只显示CPU的信息
Internal 相邻的两次采样的间隔时间
count 采样的次数,count只能和delay一起使用
当没有参数时,iostat则显示系统启动以后所有信息的平均值。
与CPU有关的输出的含义
参数 解释 从/proc/stat获得
CPU 处理器ID
user 在internal时间段里,用户态的CPU时间(%) ,不包含 nice值为负进程 usr/total*100
nice 在internal时间段里,nice值为负进程的CPU时间(%) nice/total*100
sys 在internal时间段里,核心时间(%) (system+irq+softirq)/total*100
iowait 在internal时间段里,硬盘IO等待时间(%) iowait/total*100
idle 在internal时间段里,CPU除去等待磁盘IO操作外的因为任何原因而空闲的时间闲置时间 (%) idle/total*100
|
有interval时,第一行的信息自系统启动以来的平均信息。从第二行开始,输出为前一个interval时间段的平均信息。
范例1:
|
7. sar
sar是System Activity Reporter(系统活跃情况报告)的缩写。顾名思义,sar工具将对系统当前的状态进行采样,然后通过计算数据和比例来表达系统的当前运行状态。它的特点是可以连续对系统采样,获得大量的采样数据;采样数据和分析的结果都可以存入文件,所需的负载很小。这些是检查历史数据和一些近来的系统事件。sar用于检查的性能数据类似于vmstat, mpstat和 iostat的显示。 sar的数据是一段时间保存的内容,因此可以察看过去的信息。 lastcomm可以现在系统最近被执行的命令。这些可以用在系统审计中。sa 可以在*BSD和Linux中找到,它给用户在系统审计中更多的选项来收集信息。
在反馈CPU整体信息方面,sar 反馈的与CPU相关的信息包括:
(1)多少任务在运行
(2)CPU使用的情况
(3)CPU收到多少中断
(4)发生多少上下文切换
sar的语法如下:
sar [-options] [interval [count]]
其中,internal是两次采样的间隔时间;count是指采样的次数;与CPU相关的options有:
参数的含义如下:
参数 解释
-c 表示输出采用的时间
-e hh:mm:ss 表示只显示CPU的信息
-i {irq |SUM|ALL|XALL} 相邻的两次采样的间隔时间
-P {cpu|ALL}
-q 显示在采样的时刻,可运行队列的任务的个数,以及系统平均负载
-u CPU 使用的情况,报告了cpu的用户态,系统态,等待I/O和空闲时间上的百分比。
-w:每秒上下文交换率
-o:filename 将结果放在文件里
-f:filename 表示从file文件中取出数据,如果没有指定-f file,则从标准数据文件
范例1:
首先在后台运行一个创建1GB文件的任务,然后输入:“sar -c -q -w 3 2”,表示每3秒采样一次,采样两次,可以看到系统有82个任务,但是在10时12分08秒时有一个任务在运行,在下一次采样10时12分11秒时,没有任务在运行。
|
与CPU有关的输出的含义
参数 解释 从/proc/stat获得数据
proc/s 在internal时间段里,每秒上下文切换率 processes/total*100
cswch 在internal时间段里,每秒上下文切换率 ctxt/total*100
intr/s 在internal时间段里,每秒CPU接收的中断的次数 idle/total*100
从/proc/loadavg获得数据
runq-sz 采样时,运行队列中任务的个数,不包括vmstat 进程。 procs_running-1
plist-sz 采样时,系统中活跃的任务的个数 nr_threads
ldavg-1 采样的前一秒钟系统的负载(%) lavg_1
ldavg-5 采样的5秒钟系统的负载(%) lavg_5
ldavg-15 采样的前15秒钟系统的负载(%) lavg_15
下面输入命令“sar 3 2”,表示每隔3秒显示CPU的状态,共显示2次。此时创建1GB文件的任务还在后台进行。
|
与CPU有关的输出的含义
参数 解释 从/proc/stat获得数据
CPU 处理器ID
user 在internal时间段里,用户态的CPU时间(%) ,不包含 nice值为负进程 usr/total*100
nice 在internal时间段里,nice值为负进程的CPU时间(%) nice/total*100
sys 在internal时间段里,核心时间(%) (system+irq+softirq)/total*100
iowait 在internal时间段里,硬盘IO等待时间(%) iowait/total*100
idle 在internal时间段里,CPU除去等待磁盘IO操作外的因为任何原因而空闲的时间闲置时间 (%) irq/total*100
输入命令“sar”,当不带任何参数时,表示每一秒采样一次,每次显示从系统到该采样时系统的平均信息。从Fig.8看出在10时12分43秒,系统idle应该为0,而Fig.9
|
上表中的所有值可取到两位小数点。
范例2:
|
8. top
top命令提供了实时的对系统处理器的状态监视,即可以通过用户按键来不断刷新当前状态。如果前台执行该命令,它将独占前台,直到用户终止该程序为止,但是该命令的很多特性都可以通过交互式命令或者在个人定制文件中进行设定。
下面是该命令的语法格式:
top [-] [d delay] [options]
一些参数的含义如下:
参数 解释
d delay 相邻的两次采样的间隔时间
q 该选项将使top没有任何延迟的进行刷新。如果调用程序有超级用户权限,那么top将以尽可能高的优先级运行
-l 不显示空闲进程,默认时,top显示空闲进程
-S 将系统进程信息也显示于屏幕,默认时,不显示。
与cPU有关的输出的含义
参数 解释
CPU信息 从/proc/stat获得信息
us 在internal时间段里,用户态的CPU时间(%),不包含nice值为负的任务占用的CPU的时间
usr/total*100
ni 在internal时间段里,nice值为负的任务的用户态的Niced进程的CPU时间(%) nice/total*100
sy 在internal时间段里,核心态的CPU时间(%) system/total*100
id 在internal时间段里,cpu空闲的时间,不包括等待i/o的时间(%) idle/total*100
wa 在internal时间段里,等待i/o的时间(%) iowait/total*100
hi 在internal时间段里,硬中断时间(%) irq/total*100
si 在internal时间段里,软中断时间(%) softirq/total*100
任务
total 采样时,系统全部进程的个数,包括正在运行的top进程,不包括线程。 =running+sleeping+stopped+zombie
running 采样时,运行队列的进程的个数,但不包含top这个进程 通过判断/proc/pid/status中stat的值。
sleeping 采样时,可中断和不可中断状态的进程的个数
stopped 采样时,停止状态的进程的个数
zombie 采样时,僵尸状态的进程的个数
运行中的参数的含义
参数 解释
q 退出程序
r 重新安排一个进程的优先级别。系统提示用户输入需要改变的进程PID
S 切换到累计模式
L 切换显示平均负载和启动时间信息
T 切换显示进程和CPU状态信息
M 切换显示内存信息
s 改变两次刷新之间的延迟时间。系统将提示用户输入新的时间,单位为s。如果有小数,就换算成m s。输入0值则系统将不断刷新,默认值是5 s。需要注意的是如果设置太小的时间,很可能会引起不断刷新,从而根本来不及看清显示的情况,而且系统负载也会大大增加
范例1:查看 键入top命令查看系统状况
|
第一行的项目依次为当前时间、系统启动时间、当前系统登录用户数目、平均负载。
第二行为进程情况,依次为进程总数、休眠进程数、运行进程数、僵死进程数、终止进程数。
第三行为CPU状态,依次为用户占用、系统占用、优先任务占用、闲置任务占用。
第四行为内存状态,依次为平均可用内存、已用内存、空闲内存、共享内存、缓存使用内存。
第五行为交换状态,依次为平均可用交换容量、已用容量、闲置容量、交换高速缓存容量。
然后下面就是和ps相仿的各进程情况列表了。
总的来说,top命令的功能强于ps,但需要长久占用前台,所以用户应该根据自己的情况来使用这个命令。
9. oprofile
Oprofile这个性能监视工具是利用处理器上所包含的专用的性能监视硬件(若没有性能监视硬件则使用一个基于计时器的代用品)来收集与性能相关的数据样品(samples)。它获得关于内核以及系统上的可执行文件的信息,例如内存是何时被引用的;L2缓存请求的数量;收到的硬件中断数量等。
下表提供了对 oprofile 软件包中包括的工具的总览。
命令 描述
opcontrol 配置要收集的数据
op_help 显示系统处理器的可用事件以及每个事件的简单描述
opreport 获得有用的profile数据
Opannotate 如果应用程序使用调试符号编译了,创建带注解
oprofiled 作为守护进程来运行,定期把样品数据写入磁盘
Oparchive 收集可执行文件信息和调试信息,将采样文件归档
op_import 把样品数据库文件从异类二进制格式转换成系统的本地原始格式。只有在分析不同体系的样品数据库时才使用该选项。
(1)opcontrol
在运行 OProfile 之前,必须用opcontrol配置监视环境。在 opcontrol 命令被执行时,设置选项就会被保存到 /root/.oprofile/daemonrc 文件中。
命令格式
opcontrol [--vmlinux] [--start] [--stop] [--dump] [--shutdown] [--save=filename]
参数解释
参数 描述
vmlinux 用来配置是否监视内核。要监视内核,以根用户身份执行以下命令:
>opcontrol --vmlinux=/usr/src/linux-2.6.13/vmlinux
要配置 OProfile 不监视内核,以根用户身份执行以下命令:
>opcontrol --no-vmlinux
这个命令还会载入 oprofile 内核模块(如果还没有被载入),并创建 /dev/oprofile/ 目录(如果不存在)。
start 开始监视系统
要使用 OProfile 来开始监视系统,以根用户身份执行以下命令:
|
/root/.oprofile/daemonrc 中的设置被使用。OProfile 守护进程 oprofiled 被启动;它定期把样品数据写入 /var/lib/oprofile/samples/ 目录。该守护进程的日志位于 /var/lib/oprofile/oprofiled.log。如果 OProfile 使用不同的配置选项被重新启动,以前会话中的样品文件就会被自动备份到 /var/lib/oprofile/samples/session-N 目录中,这里的 N 是前一次备份会话数量再加1。
stop 停止监视
Shutdown 要停止建档器,以根用户身份执行以下命令:
>opcontrol –shutdown
Save save 保存数据
要保存当前的抽样文件集合,执行以下命令,把 替换成当前会话中的独特描述性名称。 opcontrol --save= 目录 /var/lib/oprofile/samples/name/ 被创建,当前的抽样文件被复制到其中。
Dump dump OProfile 守护进程 oprofiled 定期收集样品,并把它们写入 /var/lib/oprofile/samples/ 目录。在读取数据之前,请以根用户身份执行以下命令来确定所有数据都被写入这个目录中了。