我正在开发一个系统,我们使用 mmap 和 MAP_LOCKED 和 MAP_POPULATE 将文件锁定在内存中以提高性能。如果我们对 tmpfs 中的文件执行此操作,它会使用现有的 tmpfs 内存区域还是会为 mmap 制作一个副本?
答案1
Tmpfs 是一个将所有文件保存在虚拟内存中的文件系统。
mmap
当需要数据位于内存中时,将文件数据复制到磁盘缓存。使用 tmpfs,所有数据都已在磁盘缓存中(或换出)。因此映射的数据不会被复制:它已经位于要复制到的位置。
我正在开发一个系统,我们使用 mmap 和 MAP_LOCKED 和 MAP_POPULATE 将文件锁定在内存中以提高性能。如果我们对 tmpfs 中的文件执行此操作,它会使用现有的 tmpfs 内存区域还是会为 mmap 制作一个副本?
Tmpfs 是一个将所有文件保存在虚拟内存中的文件系统。
mmap
当需要数据位于内存中时,将文件数据复制到磁盘缓存。使用 tmpfs,所有数据都已在磁盘缓存中(或换出)。因此映射的数据不会被复制:它已经位于要复制到的位置。