This page validates as XHTML 1.0, and will look much better in a browser that supports web standards, but it is accessible to any browser or Internet device. It was created using techniques detailed at glish.com/css/.
你的系统营养过剩吗?
在做性能测试的时候,一般认为CPU越多越好,内存也越多越好。机器配置越高,性能也越好。可实际情况是,如果你的应用写得不好的时候,有可能系统资源越多,性能反而会下降!就好像一个营养过剩的小孩,再多的营养只会伤害他的身体。我们把这种应用叫做“营养过剩的应用”

在测试我们T2000服务器性能的时候,经常会发现测试系统的扩展性不好,不能完全利用T2000服务器提供的8个核32个硬件线程以及32G内存的豪华配置。有趣的是,在很多的测试过程中,当我们通过操作系统的命令关闭几个CPU核(用psradm -f)的时候,性能反而有不少的提升。客户很不理解,CPU多了这么有害吗?要我们给出一个解释。
最好的解释就是用一个简单的比喻。就拿该死的北京交通情况来说吧。在早晚高峰的时候,北京的道路非常脆弱,只要有一点事故,整个交通就会瘫痪。原来有四个车道,一个事故就能占据其中三个,剩下的一个车道是维持奄奄一息的道路唯一的出气口。这个车道的通过率是决定整条道路的拥堵状况。我们把这个车道叫瓶颈。大家都会有体会,这个瓶颈的通过率和原来车道的数量有很大的关系。如果原来的路面很宽敞,有5、6条车道,现在只有一条了,那么这条车道通过率会很慢,因为在这5、6条车道中的车需要互相竞争,都想抢先通过这个瓶颈,互相之间难免发生制约、摩擦,甚至产生新的故障。如果原来只有两条车道,那么现在要通过一条车道,通过率要高很多。注意,我谈的是通过率,按理说,无论原来的路面有几条车道,剩下的那条车道的通过率都应该不变,正是因为竞争的原因,影响了瓶颈的通过率。
计算机系统也一样。如果你的系统有瓶颈,这个瓶颈可能只能由一两个CPU来执行,你的系统的性能可能就会由这个瓶颈的通过率来决定了。当8个核(32线程)全打开的情况下,系统这么多的进程和线程要通过你系统的瓶颈的时候,互相也会由竞争,这些竞争也一样有消耗。例如进程上下文切换,系统锁资源竞争,高速缓存的失效,都会造成多余的开销,因此关闭一定数量的CPU对提高这样的系统是有好处的。
内存也是,并不是越多越好,特别是Java应用。我在别的文章中对此有详细的描述,这里就不多说了。
Posted at 10:48上午 九月 02, 2007 by 王昱 in Solaris | 评论[1]