加大虛擬記憶體分配限制改善到行Game或大型程式嘅穩定度

本帖最後由 Okt04175 於 2024-4-9 15:09 編輯

如果行Game或者模擬器又或者其他大型軟體唔夠穩定嘅話,目前Linux界都係建議將vm.max_map_count嘅設定值加大到1048576(等如1GB),而65530(等如64MB)係上世紀預設值喺今日嚟講其實都唔夠使。


Manjaro更新公告有解釋:
「此變更應有助於解決許多記憶體密集型應用程式的效能、當機或啟動問題,特別是(但不限於)透過 Wine/Steam Proton 玩的一些 Windows 遊戲。整體而言,最終使用者應該會擁有更流暢的開箱即用體驗,而無需擔心arch-dev-public 郵件清單相關提案中的潛在缺點。」
https://forum.manjaro.org/t/unst ... 24-edition/159210/3
Arch Linux會加大預設值:
https://www.phoronix.com/news/Arch-Linux-vm.max_map_count

另外M$係建議將設定值加大到1600000(約1.5GB),咁就行SQL Server都夠做。
https://learn.microsoft.com/zh-t ... or-high-performance


Linux核心說明網站都有詳細講解:
「最大記憶體對應量:
該檔案包含處理程序可能擁有的記憶體對應區域的最大數量。記憶體對應區域用作呼叫 malloc 的副作用,直接由 mmap、mprotect 和 madvise 以及在載入共用庫時使用。

雖然大多數應用程式需要少於一千個對應,但某些程式(特別是 malloc 偵錯器)可能會消耗大量對應,例如每次分配最多一到兩個對應。」
(通俗講即係用嚟限制每個程式最盡可獲分配嘅虛擬記憶體空間量。)


喺終端機程式用1句指令就可以調整vm.max_map_count嘅設定值:
sudo sysctl -w vm.max_map_count=1048576

當然sudo指令係要入自己有管理員權限帳號嘅密碼做驗證。

如果行Game或者模擬器又或者其他大型軟體唔夠穩定嘅話,目前Linux界都係建議將vm.max_map_count嘅設定值加 ...
Okt04175 發表於 2024-4-8 14:04


sudo sysctl -n vm.max_map_count
1048576

睇一睇,可能已經預設。

TOP

本帖最後由 Okt04175 於 2024-4-10 01:49 編輯
sudo sysctl -n vm.max_map_count
1048576

睇一睇,可能已經預設。
Kin_2012 發表於 2024-4-9 02:33

有啲Linux系統嘅近期新版本已經改大咗做1GB預設上限,但係好多舊版本都係以前嗰64MB預設上限,所以建議大家自己留意系統嗰預設值係咪太細,係就改大佢。

鍾意嘅話亦可以好似M$建議咁改做1.5GB上限都得,虛擬記憶體分配上限預多好過預少。

TOP

有啲Linux系統嘅近期新版本已經改大咗做1GB預設上限,但係好多舊版本都係以前嗰64MB預設上限,所以建議大 ...
Okt04175 發表於 2024-4-9 12:55


上面的 command,  就係比大家先睇一睇而家的設定數值。

TOP

上面的 command,  就係比大家先睇一睇而家的設定數值。
Kin_2012 發表於 2024-4-9 16:46

Ubuntu 23.10嗰虛擬記憶體分配上限預設值仲係64MB,要落手改大。

TOP

Ubuntu 23.10嗰虛擬記憶體分配上限預設值仲係64MB,要落手改大。
Okt04175 發表於 2024-4-9 17:54


公司個隻WEB用緊22.04 LTS,真係得64

暫時改左256MB 試試,我係得處理大型PDF 或HEIC 相片時會出現炒服務問題,試下有冇關係

TOP