一、问题
由于通过pmdk库使用PM进行编程时,需要创建文件,然后将其映射到内存,这个文件大小是固定的。那么当这块PM内存块使用完后,需要重新映射。但是当前用户进程扩展后的大小对其他用户进程不可见,其他用户进程需要重新映射后才能使用扩展后的内存。对于写密集的应用,需要频繁进行扩展,从而频繁解除映射、重新映射,对性能带来较大影响。
有没有方法创建文件并映射内存后,使其动态在线进行扩展,不需要重新解除映射、重新映射。
二、解决方法
想到libpmemobj的pool set,这个库初步理解可创建一个内存池,然后从这个内存池申请内存。多个文件可以组成一个pool。那么有没有一个方法使用pool的时候进行在线动态扩展?
正好pmdk有这样的开放性讨论问题,并且是已经关闭的状态,也就是说这个问题可以解决:
进去查看讨论内容:
QUESTION:
How to dynamically increase pool size in runti