高吞吐量情境下可以考虑进行调整的TCP参数表:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\
Services\Tcpip \Parameters\TcpWindowSize (REG_DWORD)
该值决定了在任何一个给定的时间,能够在网络上传送的最大数据量(以字节计)。可以使用如下注册表条目,将其设置为从1到65,535 字节的任何值
对于gigabit接口,此参数的默认值被设置为65,535左右(向下舍入为最接近的完整TCP数据包的倍数),100Mbps的连接设置为 16,384,其他速度更低的接口(例如调制解调器)则设置为8,192 —— 同样需要向下舍入。理想情况下,该值应该被设置为端到端网络带宽(以字节为单位)与往返延迟(以秒为单位)的乘积,也就是带宽与延迟的乘积。该值应该根据计算机预计接收到的TCP数据量进行设置。
HKEY_LOCAL_MACHINE\System\CurrentControlSet\
Services\Tcpip\Parameters\Tcp1323Opts (REG_DWORD)
在带宽与延迟的乘积值很高的连接上(例如,卫星连接),可能需要将窗口的大小增加到64K以上。为了提高窗口大小,需要按照RFC1323中的规定,设置如下注册表条目,以启用TCP选项
为了使用大于65,535的窗口尺寸,该注册表条目应该被设置为1。在修改了该值之后,便可以将用来控制TCPWindowSize的注册表条目设置为大于64K的值(最大1GB)。
HKEY_LOCAL_MACHINE\System\CurrentControlSet\
Services\Tcpip \Parameters\MaxHashTableSize
(REG_DWORD)
该值决定了保存TCP连接状态的散列表的大小。默认值为128乘以系统中处理器数量的平方。如果预计系统需要处理大量的并发连接,可以将如下注册表条目设置为一个较高的数值,以提高散列表的性能
最大值为 0x10000(65,536)。我们建议您在将要处理大量连接负载的大型服务器上将此值设置为最大值。需要记住的是:该表使用了不分页的池,所以,如果服务器没有许多不分页池可用,或者服务器不需要处理大量连接负载,那么请不要将本参数设置为一个太高的数值。
HKEY_LOCAL_MACHINE\System\CurrentControlSet\
Services\Tcpip\Parameters\NumTcbTablePartitions (REG_DWORD)
默认情况下,存放TCP连接状态的表拥有的分区数量等于处理器数目的平方。在大多数情况下,该设置是恰当的,而且会减少表的争用现象。但是,对于处理器数目大于16的服务器,默认值显得过于高了,并可能会因此占用太多的CPU资源。在这种情况下,请将以下注册表条目设置为一个小于处理器数目平方的数值
HKEY_LOCAL_MACHINE\System\CurrentControlSet\
Services\Tcpip \Parameters\MaxUserPort(REG_DWORD)
当计算机上存在一个活动连接的时候,就会使用到端口。在给定了可用的用户模式端口(每个IP地址有5000个)的默认值和TCP超时等待要求之后,可能必须在系统中提供更多的端口以供使用。可以将如下注册表条目的值最大设置为 0xfffe(65534)
存储系统的性能调整 与存储有关的参数
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Session Manager\I/O System\CountOperations(REG_DWORD)
本参数允许您关闭系统和进程级别的I/O计数器。该计数器会影响磁盘和网络I/O请求的系统和磁盘计数。除了网络接口、IP和TCP计数器之外,物理和逻辑磁盘计数器不受本参数的影响。由于对进程和系统级别的I/O进行计数会产生可观的开销,而且系统仍然会分析物理、逻辑、网络接口、IP和TCP级别的I /O速率,因此在系统上使用此注册表参数关闭进程和系统计数器就非常有用。为了关闭进程和系统I/O计数器,需要在以下注册表条目中创建一个注册表值—— 以及I/O系统键(如果不存在)——并且将其值设置为0(REG_DWORD)
为了使本设置生效,需要重新启动计算机。可以将CountOperations设置为1,或者删除CountOperations注册表条目,以重新开启进程和系统计数器。
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\MINIPORT_ADAPTER\Parameters
\DeviceN\NumberOfRequests (REG_DWORD)
本参数允许您指定为某块给定适配器创建的SRB的数量。它能够提高性能,并且让Windows向逻辑磁盘发出更多的磁盘请求,这对于拥有并发能力的HW RAID 适配器来说尤其有用,因为每一个逻辑磁盘都由多块物理磁盘组成。但是,默认设置对于许多高速的HW RAID磁盘阵列来说通常不是最佳的设置。 可以将NumberOfRequests设置为32到96(十进制)之间的一个数值,改善磁盘阵列的整体性能。可以设置以下注册表条目
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\lp6nds35\Parameters\Device0\NumberOfRequests
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\lp6nds35\Parameters\Device1\NumberOfRequests
用具体的适配器名称替换miniport_adapter。为每个设备建立一个条目,并且在每个条目中用Device1、Device2…替换 DeviceN ,具体情况视添加的设备数量而定。为了让设置生效,需要重新启动计算机。例如,如果两块Emulex LP9000 微型端口适配器的微型端口驱动程序名称为lp6nds35,可以创建如上注册表条目,并将它的值设置为96
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Session Manager\Memory Management\DontVerifyRandomDrivers(REG_DWORD)
本参数会阻止驱动程序验证程序处于调试的目的随机校验驱动程序。为了禁用驱动程序校验程序,可以将以下注册表条目的值设为1
内核模式的调整
与性能有关的Http.sys设置可以划分为两类:缓存管理以及连接和请求管理。所有的注册表设置都保存在以下条目中:HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Http\Parameters 如果HTTP服务正在运行,必须首先停止服务,然后重新启动计算机,以便让设置生效。
缓存管理设置
一些有用的Http.sys内核模式缓存设置:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Http\Parameters· UriEnableCache.默认值:1。设为非零值可以启用内核模式响应和分段缓存。对于大多数工作负载,缓存都应该保持启用。如果希望获得超低响应和较低的缓存利用率,那么请考虑禁用缓存。
· UriMaxCacheMegabyteCount. 默认值:0。设为非零值可以指定内核缓存可以使用的最大内存数量。默认值为0,允许系统自动调节缓存能够使用的内存数量。注意:只能设置可以使用的最大内存数量,而且系统可能不允许缓存增长到指定的大小。
· UriMaxUriBytes. 默认值:262144 字节(256 KB)。本参数设定了内核缓存中每个条目的最大长度。大于这个长度的响应或分段都不会被缓存。如果有足够的资金,可以考虑增加此参数的值。如果资金有限,而且大型的条目会挤掉较小的条目,那么可以将本参数设为更小的值。
· UriScavengerPeriod. 默认值:120秒。一个“清道夫”程序会定期扫描Http.sys缓存,在两次扫描期间没有被访问过的条目将被删除。可以将扫描周期设置为一个较高的值,以减少扫描次数。但是,如果访问频率低的老条目仍然保留在缓存中,缓存占用的内存将不断增加。如果将此期限设置得过低,扫描频率会过于频繁,而且可能导致缓存的过度清洗和扰动。
请求和连接管理设置
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Http\Parameters· MaxConnections。本设置用来控制Http.sys所允许的并发连接的数量。每一个连接都会耗用非分页池(一种宝贵和有限的资源)。默认值的设置相当保守,以限制连接占用的非分页池数量。对于配备了充足内存的专用Web服务器,如果预计会产生大量的并发连接,可以将此值设置得更高一些。此值设置得越大,占用的非分页池就越多,所以要务必小心,应该使用一个与系统配置相适应的正确数值。
· IdleConnectionsHighMark、IdleConnectionsLowMark和IdleListTrimmerPeriod. 这些值用来控制对非并行使用的连接结构的处理:在某个时间必须提供多少可用的连接(用于处理连接负载的波动)、释放列表的上下界限、以及连接结构剪切和补充的频率等。
· RequestBufferLookasideDepth 和 InternalRequestLookasideDepth 这些值控制与缓冲区管理有关的数据结构的处理工作,以及应该完成多少储备以应付负载波动情况。
用户模式设置
IIS 注册表设置
以下注册表设置可以在下面的条目下找到:
HKLM\System\CurrentControlSet\Services\Inetinfo\Parameters\
· MaxCachedFileSize(REG_DWORD),以字节为单位。决定了能够被缓存的文件大小(默认为256 KB)。实际值根据数据表中最大文件的数量和大小以及可用的RAM数量而定。对频繁访问的大型文件进行缓存可以降低CPU使用率,减少磁盘访问以及相关的延迟时间。
· MemCacheSize(REG_DWORD),以MB为单位。将IIS用户模式缓存限制为指定的大小(默认设置为根据可用内存的数量由IIS调整缓存的大小)。根据“热门”文件集合(频繁访问文件的集合)的大小以及RAM数量或者IIS进程地址空间(正常情况下应该在2GB以下),需要认真选择本参数的值。
· DisableMemoryCache(REG_DWORD)。如果设置为1(默认为0),则禁用用户模式的IIS缓存。在缓存命中率非常小的时候,可以完全禁用缓存,以避免与缓存代码路径有关的开销。
· MaxPoolThreads(REG_DWORD)。设置每个处理器能创建的池线程的最大数量(默认为4,范围不限。)每一个池线程都观察网络请求,然后处理它们。MaxPoolThreads 计数没有包括当前处理ISAPI应用程序的线程。如果CPU的平均使用率没有处于最佳状态,应该增加本参数的值,因为现有的所有线程都为繁忙状态,没有用于处理新请求的可用线程。
· PoolThreadLimit(REG_DWORD)。设置系统能创建的池线程的最大数量(默认值为处理器数量的4倍,范围不限)。PoolThreadLimit 必须大于或等于MaxPoolThreads。正常情况下,PoolThreadLimit = MaxPoolThreads ´ 处理器数量。仅仅设置其中的一个参数是不够的。如果同时指定了MaxPoolThreads 和PoolThreadLimit参数,则可以施加更严格的限制。
· ObjectCacheTTL(REG_DWORD),以秒为单位。控制没有被访问过的对象在IIS用户模式缓存中停留的时间长度(默认值为30秒,如设置为0xFFFFFFFF则禁用对象缓存清道夫线程)。如果系统配备了足够的内存,而且提交的内容不经常变化,那么可以增加本参数的值。如果系统内存不足而且用户模式缓存的大小在不断增长,则应该降低本参数。请参阅本节下面的 ActivityPeriod 部分。
· ActivityPeriod(REG_DWORD),以秒为单位。只有当文件在活动期限(默认为10秒钟,如果设为0则禁用本选项)内被重复命中,才允许缓存文件。本参数会降低由于缓存不经常访问的文件而引起的缓存开销,如果缓存内容变化不大,而且没有足够的可用内存,那么可以增加活动期限的值;或者,如果缓存上存在大量请求负载,可以降低活动期限的值。
· DataSetCacheSize(REG_DWORD)默认值为50。设置配置数据库数据集缓存中虚拟目录条目的最大数量。如果已经安装的虚拟目录的数量超过了默认值,可以增加本参数的值。在提交静态内容的时候,一个容量不足的数据集缓存会增加延迟时间(更低的吞吐量和更低的CPU使用率)。
IIS Metabase
以下设置可以在 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC下找到。
· AspMaxDiskTemplateCacheFiles。启用ASP脚本模板的磁盘缓存。ASP模板的编译是一件非常耗费处理器资源的工作。内存大小限制了可以缓存在内存中的模板的数量。从磁盘上的模板缓存中取回编译后的模板所需的开销比编译ASP内存缓存中没有的模板要小。请参见下文中的 AspScriptEngineCacheMax 一节。
· AspDiskTemplateCacheDirectory。如果可能,可以将其设置为不频繁使用的磁盘(例如,没有和操作系统、分页文件、IIS日志或者其他频繁访问的内容共享的磁盘)。默认目录是 “%windir%\system32\inetsrv\Template Disk cache\ASP Compiled Templates”。
· AspScriptEngineCacheMax。将其设置为内存容量所允许的最大的脚本引擎数(默认为125)。
· AspScriptFileCacheSize。设置为内存容量所允许的最大的ASP模板数量(默认250)。请参阅前文中的AspMaxDiskTemplateCacheFiles一节。
· AspExecuteInMTA。如果在交付某些ASP内容时希望对出现的错误或故障进行检测,请将本参数设置为1(启用)。例如,如果需要托管多个站点,而且每个站点都运行在它自己的工作进程之下,那么便可以启用本参数。错误一般可以在事件查看器中的COM+部分中看到。本设置启用了ASP中的多线程单元模型(默认值为0,表示禁用)。
· AspProcessorThreadMax。如果当前设置(默认为25)不足以满足负载的需求(可能会导致某些请求出现错误),可以增加本参数的值。
· CentralBinaryLoggingEnabled。通过将本参数设置为TRUE,可以启用集中的二进制日志记录。二进制IIS日志记录可以减少对CPU的使用,降低占用的磁盘空间以及减少磁盘I/O操作。集中的二进制日志可以被导向一个二进制文件,而无论托管站点的数量如何。分析二进制格式的日志需要一个后处理工具。
NTFS 文件系统设置
HKLM\System\CurrentControlSet\Control\FileSystem\NtfsDisableLastAccessUpdate(dword)
通过禁止更新最后一次访问的文件或目录的日期和时间戳记,这个针对整个系统的开关参数会降低磁盘I/O负载和缩短延迟。默认情况下本键不存在,因此需要额外添加。如果操作包含数千个目录的大型数据集(或者大量主机),禁用更新的效果十分明显。如果只需要保留信息Web供Web管理使用,我们建议用户使用IIS日志代替它。
警告:某些应用程序(例如增量备份工具)需要使用这些更新信息,如果没有这些信息,它们将无法正常工作。
文件服务器性能调整
文件服务器的常规调整参数
HKLM\System\CurrentControlSet\Control\SessionManager\MemoryManagement\PagedPoolSize(dword)
文件缓存空间和分页池空间共享系统虚拟地址中的一个公共区域。限制分页池可以得到更大的系统缓存,从而能够缓存更多的内容,实现更快的文件服务性能。
HKLM\System\CurrentControlSet\Control\FileSystem\NtfsDisable8dot3NameCreation(dword)
默认值为 0。该参数用于确定 NTFS 是否为长文件名以及包含来自扩展字符集的文件名生成符合 8.3(DOS)命名协定的短文件名。如果该注册表项的值为 0,那么文件潜在可以有两个名称:用户指定的名称和 NTFS 生成的短名称。若用户指定的名称符合 8.3 命名协定,NTFS 则不再生成短名称。
修改该值不会更改文件的内容,但可以避免对文件创建短名称属性,并能更改 NTFS 显示和管理文件的方式。
HKLM\System\CurrentControlSet\Control\FileSystem\Disablelastaccess(dword)
默认不创建该注册表项。
如果您有一个 NTFS 卷包含大量文件夹或文件,而且有一个程序依次对它们进行访问,那么用于生成Last Access Time(最后一次访问时间)更新的 I/O 带宽会占用 I/O 总带宽的很大比例。如要提高对文件夹或文件的访问速度,您可以将 disablelastaccess 设置为禁止更新 Last Access Time(最后一次访问时间)。在您使用了该命令并重新启动计算机之后,Last Access Time 将不再得到更新。如果您创建一个新文件,Last Access Time 则与 File Creation Time(文件创建时间)保持一致。
HKLM\system\CurrentControlSet\Services\Tcpip\Parameters\NumTcbTablePartitions(dword)
默认创建该键。
该参数控制 TCB 表的分区数量。可以对 TCB 表进行分区,减少对其的争用,从而提高多处理器系统的可伸缩性。
HKLM\system\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\TcpAckFrequency(dword)
注意:TcpAckFrequency 只能应用于 Windows Server 2003。 TcpAckFrequency 的推荐设置介于 TcpWindowSize 的值的三分之一和二分之一之间。
对于千兆网卡
对每个千兆网络适配器添加
对每个千兆网络适配器添加:
TcpAckFrequency (REG_DWORD) = 13(十进制)
注册表默认不包含该项。如果仅确认数据而不是针对所有的控制数据包,那么每 13 个数据包仅确认一次,而不是默认的两次。这样,在从客户端向服务器执行大量写入(上载)操作时,有助于降低网络堆栈(Network Stack)的数据包处理开销。
对于 FastEthernet 网卡
对每个 FastEthernet 网络适配器添加:
TcpAckFrequency (REG_DWORD) = 5(十进制)
注册表默认不包含该项。如果仅确认数据而不是针对所有的控制数据包,那么每 5 个数据包仅确认一次,而不是默认的两次。这样,在从客户端向服务器执行大量写入(上载)操作时,有助于降低网络堆栈(Network Stack)的数据包处理开销。
客户端计算机的常规调整参数
HKLM\system\CurrentControlSet\Services\lanmanworkstation\parameters\DormantFileLimit(dword)
默认不创建该注册表键。(仅针对 Windows XP 客户端计算机。)
指定在应用程序关闭文件后可以通过共享打开的最大文件数。
HKLM\system\CurrentControlSet\Services\lanmanworkstation\parameters\ScavengerTimeLimit(dword)
Windows XP client computers only.
重定向器在开始清除休眠文件句柄(当前无法被任何应用程序所用的已缓存的文件句柄)之前所等待的时间(秒)。
HKLM\System\CurrentControlSet\Services\LanmanWorkStation\Parameters\DisableByteRangeLockingOnReadOnlyFiles(dword)
仅针对 Windows XP 客户端计算机。
一些分布式应用程序会在对各个客户端进行同步时锁定某个只读文件的部分内容,它们要求关闭所有只读文件的文件句柄缓存和折叠(collapsing)功能。如果不在系统上运行这类应用程序,并且在客户端计算机上启用了折叠功能,那么就可以设定该参数。
HKLM\system\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\TcpAckFrequency
注意:TcpAckFrequency 只能应用于 Windows XP 客户端。TcpAckFrequency的推荐设置介于 TcpWindowSize 的值的三分之一和二分之一之间。
对于Gigabit网卡
对Gigabit适配器添加:
TcpAckFrequency (REG_DWORD) = 13(十进制)
注册表默认不包含该项。
如果仅确认数据而不是针对所有的控制数据包,那么每 13 个数据包仅确认一次,而不是默认的两次。这样,在从客户端向服务器执行大量写入(上载)操作时,有助于降低网络堆栈(Network Stack)的数据包处理开销。
对于 FastEthernet 网卡
对每个 FastEthernet 适配器添加:
TcpAckFrequency (REG_DWORD) = 5(十进制)
注册表默认不包含该项。如果仅确认数据而不是针对所有的控制数据包,那么每 5 个数据包仅确认一次,而不是默认的两次。这样,在从客户端向服务器执行大量写入(上载)操作时,有助于降低网络堆栈(Network Stack)的数据包处理开销 。
Active Directory的性能调整
大型 Active Directory® 环境只有少数几个特殊的调整要求。
关闭签名和密封功能
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ldap\ldapclientintegrity(dword)0x0
运行附带Service Pack 1(SP1)的 Windows XP 或更高版本的客户端计算机以及运行 Windows Server 2003 的服务器具备签名和密封功能以实现更高的安全性,而且这些功能在默认情况下为启用状态。默认状态下,Windows 2000 客户端并未启用签名和密封功能,但是安装了Service Pack 3(SP3)的 Windows 2000 提供了一个选项来启用该功能。具有安全网络的生产环境不需要启用该设置。Windows Server 2003 操作系统家族提供了一个用于禁用签名和密封功能的选项。
针对 Web 工作负载执行基准测试(WebBench)
高端服务器设置
IIS 设置
· 注册表(位于:HKLM\System\CurrentControlSet/Services\Inetinfo\Parameters\)
· MaxCachedFileSize (REG_DWORD) 1048576
· IIS Metabase(位于:W3SVC/)
· 通过设定 CentralBinaryLoggingEnabled = TRUE,启用集中记录的二进制日志文件
· SSL 调整参数:键容量为 1024 字节。如要进行富有挑战性的基准测试,可对所有服务器使用相同的键容量。
Http.sys 设置
· 注册表(位于:HKLM\System\CurrentControlSet/Services\HTTP\Parameters\)
UriMaxUriBytes (REG_DWORD) 1048576 (最大的文件)。
NTFS 文件系统设置
· 注册表(位于:HKLM\System\CurrentControlSet\Control\FileSystem\)
NtfsDisableLastAccessUpdate (REG_DWORD) 1
针对 IIS 的 TCPIP.SYS 性能设置
· 注册表(位于:HKLM\System\CurrentControlSet\Services\tcpip\parameters\)
MaxHashTableSize (REG_DWORD) 0xffff
请参见本文前面的“网络性能调整”一节。
针对 IIS 的网络适配器调整与绑定
· 每个网络适配器均绑定一颗 CPU。
请参见本文前面的“网络性能调整”一节。
低端服务器设置
IIS 设置
· 注册表(位于:HKLM\System\CurrentControlSet/Services\Inetinfo\Parameters\)
MaxCachedFileSize (REG_DWORD) 1048576
MemCacheSize (REG_DWORD) 10
· IIS Metabase(位于:W3SVC/)
通过设定 CentralBinaryLoggingEnabled = TRUE,使用集中保存的二进制日志文件
Http.sys 设置
· 注册表(位于:HKLM\System\CurrentControlSet\Services\http\parameters\)
UriMaxUriBytes (REG_DWORD) 1048576
RequestBufferLookasideDepth (REG_DWORD) 256
InternalRequestLookasideDepth (REG_DWORD) 256
LargeMemMegabytes (REG_DWORD) 150
NTFS 文件系统设置
· 注册表(位于:HKLM\System\CurrentControlSet\Control\FileSystem\)
NtfsDisableLastAccessUpdate (REG_DWORD) 1
客户端计算机调整参数
我的计算机性能设置
· 针对程序优化处理器调度
· 针对程序优化内存应用
针对 IIS 的 TCPIP.SYS 性能设置
· 注册表(位于:HKLM\System\CurrentControlSet\Services\tcpip\parameters\)
MaxUserPort (REG_DWORD) 0xfffe
MaxHashTableSize (REG_DWORD) 0xffff
TcpWindowSize (REG_DWORD) 65536(在配备 100 BaseT Ethernet 网络适配器的客户端上修改注册表)
请参见本文前面的“网络性能调整”一节。
针对文件服务器工作负载执行基准测试(NetBench)
Windows Server 2003面向 NetBench 的注册表调整参数
HKLM\System\CurrentControlSet\Control\SessionManager\
MemoryManagement\
PagedPoolSize = 192000000(十进制)(默认为0)
HKLM\System\CurrentControlSet\Control\FileSystem\
NtfsDisable8dot3NameCreation = 1(默认为0)
添加:Disablelastaccess = 1
默认不创建该注册表键。
HKLM\System\CurrentControlSet\Services\Tcpip\Parameters\
添加:NumTcbTablePartitions = 8
默认不创建该注册表键。
HKLM\System\CurrentControlSet\Services\Tcpip\Parameters\
Interfaces\
对每个Gigabit网络适配器添加:TcpAckFrequency (REG_DWORD) = 13(十进制) 。
默认不创建该注册表键。对于 FastEthernet 适配器,将该参数为 5。
客户端计算机针对 NetBench 的注册表调整参数
HKLM\System\CurrentControlSet\
Services\LanmanWorkStation\
Parameters\
DisableByteRangeLockingOnReadOnlyFiles = 1;
针对 Windows XP 客户端计算机
HKLM\system\CurrentControlSet\
Services\Tcpip\Parameters\
Interfaces\
对每个Gigabit网络适配器添加:
TcpAckFrequency = 13(十进制)。
默认为不创建该注册表键。对于 FastEthernet 适配器,将该参数设为 5。
HKLM\system\CurrentControlSet\
Services\lanmanworkstation\
parameters\
添加 DormantFileLimit = 100(十进制)。
默认不创建该注册表键;针对 Windows XP 客户端计算机。
HKLM\System\CurrentControlSet
\Services\lanmanworkstation\
parameters\
ScavengerTimeLimit = 100(十进制);针对 Windows XP 客户端计算机。
针对Active Directory工作负载执行基准测试(DirectoryMark)
下列调整对于执行DirectoryMark 工作负载基准测试很有帮助。最好从一台强大的客户机上执行对大型服务器的 DirectoryMark 测试。这样,操作人员可以启动大量线程,同时还能接收中央数据报告。该设置需要一块Gigabit网络适配器以及性能大致相当的客户机和服务器,同时服务器至少拥有 2 GB 的内存。
添加针对描述属性的索引(服务器)
使用架构编辑器添加一个针对描述属性的索引,后者用于DirectoryMark Addressing 和 Messaging Search Mixes。
关闭磁盘碎片自动整理程序
在服务器启动 15 分钟后,磁盘碎片自动整理程序(Auto Defragmenter)随即启动。该程序将运行一个小时,以后每12个小时重新启动一次。基准测试要求测试结果可重复,因此建议关闭磁盘碎片自动整理程序,以便避免对正在运行的基准测试造成任何可能的干扰。如果已启用磁盘碎片自动整理程序,那么可以在事件日志中查看磁盘碎片整理程序的运行情况。
下方注册表参数用于关闭磁盘碎片自动整理程序:
HKLM\SYSTEM\CurrentControlSet\Services\NTDS\Parameters\DSA Heuristics = REG_SZ 000001
在 TCP/IP 增加 MaxUserPorts 和 TcpWindowSize
频繁使用 LDAP 绑定需要广泛运用动态端口。在服务器和客户端计算机上,需要通过 TCP 保持这些端口开启几分钟,因此需要超出实际用量的可用 MaxUserPorts 端口。
可以调整下列注册表参数:
HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\MaxUserPort = REG_DWORD 0xfffe
HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\TcpWindowSize = REG_DWORD 0xffff
针对网络工作负载执行基准测试(Ttcp、Chariot)
针对 NTttcp 的调整
NTttcp 是一个面向 Windows 和基于 Winsock 的 ttcp 端口,用于协助测量网络驱动程序在不同网络拓扑结构和硬件设置上的性能和吞吐量。NTttcp 向用户提供一个多线程的异步性能基准测试程序,可用来测量在现有网络设置上可取得的数据传输率。
选项:
· 单一线程应该能够提供最佳吞吐量。
· 仅在出现许多个客户端时,需要多个线程。
· 发布充足的用户接收缓冲区(使用“-a”选项),减少 TCP 复制。
· 不应该发布过多的用户接收缓冲区,因为在您需要使用其它缓冲区前,首批已发布的缓冲区将返回给您。
· 最好是将每组线程绑定给一个处理器(“-m”选项中的第二个分隔参数)。
· 每个线程均创建一个连接(监听)不同端口的套接字。
表 15. 针对 NTttcp 发送器和接收器的示范语法
语法 | 详细说明 |
针对发送器的示范语法 NTttcps –m 1,0,10.1.2.3 –a 2 | · 单线程 · 绑定于CPU 0 · 连接到 IP 地址为 10.1.2.3 的计算机 · 发布两个重叠的发送缓冲区 · 默认的缓冲区容量:64 KB · 默认的缓冲量:20 KB |
针对接收器的示范语法 NTttcpr –m 1,0,10.1.2.3 –a 6 –t 1000 | · 单线程 · 绑定于CPU 0 · 连接到 IP 地址为 10.1.2.3 的计算机 · 发布两个重叠的发送缓冲区 · 默认的缓冲区容量:64 KB · 默认的缓冲量:20 KB |
网络适配器
确认您已启用了所有卸载特性。
TCP
只有带宽-延迟乘积较大时,才可以针对Gigabit Ethernet(64 KB)为 TcpWindowSize 设定高于默认值的数值。
例如,在局域网上使用 Intel MT Gigabit 网卡时,可以针对 NTttcp 保留所有网络适配器和 TCP 设置的默认值。
· Intel MT 网络适配器默认卸载 LSO 及校验和(同时针对接收和发送)。
· Intel MT 网络适配器自行管理其资源,不需要您更改任何网络适配器资源值。
· 未应用Coalesce Buffers(合并缓冲区),但默认的中断调解模式运转良好。
针对Chariot 的调整
Chariot 是 NetIQ 的一个网络工作负载生成器,通过向网络施加负载来帮助用户预测网络应用程序的性能。
Chariot 的 High_Performance_Throughput 脚本工作负载可用来模拟 NTttcp 工作负载。有关该工作负载的调整考虑事项与 NTttcp 相同。