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

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

在此处输入图片描述

这是在 Hyper-V 机器上。我已将最小 RAM 设置为 512,最大 RAM 设置为 2048。主机的 RAM 绰绰有余。

Linux 在 Hyper-V 上存在动态 RAM 问题吗?我似乎无法弄清楚我们为什么会遇到内存问题。

编辑:我也禁用了动态 RAM,并将最小/启动设置为 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 Dedicated 示例。编译不久后就崩溃了make -j在此处输入图片描述

EDIT3:我终于能够在不使用 -j 选项的情况下编译内核,但 Hyper-V 为何会给我这样的内存错误,这很奇怪。仍在进行一些调试。

答案1

make -j(不带参数-j)对启动的命令数量没有上限。它会尽可能地并行化,而不仅限于内核数量(正如问题所暗示的那样)。

make -j 12(或者可能少于 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.

相关内容