Linux
由於記憶體問題,核心編譯在 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 給我這樣的記憶體錯誤很奇怪。還在做一些調試。
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.