只写存储器映射在升压?

为什么不提升进程间支持只写内存映射?

也许我错过了一些东西,但是不要写只写映射比读/写映射快得多,因为操作系统不必从磁盘读取页面,只是将页面从内存中清除到磁盘? 此外,它将有完全非阻塞的好处(除了冲洗和破坏)。

从升压切换到本地操作系统内存映射,我会受益吗?

事实上,如果你分配一个新的内存映射文件大小,比如20Gb,你会得到一个稀疏的文件分配的大小。

当在这些文件的“映射”页面中,需要有一个读取操作(因为操作系统可能能够告诉页面在物理上还没有存在于磁盘上),只有当这些页面被弄脏的时候,写出来。

当然,这是依赖于实现的,我不认为POSIX(可以)保证这一点,但IYAM并不是不合理的行为,并且相当于只写映射。

实际上,只写memmap不会更快,因为OS只能跟踪更改/提供整页粒度的映射。

至少,如果你想避免模拟所有访问这些页面的内核(未实现),而不是仅仅映射一个页面的高昂成本。

不知何故,我怀疑直接进入操作系统API,而不是通过Boost-API可以提供任何显着的加速:

boost API是操作系统特定接口的一个小型包装器,并且将被完全内联,并由任何体面的编译器编译。