设为首页收藏本站

ZMX - IT技术交流论坛 - 无限Perfect,追求梦想 - itzmx.com

 找回密码
 注册论坛

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

用百度帐号登录

只需两步,快速登录

搜索
查看: 2393|回复: 4

一些游戏的读盘策略,机械盘优化io性能稀烂,就算用PrimoCache也拯救不了磁盘速度

[复制链接]
 成长值: 336

签到天数: 4737 天

[LV.Master]伴坛终老

发表于 2023/2/10 23:59 | 显示全部楼层 |阅读模式 |Google Chrome 109.0.0.0|Windows 10
天涯海角搜一下: 百度 谷歌 360 搜狗 有道 雅虎 必应 即刻
一些游戏的读盘策略,机械盘优化io性能稀烂,就算用PrimoCache也拯救不了磁盘速度

点名消逝的光芒2
问题所在
大部分游戏都是这个逻辑,例如打开一个背包,背包里面有300个道具,背包道具文件假设在ziyuan.vpk中,ziyuan.vpk里包含了5000个所有的道具模型和贴图等,文件总大小10G。
但是游戏就是傻傻的,例如读取800KB-801KB,2MB-2.1MB这样,不会进行组合式读取,导致打开背包要随机触发300次访问磁盘,后续缓存到进程内存中,这种做法是没有命中率的,所以磁盘活动会100%。

这点应该学习比特彗星1.96,优化长效上传磁盘缓存策略,提高命中率,减少读盘次数(一次性取16MB区块,不在是随机读取磁盘了)
https://www.cometbbs.com/t/195%E6%B5%8B%E8%AF%95%E7%89%88/77383/133
其实我觉得长效上传的缓存效率目前不高,,,因为我最多大概就占用2G过,然后看读取缓存次数和实际读盘次数都是100多次每秒,疯狂读盘,不知道能不能一次取16M做缓存内存块来优化。
例如一个100MB文件完整为1234567891011121314151617181920------100
用户访问目标为其中22-100的位置,那么就取17-32,33-48—以此类推作为缓存块?
用户后续访问第23,24,25,26个MB时候,直接调用17-32的缓存结果,这样应该有效提高命中率?
一个100MB的文件作为长效上传,16MB一个区块,实际读盘应该为7次。

其中一台服务器,,,命中率不超过40%,,现在的长效缓存,反正感觉很奇怪


怎么说呢,可能一般人看不懂我在说什么,,,总体就是太多游戏都有这个毛病了,期待游戏厂商去更新优化,还不如期待后续PrimoCache能更新改善这个问题,来提高命中率解决游戏首次访问卡顿的毛病。

欢迎光临IT技术交流论坛:http://bbs.itzmx.com/
回复

使用道具 举报

签到天数: 110 天

[LV.6]常住居民II

发表于 2023/2/11 09:32 | 显示全部楼层 |Google Chrome 109.0.0.0|Windows 10
原来如此。
那如果不是机械盘的话,会有同样问题吗。

还有小白想问一下,
读取的方式是一定跟程序相关吗,比如说游戏代码让读300次,那执行读取操作的时候,硬盘就一定会读300次吗。
[发帖际遇]: 一个袋子砸在了 BAKAAAAAA 头上,BAKAAAAAA 赚了 5 樱币. 幸运榜 / 衰神榜
欢迎光临IT技术交流论坛:http://bbs.itzmx.com/
回复 支持 反对

使用道具 举报

 成长值: 336

签到天数: 4737 天

[LV.Master]伴坛终老

发表于 2023/2/11 09:41 | 显示全部楼层 |Google Chrome 109.0.0.0|Windows 10
BAKAAAAAA 发表于 2023/2/11 09:32
原来如此。
那如果不是机械盘的话,会有同样问题吗。


游戏代码读取300次文件分别在不同位置的话,硬盘实际会发生读取300次。
假设如果读取的是1个道具300次,硬盘实际发生是1次,因为会缓存起来。
固态硬盘iops很高,可以承受每秒10000次甚至更高的读取次数,使用SSD一般就不会发生这种现象了。

评分

参与人数 1樱币 +2 收起 理由
BAKAAAAAA + 2 原来如此。也就是说固态的战斗力是机械的很.

查看全部评分

[发帖际遇]: 小樱 乐于助人,奖励 1 贡献. 幸运榜 / 衰神榜
欢迎光临IT技术交流论坛:http://bbs.itzmx.com/
回复 支持 反对

使用道具 举报

签到天数: 20 天

[LV.4]偶尔看看III

发表于 2023/5/25 16:57 | 显示全部楼层 |Google Chrome 113.0.0.0|Windows 10
PrimoCache有二级缓存啊,固态分出一个区化做机械硬盘二级缓存,游戏玩几遍基本就缓存到固态里了,重启二级缓存也是实时的,不用重新加载。不管用吗?
欢迎光临IT技术交流论坛:http://bbs.itzmx.com/
回复 支持 反对

使用道具 举报

 成长值: 336

签到天数: 4737 天

[LV.Master]伴坛终老

发表于 2023/5/25 18:02 | 显示全部楼层 |Google Chrome 113.0.0.0|Windows 10
328508474 发表于 2023/5/25 16:57
PrimoCache有二级缓存啊,固态分出一个区化做机械硬盘二级缓存,游戏玩几遍基本就缓存到固态里了,重启二级 ...

二级缓存是有效的,但是这种做法比较适合网吧
欢迎光临IT技术交流论坛:http://bbs.itzmx.com/
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册论坛 新浪微博账号登陆用百度帐号登录

本版积分规则

手机版|Archiver|Mail me|网站地图|IT技术交流论坛 ( 闽ICP备13013206号-7 )

GMT+8, 2024/12/23 17:41 , Processed in 0.129176 second(s), 20 queries , MemCache On.

Powered by itzmx! X3.4

© 2011- sakura

快速回复 返回顶部 返回列表