当前位置: 首页 > news >正文

LINUX 解决系统卡死:扩大内存交换分区

        最近电脑总是卡住,让我很是苦恼。运行程序时发现可能是内存占满之后导致界面卡住。下面是在我16G内存的电脑上折腾的过程与结果:

  • 查看当前的交换内存大小free -m(单位:-m选项表示以兆字节(MB)为单位显示内存使用量)
              total        used        free      shared  buff/cache   available
Mem:           *         *         *         *         *        *
Swap:          2047           0        2047
  • 在Linux系统中,/proc/swaps文件是一个虚拟文件,用于显示当前系统上的交换分区(swap partition)和交换文件(swap file)的信息。你可以使用以下命令查看/proc/swaps文件的内容:

  • cat /proc/swaps 注意,/proc目录下的文件和文件夹都是虚拟文件系统,它们提供了对内核和系统信息的访问。因此,/proc/swaps文件实际上并不是一个真正的文件,而是通过内核动态生成的。

  • 该文件的内容包含了每个交换设备的详细信息,每行对应一个交换设备。每行的字段如下: Filename:交换设备的路径或文件名。Type:交换设备的类型,可以是"partition"(分区)或"file"(文件)。Size:交换设备的大小。Used:已使用的交换空间大小。Priority:交换设备的优先级。如果系统没有启用交换分区或交换文件,则/proc/swaps文件将为空。

  • 关闭交换分区 sudo swapoff 上一步输出的Filename

  • 创建一个swapfile文件 sudo dd if=/dev/zero of=swapfile bs=1024 count=10000000 ,其大小为 bs x count = 1024 × 10000000 = 10G

这是一个使用 dd 命令创建交换文件(swap file)的命令。解释如下:
dd: 是一个用于复制和转换文件的命令。
if=/dev/zero: if 表示输入文件,这里指定为 /dev/zero,它是一个特殊的设备文件,读取该文件会返回无限个零字节。
of=swapfile: of 表示输出文件,这里指定为 swapfile,即要创建的交换文件的名称。
bs=1024: bs 表示块大小(block size),这里设置为 1024 字节,表示每次读取和写入的数据块大小为 1024 字节。
count=10000000: count 表示要复制的块数,这里设置为 10000000,表示要复制 10000000 个块,即总共创建一个大小为 10GB 的交换文件。
综上所述,该命令的作用是以超级用户权限创建一个名为 swapfile 的交换文件,文件大小为 10GB。交换文件在某些情况下可以用作虚拟内存的扩展,用于处理系统内存不足的情况。
  • sudo chmod 600 ./swapfile

  • sudo mkswap -f ./swapfile

  • sudo swapon ./swapfile

  • 经过以上的操作,已经可以正常使用swap内存了,但是每次重启电脑,之前的配置都会消失

  • 可通过修改 /etc/fstab进行持久化

CG

        感觉这操作有点像deepspeed的zero offload,不过还是挺管用的,感觉比减小make时的线程数靠谱。对于同一个问题,还是要多找解决方案的好。

  • 参考:https://masterhu.blog.csdn.net/article/details/104856865
http://www.lryc.cn/news/269278.html

相关文章:

  • Vue项目Nginx代理F5刷新出现404问题解决
  • 关于MybatisPlus自动转化驼峰命名规则配置mapUnderscoreToCamelCase的个人测试和总结
  • css中的BFC
  • 音视频类App广告变现如何破局,最大化广告变现收益,让应用增收?
  • 基于llama-index对embedding模型进行微调
  • 如何本地搭建FastDFS文件服务器并实现远程访问【内网穿透】
  • spring基于Xml管理bean---Ioc依赖注入:对象类型属性赋值(2)----内部bean的引入(bean和bean之间的引入)、(3)级联方式注入
  • Python电能质量扰动信号分类(二)基于CNN模型的一维信号分类
  • 如何解决报错:Another app is currently holding yum lock?
  • electron使用electron-builder进行MacOS的 打包、签名、公证、上架、自动更新
  • RAD Studio 12 安装激活说明及常见问题
  • JavaScript实现视频共享
  • uniapp框架——vue3+uniFilePicker+fastapi实现文件上传(搭建ai项目第二步)
  • 一篇文章带你入门PHP魔术方法
  • 【数据库系统概论】第6章-关系数据库理论
  • 算法设计与分析实验报告-贪心算法
  • Unity读取服务器声音文件
  • 掌握ElasticSearch(一):Elasticsearch安装与配置、Kibana安装
  • 《剑指offer》Java版--13.机器人的运动范围(BFS)
  • 基于流程挖掘的保险理赔优化策略实践
  • Docker五 | DockerFile
  • 2023年度总结:技术旅程的杨帆远航⛵
  • SpringBoot+AOP+Redis 防止重复请求提交
  • 偷流量、端口占用、网络负载高、socket创建释放异常等Android高阶TCP/IP网络问题定位思路
  • 《人人都能用英语》学习笔记
  • NFC与ZigBee技术在智慧农业物联网监测系统中的应用
  • k8s-cni网络 10
  • 听GPT 讲Rust源代码--src/tools(27)
  • 经济危机下,我们普通人如何翻身?2024创业新风口,适合普通人的创业项目
  • 深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第五节 引用类型复制问题及用克隆接口ICloneable修复