相关疑难解决方法(0)

OOM 杀手不工作?

据我了解,当系统接近没有可用内存时,内核应该开始杀死进程以重新获得一些内存。但在我的系统中,这根本不会发生。

假设一个简单的脚本只分配了比系统中可用内存多得多的内存(例如,一个包含数百万个字符串的数组)。如果我运行这样的脚本(作为普通用户),它只会获取所有内存,直到系统完全冻结(只有 SysRQ REISUB 有效)。

这里奇怪的部分是,当计算机死机时,硬盘驱动器 LED 灯会亮起并保持这种状态,直到计算机重新启动,无论我是否安装了交换分区!

所以我的问题是:

  1. 这种行为正常吗?奇怪的是,作为普通用户执行的应用程序可以通过这种方式使系统崩溃......
  2. 有什么办法可以让 Ubuntu 在这些应用程序获得太多(或最多)内存时自动杀死它们?

附加信息

  • Ubuntu 12.04.3
  • 内核 3.5.0-44
  • RAM:约 3.7GB 从 4GB(与显卡共享)。*

    $ tail -n+1 /proc/sys/vm/overcommit_*
    ==> /proc/sys/vm/overcommit_memory <==
    0
    
    ==> /proc/sys/vm/overcommit_ratio <==
    50
    
    $ cat /proc/swaps
    Filename                Type        Size    Used    Priority
    /dev/dm-1                               partition   4194300 344696  -1
    
    Run Code Online (Sandbox Code Playgroud)

kernel

50
推荐指数
3
解决办法
2万
查看次数

标签 统计

kernel ×1