奇怪的现象,关库时发现很慢
vmstat 中 procs 对应的 r 为 0,但是 b
一直有13个,结合memory的free看,剩余内存在减小,swap中没有换页,通常是 r 比较高,b 小于等于 r。
可以man vmstat看说明
vmstat 各部分详细说明
-
procs
-
r :运行和等待cpu时间片的进程数,如果长期大于1,说明cpu不足,需要增加cpu。
-
b :在等待资源的进程数,比如正在等待i/o、或者内存交换等。
-
-
-----------memory----------
-
swpd :切换到内存交换区的内存数量(k表示)。 如果数值不变,说明每次没问题,如果数值很大,且不断的在变更,说明内存不够,或者内存溢出
-
如果swpd的值不为0,或者比较大,比如超过了100m,只要si、so的值长期为0,系统性能还是正常
-
free :当前的空闲页面列表中内存数量(k表示)
-
buff :作为buffer cache的内存数量,一般对块设备的读写才需要缓冲。
-
cache :作为page cache的内存数量,一般作为文件系统的cache,
-
如果cache较大,说明用到cache的文件较多,如果此时io中bi比较小,说明文件系统效率比较好。
-
-
---swap--
-
si :由内存进入内存交换区数量。
-
so :由内存交换区进入内存数量。
-
-
每当将内存页写入交换时,so 值都会增加。这仅在内存压力下发生。如果此值长时间不为零,则系统处于严重的内存压力之下。
-
更重要的计数器是si换入指标。理想情况下,该值应始终为零,因为我们从不期望再次需要分页存储上的逐出数据。这里一个舒适的小值是可以的。
-
-
-----io----
-
bi :从块设备读入数据的总量(读磁盘)(每秒kb)。
-
bo :块设备写入数据的总量(写磁盘)(每秒kb)
-
这里我们设置的bibo参考值为1000,如果超过1000,而且wa值较大应该考虑均衡磁盘负载,可以结合iostat输出来分析。
-
-
--system--
-
in :在某一时间间隔中观测到的每秒设备中断数。
-
cs :每秒产生的上下文切换次数,如当 cs 比磁盘 i/o 和网络信息包速率高得多,都应进行进一步调查。
-
-
上下文切换属于cpu的一个范畴,简单讲就是cpu不能在同一时刻去处理多个任务,只能在一个时间点处理一个任务,但是每个任务分配的时间片是有限的,所以,任务任务1走完给它分配的时间片,就该任务2占用cpu了,这时候任务1到任务2就是上下文切换。
-
-
-----cpu------
-
us :用户方式下所花费 cpu 时间的百分比。us的值比较高时,说明用户进程消耗的cpu时间多,但是如果长期大于50%,需要考虑优化用户的程序。
-
sy :内核进程所花费的cpu时间的百分比。这里us sy的参考值为80%,如果ussy 大于 80%说明可能存在cpu不足。
-
id :cpu处在空闲状态的时间百分比
-
wa :io等待所占用的cpu时间的百分比。这里wa的参考值为30%,如果wa超过30%,说明io等待严重,
-
这可能是磁盘大量随机访问造成的,也可能磁盘或者磁盘访问控制器的带宽瓶颈造成的(主要是块操作)。
-
st :steal表示被偷走的cpu所占 时间百分比一般为0,不用关注,如果长期很高有可能是虚拟机超分cpu。
-
-
https://man.linuxde.net/vmstat
vmstat -s 看着
也不错。
再看看top
有几个状态为d的oracle进程,d代表不能中断的休眠状态。
这个状态的进程一般是因为在等待io,例如磁盘io、网络io等。在发出的io请求得不到相应之后,进程一般就会转入uninterruptible sleep状态。对其kill -9也不起作用(重启主机可以)。
有两种方法可以找到有关 d 状态进程的更多信息:
-
-
1. ps -e|head -1;ps -eo ppid,pid,user,stat,pcpu,comm,wchan:32|grep oracle|grep -
-
这将打印所有oracle进程的列表,其中在进程运行时在最后一列中显示“-”,或者如果进程当前正在休眠,则显示进程正在休眠的内核函数的名称。这也包括可中断的过程。处于不间断睡眠状态的进程可以通过第四列确定,然后将显示 d。
-
-
2. echo w > /proc/sysrq-trigger
-
此命令生成报告和所有处于 d 状态的进程和完整内核堆栈的列表跟踪到 /var/log/messages。这显示了比上述第一个选项更多的信息。
-
主要都是dbw进程
(当时忘了按c),应该是在写脏数据到磁盘(sga较大)。
以下开始偏离主题:
查看内存压力的计算方法
这种情况下,内存使用率应该是
(free buffers cached) / total * 100 == (122880 131964 1491888) / 3083104 == 56.7%
对于 uek4 内核
阅读(2568) | 评论(0) | 转发(0) |