level 1
贴吧用户_0G25tGb
楼主
众所周知,raid0只能提升硬盘的连续读写速度,但并不能提升其4K性能——甚至,因为需要多硬盘之间协调一致而导致raid0的4K性能甚至不如单个硬盘。
众所又周知,如今这年头固态硬盘的连续读写性能(缓内)其实已经非常强悍了,PCIE4固态的连续读取甚至能够达到每秒7G——但其实绝大多数人在绝大多数情况下都用不到、发挥不出这么极端的连续读写性能。
而真正制约当今固态硬盘使用体验的,其实多数情况下还是4K性能。
那么,如果想要提升4K性能,我们应该用什么样的阵列形式呢?
我想到了一种方式:建立某种阵列形式,并且假定它由5个硬盘组成~~~~
假定我们这一次安装一个游戏需要写入10个文件,并且这十个文件的大小各不相同。那么就把第一个文件写入1号盘,第二个文件写入2号盘……依此类推,这样写到第五个文件的时候就是每个硬盘都有了一个文件。
这时候五个硬盘里的剩余容量都不一样,然后第六个文件则优先选择剩余容量最大的那个硬盘写入(假定1号盘剩余容量最大),然后第七个文件则在2345号盘里面优先选择剩余容量最大的那个写入(假定它选择了2号硬盘),然后第八个文件则在345号硬盘优先选择剩余容量最大的那个写入……依此类推。
这样一通流程走下来,这个包含10个文件的游戏,平均每个硬盘负载2个文件,那么当我们运行游戏需要加载这10个文件的时候,就会有五个硬盘来同时负担“寻找/定位需要的文件并读取之”的任务,这样每个硬盘只需要读取两次,于是我们就可以把加载游戏文件的4K延迟缩减到五分之一(理论上)。
这可能会造成一定量的存储空间浪费——毕竟我们平时写入的文件有大有小,而且很多时候大小差距还蛮大的。那么可以设定一个机制,当五个硬盘的剩余容量相互差距大过一定程度的时候,启动一个新机制,无视前面的“依次写入多个不同硬盘”的规则,把超过一定大小的“大文件”优先往剩余容量最大的硬盘里写入,直到硬盘之间的剩余容量差距恢复到一个合理范围内,再恢复原有的“依次写入”机制。这样虽然仍旧无法“完全平衡”多个硬盘的剩余容量,但应该可以做到“相对平衡”,从而避免某个硬盘过早写满。
我相信,如果有这样一种阵列形式,那么我们就可以使用多个固态硬盘,使文件的4K读取性能获得翻倍的提升。
我不认为我自己聪明到“第一个想到这个好主意”。所以我怀疑这种阵列机制应该已经有人做出来了。只是~~~我不知道它叫什么名字,所以没法通过网络搜索得到这种阵列形式的软硬件产品~~~~~大家有谁知道吗?
2023年01月26日 04点01分
1
众所又周知,如今这年头固态硬盘的连续读写性能(缓内)其实已经非常强悍了,PCIE4固态的连续读取甚至能够达到每秒7G——但其实绝大多数人在绝大多数情况下都用不到、发挥不出这么极端的连续读写性能。
而真正制约当今固态硬盘使用体验的,其实多数情况下还是4K性能。
那么,如果想要提升4K性能,我们应该用什么样的阵列形式呢?
我想到了一种方式:建立某种阵列形式,并且假定它由5个硬盘组成~~~~
假定我们这一次安装一个游戏需要写入10个文件,并且这十个文件的大小各不相同。那么就把第一个文件写入1号盘,第二个文件写入2号盘……依此类推,这样写到第五个文件的时候就是每个硬盘都有了一个文件。
这时候五个硬盘里的剩余容量都不一样,然后第六个文件则优先选择剩余容量最大的那个硬盘写入(假定1号盘剩余容量最大),然后第七个文件则在2345号盘里面优先选择剩余容量最大的那个写入(假定它选择了2号硬盘),然后第八个文件则在345号硬盘优先选择剩余容量最大的那个写入……依此类推。
这样一通流程走下来,这个包含10个文件的游戏,平均每个硬盘负载2个文件,那么当我们运行游戏需要加载这10个文件的时候,就会有五个硬盘来同时负担“寻找/定位需要的文件并读取之”的任务,这样每个硬盘只需要读取两次,于是我们就可以把加载游戏文件的4K延迟缩减到五分之一(理论上)。
这可能会造成一定量的存储空间浪费——毕竟我们平时写入的文件有大有小,而且很多时候大小差距还蛮大的。那么可以设定一个机制,当五个硬盘的剩余容量相互差距大过一定程度的时候,启动一个新机制,无视前面的“依次写入多个不同硬盘”的规则,把超过一定大小的“大文件”优先往剩余容量最大的硬盘里写入,直到硬盘之间的剩余容量差距恢复到一个合理范围内,再恢复原有的“依次写入”机制。这样虽然仍旧无法“完全平衡”多个硬盘的剩余容量,但应该可以做到“相对平衡”,从而避免某个硬盘过早写满。
我相信,如果有这样一种阵列形式,那么我们就可以使用多个固态硬盘,使文件的4K读取性能获得翻倍的提升。
我不认为我自己聪明到“第一个想到这个好主意”。所以我怀疑这种阵列机制应该已经有人做出来了。只是~~~我不知道它叫什么名字,所以没法通过网络搜索得到这种阵列形式的软硬件产品~~~~~大家有谁知道吗?