none
Windows 系统对CPU、内存的要求是多少? RRS feed

  • 问题

  • Windows 2008R2、Windows 2003R2系统一般内存和CPU使用占到百分之多少时表示系统性能已经不足了。有没有一些参考值可以查阅?

    harry

    2013年5月24日 6:09

答案

  • 有哪些微软的参考文档说明这些计数器的参考值吗?

    harry


    可以参考这两篇文章

    Detecting Processor Bottlenecks
    http://technet.microsoft.com/en-us/library/cc750967.aspx

    Detecting Memory Bottlenecks
    http://technet.microsoft.com/en-us/library/cc749872.aspx

    ------------------------------------------------------------------------------

    简单可以概括为:

    1. CPU

    System\Procssor Queue Length值,一般认为应该维持在2以下是可以接受的,1或0是说明完全无压力

    当然,这里我还得补充一下:假如你的饥渴线程数小于CPU Core数,或者说,你的应用是那种就是单线程吃在一Core上的(甚至是做了亲缘的),那么,在Procssor Queue Length值不高时,也是有可能表现为对外服务慢(因为你的单核频率不够高,满足不了那个线程的运算),并且,这是无法很直观地通过操作系统提供的性能数据来衡量CPU资源是否够用的(你顶多只能看到那个Core 100%全速运行),这时,需要你的应用程序自己来侦测这种对CPU频率上的饥渴。

    2. Memory

    首先要确定你的系统持续运行的过程中,本身有无进程频繁启动或使用Memory Mapped File(如Load Dll,Load数据资源等,也被视为PageIn),得到平稳时态(且物理内存未吃满)的PageIn和Out基准值后,再去观察将来物理内存吃满的情况下,是否有某些时刻会持续超出这个值。

    如果没有频繁的Memory Mapping,那么直接看Page In/Out频率即可,应该维持在趋紧于0,甚至就是0,只有物理内存不够用时,才会发生换页(把磁盘临时当内存用,并且经常换入换出)




    • 已编辑 Finy 2013年5月24日 7:35
    • 已标记为答案 Harry Shen 2013年5月27日 1:58
    2013年5月24日 7:07

全部回复

  • Windows 2008R2、Windows 2003R2系统一般内存和CPU使用占到百分之多少时表示系统性能已经不足了。有没有一些参考值可以查阅?

    harry

    首先,你得有个概念:一台机器,即使全部CPU 99%,物理内存99%,看着满负载工作,但只要你不给它新添加任务,那么它当前未必缺处理器资源或缺内存资源,也就是说,它可能刚好满足业务需求,运转地很好。所以,理论上,不能简单凭借任务管理器看到的CPU和内存用量而认为系统遇到了硬件瓶颈。

    最简单的考量CPU资源不足的方法是:观察是否有很多线程开始抢CPU(性能计数器的System\Procssor Queue Length的值),从抢占式多任务操作系统原理上讲,就是有线程Ready,等待被调度到Running,而Running的线程数,已经刚好占到每个CPU Core,这样CPU就忙个不停地在多个线程间切换,那么对于那些线程所服务的用户而言,就感觉有些等待了。

    最简单的考量物理内存资源不足的方法是:观察是否有Page In/Out(性能计数器Memory\Pages Input/sec和Memory\Pages Output/sec),这个就不必多解释原理了吧。


    • 已编辑 Finy 2013年5月24日 6:29
    2013年5月24日 6:27
  • 有哪些微软的参考文档说明这些计数器的参考值吗?

    harry

    2013年5月24日 6:32
  • 有哪些微软的参考文档说明这些计数器的参考值吗?

    harry


    可以参考这两篇文章

    Detecting Processor Bottlenecks
    http://technet.microsoft.com/en-us/library/cc750967.aspx

    Detecting Memory Bottlenecks
    http://technet.microsoft.com/en-us/library/cc749872.aspx

    ------------------------------------------------------------------------------

    简单可以概括为:

    1. CPU

    System\Procssor Queue Length值,一般认为应该维持在2以下是可以接受的,1或0是说明完全无压力

    当然,这里我还得补充一下:假如你的饥渴线程数小于CPU Core数,或者说,你的应用是那种就是单线程吃在一Core上的(甚至是做了亲缘的),那么,在Procssor Queue Length值不高时,也是有可能表现为对外服务慢(因为你的单核频率不够高,满足不了那个线程的运算),并且,这是无法很直观地通过操作系统提供的性能数据来衡量CPU资源是否够用的(你顶多只能看到那个Core 100%全速运行),这时,需要你的应用程序自己来侦测这种对CPU频率上的饥渴。

    2. Memory

    首先要确定你的系统持续运行的过程中,本身有无进程频繁启动或使用Memory Mapped File(如Load Dll,Load数据资源等,也被视为PageIn),得到平稳时态(且物理内存未吃满)的PageIn和Out基准值后,再去观察将来物理内存吃满的情况下,是否有某些时刻会持续超出这个值。

    如果没有频繁的Memory Mapping,那么直接看Page In/Out频率即可,应该维持在趋紧于0,甚至就是0,只有物理内存不够用时,才会发生换页(把磁盘临时当内存用,并且经常换入换出)




    • 已编辑 Finy 2013年5月24日 7:35
    • 已标记为答案 Harry Shen 2013年5月27日 1:58
    2013年5月24日 7:07