最近在計算一例瀰漫性結節時,出現了由於記憶體不足導致演算法服務重啟的問題,從而出現了肺結節無結果的故障。
除了通過土豪加物理記憶體來解決的方法外,其實可以有0成本的解決方案:
增大伺服器的虛擬記憶體。
在家裡一台32g的伺服器上,原來虛擬記憶體只有1g,跑瀰漫性結節會出現演算法服務重啟。
通過增加虛擬記憶體,32g記憶體的伺服器順利的跑過了這例瀰漫性結節(實測virt峰值達到60多g)。
以下的/swapfile不一定在根目錄下,在其他目錄同樣有效,如/home/guest/swapfile (當系統分割槽空間不足時,可以放到更大的資料分割槽中)
swapon --show 檢視虛擬記憶體情況
如果為空,需要新增
create_swap.sh
# 給乙個檔案固定分配64g的體積
sudo
fallocate -l 64g
/swapfile
sudo
chmod
600
/swapfile
sudo
mkswap
/swapfile
sudo
swapon
/swapfile
# 讓虛擬記憶體永久生效
sudo
echo
"/swapfile swap swap defaults 0 0"
>>
/etc/fstab
如果已經有,但是比較小,需要調整大
make_swap_bigger.sh
# 需要先停用虛擬記憶體。系統會將虛擬記憶體裡的東西倒入物理記憶體裡(通過htop可以看到,swap一直在變小,mem的使用率一直在增大。如果物理記憶體剩餘空間不足以裝載虛擬記憶體的有效內容,可能會導致個別程序異常。)
sudo
swapoff -
v
/swapfile
sudo
fallocate -l 64g
/swapfile
# 這一步不能省,需要重新mkswap
sudo
mkswap
/swapfile
sudo
swapon
/swapfile
(注意:如果是大調整小,需要rm /swapfile後,再fallocate,否則會維持原有大小)
再次swapon --show 檢視新結果。
通過glances監控整個瀰漫性結節的計算可以發現,物理記憶體用滿了之後,磁碟io讀寫頻繁,這是在將資料匯入swap的過程。
因此,虛擬記憶體雖然0成本使用,但是硬碟io的限制,導致了計算結節的一些時間用在io交換上。
Linux 如何調整虛擬記憶體大小
我用的centos,直接貼操作步驟,供參考 root 1pad free m total used free shared buffers cached mem 3702 722 2979 0 149 230 buffers cache 342 3359 swap 3839 0 3839 root ...
什麼是虛擬記憶體?伺服器虛擬記憶體怎麼設定最好?
一 什麼是虛擬記憶體?虛擬 記憶體有什麼用處 作業系統中所執行所有的程式全部都是經過記憶體提交給cpu然後才執行的,不過若是執行的程式占用記憶體很多或很大 則會導致記憶體消耗殆盡 為解決內在消耗殆盡的問題 windows作業系統運用了虛擬記憶體技術 簡單的說就是把一部分硬碟空間充當記憶體使用,雖然硬...
給linux伺服器增加swap虛擬記憶體
1.1 swap 概述 計算機對記憶體分為物理記憶體與虛擬記憶體。物理記憶體就是計算機的實際記憶體大小,由ram晶元組成的。虛擬記憶體則是虛擬出來的 使用磁碟代替記憶體。虛擬記憶體的出現,讓機器記憶體不夠的情況得到部分解決。當程式執行起來由作業系統做具體虛擬記憶體到物理記憶體的替換和載入 相應的頁與...