如何计算服务器的峰值

来源:百度文库 编辑:神马文学网 时间:2024/04/28 22:29:33
一点参考,已贴过的:
以Sun 1.2GHz UltraSPARC IV为例:
1.2GB USIV, 双内核双线程
其中每内核:
2个浮点处理器, 理论上
1.2Ghz * 2 == 2.4Mflop/s 即2.4百万次浮点运算
实际可测试:
for (i=0; i< 1000000; i++)
a + = 2 * b;
全UltraSPARC IV浮点运算次数:
2内核(2线程)* 2浮点运算单元 * 1000000 == 4000000
如运算时间需1秒结束, 则实际性能:
1.0E-06*(4000000)/1= 4Mflop/s
即一个UltraSPARC IV大概4M百万次浮点运算每秒,大概对科学计算应用有参考,
其它应用,应考虑更多一些:
Sun服务器,从小到大:
1. CPU数量:1-72
1.2GB USIV, 双内核双线程
其中每内核:
L1,L2,和内存控制器均在CPU上,
L1 Cache,需<1ns时间访问:
4路,64KB 数据cache,
4路,32KB 指令cache,
4路, 2KB 预取cache,
4路, 2KB 写cache,
L2 Cache,需10-20ns时间访问:
8MB cache
内核间cache独立,归各内核自用,不共享
2. 内存:2GB-576GB,修改内存及内存数据同步时间180-440ns,
建议每CPU至少配2GB内存,每CPU实际可对应32GB内存
理论系统带宽:2.4GB/s/CPU,
实测系统带宽: 1.9GB/s/CPU,
全系统持续带宽:9.6GB/s, 2-24CPU, 43GB/s, 72CPU
3.I/O,硬盘访问时间5-70ms, 网络最大100ms延迟。
每I/O板理论带宽2.4GB/s, 实测带宽840MB/s
每I/O板2个I/O控制器
每I/O每I/O控制器理论带宽1.2GB/s,实测带宽420MB/s
其中.
硬盘:9GB-300GB/个
I/O性能:
9 GB  7200转/分,141次I/Os每秒
18 GB 10000转/分,141次I/Os每秒
36 GB 15000转/分,178次I/Os每秒, 12-20MB/s
73 GB 10000转/分,122次I/Os每秒
146GB 10000转/分,130次I/Os每秒
180GB 10000转/分, 86次I/Os每秒
1个66MHz PCI总线, 插FC光纤硬盘,1个100MB/s FCAL光纤环提供I/O实测带宽94MB/s
1个66MHz PCI总线, 插FC光纤硬盘,2个100MB/s FCAL光纤环提供I/O实测带宽186MB/s
Internet网络客户:
每个56Kbps Modem, 需网络带宽0.0056MB/s
4.应用
数据库层:
联机事务处理常用2KB I/O,文件服务常用8KB I/O, 决策支持常用64KB I/O,典型每事务处理2-200行SQL,1 SQL操作对应3-9 I/Os操作,平均每次交易对应70KB/s,
(如300万次IBM TPCC世界记录:70KB/s/交易 * 3000000交易/60秒 = 2.1GB/s I/O,大概用了64个Power5 CPU, 6000多硬盘),
1CPU 对应60GB/s I/O,2MB内存对应1数据库用户,额外需相当于5-15%总数据库的内存为数据库cache,64MB内存对应于OS,例如:
Oracle数据库常规应用,1000并发用户,大量并发小规模随即数据读写,采用2KB I/O,约需:
每8CPU对应10000用户,
I/O带宽: 2KB/s * 1000并发用户 * 5I/Os/每次交易 = 10MB/s
需硬盘数: 5I/Os/每次交易 * 1000并发用户 / 100 I/Os/硬盘 = 50硬盘
一个硬盘不够,只能用50个硬盘组成卷,
IDE因为总线所支持硬盘数少,而不予考虑,
SCSI总线最多可支持16个设备,单条总线不够,而必须在PCI总线上多插SCSI卡,带多SCSI总线,
SCSI/FC带宽40MB/s 到320MB/s, 66MHz PCI带宽,均够用,
Oracle数据库决策系统,1000并发用户,大规模连续数据读写,采用64KB I/O,
约需:
所有CPU可能被一用户程序所消耗,多配CPU,
I/O带宽:64KB/s * 1000并发用户 * 5I/Os/每次交易 = 320MB/s
IDE因为总线带宽不够及所支持硬盘数少,而不予考虑,
SCSI总线最多可支持16个设备,单条总线不够,如不用320MB/s硬盘,则而必须在PCI总线上
多插SCSI卡,带多SCSI总线,
FC带宽无论1Gb/s或2Gb/s, 均不够用,必须在PCI总线上多插FC卡,带多FC环
无论PCI,或PCI-X, 或PCI-E,带宽都够用,
1个66MHz PCI总线, 带宽足够,但可能PCI槽位由于插多SCSI/FC卡而需另加一PCI总线。
如Sun Fire 25K TPC-H世界记录, 72CPU, 实际系统带宽57GB/s,
运行Oracle10g, 5TB数据,插71 FC卡连188T2B,3000多FC硬盘,用128KB 1/O,
理论I/O带宽43GB/s 实测18GB/s
NFS文件服务应用,1MHz CPU对应1 Mbps网络, 即每千兆网1 CPU,每64NFS用户对应128MB内存,
如为轻I/O应用,每硬盘对应2并发用户,8-9硬盘每SCSI总线,每百兆网对应40用户。
中间件层:
?。。。。。。。(如何规划,需高手补充)
Sun Fire v20z 双节点集群SPECjAppServer2002世界记录, 690.13TOPS@DualNode
2x 2.2 Ghz, AMD Opteron 248双节点。
Web层:
在线用户数对应1点击每秒,多数页面点击文件大小<15KB,1点击对应2 I/Os操作,
已知世界记录为2000年美国总统选举时
CNN使用Sun Web服务器创造的3.3百万点击每分(?), 1CPU对应800动态页面点击/s,1CPU需4GB
内存,一个10000转/分硬盘对应50个点击/s,一千兆网对应3500-5000点击,
Sun Fire v20z 2x2.4GHz CPU SPECweb99_SSL世界记录, 2,500个连接数。
IBM p655 4x1.7GHz Power CPU也不错,运行Zeus Web服务器,3699个连接数。
HP rx8620 16 x 1.5GHz安腾2也不错,运行Zeus Web服务器 9060个连接数。
Sun Fire v490 4CPU4节点集群SPECweb99_SSL世界记录,10700个连接数。
而且应用所需配置应只针对服务器70%的工作负载,即应用如需100%的能力,服务器应在当年实际具有
143%的能力。
另外,对于一个应用程序,无论PC,还是小型机:
因为CPU到L1 cache 时间<1ns, 到L2 cache时间<20ns, 等内存同步需180-440ns,等硬盘读数据5-70ms,等以太网络最大100ms延迟,
所以对一个数据的读写操作,其一个循环即相差几十1000倍(ns-ms),编程要珍惜每一个从网络服务器硬盘读的数据,对于C等,读入的数组行应尽量在Cache行中用完,如:
将:
for (i=0; ia = 2 * b;
for (i=0; ic = a + d;
a读入后,又再次读入使用,性能对小型机来说浪费几十1000倍,可能对PC机浪费少些,应改为:
for (i=0; i{
a = 2 * b;
c = a + d;
}
系统性能才不会降低,才不浪费CPU,内存,I/O...