随机 I/O 的最佳集群大小

随机 I/O 的最佳集群大小

我对 NAND 存储(SD 卡、记忆棒)的答案特别感兴趣。

我有一台 Windows 7 笔记本电脑,在 VMWare 中运行 2 个 VM,并在主机操作系统中运行多个程序。VM 磁盘访问非常随机,使用带有 ReadyBoost 的 16GB 内存条后,我的系统性能得到了极大的提升。我用 exFAT 格式化闪存,以便可以分配 16GB 的 sfcache 文件。我使用了 32MB 的簇大小,但我不确定这是否是最佳的。

我对簇大小的理解是,簇大小越大,文件越少,但读取速度越快,文件表使用量越少(如果文件大多是大文件)。但是,我意识到 ReadyBoost 只对随机 I/O 有帮助,对顺序 I/O 则没有帮助。这让我想知道,较小的簇大小是否更适合随机 I/O,而较大的簇大小是否更适合顺序 I/O。

我对 16GB 拇指驱动器运行了一些 IO 测试。

图像显示簇大小为:1kB、4kB、8k、32MB 的结果。

在此处输入图片描述

在此处输入图片描述

在此处输入图片描述

在此处输入图片描述

1k 的随机 I/O 速度最差,而 4k 的速度最好(顺序 I/O 速度仅比 8k 慢一点,可能在误差范围内)。不确定如何解释这些结果。制造商是否可能针对默认的 Windows 分配单元大小优化了他们的设备?

答案1

如果你创建的文件是在格式化后创建的,并且不要改变大小之后,你就可以接受默认设置。但如果你没有太多文件和文件夹和他们缩小或放大,最好使用略高于默认值(8K 或 16K)。请记住文件夹文件小于簇的大小两个都占据簇大小在太空。

最好尝试使用以下聚类值FAT32外置FATNTFS根据分区的使用情况,以便从存储中提取最大性能。我强烈建议配置此值尽可能接近默认值请记住考虑 HDD 和 SSD 的最小 I/O 请求,通常硬盘512 字节固态硬盘4096 字节

我举个例子:我有一个Windows 10安装在480GB SATA III 固态硬盘。 我有一个500GB 硬盘我用它来存储游戏商店奥运会本身,所以我决定将各个分区专门用于这些不同的目的。

  1. 16GB NTFS@8K集群大小 - 所有游戏商店 (Origin、Steam、Epic、Uplay)
  2. 384GB NTFS@16千集群大小 - 存储仍在接收更新的游戏
  3. 64GB 原厂FAT@3.2万集群大小 - 存储不再改变的旧游戏

NTFS 的默认簇大小为 4096,请注意,如果这对您很重要,那么超过此值将失去压缩效果。

集群,更少碎片你可能拥有尺寸发生很大变化或被删除并重新创建为不同的尺寸。在现实世界中,我们一直随机或连续操作. 现实世界是混合.但我们可以使混合操作更少随机,更多顺序这种方式。我们知道,许多小型手术更少更大的操作

答案2

我个人不会为此烦恼,因为偏离标准格式几乎总是会在可靠性和支持方面给我带来问题,即使不是立即的。偏离标准应该经过深思熟虑,因为这类事情的代码路径不一定像标准一般情况那样经过充分测试。

除非您有真正的需要,否则我不会进行实验,特别是如果您希望长期保存任何数据。

相关内容