gpt4 book ai didi

python - 是否可以监视 forked linux 进程的写时复制? (特别是 python )

转载 作者:太空狗 更新时间:2023-10-29 12:23:09 24 4
gpt4 key购买 nike

我有一组共享一个大对象的python进程(共享是在初始化对象后通过fork进程完成的)

我注意到一个奇怪的内存泄漏:

  • 进程内存(VSZ 和 RSS)几乎没有变化
  • 系统总内存稳定增长

我的猜测是共享对象确实发生了变化(它在“逻辑上”是只读的,但即使只是从中读取,一些内部私有(private)变量也可能发生变化)——这会导致内存页面被复制

有没有办法验证这一点?

最佳答案

要回答您的具体问题“有没有办法验证这一点?”,如果我理解正确,如果您想查看是否有与包含大对象的页面相关的任何更改,您可以执行以下操作。

1) 确定“大型共享对象”的地址和该对象结束的地址。

2) 如果起始地址不在 4K 页面边界上,则将起始地址向下舍入到对象开始位置之前的页面边界。

3) 如果结束地址不在 4K 边界上,则将结束地址四舍五入到对象结束位置之后的页面边界。

4) 转储进程及其所有子进程的内存范围以分离文件并比较它们。

但是,我认为Will os.fork() use copy on write or do a full copy of the parent-process in Python?可能已经为至少一些需要复制的作品提供了解释。具体来说,python 对象是引用计数的,您的子进程将改变引用计数。

您是否考虑过使用 python 的线程而不是创建子进程?

关于python - 是否可以监视 forked linux 进程的写时复制? (特别是 python ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51036943/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com