如何对齐文件系统I / O?

时间:2012-06-05 11:18:20

标签: java c performance io filesystems

某些基准测试(尤其是SSD)可区分(4k-)对齐和非对齐读/写。我理解为什么对齐可以更快,但我不知道如何在我的程序中确保读/写将与实际介质正确对齐。

我认为这并不简单,只要确保不要在文件中寻找任何不能被4096整除的地址?毕竟,系统不保证文件的启动将正确对齐(或者是吗?)

IOMeter等程序如何调整I / O?有没有办法在Java中做到这一点? (或者更一般地说,在VM中运行的程序)。

我的另一个问题是IOMeter的队列深度是多少? 1,只有一个线程/进程(以及我自己如何做到这一点) - 但我不确定这是否与对齐的I / O有关,或者打开一个关于它的新问题。

2 个答案:

答案 0 :(得分:1)

我怀疑你绝对可以做到,但你可以大大增加你的机会。

  • 确保文件系统与物理介质对齐。有关Linux中的注意事项(仅作为示例),请参阅here
  • 如果要按顺序访问数据,请确保使用的块大小是块大小的整数倍。 4096或8192通常是安全的赌注。
  • 如果您正在寻找或进行随机访问,正如您所说,您需要寻找多个块大小并填充缓冲区。同样,对于4096或8192,您通常都是安全的。

答案 1 :(得分:0)

此链接可能很有用,但您说您对数据对齐有足够的了解。我不认为Java支持它。我想你必须自己实现它。 Data Alignment