这个问题已经困扰了很长时间了,一直没有着手去解决,今天加完班,抽时间仔细检查了下,在开机的时候打开任务管理器,发现是一个SYSTEM用户名的svchost.exe进程在开机的时候连续长时间的占用CPU(大约一分钟)资源。于是运行Process Explorer查看该svchost.exe进程的线程,其中一个ntdll.dll!rtlallocateheap+0x18c线程占用了99%的CPU资源,系统几乎拖不动了,而且在恢复正常以后还会时常占用99%的CPU资源。

于是baidu了一下这个ntdll.dll!rtlallocateheap+0x18c什么结果都没有返回,鄙视一下baidu。转到google搜索,找到了一些英文社区,其中大部分都是讨论在打开windows update页面的时候这个svchost.exe的线程会占用大量的CPU资源,导致系统运行缓慢。根据讨论的一些内容,基本上可以确认这个ntdll.dll!rtlallocateheap+0x18c的线程属于自动更新服务的一部分,于是运行services.msc找到自动个更新服务Automatic Updates将其禁用,开机就没有再出现过ntdll.dll!rtlallocateheap+0x18c线程占用大量CPU资源的问题,并且svchost.exe进程的内存占用率下降了约2/3,因此可以看出windows xp的自动更新所需要花费的资源是相当大的。

因为自动更新所下载的文件都是缓存在这个svchost.exe中的,因此随着自动更新的时间越长,这个进程所占用的内存资源越大(我曾经见过101MB的占用),直到更新完全下载完毕,并且安装完成,资源才会被释放。由于自动更新所需要的时间往往很长,在每次开机的时候自动更新会继续工作并且尝试连接到服务器进行断点续传,所以导致开机的时候svchost.exe