第5章 系统资源管理器

Windows系统资源管理器允许管理员为应用程序、用户、终端服务会话和Internet信息服务(IIS)应用程序池分配处理器资源和内存资源。通过Windows Server 2008操作系统的Windows系统资源管理器,可以使用标准资源策略或自定义资源策略来管理服务器的处理器和内存的使用情况。通过管理资源,可以帮助确保均等地使用一台服务器提供的所有服务,或确保高优先级的应用程序、服务或用户始终可以使用系统资源。

5.1 系统资源管理器概述

Windows系统资源管理器是WindowsServer2008内置的功能组件,WindowsServer2008操作系统安装完成默认没有安装该组件。

5.1.1 应用范围

运行单个角色的服务器通常不需要进行资源管理。但是如果一台服务器上安装了多个应用程序和服务,这些应用程序和服务并不会知道进程的争用。不受管理的应用程序或服务通常将使用所有可用资源来完成任务。

只有处理器负荷大于70%时,Windows系统资源管理器才会管理处理器资源。这意味着在处理器负荷较小时,不会主动限制每个使用者可以占用的资源。如果发生处理器资源的争用,资源分配策略可以根据定义的管理配置文件,帮助确保实现最低的资源可用性。

使用Windows系统资源管理器主要有两个好处:

● 由于通过动态管理的资源可以提高服务的可用性,所以可以在一台服务器上运行更多的服务。

● 即使处于最大资源负荷期间,高优先级的用户或系统管理员仍可以访问系统。

5.1.2 内置的资源管理策略

Windows Server 2008的Windows系统资源管理器已经内置了4个资源管理策略,分别是每进程相等、每用户相等、每会话相等、每IIS应用程序池相等,管理员可以通过选择要使用的策略类型来启用内置的资源管理策略,无需执行其他配置。默认使用的资源管理策略是每进程相等资源分配策略。每个资源分配类型如表5-1所示。

表5-1 资源分配类型

5.1.3 管理对象

Windows系统资源管理器确保系统资源可供进程、用户、终端服务会话或Internet信息服务应用程序池使用。如果这些资源不受管理,可能会争用并耗尽系统资源。在有些情况下,Windows系统资源管理器不适合管理某些对象,将无法保证服务器得充足的资源。

具有内置资源管理功能的应用程序和使用作业对象的应用程序,不应受Windows系统资源管理器管理。动态修改其进程优先级、内存限制或处理器关联的应用程序和进程可能会影响Windows系统资源管理器的正常运行。如果使用Windows系统资源管理器管理的计算机上,包含具有内置资源管理功能的应用程序,必须将自助管理的应用程序和进程添加到用户定义的排除列表中。

已排除的、已托管的应用程序或进程和操作系统使用的资源不受Windows系统资源管理器管理。操作系统使用的处理器资源和内存资源不受Windows系统资源管理器管理。例如,如果操作系统使用通过每用户相等资源分配策略管理系统上可用CPU的25%,那么将为正在该计算机上运行进程的三个用户分别分配总CPU的25%,即可被管理CPU的33.33%。将托管其他进程或应用程序的进程添加到用户定义的排除列表中时应谨慎。如果将svchost.exe之类的应用程序添加到用户定义的排除列表中,由于此类应用程序不受管理,所以,其托管的任何进程可能会使用所有可用资源。如果托管进程不在用户定义的排除列表中,该进程及其托管的任何进程将作为条件匹配的一部分或作为默认组的一部分进行管理。

5.1.4 CPU管理方法

Windows系统资源管理器通过调整进程优先级来管理处理器资源,可以保证进程匹配条件定义的进程组可以获得最低CPU利用率。除非总CPU利用率大于70%,否则,不会强制进行资源管理。Windows系统资源管理器可以通过CPU利用率或处理器关联规则来管理处理器资源。

在使用CPU创建资源分配策略时,选择要应用的管理规则。这些管理规则类似于内置的资源分配策略,但是在将其应用于资源分配策略中的一个资源分配时,将在该资源分配的所有匹配进程之间分配已分配的CPU。管理规则包括如下内容。

● 标准(默认值),Windows系统资源管理器不会尝试控制在匹配的进程之间分配已分配的CPU的方式。选择此管理规则时,可以使用附加的进程匹配条件向匹配的进程二次分配资源。例如,一个匹配的进程可能会使用所有已分配的CPU带宽。Windows系统资源管理器不会管理此带宽使用,所以可能会影响其他进程。

● 每进程相等,可用的CPU带宽在匹配的进程之间平均分配。选择此管理规则时,不允许进行二次分配。例如,如果两个匹配的进程使用已分配的CPU带宽的100%,Windows系统资源管理器将降低CPU利用率超过50%的进程的优先级。

● 每用户相等,每个用户运行的匹配进程组共享的可用CPU带宽相等。选择此管理规则时,不允许进行二次分配。例如,如果两个用户正在运行多个应用程序,这些应用程序使用已分配的CPU带宽的100%,Windows系统资源管理器将降低CPU利用率超过50%的用户所运行的进程的优先级。

● 每会话相等,在终端服务器上,每个终端服务会话中运行的匹配进程共享可用CPU带宽相等。选择此管理规则时,不允许进行二次分配。例如,如果连接到终端服务器的两个用户使用已分配的CPU带宽的100%,Windows系统资源管理器将降低CPU利用率超过50%的终端服务器会话中运行的进程的优先级。

● 二次分配,CPU百分比目标分配可以进一步分为二次分配。二次分配按父级资源分配所分配资源的百分比计算所分配的资源。此二次分配匹配的进程匹配条件与父级资源分配不同。

● 处理器关联,除了指定CPU目标百分比之外,匹配的进程还可以与多处理器系统上的特定处理器关联。此方法可以有效地在少量进程匹配条件之间分配服务器的资源。

5.1.5 内存管理

Windows系统资源管理器中支持内存资源分配管理,用于限制进程使用的工作集内存量或提交内存量。内存限制按进程应用,例如如果创建一个资源分配策略,将工作集限制指定为10 MB,并将其应用于与6个正在运行的进程匹配的进程匹配条件,10 MB的限制将分别应用于全部6个进程。

工作集内存限制,可以为匹配进程的工作集设置最高值。Windows系统资源管理器禁止匹配进程的工作集超过在资源分配中定义的限制。如果达到限制,后续的内存分配不会失败,但是将替换工作集中的现有页面。

提交内存限制,可以为进程使用的提交内存设置上限。如果进程使用的提交内存持续增大,则是由于进程中的内存泄漏所致。在为进程使用的提交内存量设置限制时,如果发生内存泄漏,可以人工干预。达到限制后,Windows系统资源管理器可以将事件记入事件日志,终止进程,或重新启动进程。

提·示

不要使用Windows系统资源管理器中的内存限制,来管理动态修改自己的内存限制的应用程序或进程。这样可能会影响Windows系统资源管理器以及所管理的应用程序的正常运行。最佳做法是使用CPU目标来管理资源。有选择地将内存限制应用于出现内存耗尽问题的应用程序。如果过度地限制应用程序可以使用的内存,可能会延长应用程序完成任务的时间,并且可能会提高磁盘利用率。