Linux kernel 内存不足内核崩溃

Linux kernel 内存不足内核崩溃,linux-kernel,out-of-memory,Linux Kernel,Out Of Memory,我的系统面临与内存不足(OOM)错误相关的问题。在这种情况下,linux的oom kill实用程序使用特定的算法来释放空间,从而杀死一个进程(称为“坏进程”)。 我想打印内存,在这种情况发生之前处理统计数据 mm/oom_kill.c包含函数out_of_memory()。我想在这个功能停止“坏进程”之前打印我的统计数据。为此,我编写了以下bash脚本 #!/bin/bash # Script to print process related info echo "Vmstat " >

我的系统面临与内存不足(OOM)错误相关的问题。在这种情况下,linux的oom kill实用程序使用特定的算法来释放空间,从而杀死一个进程(称为“坏进程”)。 我想打印内存,在这种情况发生之前处理统计数据

mm/oom_kill.c包含函数out_of_memory()。我想在这个功能停止“坏进程”之前打印我的统计数据。为此,我编写了以下bash脚本

#!/bin/bash
# Script to print process related info

echo "Vmstat " > OOM_memresults
vmstat >> OOM_memresults
echo >> OOM_memresults
echo "SLABINFO" >> OOM_memresults
cat /proc/slabinfo >> OOM_memresults 
echo >> OOM_memresults
echo "Status of process getting killed" >> OOM_memresults
cat /proc/$1/status >> OOM_memresults
现在我面临的问题是找到一种从内核代码调用此脚本的方法

我不能使用system(“scriptname”),因为linux内核中没有系统功能,我们也不能使用exec及其变体

你知道我如何从内核代码调用这个脚本,或者我可以在任何时候从内核代码打印进程、内存相关信息的任何其他方式吗。
“current”函数提供有关当前正在运行的进程及其任务结构的信息,但很难从中提取任何有用的信息。

当需要从内核执行用户空间进程时,可能会有所帮助。但是,我无法预测当OOM killer处于活动状态时,脚本是否会真正执行其任务。不过,也许值得一试。是的,你是对的。我试着在OOM条件下运行这个脚本。它不起作用。