代码之家  ›  专栏  ›  技术社区  ›  Greg Domjan

是什么原因导致MS Windows的“系统”进程在编译时发疯?

  •  2
  • Greg Domjan  · 技术社区  · 16 年前

    最近有几次我注意到“某些东西”会导致Windows系统进程保持在50%以上,并且在重启电脑之前它不会退出。目前为止在Win2k和Win XP上发生。

    同时,“系统空闲进程”进程占用了剩余的CPU,而构建步骤本身似乎也很缺乏。例如,一个通常需要5分钟编译的模块现在需要20+的时间。

    我会做一些猜测,也许是病毒检查器或乌龟svn,但会绝望地想要一些其他的建议。


    我一直在经历这件事,因为它被触发了,而罪魁祸首可能不会继续。这并不是说其他一些正在进行的进程并没有做一些“愚蠢”的事情,而是在管理系统的主动锁定,同时看起来自己是空闲的。

    我正在运行VNC来查看机器,所以它有时会被查看。

    编辑2:

    6 回复  |  直到 16 年前
        1
  •  4
  •   Rowland Shaw    16 年前

    我的理解是,“系统”过程是在内核中花费的时间(所以执行磁盘I/O、网络I/O(你确实提到了不可信构建)等等——我会检查磁盘碎片、病毒检查程序,可能还会在您的Incredibuild集群中的其他机器上查看这些内容。

    “如果CPU处于空闲状态,系统就处于空闲状态”。处理被固定在一个处理器上这一事实表明该进程正在做一些不知道多核的事情,或者有人将它的线程亲和力设置为1。

        2
  •  3
  •   SmacL    16 年前

    您还可以考虑禁用 Windows Indexing service

    编辑:检查了哪些进程实际上占用了CPU核心,并将它们追溯到给定的应用程序?

        3
  •  0
  •   jesse jesse    16 年前

    在我们的办公室里,我们遇到了卡巴斯基和Incredibuild的问题——编译和链接有时会挂起,永远无法完成。
    到目前为止,我找到的唯一解决方案是完全关闭卡巴斯基-所以如果你找到了解决办法,请告诉我!

        4
  •  0
  •   Sotirios Delimanolis    16 年前

    您将看到的系统中的大部分活动都是来自lazy writer和其他磁盘访问的磁盘活动。来自系统的CPU活动将是由于内核活动,如驱动程序( ISRs/DPCs )和其他内核级过滤器(它 能够

    http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx )可以帮助查看进程(包括系统)的CPU使用情况。你可以利用公众 Microsoft Symbol Server this resource 让你开始。

    如果你能用Xperf追踪( http://msdn.microsoft.com/en-us/performance/cc825801.aspx ),我可以帮助您分析CPU时间在系统(内核)上下文中的位置。XP没有正式支持Xperf,但是可以 take a trace on XP and analyze it on other systems

    Xperf和processexplorer应该能够准确地关注导致CPU使用失控的模块。诊断问题时甚至不需要符号;只需模块名称就可以指出导致系统速度减慢的相关组件。例如,来自ndis系统可以指向网络中断,或者来自模块(如aavmker4.sys)的活动可以指向AV软件(Avast!在这种情况下)。

        5
  •  0
  •   ubermonkey    16 年前

    在我的办公室里,Incredibuild和间谍软件医生的免疫功能之间的冲突导致了类似的问题。关掉免疫系统为我们解决了这个问题。

    您使用什么防病毒/恶意软件?

        6
  •  0
  •   Pavel Chikulaev    15 年前

    在没有任何防病毒的干净的windows7上,在VS2003中使用IncrediBuild编译时,我也遇到了相同的挂起。它在XP和Vista的同一个盒子上运行良好。