linux多线程程序cpu占用率有关问题

linux多线程程序cpu占用率问题
我的程序开了100个子线程,起初占cpu   17%左右,   一夜过后骤涨到了95%上下
请问,发生这样的事情大概是什么原因
我该从哪里入手解决这个问题?
谢谢

------解决方案--------------------
看看是否对各个工作线程进行了同步控制。
先检查一下线程工作入口吧!

其实最好把代码发上来,关键的代码段。
------解决方案--------------------
一个晚上足够发生许多事情了...

你的程序是什么相关的?处理数据?I/O 服务?如果是前者,数据量增大的情况下可能会占用更多CPU(猜测)
打开 log 看有否线程死循环之类的情况?
------解决方案--------------------
频繁切换线程、频繁系统调用等都会造成 CPU 占用升高,但正常 I/O 和锁定应该不是 CPU 占用升高的原因。
------解决方案--------------------
......你怎么知道你在频繁切换线程?
------解决方案--------------------
内存泄漏
------解决方案--------------------
内存泄露后如果可用内存过小会导致频繁读取交换文件,使得CPU利用率过高。
------解决方案--------------------
正常切换根本算不得什么的..低效而频繁的系统调用(死循环 read / write 1个字节之类)才是问题关键。
运行过程中制造一个 core dump 分析一下,或者 strace 分析一下看看了。
------解决方案--------------------
什么系统?

Linux 上的 read / write 是系统调用,代价较普通函数调用而言高很多。
优化方法:尽量合并操作,使用 readv / writev 等,减少系统调用发生次数。
------解决方案--------------------
互斥锁基本不会引起cpu资源的占用。应该是有的线程长期占用资源所致。比如写大的文件,或者打开大的文件。这些都回长期占用cpu资源,导致cpu利用率上升的。
------解决方案--------------------
1、你用的内核是什么版本?
2、你的线程都在执行什么代码? 不会是 while(1);吧