第一页:首先是回写的个人经验
经过多次实测
1.首先说明一点回写缓存与读缓存是完全不同的。开启读缓存,你在第一次读取数据后,下次在读取,将永远读内存(没有新数据情况下)。回写,则不同,无论你写的东西是否一样,它对硬盘的写都不在同一扇区。所以每次都写。所以需要回写缓存延时写入,比如将10秒写入的东西分成100秒写入。
2.supercache3设置回写延时10~20之间,效果最佳,软件默认推荐是15,我认为也是15最佳。
3.以延时10秒来算,虚拟盘软件网速70M/秒来算,你的缓存大小最佳需要700M。
4.为什么呢,因为客户机以70M/s速度回写,服务器处延时10秒后写入(这个10秒是平均数),10秒*70M=700M,如果设置过小,数据就是满出缓存,满出的数据就直接写硬盘,就没有缓存作用
5.实际上还要考虑到硬盘写速度,比如你网速度在快,硬盘写入只有10M,那就。。。
6.按照公式理论百兆都不需要回写缓存(读写分离下),因为同一硬盘下,同时读和写,硬盘速度都可能不到10M
7.比如,读写分离下,百兆网络缓存大小=15*9*9/60=20M,如果你读写都放同一硬盘,硬盘写速度可能只有10M,那么百兆网络缓存大小=15*9*9/10=121M
8.最后有些人优化选了最后一项,无限延时,这是非常错误的,如果这样设置后,当你回写缓存满了之后,在有数据据回写时就等于直接写硬盘,没有缓存的作用。唯一的好处就是,在没满的情况下,永不写硬盘
以我的测试机算,服务器开 读缓存+写缓存
连续写入速度 要接近 连续读取速度 (连续写入,就相当于,单机回写)
随机写入速度 要接近 连续写入速度的一半 (随机写入,就相当于,多机同时回写)
达到这个标准才是回写的至高境界。设置过大也是浪费,设置过小没有效果。
测试软件:测试时,请选择500M以上测试,不然太快了测不准
以下是我机子的测试数据(80G IDE 旧硬盘+一般千兆+ccdisk 1.9这个版本的确有问题+ccdisk 发送大小=65536)
缓存大小/延时 连续读取/连续写入/随机读取/随机写入 (单位M/s)
0/0= 71/42/65/25
128/1= 71/42/65/26
256/2= 71/48/65/27
256/5= 71/48/65/30
256/10= 71/54/65/26
256/15= 71/54/65/26
512/5= 71/60/65/27
512/10= 71/59/65/31
512/15= 71/62/65/32
512/20= 71/65/65/32
1024/2= 71/43/65/24
1024/5= 71/55/65/25
1024/10=71/63/65/29
1024/15=71/67/65/31
1024/20=71/67/65/31
1024/30=71/67/65/31
还有一组数据不记得了,就是开启无限延时,效果非常差,请看第8条
最后还要说明一下,上面公式,只是算得出,最优最高的所需要的回写缓存,比如你的四网卡280M/s,只有单硬盘回写,算得出需要19G的内存,当然你不可能设置19G的回写缓存,怎么办呢,只有做磁盘阵列做个四硬盘阵列吧280M/s,这时按公式算得出最优回写缓存需要4G的。到这里还要说明一下,我所说的最优最高,是指大量数据同时回写,你4网卡不可能同时大量回写吧,如果是那你就准备好4硬盘4G内存,就达到最优最完美配置。如果一般没有这么多大量回写,折中,就4网卡分流/3读/2写/回写缓存2G/读缓存越大越好。如果是有盘+虚拟盘,能用到4网卡分流的,最好还是回写本地硬盘吧。
本文来源:bbs.wglm.net 作者:the886