在过去的两个星期里,我们的系统CPU使用率(如sys)显示出现间歇性的严重峰值,持续半分钟,locking大多数进程,包括ssh。
我一直在试图弄清楚这一点,但在上面并没有显示任何相关的信息(系统使用它显示的微不足道的进程),尖峰是间歇性的,我无法使用这个web服务器托pipe的web应用程序的任何工作负载来重现峰值。
如果您对如何debugging高%sys和(有时)%si CPU使用率有任何想法,请分享。
系统规格(不知道是否有任何相关性):专用服务器,CentOS 6,核心i7 950,随时保持一致的4到8 GB RAM,硬盘驱动器在RAID-1中。
附加信息:
添加07.11.11:看起来像简单的重新启动恢复系统状态,我们可能永远不会知道是什么原因引起的干扰。
我知道这个线程是一个非常古老的,我知道你已经意识到这一点,%sys – >如果循环花费在%系统中,那么大部分的执行是在较低级别的代码中完成的,即可能在内核方面的问题。如果这个问题可以重现,请收集输出
echo t> / proc / sysrq-trigger
并附上/ var / log /消息与此线程一起。
在6.2和6.3上,禁用巨大的页面支持:
echo never > /sys/kernel/mm/redhat_transparent_hugepage/enabled
高%si会提示高中断率(si是在softirq处理程序中花费的时间,AFAIK)。 因此,我的第一个猜测是,服务器networking接口正在被打击。
这听起来很愚蠢,但重新启动有帮助,我们可能永远不会知道是什么原因导致了峰值。
不过谢谢您的回应。
有很多因素导致系统使用率很高,例如login,系统调用,上下文切换(线程和过程),IO甚至套接字数据从内核模式复制到用户模式。 我build议你可以使用sar,vmstat和iostat来检查这些。 更重要的是,找出哪个进程在秒杀时会导致%sys使用率高。 gdb在这种情况下会很有帮助。找出进程并使用gdb来附加它,你将会看到这个进程在这一刻发生了什么。唯一需要注意的是这个操作需要在进程中embeddeddebugging信息。