网众的s盘的设计理念
网众的设计理念很有意思,很多关键部分还要对代理商保密,最为可恨的一点,就是S盘。 网众的S盘颇为一绝,即便是5.6老版本,上机人数不是很多时,比如30-40台,我们对S盘测速,无论读写都可以稳定在极限,如80-90MB。经常在网上可以看到人说,测网众速度,S盘不算,那是耍赖,就是这个意思。 S盘在哪?这是网众被我逼到今天才说的一个话题:它位于服务器mnt/nxp/swap。有人说这个我也知道,不是什么秘密。我说你错了,因为S盘内容,会首先映射在服务期内存里。等于linux将服务器用不到的内存空间,给了客户机S盘使用,这相当于服务端写缓存! S盘干什么用?很简单,IE临时文件夹和客户机页面文件——虚拟内存,这两个回写频繁的东西在里面,如果把这一部分东西再装入内存中,效果怎样,客户应该明白了。 可以做个实验,对S盘测速,hd-speed,1M读或写,测速时会发现客户端网卡利用率能达到90%以上,服务器net流量也会接近满值,而disk用量呢?没错,0!只要你写的时间不是很长,通常2G服务器内存,读测速时disk用量始终为0,写测速在5分钟内disk用量都是0,可见这个缓存的性能是多么强大了。也就是说,常规对s盘进行操作,服务器磁盘基本没有回写量的。 这里就产生两件事情的答案:1,为什么别人的无盘都是3读3写甚至4写,而网众普遍为2写,就是这个原因。2,为什么即便是老机器,玩大型游戏的确不如其他无盘的新配置的机器了,但是打开网页始终比别人快,也是这个原因——IE速度快慢主要在于临时文件的回写,这一部分是写在S盘的,或者说在服务器内存里的。 而且补充一个答案,就是多路回写问题,锐启等无盘是采用多组阵列分别回写的形式,我们只不过是分别回写在服务器内存和硬盘里了,原理相似。锐启3读1写的方案里,使用sc3后,独立出来的一个专门存放页面文件的盘要加缓存的,这个盘就相当于网众的S盘,网众最早想到这一思路的,也是最为成功的。 前一阵子,8G内存盘实地效果很好,在某乡村网吧,16种配置的杂乱网吧居然可以2读2写SATA带70台,这已经是很好的成绩了。具体工作方式为:结合多配置功能,1个系统包放在服务器内存中,服务器读盘仅提供游戏读取,而写盘的大部分回写量由S盘和客户端写缓存分担,因此我们也为这样的成绩感到自豪。 那么好,分析完S盘的妙用,我们就开始挖掘它的潜力。目前,仅有网众无盘可以将服务器端海量内存的优越性发挥到极致,我们来逐一分析。 首先,目前仅AMD 65nm得22xx的cpu集成内存控制器,因此在内存利用方面,其效果要高于至强。经过测试,发现2210/2212cpu同等负载条件下cpu占用率均低于Xeon5130/5138,而百万位Super pai运算秒数均比至强低2-3秒!这说明同等价位条件下,AMD 昊龙平台性能确实优于intel至强平台。实际上这已不是什么秘密,即便在pc机,5200+性能也要比同价位的奔腾D2140好很多。 其次,就兼容性而言,windows平台无盘目前有太多原因,在运行无盘服务端软件后,cpu占用率会过高。他们不会轻易更换硬件平台。而其它linux无盘,暂不支持64位操作系统/4G以上内存,其本身也没有S盘这样独特功能,关键是他们还不提供amd平台的主板、阵列驱动,因此也无法实现。 还有一个重要原因是目前国内intel5000V/5000p平台还无法提供4根以上的内存插槽,而4GB FBD内存价格高得离谱,因此目前仅能通过AMD平台才可以实现8X2GECC内存的组合方案,这样总和为16G,除去满足以往内存盘需求外,还可以为服务端写缓存留足大量空间。 接下来我们都知道,读盘影响速度,写盘影响流畅性,而客户所谓的卡,95%来自于不流畅,秒卡,定格等。因此排除了外网原因外,那就是回写盘性能低下造成的。为什么会造成这样的现象?原因有4。 1,随着玩家个人技术的提高,在网吧不仅仅是玩游戏这么简单,经常会下载,拷贝,解压缩自己所需要的东西。 2,BT软件的运行所带来的写盘压力增大。BT软件边下在边上传,需要频繁读写磁盘,这一点在家用机影响很明显,甚至会毁坏硬盘,网吧同样也避免不了。有人说,我完全封锁p2p。我说这是不现实的,因为如今很多音乐平台或在线电影都采用p2p机制,你全封了人家就不来了。 3,恶意捣乱,如故意测速,拷贝文件,解压缩等。 4,最为重要:如今网吧网络环境复杂,游戏五花八门,以往仅仅2,3种游戏最为常玩,网吧大部分人都是在玩那几个游戏,这样众多客户机回写的内容是大同小异的,即便没有客户端写缓存,服务端1G左右的写缓存也是足以应付的,而现在玩什么的都有,不同游戏有不同的回写要求,这样服务端有限的内存资源根本不足以应付。其实1块SAS硬盘也仅仅相当于2-3块SATA硬盘的性能,一下应付上百人的回写需求,即便是3写甚至4写,他的负荷能力也是有限的。如果同一服务器下同时有3,4个人在拷贝或解压缩,身边的人就要受影响了。 这就是除了网众无盘,其他无盘人多时便会出现秒卡,人约多打开网页速度也越慢的原因(70%原因不在于路由,否则去有盘或网众无盘网吧体验一下就知道了)。 另外,windows2003对磁盘碎片的控制能力是很低下的,尤其在windows无盘应用缓存后,这一点更为明显,如windows2003服务端开启读写缓存后,半个月最长1个月不停服务器作必要的维护,性能就要明显打折扣。例如某无盘,官方说明书要求:所有缓存总和加起来不得大于1.2G,就是这个原因。对于众多用户来说,服务端1.2G开与不开,效果并无差别,而且会增加其服务端崩溃机率。 还有的无盘支持客户端写缓存,但必须屏蔽一个cpu内核,使客户机读写性能提升但运算能力降低50%。这对于网吧那些多开、多号、电影QQ游戏同时玩的玩家来说必定是莫大的打击。 因此,目前可以让网吧流畅到极限的无盘系统,也只有网众5.8。 采用性能更强的amd Opt2212平台并结合16GECC Reg内存,开启内存盘,加上游戏更新、系统自身所消耗的内存量,一般会被占用4G。这样剩余12G,就全部作为服务端写缓存用了。我们假使该服务器负载90台客户机,每人每小时写入200M用量,结合客户端128M写缓存的分担,理论上来说12G写缓存足够90人连续运行1.5小时而不需像写阵列刷新。 实际上肯定有出入的,因为种种原因,还会有略少的回写量写入服务器写阵列,但这是多少呢?在已经免费试营业的一家网吧观察来看(睢宁),在该服务器负载至70余人时,服务器端net写入量平均为35-50MB每秒,峰值145(双网卡)磁盘写入量平均为5-15MB/每秒,峰值40M。仅在有客户拷贝文件时,可以达到60MB以上。这意味着什么?1sata写盘即可带满100台机器!或者说,在该网吧出现某一台服务器突然性崩溃时,1台服务器12小时时间内足以负载全部160台客户机。 最终我们观察发现,客户正常玩游戏所需要写入的内容均会写入客户端写缓存,网页,QQ等会分别写入客户端写缓存和S盘,也就是服务端写缓存,由于采用MRU算法,只有在该部分缓存溢出后才会写入服务端写阵列,这样每台客户机理论上每小时才会像写阵列刷新一次数据,而真正影响到秒卡,网页慢的,也正是由这些频繁而琐碎回写数据的过程造成的。 最终采用这样的方案,可以让100台客户机最为流畅运行: OPT2212/16G ECC/3X500G ES读(1.5T游戏)2X73SAS写。 C盘依旧3G,静态缓存至内存中,客户端1g内存依然开设128写64读。如果你的客户机是2G甚至更多,那就各开256,效果马上就不一样了。有一个客户,客户机为3G内存,结果110台机时,服务器磁盘基本没流量。。他的服务器内存还只是4G。 linux下cpu使用率很小的,完全没必要追求什么4核,而大量的回写工作均由服务端/客户端的写缓存完成了,余下的磁盘资源,可以尽情有客户下载,解压缩,拷贝,测速,甚至。。。。 我们曾经在人满时5个
人一起测写速度,把服务器写盘搞得疲惫不堪,但是身边却没人叫卡!