由于内存问题,内核编译在Hyper-V上崩溃

在这里输入图像说明

这是在Hyper-V机器上。 我已经将最小RAM设置为512,最大值设置为2048.主机拥有更多的RAM。

Linux在Hyper-V上的dynamicRAM有问题吗? 我似乎无法弄清楚为什么我们有内存问题。

编辑:我也只是禁用dynamicRAM和设置最小/启动达2048MB。 内存不足问题仍然崩溃。

编辑:

[root@localhost ~]# free -m total used free shared buffers cached Mem: 1869 1240 629 0 27 1049 -/+ buffers/cache: 162 1706 Swap: 991 6 985 

那是在编译期间。 我会发布失败。 上次我做到了,系统在崩溃时仍然有大量的RAM。

PS:我注意到,如果我尝试使用make -j来使用更多的处理器(12),编译将几乎立即崩溃。

下面是使用make -j选项专用的4GB示例。 make -j之后编译崩溃了。 在这里输入图像说明

编辑3:我能够最终编译内核,而不使用-j选项,但为什么Hyper-V给我这样的内存错误是奇怪的。 还在做一些debugging。

make -j (没有-j参数)对于启动的命令数没有上限。 它尽可能并行化,而不仅仅是核心的数量(如问题types的build议)。

make -j 12 (或者可能less于12,取决于每个进程的内存饿了)在你的情况下可能是一个更理智的命令。

man 1 make

  -j [jobs], --jobs[=jobs] Specifies the number of jobs (commands) to run simultaneously. If there is more than one -j option, the last one is effective. If the -j option is given without an argument, make will not limit the number of jobs that can run simultaneously.