linux中swap分区的作用(编译百度Apollo出现out of memory解决方法)

编译百度Apollo6.0时发现的swap分区的重大作用

一、前言

  1. 我是安装的win11和ubuntu18双系统,安装ubuntu的时候采用与win共存的方式,所以就没有自动手动分区,包括没有分swap分区。
  2. 我是amd r7 5800h的cpu和3060的显卡,16g的内存,理论上安装Apollo是没有问题的,但是在编译的时候总是出现out of memory的报错,然后给我其他进程给我kill了。
  3. 我很无解,用了网上比如退出桌面用无图形终端的方式编译,kill掉无关紧要的进程等等方法都不可以。

二、安装Apollo教程

参考链接:可能是知乎上已知最详细的Apollo6.0安装教程
按照上面这个过程安装到编译源码的部分时,16G的内存不足以支撑整个build,需要增加swap space改变swap分区大小
linux中默认物理内存使用40%的时候就开始使用swap分区虚拟内存:
可以通过这篇文章修改:linux系统swappiness参数在内存与交换分区间优化

三、什么是swap分区

  • swap分区,即交换区,swap空间的作用可简单描述为:**当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。**那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap空间中,等到那些程序要运行时,再从Swap中恢复保存的数据到内存中。
  • swap配置对性能的影响:Swap的调整对Linux服务器,特别是Web服务器的性能至关重要。通过调整Swap,有时可以越过系统性能瓶颈,节省系统升级费用。但是分配太多的Swap空间会浪费磁盘空间,而Swap空间太少,则系统会发生错误。
  • 如果系统的物理内存用光了,系统就会跑得很慢,但仍能运行;如果Swap空间用光了,那么系统就会发生错误。例如,Web服务器能根据不同的请求数量衍生出多个服务进程(或线程)如果系统物理内存不够用,网站打开会很慢,ping可能会丢包,延迟很大;**如果Swap空间用完,则服务进程无法启动,通常会出现“application is out of memory”的错误,严重时会造成服务进程的死锁。**因此Swap空间的分配是很重要的。

四、swap分区的划分规则

  • 在linux中,我们对swap分区的划分有一定的规则,当物理内存小于2G时,swap分区大小为物理内存的2倍;超过2G的部分,swap分区大小跟物理内存相等。

公式如下:x代表物理内存,y代表swap分区

当x<2G 时,y=2x;

当x>=32G 时,y<=x;

例:当物理内存为4G的时候,swap为6G;当物理内存大于32G的时候,swap分区小于等于物理内存比较好。

附:规则不是一成不变的,所谓swap分区的划分没必要太过于死板,这里所说的规则仅供参考。

五、内存的查看

  • free命令
free -m #-m已兆为单位查看

例如:

hhl@hehuiling:~$ free -m
              总计         已用        空闲      共享    缓冲/缓存    可用
内存:       15425        4318        4109         316        6998       10471
交换:       16383           0       16383


 - swapon命令

```powershell
swapon -s  #查看swap的状态,已用和未用资源的大小。
  • top命令
top   #动态查看,但是使用top命令时资源消耗比较大
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值