调整服务器的虚拟内存大小

最近在计算一例弥漫性结节时,出现了由于内存不足导致算法服务重启的问题,从而出现了肺结节无结果的故障。

除了通过土豪加物理内存来解决的方法外,其实可以有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交换上。

你可能感兴趣的:(医疗AI,linux)