Memblaze:如何加速SSD进入稳态( 三 )

\n

为了写入1000GB的数据 , 采用4kB的写入方式 , 待写入的空间包含n=1000GB/4kB=2.6×108个4kB的地址 。 而总计需要写入n次4kB数据 。 设随机变量Mi=1代表地址i没被写入任何数据这样的事件 , 对于这n个地址中任意一个 , 由于所有写入都是独立并且均匀写入到所有地址空间 , 因此n次随机写入全没有命中指定地址的概率

\n

上面的式子利用了并假设n足够大 , 其中e=2.718是自然对数的底数 。 为了计算所有这样的没有任何写入命中地址空间的比例 , 借助大数定理

\n

\n

因此 , 全盘随机写入一次导致从来没有写入数据的地址所占据全盘的比例为e-1 , 也就是说全盘随机写入一次仅仅相当于写入了1-e-1=63%的地址范围 , 除此之外37%的地址范围是不包含有效数据仍然处于空盘状态 。 因此 , 采用这种方法 , 即便写入3次 , 也仍然有5%的地址范围未被覆盖 , 这相当于凭空增加了5%的超额配置 。 因此采用全盘随机写入的方法进行预处理的效率是很低的 。

\n

\n

有些磁盘性能测试工具可以选择在随机写入的时候指定是否允许写入重叠的地址范围 。 例如fio在随机写入的时候会记录哪些地址曾经写过 , 它会避免已经写入的地址重复写入 , 从而避免了上述填充的效率问题 。 为了记录已经写入的地址范围 , 它使用了系统中的一段内存 。 如果系统内存不足且不需要这个功能 , 可以通过norandommap开关把这个功能关闭 。

推荐阅读