ThinkPad x200为何总是CPU占用50%
2009年,我从美国买回一台ThinkPad X200 Tablet,Windows XP Tablet PC Edition 2005版,服役几年一直很正常。直到2012年初的时候,突然发现电脑非常的慢,打开文件夹都特别慢。十分奇怪,于是我打开任务管理器Task Manager,吃惊的看到system进程持续占用50%,傻眼了。这让正常的进程怎么活啊。
于是,我便开始了漫长的寻找原因的过程。
首先,用Process Explorer看看进程的情况,在System进程下,子进程Interrupts占用50%。说明有大量的中断请求反复的出现,而且是潮水般的非正常的情况。立刻怀疑可能是某个硬件故障,导致大量无效的中断。打开Interrupts属性,看看线程Threads的情况,一个家伙反复出现,ntkrnlpa.exe,而且CSwitch非常高。由于ntkrnlpa是一个WinNT Kernel核心,所以初步估计是一个基础硬件功能不停的触发中断所致。
无奈只能继续分析ntkrnlpa.exe的中断请求统计情况。使用KrView工具,输入kernrate_i386_XP.exe -s 5 -z ntkrnlpa -v。这时能看见中断执行模块的统计结果,此时占用率最高的是KdDebuggerDataBlock和RtlIpv6StringToAddressA。开始稍微有点眉目了,怀疑是网卡出问题了。
关于KrView的使用情况,可以看看这里
http://forum.sysinternals.com/kernrate-trace-rtlipv6stringtoaddressa_topic19138.html
http://forum.sysinternals.com/hardware-interrupts-30-kernrates-ntkrnlpaexe_topic19231.html
这里要强调一个地方,使用KrView需要下载symbols(dbghelp.dll,symsrv.dll),不然模块名会出现NtBuildNumber,那就真的一头雾水了。
关于symbols的下载,详细看这里
http://forum.sysinternals.com/kernrate-trace-need-help_topic14768.html
问题跟踪到了这里,棘手的问题开始出现了。我怎么知道这个KdDebuggerDataBlock和RtlIpv6StringToAddressA是由谁调用的?如果不能找到问题的源头,就根本不能解决问题。我开始迷茫了。
于是我开始研究系统中断DPCs原理,希望能找到问题的根源。
无奈,看了一部分资料后,我放弃了。DPCs非常复杂,一时半伙弄不明白。即使道理弄懂了,离实际解决问题还有很大的距离。
http://analyze-v.com/?p=598
研究中断原理的道路,走到这里就到尽头了。以我现有的能力无法进行下去,有太多基础的知识需要补充了。
为了解决问题,我只能另辟蹊径。
我先开始试试,把网卡禁用,问题依旧。
然后我便尝试寻找lenovo的技术支持。结果皇天不负有心人,真的给我发现了这个。
http://forums.lenovo.com/t5/X-Series-ThinkPad-Laptops/x200-Hardware-Interrupts-constantly-at-40-of-CPU-resources/td-p/98869
根据第3页MikeSL的回答,问题出在显卡的驱动上,更新驱动的版本就可以解决了。
原话如下
This isn't a specific fix for this specific issue, but I've found with a very similar "excessive hardware interrupts" scenario I experienced over the past few months (Windows XP, Thinkpad T61) that:
- There was ample evidence in the output of the KrView.exe tool (KernRate from Microsoft) that these issues were caused by drivers that were responding to (or firing off) APIs with names like "AddDevice()", and that the vast majority of the unnecessary/excessive/CPU-consuming interrupts were directly related to these API calls. (Note: KernRate is likely not supported on Windows Vista - at the very least, Microsoft strongly encourages those with Vista/Server 2008 or later to use the Windows Performance Analysis Tools in place of KernRate. I have no experience using these tools, and cannot guess whether they provide similar detailed kernel tracing capabilities, but I surely hope so.)
- Disabling the "Intel(R) Management Engine Interface" helped reduce the number of occasions of this problem.
- Upgrading the "Mobile Intel(R) 965 Express Chipset Family" driver to the latest (v6.14.10.5029) finally stopped the last remaining case of these excessive Hardware Interrupts from occurring.
My conclusion? This is not an uncommon type of API call for a driver to make/respond to - since many device drivers, such as multi-output video adapters and other hardware-controlling devices are trying to emulate the Windows "plug and play" behaviour. Thus, it's likely there are many potential sources of these "excessive Hardware Interrupts", and addressing each potential troublesome driver is the only way to drive *all* the sources of the error to ground. Thankfully I don't seem to *need* the Intel ME Interface driver for my computer to operate, and thankfully there was a recently-released version of the 965 video driver that didn't have the issue. YMMV, and it's a long road to travel (I spent at least two months obsessively pursuing this issue), but I suspect there almost always *are* solutions, if you're patient and persistent enough.
至此,真的是山穷水复疑无路,柳暗花明又一村啊。心情非常激动,立刻开始更新驱动,问题完美解决。
ThinkPad x200为何总是CPU占用50%的更多相关文章
- Apache服务器httpd.exe进程占用cpu超过50%的解决方法
httpd.exe进程占用cpu超过50%,关闭掉Apache服务,cpu应用率立刻下降到0. 重新启动Apache又出现占用cpu高的情况. 原因是:httpd.exe和防火墙配置有冲突. 解决 ...
- 解决ccSvcHst.exe CPU占用超50%的问题,及其缘由
无意中发现任务管理器中一个非常奇特的进程,迅速吃掉了我50%的cpu资源,并且是持续性的,于是上google一番查找,终于有了新的发现. 非常多问答产品所有都是清一色的 错误解决方式: 正常情况下,系 ...
- SQL语句导致cpu占用如此高
一般我们可以使用sql server自带的性能分析追踪工具sql profiler分析数据库设计所产生问题的来源,进行有针对性的处理.但我们也可以通过自己写SQL语句来有针对性的进行性能方面的查询.通 ...
- SQLSERVER排查CPU占用高的情况
SQLSERVER排查CPU占用高的情况 今天中午,有朋友叫我帮他看一下数据库,操作系统是Windows2008R2 ,数据库是SQL2008R2 64位 64G内存,16核CPU 硬件配置还是比较高 ...
- w3wp.exe(IIS ) CPU 占用 100% 的常见原因及解决办法
对于IIS 管理员来说,经常会碰到 Web 服务器 CPU 占用 100% 的情况,以下是个人的日常工作总结和一些解决办法,主要用来剖析 w3wp.exe(IIS ) 占用 CPU 100% 的一些 ...
- sql server cpu占用过高优化
SQLSERVER排查CPU占用高的情况 今天中午,有朋友叫我帮他看一下数据库,操作系统是Windows2008R2 ,数据库是SQL2008R2 64位 64G内存,16核CPU 硬件配置还是比较高 ...
- Oracle SQL CPU占用高
Oracle数据库经常会遇到CPU利用率很高的情况,这种时候大都是数据库中存在着严重性能低下的SQL语句,这种SQL语句大大的消耗了CPU资源,导致整个系统性能低下.当然,引起严重性能低下的SQL语句 ...
- Mysql CPU占用高的问题解决方法小结
通过以前对mysql的操作经验,先将mysql的配置问题排除了,查看msyql是否运行正常,通过查看mysql data目录里面的*.err文件(将扩展名改为.txt)记事本查看即可.如果过大不建议用 ...
- 【原创】用python写的一个监测本地进程CPU占用的程序
#coding=utf-8import psutilimport sysimport timetry:#输入需要监测的进程PID PID = raw_input('ProcessPID: ') def ...
随机推荐
- 微博发布效果jq版
大家都看过新浪微博的发状态功能,我模拟了一下类似的效果,包括发布时间,删除效果等.代码如下: <!DOCTYPE HTML> <html> <head> <m ...
- spoj ONP - Transform the Expression 中缀转后缀
题目链接 将中缀表达式转化为后缀表达式. 数字的话直接放到答案的字符串里. 如果是左括号就进栈, 右括号就让栈里的符号都出来直到第一个左括号. 否则的话比较当前符号的优先级和栈顶符号的优先级. #in ...
- 走进C标准库(7)——"string.h"中函数的实现memcmp,memcpy,memmove,memset
我的memcmp: int memcmp(void *buf1, void *buf2, unsigned int count){ int reval; while(count && ...
- Linux文件系统与结构
一.Linux文件系统结构 /bin 二进制的缩写,用来放置可执行的二进制程序,基本命令 /boot 用来存放启动文件,kernel 和boot配置文件 /dev 用来放置设备文件 /dev/cons ...
- SQL Server 恢复过程
在恢复过程中.只会分析那些自最后一个检查点之后发生的更改,以确定是否需要重做还是撤销. 在最后一个检查点之前完成的操作都会精确的反应到数据文件中,恢复过程不需要做其它的事. 第一阶段: 分析. 这个阶 ...
- CSS---input标签注意
总结一下,在给input标签写CSS时需要注意的有以下几点: 一.不要给属性为text的input标签设置高度,这样无法让IE浏览器下输入框中的文字垂直居中显示.尽管你后来想要通过设置padding属 ...
- SpringMVC 中整合之JSON、XML
每次看到好的博客我就想好好的整理起来,便于后面自己复习,同时也共享给网络上的伙伴们! 博客地址: springMVC整合Jaxb2.xStream: http://www.cnblogs.com/h ...
- 优盘(U 盘) 采用TLC, MLC, SLC芯片 的区别 与使用寿命
最近一直在看大家在讨论sandisk,pny,金士顿等大厂都开始用tlc的芯片问题,让大家基本都不敢用U盘存数据了按照之前的擦写参数TLC 1000次MLC 10000次SL ...
- dom元素和方法总结
主要是参考<精通javascript>. 全局变量有: document.这个变量包含浏览器的html dom文档的引用. HTMElement 这个变量是所要html dom 元素的超类 ...
- Oracle_系统和对象权限管理
授予系统权限: GRANT { system_privilege | role } [,{ system_privilege | role }]... ... TO {user | role | PU ...