Linux

由於記憶體問題,核心編譯在 Hyper-V 上崩潰

  • July 27, 2014

在此處輸入圖像描述

這是在 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 給我這樣的記憶體錯誤很奇怪。還在做一些調試。

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.

引用自:https://serverfault.com/questions/615847