透析服务器基准测试方法与误区


  内存的分配与设置
  
  给某个应用程序分配太多的内存实际上会影响服务器正在运行的进程的性能。事实上,错误的内存利用率可能会导致系统性能的下降。
  
  在使用PerfMon进行服务器基准测试之前,我们将介绍几个技巧来检测服务器的内存使用情况,以确保内存分配不会影响服务器性能。
  
  Memory:AvailableBytes-这个功能检测操作系统(OS)的物理内存总量,并计算服务器上运行所有必须进程和应用程序所需的内存。
  
  Memory:CommittedBytes-追踪运行时的峰值并进行对比。使用这个功能可监测运行波峰和波谷的情况以了解服务器的性能。除了运行进程和程序所需的内存外,你至少得保证4MB或5%以上的可用内存。
  
  Memory:PageFaults/sec--这个功能测量当应用程序试图从本地虚拟内存中读取时发生“不存在”的页面错误。在理论情况下,零是最优的测量数据。任何测量数据都不可能达到零延迟响应时间。注意,Memory:PageFaults/sec这个功能不但记录硬页面错误,还会记录软页面错误。当文件从硬盘读取而非虚拟内存中读取时就会发生硬页面错误。另一方面,物理内存已存在的页面错误终止了进程就会发生软页面错误,但其几乎不会对性能产生影响。
  
  注意处理器数量,尤其是试图取得每个处理器的最大线程时。注意“环境切换”发生的次数。
  
  当操作系统(OS)的内核或核心把处理程序从一个线程切换到另一个线程时,就会发生“环境切换”。环境切换应当及时避免,因为每次环境切换都是处理器L1和L2缓存被刷新并重新写入。缓存刷新和再次写入需要宝贵的时间,并降低系统的性能。
  
  Process:ThreadCount:Inetinfo--统计Inetinfo运行创建的线程数,并显示最新值。
  
  Thread:%ProcessorTime:Inetinfo=>Thread#--测量Inetinfo进程中每个线程使用的处理器时间。
  
  Thread:ContextSwitches:sec:Inetinfo=>Thread#--测量每个处理器或线程池的最大线程数。监测这个参数很重要,其可预防产生大量的环境切换。否则,环境切换会占用内存并失去多线程的优势,而此时的性能将降低而非提高。
  
  测量并分析
  
  遗憾的是,关于服务器和处理器测量方面的内容实在太宽泛了,以致在本文中无法一一分析。但是,在大多数情况下,系统性能和指标测试可分为一下几个类型:
  
  内存管理
  网络能力
  处理器能力
  磁盘优化
  
  通过以上的分类,测试工程师能够得到一些可靠的基准测试结果,并利用其以更好地提高整体服务器环境。