感觉计算机速度很慢吗?是低端内存使速度慢下来的吗?低端内存几乎使你的服务器逐渐变慢直至停机并会引起硬盘驱动器分页过多,发出如同hip-hop音乐会上的流行乐主持人的声音。由于硬盘和物理内存或RAM交换虚拟内存,不断地从一块内存到另一块内存进行读写。当驱动器要同时执行规定的活动时,这就会导致主要的冲突。有多种可用的选项来决定怎样准备、寻找和处理这个问题并要防止出现存取瓶颈。在这个Daily Drill Down中,会向你展示怎样管理NT服务器的虚拟内存以获得最大性能。

图2.2.A CPU Usage和MEM Usage计数器提供了内存活动的即时情况
2.2.1 什么是分页?
无论你的NT服务器的内存有多大,它总是显得不够充足。当物理RAM从低端开始运行时,Windows
NT使用了分页文件Pagefile.sys。为了运行不同的进程和应用程序,Pagefile.sys给物理内存分配了一些空间。在这些空间内允许交换数据页。
显然,系统在文件系统缓存中查找数据而不是在驱动器上搜索数据会提高系统的性能。太多的搜索操作会使处理器停顿下来。这就是短语“买更多的内存”成为计算机时代的陈词滥调的原因之一:RAM是你的朋友。管理内存可使你的“朋友”更高效。
Windows NT下的Windows Task Manager ([Ctrl][Alt][Delete] | Task Manager)是一个可以为访问内存使用情况提供快捷重要信息的察看工具。考虑物理内存的大小并计算MEM Usage计数器的值,Memory Usage History提供了内存活动的即时情况。正如图2.2.A所示,把CPU Usage计数器和CPU Usage History与MEM Usage计数器一作比较,就可以简单地得到性能的总的评价。如果你必须决定是否要立刻启动
Diskperf以进一步调查分页过多问题那就非常便利了。
Windows NT的分页文件可以通过Control Panel |System | Performance 标签| Virtual Memory进行管理。在这里,你可以控制分页文件的几个设置(包括大小和区域)。显然,你可以允许系统对它进行处理,但是为了获得最佳配置还是使用Vitual Memory
Manager (VMM)为好。
2.2.2 Windows NT分页文件的基本原则
Windows NT最初通过在物理RAM的数量上加上12MB以设定开始的分页文件大小。这12MB考虑到在系统故障时分页文件内容可被倾倒到一个日志中以防万一。如果看见了“停止”框和接着出现蓝屏死机,你就在操作中遇上了这个问题。如果开始的分页文件的大小小于这个数(物理RAM的数量上加上12MB),就会开始收到Running Out Of Memory消息。
Windows NT操作系统和其应用程序使用了大约10MB的RAM。所以,应该从物理RAM的数量上减去这个值。这会给你充分的回旋余地决定你的服务器的内存要求。
Windows NT要求分页文件的最小值为2MB。如果分页文件太小或者根本不存在,启动时就会出现警告消息。
分页文件应该总是遵循RAM的最小值+12的规则。在任何情况下,分页文件都不能比服务器中的RAM的大小小。如果系统有32 MB的物理RAM,加上12MB后分页文件总的大小就是44MB。显然,分页文件越大于好。但是,我的意思是增加对物理RAM的投资,而不是简单地增加分页文件的大小。如果没有足够的RAM,驱动器就会花太多的时间对分页文件进行读写。这只会降低你的服务器的速度,如果你不得不重启服务器来清除I/O请求,甚至会导致服务器不能工作。而如果因为这个原因需要重启机器,那么可能就会有第二次。
默认的12MB RAM足以在必要时把分页文件的内容清除。小的分页文件限制了可以存储的内容并且可能耗完为应用程序保留的虚拟内存。如果RAM不足,就会有更多的分页,这反过来为驱动器增加了额外的负担,从而降低了系统的响应速度。在这样的情况下,Windows NT要求分页文件的最小值等于除了系统启动时1MB虚拟内存之外的物理RAM的大小,以便能够把调试信息写到一个文件上。
如前所述,分页文件的最大值和最小值在Virtual Memory对话框中指定。根据应用程序,分页文件会增大和缩小。当系统运行着时,不能压缩或维护分页文件。但是,使用各种第三方软件包如Diskeeper可对分页文件进行维护。
2.2.3 优化分页文件
关于在二进制处理能力不强的机器上维护分页文件,你首先要记住的是把分页文件保存在不同的驱动器上,而不要把它保存在保存Windows NT系统文件的地方。这会使每个文件的读写都相互独立。另一方面,启动盘上的小分页文件给系统留出了一些空间以处理各种日志文件、系统事件和改变(例如任务)。为了保持系统性能最优,分页文件可以完全不保存在系统驱动器上。多个分页文件也可以被保存,但人们更倾向于为每个驱动器配置分页文件,并且应用程序可以随意使用它们。
分页文件越大,占用的磁盘空间越多。因此,I/O读写就会抢占处理器宝贵的处理时间。当服务器中有RAID阵列(尤其是RAID1)时,这就可能成为了一个主要问题。在下一篇文章会讲到,RAID1镜像或者备份系统的驱动器。这种复制包含了与分页文件进行通信所必要的读写操作。装有RAID1的服务器处理分页文件所做的工作是没有RAID1的服务器的两倍。
另一个好的想法是保持任何选定的驱动器的分页文件以下两个值相等:初始大小(MB)和最大大小(MB)。保持这个组有相同的值可以使分页文件的增大不会失控。
2.2.4 通过Performance Monitor对内存的监控
如果你经历过内存使用的问题(例如,应用程序正慢慢消耗着你的内存),增加分页文件的大小可以提高系统的性能。
当为某台特定的服务器规划分页文件总的大小时,Performance
Monitor计数器开始处理:分页文件字节(Page File Bytes)提供了有关正在使用的分页文件的数量的信息。当要增加RAM或增加文页文件的大小时就有了一个起始点。很明显,考虑服务器现在的内存配置情况有助于生成一个基线。根据这个基线,通过确定网络服务器使用高峰期、平时和低谷期的情况,扩大基线量值来生成服务器内存需求的完整图形。
2.2.5 过度分页
如果驱动器分页过多,那么很可能是出现物理RAM不足的情况下。通过分析Performance Monitor
counter Memory:Page Reads/sec,可以决定修复分页错误所必要的磁盘读操作的数量。通过计算页错误引起的磁盘读操作的次数,可以确定每次读操作修复了多少页。多于错误需要的读操作也表明物理内存不足,就像虚拟内存中驱动器页溢出一样。
Performance Monitor中需要考查的另一个计数器是LogicalDisk: Disk
Reads/sec。如果读操作次数多,分页的次数也多。同样,计数器Phyical Disk:Avg Disk Read Bytes/sec和LogicalDisk DiskPhyicalDiskAvg Disk Read Bytes/sec就会表明驱动器上的每字节数据的传送速度。要是这个速度相当高(它在数量上应该等于Memory:Page
Reads/sec),那就是由过度分页引起的。
记住,默认情况下Windows NT的磁盘计数器是不被激活的,因为它给磁盘增加了额外的负担。为了激活磁盘计数器,必须在命令行提示符后键入diskperf –y后重新启动服务器。要是又想关闭磁盘计数器,在命令行提示符后键入diskperf –n后再次重新启动服务器就行了。需要注意的其他计数器包括:Memory:Pages/sec、Memory:Page Reads/sec、Memory:Page Output/sec、Memory:Page Input/sec。如果这些计数器的值很大,那么就可知道服务器由于物理RAM不是同时可用而频繁存取硬盘驱动器。发生的大量的页错误也表明了这一点。
内存不足时,系统就会消减进程数强制性地维持平衡——Process(All_processes):Working Set计数器提供了有关正在使用内存而没有释放的进程的信息。如果没有足够的内存供所有进程使用,就会导致页错误,于是Windows NT就消减正在执行的进程的数量。这也可以引起分页错误。
为了保持这种平衡,VMM维持驱动器上的物理内存和虚拟内存的相等状态。如果内存不足以运行下去,处理器实际上就会“挂起”以等待硬盘驱动器完成I/O读写操作。
为了随时维护基线纪录,可以在平衡动作之前为内存的需求做好准备。警惕不要分页过度,这是很有必要的。显然,分页太多带来的是麻烦比好处多。
TechRepublic丛书的作者长期工作于技术领域的最前沿,他们最理解IT专业人员真正需要什么,并将这种理解在字里行间体现得无所不在。此套丛书内容翔实、行文流畅,能使读者在最短的时间里掌握该如何做和怎么做,让您在工作中所遇到的问题能够迎刃而解。目前,TechRepublic丛书已出版40余种,该网站拥有近三十万注册会员,每月独立访问者超过四百万人。
|
|