[通讯存档 ^][< 第 5 卷,第 2 期][第 6 卷,第 2 期>]

Systems Internals 通讯第 6 卷,第 1 期

http://www.sysinternals.com
版权所有 (C) 2004 Mark Russinovich


特别公告发布

由于最近没有发表通讯,你可能会以为名单列表已经中断,或者我已经不再写了,但原因其实是我和 David Solomon 一直在努力编写下一版的《Inside Windows 2000》。 它的标题是“Windows Internal”,将会涵盖 Windows 2000、Windows XP 和 Server 2003。 我们已经取得了良好的进展,预计手稿将于 8 月完成,并在 10 月出版。 除了反映操作系统的更改意外,我们还扩大了许多领域的覆盖范围,包括安全性、故障转储分析、启动等。 完成此项工作后,我们将会恢复常规通讯。 也就是说,我已经包含了一个进程资源管理器提示,你一定会发现它很有用。

使用进程资源管理器跟踪 CPU 使用率

如果经常使用 Sysinternals,那么你会看到进程资源管理器在过去的六个月中获得了重大改进。 与使用任务管理器相比,通过使用几个工具可以轻松地了解系统的 CPU 使用情况。 例如,在任务管理器中,即使没有占用 CPU 的进程在 CPU 列中也会显示文本(“00”),这就导致我们很难将它们与使用 CPU 的进程区分开来。 任务管理器还会将 CPU 使用率舍入为最接近的整数,这可能会隐藏 CPU 使用率或导致其失真。 如果某个进程时不时地处于活动状态,但 CPU 使用率不到 1%,它可能仍会显示为“00”。 最后,任务管理器回将中断处理使用的任何 CPU 时间归因于“系统空闲进程”,导致你无法识别造成计算机运行缓慢的有缺陷的驱动程序或硬件。

使用进程资源管理器,可以很轻松地看到哪些进程正在使用 CPU,因为它只会显示 CPU 使用率非零的进程的数字。此外,它提供了查看 CPU 使用率小数部分的选项,可以更准确地显示 CPU 的使用情况。 它还会将中断(硬件中断)和延迟过程调用(DPC - 软件中断)活动显示为伪进程。

但即使 CPU 使用率显示小数部分,也几乎总是存在占用 CPU 的进程,但不会显示出来。 其原因在于 Windows 执行时间计算的方式。 时钟中断的触发是定期发生的(在大多数系统上为每 10 毫秒一次)。 作为响应,Windows 时钟中断例程会执行并假设当前运行的任何线程都是自上次时钟中断以来使用 CPU 的线程。 对于目前的千兆赫 CPU 来说,10 毫秒是一段很长的时间,在时钟中断之间,可以执行许多线程,但永远不会被时钟中断例程发现。

因此,可以采用另一种方法来确定进程的执行情况,即检查进程中的线程已引发的上下文切换次数。 在选择要运行的线程(计划)时,其上下文切换计数将会递增。 通过添加“上下文切换”列(单击“查看”->选择列),可以查看每个进程中已发生的上下文切换总数。 但是一个更有趣的数字是上下文切换增量列。 此列显示了在进程资源管理器的刷新间隔(默认情况下为 1 秒)之间每个进程中发生的上下文切换次数。

因此,要获取系统上进程活动的独特视图,可添加“上下文切换增量列”并按它排序。 你将看到许多进程带有正在运行的线程,但显示为并未消耗任何 CPU 时间,因为线程是在 10 毫秒的时钟间隔内运行的。 其中一些进程正在执行不需要的轮询(例如查询注册表或检查文件夹中的更改)。 这只不过是简单且草率的编程。 其他进程可能正在执行有用的工作,但运行在系统时间核算机制的“雷达下”。 你的工作就是要辨别好坏。

在 http://www.sysinternals.com/ntw2k/freeware/procexp.shtml. 下载进程资源管理器

MARK 在 TECHED 发表关于 Linux/Windows 内核比较、进程资源管理器和排除启动故障的演讲

来看看我在 Microsoft TechEd US 和 Europe 的演讲吧,我在其中的一个会话“Windows 和 Linux:两个内核的故事”中对当前的 Linux 内核和 Windows 内核进行了比较。 在 TechEd US 上,我还演示了“使用 Sysinternals 进程资源管理器进行高级 Windows 故障排除”,其中提供了有关充分利用进程资源管理器的技巧。 在 TechEd Europe 上,我的“使用 Sysinternals 工具进行有效的 Windows 故障排除”展示了如何使用进程资源管理器、Regmon 和 Filemon 来解决实际问题,而“排查 Windows 启动和启动问题”则讲解了如何重新运行无法启动的系统的机制和技术。

有关详细信息,请访问 http://www.sysinternals.com/ntw2k/info/talk.shtml

MARK 和 DAVID SOLOMON 讲解 WINDOWS OS 内部功能和故障排除

听听我和 David Solomon 介绍我们的 Windows 2000/XP/2003 Internals 课程:伦敦:2004 年 6 月 23-25 日
加利福尼亚州圣何塞:2004 年 9 月 27 日至 10 月 1 日 ***5 天动手实践!
德克萨斯州奥斯汀:2004 年 12 月 14 日至 16 日

此课程与我们为世界各地的 Microsoft 员工讲授的课程相同。 它涵盖了进程和线程、线程计划、内存管理、安全性、注册表和 I/O 系统的内部机制。 深入详解系统线程、系统调用调度、中断处理、启动和关闭等机制。 了解使用 Sysinternals 工具的高级故障排除技术以及如何执行故障转储分析。 通过了解 OS 的内部工作原理,可以更有效地利用平台,更有效地调试和排查问题。

注意:伦敦和奥斯汀课程仅提供讲座。 圣何塞课程提供动手实践教学(自带笔记本电脑-已提供配置详细信息)。

有关详细信息和注册,请访问 http://www.sysinternals.com/troubleshoot.shtml


感谢阅读 Sysinternals 通讯。

2004 年 4 月 27 日星期二下午 4:40 由 ottoh 发布

[通讯存档 ^][< 第 5 卷,第 2 期][第 6 卷,第 2 期>]