我的一台服务器是 Windows 2003 Enterprise Edition SP2。通常全天最多有 14 人登录。他们使用常规程序,如 Office 2010 或任何互联网浏览器,以及一些特定软件(用于银行业务和核心业务开发)。今天我一直在监控服务器,并注意到其中一个用户会话中的一个进程正在使用恒定数量的 CPU(CPU 使用率在 25% 到 32% 之间波动)。我一直在寻找这个特定的进程,它似乎属于系统。但是,这个进程在用户会话中运行(只是 13 个当前会话中的一个),并且使用几乎保持不变的 CPU 量是不正常的。在其他一些论坛中,人们建议使用一个名为“TameDOS”的程序来解决这个问题,因为他们说这是由于 DOS 程序在某个会话中运行,因此它使用了大量 CPU。
可以吗?还有其他方法可以解决这个问题吗?
答案1
每当用户尝试加载 16 位 (Win16) 映像时,都会调用 ntvdm.exe(虚拟 DOS 机)。16 位 MS-DOS 应用程序在 ntvdm.exe 中模拟,这就是您无法看到实际应用程序的原因。最简单的方法是找出哪个用户正在运行旧的 DOS 程序并告诉他们停止它。
另一个解决方案是Windows 系统资源管理器,您可以使用它在所有登录用户或所有正在运行的进程之间更公平地分配 CPU 使用率。
答案2
ntvdm.exe 进程也存在同样的问题。当我在 Windows 2003 服务器上启动 C++ 程序时,它占用了 50% 的 CPU。我需要授予此服务器上 50 多个瘦客户端的访问权限。安装“TAME DOS”后,我可以在所有的瘦客户端上运行 C++,处理器使用率仅为 0% - 1%。