lbo*_*lla 10 python malloc mmap
我一直在尝试使用MALLOC_MMAP_THRESHOLD_和MALLOC_MMAP_MAX_ env变量来影响长时间运行的Python 2进程中的内存管理.见http://man7.org/linux/man-pages/man3/mallopt.3.html
我从这个错误报告中得到了这个想法:http://bugs.python.org/issue11849
我得到的结果令人鼓舞:内存碎片减少,长时间运行过程中使用的内存中可见的典型高水位标记较低.
我唯一担心的是,当使用这种低级别的调整时,是否还有其他可能会产生副作用的问题.有没有人有使用它们的经验?
下面是一个示例脚本,显示这些变量如何影响生成大型字典的脚本中的RSS内存:https: //gist.github.com/lbolla/8e2640133032b0a6bb9c只需运行"alloc.sh"并比较输出.这是我的输出:
MALLOC_MMAP_THRESHOLD_=None MALLOC_MMAP_MAX_=None
N=9 RSS=120968
MALLOC_MMAP_THRESHOLD_=512 MALLOC_MMAP_MAX_=None
N=9 RSS=157008
MALLOC_MMAP_THRESHOLD_=1024 MALLOC_MMAP_MAX_=None
N=9 RSS=98484
MALLOC_MMAP_THRESHOLD_=2048 MALLOC_MMAP_MAX_=None
N=9 RSS=98484
MALLOC_MMAP_THRESHOLD_=4096 MALLOC_MMAP_MAX_=None
N=9 RSS=98496
MALLOC_MMAP_THRESHOLD_=100000 MALLOC_MMAP_MAX_=None
N=9 RSS=98528
MALLOC_MMAP_THRESHOLD_=512 MALLOC_MMAP_MAX_=0
N=9 RSS=121008
MALLOC_MMAP_THRESHOLD_=1024 MALLOC_MMAP_MAX_=0
N=9 RSS=121008
MALLOC_MMAP_THRESHOLD_=2048 MALLOC_MMAP_MAX_=0
N=9 RSS=121012
MALLOC_MMAP_THRESHOLD_=4096 MALLOC_MMAP_MAX_=0
N=9 RSS=121000
MALLOC_MMAP_THRESHOLD_=100000 MALLOC_MMAP_MAX_=0
N=9 RSS=121008
MALLOC_MMAP_THRESHOLD_=512 MALLOC_MMAP_MAX_=16777216
N=9 RSS=157004
MALLOC_MMAP_THRESHOLD_=1024 MALLOC_MMAP_MAX_=16777216
N=9 RSS=98484
MALLOC_MMAP_THRESHOLD_=2048 MALLOC_MMAP_MAX_=16777216
N=9 RSS=98484
MALLOC_MMAP_THRESHOLD_=4096 MALLOC_MMAP_MAX_=16777216
N=9 RSS=98496
MALLOC_MMAP_THRESHOLD_=100000 MALLOC_MMAP_MAX_=16777216
N=9 RSS=98528
Run Code Online (Sandbox Code Playgroud)
如您所见,对于此示例,使用的RSS比vanilla Python少约20%.
| 归档时间: |
|
| 查看次数: |
1865 次 |
| 最近记录: |