[Linux服务器]内存和缓存的清理

今天发现跑深度学习程序时,服务器会很卡并直接掉线,要过很久才能重新连接。最开始以为是gpu的问题,但是上周在跑同样batch的数据时没有遇到问题,与朋友讨论后认为是cpu内存爆掉了的原因。以下是完整的修复过程

1.查看内存使用

free -h 查看内存和缓存
watch free -h 实时查看内存和缓存

在这里插入图片描述
发现不跑程序的时候,占用达到了71g

2.清理碎片

最开始认为可能是系统之前运行程序留下的缓存文件,所以使用清理缓存的方法。
sudo -s    # 进入到管理员模式
sync    # 在清理缓存先要先把buffe中的数据先写入到硬盘中
echo 3 > /proc/sys/vm/drop_caches 

drop_caches的值可以是0-3之间的数字,代表不同的含义:
0:不释放(系统默认值)
1:释放页缓存
2:释放dentries和inodes
清理后发现只多了3个g的可用内存,考虑清理不需要的进程。

3.kill 无用进程

使用top指令查看系统状态

(这是事后在os系统的截图,仅展示指令效果)
按 M 将进程按内存占用率进行排序
查看memory一列,发现有很多莫名的python指令正在运行

使用

ps auxw|head -1;ps auxw|sort -rn -k4|head -20

查看占用率最多的20个进程,如下图
在这里插入图片描述
可以发现,有很多vscode-server的扩展程序占用了非常多的内存。分析原因是使用vscode远程连接服务器跑程序后,每次占用的内存并没有被释放
使用 kill -9 JOB-ID 关闭这些进程

再次用free -h检查内存,有90g可用,清理成功。

猜你喜欢

转载自blog.csdn.net/qq_45347185/article/details/115065215