2)sar –P ALL 1 10 分析,多个cpu间的负载是否平衡
3)ps aux 查看
4)tprof查看更详细的信息
说是sar会耗系统资源。
sar -P ALL 看所有cpu。
vmstat
中
¨ r列表示可运行的内核线程平均数目,包括正在运行的线程和等待 CPU 的线程。如果这个数字大于 CPU 的数目,则表明有线程需要等待CPU。
¨ b列表示处在非中断睡眠状态的进程数。包括正在等待文件系统 I/O 的线程,或由于内存装入控制而被挂起的线程。
curt使用方法:
http://www-01.ibm.com/support/knowledgecenter/#!/ssw_aix_61/com.ibm.aix.prftools/idprftools_cpu_ex_def_processor.htm
一般情况下:
tprof -x sleep 60
perfpmr.sh
解决CPU占用的惩罚机制nice和renice
指定和修改命令的优先级。
系统中运行的每个进程都有一个优先级,我们可以用ps命令看到,这个优先级为PRI,PRI的值越小,优先级越高,能占用更多的CPU时间片。系统默认的PRI为60,我们可以通过nice命令和renice命令来改变一个进程的优先级,从而控制进程对CPU时间片的占用。
任何一个用户都可以使用nice命令来使他的进程以低于系统默认的pri运行。但是只有root用户才可以使进程以高于默认的pri运行。
我们先来看一下nice命令的使用方法:
#nice –n -5 vmstat 2 10 >vmstat.out # ps -el F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 200001 A 0 704738 1523728 0 55 15 aee1400 544 f100009e63c23e30 pts/1 0:00 vmstat |
指定程序以nice值-5开始运行。程序开始后,nice的值为15,PRI的值为55。
nice命令可以指定的范围为-20 (最高优先级)到 20 (最低优先级)。在AIX5.3中,默认的nice为20。
# vmstat 2 10 >vmstat.out # ps -el F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 200001 A 0 704740 1523728 0 60 20 32ec6400 472 f100009e63c23e30 pts/1 0:00 vmstat64 |
可以看到默认的情况下,系统使用的nice=20,pri=60 。
实际上,在使用nice指定的时候,我们也可以使用超出闭区间[-20,20]的值,比如:
nice –n -33 vmstat 2 10 >vmstat.out # ps -el F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 200001 A 0 319652 1523728 0 40 0 82ef0400 544 f100009e63c23e30 pts/1 0:00 vmstat64 |
上例中,我们指定的nice小于-20,得到最高的优先级(pri=40)。反之,如果我们指定nice的值超过20,比如nice=21,我们将得到最低的优先级值pri=100。
renice不能在具有固定优先级的进程上使用。非root用户可以在一个或多个运行进程的nice值上加一个指定的值,但不能从中减去指定的值。也就是只能降低进程的优先级,而不能增加优先级。
renice -n -10 pidnumber ,将指定的进程nice值减小10。
renice -n +5 pidnumber ,将指定的进程nice值增加5。
根据nice值的不同取值,这里renice的值可以取值的范围是闭区间[-40,40 ]。为什么取值范围是这个呢?我们可以这样来理解,通过ps –l命令,我们可以看到NI的取值范围是闭区间[0,40],我们使用renice需要改变的也就是整个值,考虑两个极端的情况,假如现在为0,我们要把它改到40,就必须得renice –n 40,如果现在是40,我们要把它改为0,则renice的值就得是-40了。
当然,跟nice一样,在这里renice的值在命中使用的时候也可以超出这个闭区间,不会报错,但有效的结果只落在这个闭区间内。
# ps l 1630282 FSUID PID PPID C PRI NI ADDR SZ RSS WCHAN TTY TIME CMD 200001 A 0 1630282 680062 0 100 40 413e8400 472 484 EVENT pts/1 0:00 v # renice -n -30 1630282 # ps l 1630282 FSUID PID PPID C PRI NI ADDR SZ RSS WCHAN TTY TIME CMD 200001 A 0 1630282 680062 0 50 10 413e8400 472 484 EVENT pts/1 0:00 v |
我们可以总结一下,pri值的取值公式大概如下:
优先级值(PRI)= 基本优先级(60)+nice损失 + 基于最近CPU使用情况的CPU损失
总的来说nice值越小,进程的优先级越高,能分配到更多的cpu时间片。反之,也成立。