java内存映射文件,在SSD的4k或8k块中读/写?

java内存映射文件,在SSD的4k或8k块中读/写?,java,linux-kernel,paging,memory-mapped-files,solid-state-drive,Java,Linux Kernel,Paging,Memory Mapped Files,Solid State Drive,我有一个内部页面大小为8k的SSD,但linux只支持4k页面大小。我的问题是,当使用java内存映射文件时,我一次读取/写入4k或8k块的性能会更好。我正在使用内存映射文件构建一个基于磁盘的哈希映射,其中每个bucket是4k或8k块。如果ssd要读取8k,即使我只访问它的前4k,那么我似乎应该使用8k块,否则我会浪费一半的读取。然而,由于linux只在4k块中工作,我不知道从操作系统的角度看是否会有读取两个页面的开销,即使从SSD的角度看只有一个页面,如果你得到我的jist 通过使用开放寻址

我有一个内部页面大小为8k的SSD,但linux只支持4k页面大小。我的问题是,当使用java内存映射文件时,我一次读取/写入4k或8k块的性能会更好。我正在使用内存映射文件构建一个基于磁盘的哈希映射,其中每个bucket是4k或8k块。如果ssd要读取8k,即使我只访问它的前4k,那么我似乎应该使用8k块,否则我会浪费一半的读取。然而,由于linux只在4k块中工作,我不知道从操作系统的角度看是否会有读取两个页面的开销,即使从SSD的角度看只有一个页面,如果你得到我的jist

通过使用开放寻址,您可以完全避免选择块大小的需要。然后让操作系统和硬件完成找出执行每个操作的最有效方式的工作