日常运维中我们的SAP集群由于主机资源消耗较高,top中出现主机cpu利用率超过100%,显示数值大于1000%。那么问题来了,是CPU爆表了还是正常的负载值。接下来解答疑惑。

top视图

  • load average:三个数字分别表示最近 1 分钟,5 分钟和 15 分钟的负责,数值越大负载越重。一般要求不超过核数,比如对于单核情况要 < 1。如果机器长期处于高于核数的情况,说明机器 CPU 消耗严重了。
  • **%Cpu(s)**:表示当前 CPU 的使用情况,如果要查看所有核(逻辑核)的使用情况,可以按下数字 “1” 查看。这里有几个参数,表示如下:
1
2
3
4
5
6
7
8
>- us    用户空间占用 CPU 时间比例
>- sy 系统占用 CPU 时间比例
>- ni 用户空间改变过优先级的进程占用 CPU 时间比例
>- id CPU 空闲时间比
>- wa IO等待时间比(IO等待高时,可能是磁盘性能有问题了)
>- hi 硬件中断
>- si 软件中断
>- st steal time

通过在top视图下按键盘的1,查看CPU的核数为88核。

top命令显示的是程序占用的CPU的总数,25核CPU最高占用率可达到2500%,top视图就是把所有使用率加起来的总数。

1
2
3
4
5
6
7
如果是物理机的话
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l #查看物理CPU个数
cat /proc/cpuinfo| grep "cpu cores"| uniq # 查看每个物理CPU中core的个数(即核数)
如果是虚拟机的话
cat /proc/cpuinfo| grep "processor"| wc -l #查看逻辑CPU的个数
查看CPU的总核数以及信息(型号)
cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c

top视图交互参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Z:改变颜色;
B:加粗
t:显示和隐藏任务/cpu信息;
m:内存信息
1:监控每个逻辑CPU的状况;
f:进入字段显示配置模式,可增加或者移除显示字段,按相应的字母新增或去除;
o:进入字段顺序设置模式,可配置显示位置顺序,按相应的字母往下移动,按“shift+相应的字母”往上移动
F:进入字段排序配置模式,可设置排序的字段;
R:正常排序/反向排序;
s:设置刷新的时间
u:输入用户,显示用户的任务
i:忽略闲置和僵死进程。这是一个开关式命令。
r:重新安排一个进程的优先级别。系统提示用户输入需要改变的进程PID以及需要设置的进程优先级值。
#输入一个正值将使优先级降低,反之则可以使该进程拥有更高的优先权。默认值是10。
c:切换显示命令名称和完整命令行。
M:根据驻留内存大小进行排序。
P:根据CPU使用百分比大小进行排序。
H:显示线程

查看SAP数据库进程占用的资源情况

查看saphana pid号

1
2
3
4
ps -ef | grep hdbindexserver
hana01:~ # ps -ef | grep hdbindexserver
ehpadm 40973 40699 99 Mar29 ? 818-05:51:30 hdbindexserver -port 30003
root 51732 38596 0 10:47 pts/0 00:00:00 grep --color=auto hdbindexserver

查看pid 40973 进程的资源占用情况(-d指定刷新间隔单位s)

1
top -p 40973 -d 5

查看saphana进程所有活跃的线程消耗情况

1
top -p 9907 -H -d 5

高级的htop命令

1
htop