Linux 中的内存使用情况

Linux 中的内存使用情况

如何设置进程内存使用限制?

类似于打开文件限制/etc/security/limits.conf

ubuntu           soft    nofile          4096
ubuntu           hard    nofile          8192

例如,当我使用eval1.1G 文件中的原始 json 数据启动 python 脚本时,python 占用整个 RAM,同时在每个dict和.我的机器挂了 20-30 分钟。此后:listjson.txt

# python read_data.py
Killed

Ubuntu系统今天非常稳定。它从挂起中恢复。交换使用量达到 8Gb。 RAM 完全空了,脚本正在运行。

我想知道killed我的脚本是否可以配置这个限制?我可以这样调整我的系统吗?每个占用当前 RAM 大小 70% 以上的进程都将被终止或停止之类的。

答案1

使用相同的文件,limits.conf您可以限制:

  • data- 最大数据大小 (KB)
  • memlock- 最大锁定内存地址空间 (KB)
  • rss- 最大驻留集大小 (KB)
  • as- 地址空间限制(KB)
  • stack- 最大堆栈大小 (KB)

所以你几乎可以做很多事情。设置限制后,您可以使用ulimit -a→ 检查此级别,您也可以使用此程序来设置它们。要使用limits.conf您需要pam_limits.so.

最后一件事就是杀死你的剧本的原因。我认为这可能是 OOM 杀手。 Linux 内核中的一个功能,当行为不当的进程吃掉所有实内存时,它会杀死它们;)用于dmesg查明是否使用了 Killer。将会有大量关于要杀死的候选进程以及被杀死的进程的大量信息。

干杯,

相关内容