CentOS查看系统负载
时间:2014-07-15 23:47 来源:linux.it.net.cn 作者:it
最近在搭建一个服务器系统,需要查询各类系统负载。之前只会用top察看cpu, memory等基本信息。对于其它信息并不了解。所以系统学习之。
1. CPU 占用情况:
1.1: 首先看Process运行时占用CPU的细节:
正如Linux Kernel中所介绍的,Process的状态有3种:
正在被CPU处理,可被CPU处理,blocked状态。
正在被CPU处理:顾名思义,就是process正在占用CPU。
可被CPU处理:即runnable状态,这就意味着它将同其他runnable状态的process等待CPU时间。由schedule程序选择调哪个runnable状态的process进CPU。(这些runnable状态的process的队列叫做作Run Queue)
blocked状态:process可能在等待一个I/O操作获取的数据,或者是一个系统调用的结果
runnable processes的数目和blocked processes的数目可以表现出CPU是否很忙。
另外,很多系统工具会显示一个值: load average。 它就是指running和runnable process的总和。
load average显示的三个数字的时间分别为1分钟,五分钟和十五分钟 的load average数量。
1.2:CPU的上下文切换:
Linux Kernel中有个schedule() 函数。它用来从runnable 队列中挑选出一个process进入CPU,并完成上下文切换(Context Switch)。
当系统做Context Switch时,CPU保存所有old process的context信息并获得new process的所有context信息.Context信息包括大量的linux追踪每个process信息,尤其是一些资源:那些process正在执行,被分配了哪些内存,它打开了那些文件,等等.切换Context会触发大量的信息移动,这是比较高的开销.如果可能的话尽量保持很小的 context switches.
kernel schedule() 触发context switches.为了保证每个process平等的共享CPU时间,kernel周期性中断running的process,看是否有需要作context switches. 如果需要,kernel调度器会开始另外的process而不是让当前的process继续执行,每次的周期性中断或者定时中断都可能触发context switch.每秒定时中断的次数因不同架构和不同的kernel版本而不同(Kernel中的HZ?, Kernel中这个值通常设置为1000) .
$cat .config |grep CONFIG_HZ
可以看到这个值设置为多少。(通常为1000)。 也就是每秒钟1000次时钟中断。
用户态如何察看时钟中断,以前Sam使用:
#cat /proc/interrupts
认为其中中断0 就是时钟中断数。可以利用间隔10秒的差值算出每秒时钟中断数。但现在在多核上好像不适用了。
1.3:CPU状态信息:
us -- User CPU time
The time the CPU has spent running users' processes that are not niced.
非nice过的用户程序所占用的百分比。
sy -- System CPU time
The time the CPU has spent running the kernel and its processes.
kernel和系统调用所占用的百分比。
ni -- Nice CPU time
The time the CPU has spent running users' proccess that have been niced.
被nice过的用户程序所占百分比。
wa -- iowait
Amount of time the CPU has been waiting for I/O to complete.
等待IO操作时所占百分比。
hi -- Hardware IRQ
The amount of time the CPU has been servicing hardware interrupts.
处理硬件中断所用百分比。
si -- Software Interrupts
The amount of time the CPU has been servicing software interrupts.
处理软件中断所用百分比。
st -- Steal Time
The amount of CPU 'stolen' from this virtual machine by the hypervisor for other tasks (such as running another vir鈥?
tual machine).
NICE以及修改process优先级: 见附录1。
1.4:使用top查看CPU状况:
$top -d 1 -c
top有相当强大的功能。不光可以显示当前CPU各个状态下的时间。还可以分别显示多个CPU Core(按1)。以及某个process具体是运行在哪个core上。(按f,j)
如果发现CPU system部分占用太多,可以使用OProfile 工具查看。
如果iowait很高时,则需要具体检查IO部分,如硬盘和网卡等。
1.5: 使用vmstat查看CPU状况:
使用top查看cpu状态时,可以看到CPU在哪些状态下占用较多。以及哪些Process占用较多CPU。
而使用vmstat查看,在CPU实用方面,则有其它信息可看。
$vmstat 1 //每隔1s 输出一次结果
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
CPU项目下的:us sy id wa st与top下的相似。
procs下则有几项有新意:
r:in run queue
b:blocked for resources I/O, paging etc
如果r 的值持续较大,且连续超过CPU Core的数量,则表明CPU资源严重不足,有很多process在等待CPU, CPU计算能力已经成为瓶颈。
2. 查看其它IO负载:
当使用top或者vmstat发现CPU wa时间多时。 vmstat中发现b列一直比较大的话(超过CPU Core)。则表明IO性能不佳。
IO性能,可以具体查看存储设备和网络设备
Partition察看类型:
很多时候,在察看U盘格式时,Sam 使用fdisk -l。 察看其U盘中partition list以及格式。但其实这个方法并不准确。因为fdisk拿到的值只是在 -t 时修改的值。
例如:我们创建了一个ext3 partition. 但没有使用-t 修改其值为82。则fdisk 还是会显示为 Win95 FAT32.
所以可以使用 blkid。
process优先级及其修改:
当使用top命令时。有2列显示与process的优先级别有关:
PR:Priority.
NI:nice.
PR数值越小,process的优先级约高。
PR(new) = PR(old) + NI
指定和修改porcess优先级,可以使用:nice和renice命令。
$sudo nice -n -10 top -d 1
则看到top的NI=-10
linux nice 命令详解
功能说明:设置优先权。
语 法:nice [-n <优先等级>][--help][--version][执行指令]
补充说明:nice指令可以改变程序执行的优先权等级。
参 数:-n<优先等级>或-<优先等级>或--adjustment=<优先等级> 设置欲执行的指令的优先权等级。等级的范围从-20-19,其中-20最高,19最低,只有系统管理者可以设置负数的等级。
renice:
renice -10 -p 6200
将pid=6100的process NI 设置为-10
另外:使用top,也可以修改porcess的优先级。
#top -d 1
"r"-->输入进程PID-->输入nice值
(责任编辑:IT)
最近在搭建一个服务器系统,需要查询各类系统负载。之前只会用top察看cpu, memory等基本信息。对于其它信息并不了解。所以系统学习之。
1. CPU 占用情况: 1.1: 首先看Process运行时占用CPU的细节: 正如Linux Kernel中所介绍的,Process的状态有3种: 正在被CPU处理,可被CPU处理,blocked状态。
正在被CPU处理:顾名思义,就是process正在占用CPU。 可被CPU处理:即runnable状态,这就意味着它将同其他runnable状态的process等待CPU时间。由schedule程序选择调哪个runnable状态的process进CPU。(这些runnable状态的process的队列叫做作Run Queue) blocked状态:process可能在等待一个I/O操作获取的数据,或者是一个系统调用的结果
runnable processes的数目和blocked processes的数目可以表现出CPU是否很忙。
另外,很多系统工具会显示一个值: load average。 它就是指running和runnable process的总和。 load average显示的三个数字的时间分别为1分钟,五分钟和十五分钟 的load average数量。
1.2:CPU的上下文切换: Linux Kernel中有个schedule() 函数。它用来从runnable 队列中挑选出一个process进入CPU,并完成上下文切换(Context Switch)。 当系统做Context Switch时,CPU保存所有old process的context信息并获得new process的所有context信息.Context信息包括大量的linux追踪每个process信息,尤其是一些资源:那些process正在执行,被分配了哪些内存,它打开了那些文件,等等.切换Context会触发大量的信息移动,这是比较高的开销.如果可能的话尽量保持很小的 context switches.
kernel schedule() 触发context switches.为了保证每个process平等的共享CPU时间,kernel周期性中断running的process,看是否有需要作context switches. 如果需要,kernel调度器会开始另外的process而不是让当前的process继续执行,每次的周期性中断或者定时中断都可能触发context switch.每秒定时中断的次数因不同架构和不同的kernel版本而不同(Kernel中的HZ?, Kernel中这个值通常设置为1000) . $cat .config |grep CONFIG_HZ 可以看到这个值设置为多少。(通常为1000)。 也就是每秒钟1000次时钟中断。
用户态如何察看时钟中断,以前Sam使用: #cat /proc/interrupts 认为其中中断0 就是时钟中断数。可以利用间隔10秒的差值算出每秒时钟中断数。但现在在多核上好像不适用了。
1.3:CPU状态信息:
us
sy
ni
wa
hi
si
st NICE以及修改process优先级: 见附录1。 1.4:使用top查看CPU状况: $top -d 1 -c top有相当强大的功能。不光可以显示当前CPU各个状态下的时间。还可以分别显示多个CPU Core(按1)。以及某个process具体是运行在哪个core上。(按f,j)
如果发现CPU system部分占用太多,可以使用OProfile 工具查看。 如果iowait很高时,则需要具体检查IO部分,如硬盘和网卡等。
1.5: 使用vmstat查看CPU状况: 使用top查看cpu状态时,可以看到CPU在哪些状态下占用较多。以及哪些Process占用较多CPU。 而使用vmstat查看,在CPU实用方面,则有其它信息可看。
$vmstat 1
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
CPU项目下的:us sy id wa st与top下的相似。 procs下则有几项有新意:
r:in
b:blocked 如果r 的值持续较大,且连续超过CPU Core的数量,则表明CPU资源严重不足,有很多process在等待CPU, CPU计算能力已经成为瓶颈。 2. 查看其它IO负载: 当使用top或者vmstat发现CPU wa时间多时。 vmstat中发现b列一直比较大的话(超过CPU Core)。则表明IO性能不佳。
IO性能,可以具体查看存储设备和网络设备
当使用top命令时。有2列显示与process的优先级别有关: PR:Priority. NI:nice. PR数值越小,process的优先级约高。 PR(new) = PR(old) + NI
指定和修改porcess优先级,可以使用:nice和renice命令。 $sudo nice -n -10 top -d 1 则看到top的NI=-10
linux nice 命令详解
renice:
renice 将pid=6100的process NI 设置为-10
另外:使用top,也可以修改porcess的优先级。 #top -d 1 "r"-->输入进程PID-->输入nice值 (责任编辑:IT) |