Chinaunix

标题: 进程占用CPU过高问题探讨,求帮助 [打印本页]

作者: ranmengxu    时间: 2010-06-09 21:07
标题: 进程占用CPU过高问题探讨,求帮助
问题描述:
某个进程占用CPU达到120%,一般发生在运行一天后,进程处理数据量最高峰时期,进程处理数据为电话通话量数据,一天的早上,中午,下班时间为高峰。进程占CPU过高基本出现在早上8点左右。
1、硬件环境:
操作系统:Linux localhost.localdomain 2.6.18-53.el5xen #1 SMP Wed Oct 10 16:48:44 EDT 2007 x86_64 x86_64 x86_64 GNU/Linux
资源情况:(TOP命令显示)
top - 20:48:26 up 70 days, 22:00,  5 users,  load average: 0.57, 0.68, 0.82
Tasks: 156 total,   3 running, 153 sleeping,   0 stopped,   0 zombie
Cpu(s):  3.7%us,  2.9%sy,  0.0%ni, 90.4%id,  0.0%wa,  0.3%hi,  2.5%si,  0.2%st
Mem:  16390144k total,  4312480k used, 12077664k free,   604720k buffers
Swap: 51199144k total,        0k used, 51199144k free,  1815696k cached

2、软件描述
程序用C++实现,分为主程序和子模块,子模块以动态库方法被主程序加载,主程序负责接收远程数据包(多个点)和发送远程数据包(多个点),主程序和子模块的交互为队列交互方式,子模块被加载起来后,单独以线程方式运行,主程序发送数据给子模块时把数据压入子模块队列,子模块需要外发数据时把数据压入相关队列,主程序负责发送。各队列加锁同步。基本排除了子模块自身处理速度不够的情况。

进程占用CPU过高后,导致自身来源数据队列堵塞,可达到1000万条数据堵塞。
作者: ranmengxu    时间: 2010-06-09 21:08
早上出问题后,重启程序,CPU就降下来了,如果是自身无法处理高峰数据量,此时仍然会CPU过高才对。
作者: accessory    时间: 2010-06-09 23:37
是跑在XEN上面的啊?一定要用XEN么?不能用普通的KERNEL?

当看目前的描述看不出来啥。如果可以的话,加个OPROFILE,看看具体哪里慢了或者堵塞了。如果不能直接在客户那边加OPROFILE,就自己搭个小环境,想办法重现问题。

其实这个应该是事先测试好的。。。。。
作者: EricFisher    时间: 2010-06-10 08:59
120% ?




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2