linux换页空间,关于 Linux swap 的一切

一个问题

51放假前的时候,一个以前的同事说他们的系统出现 物理空闲内存为 0, swap 分区使用增长,增长到 3G 左右就会引起应用异常退出。但是 JVM 监控看到堆还是有大量空闲空间的。昨天又看到他在朋友圈求助这个问题,决定研究下。

按以前的理解,物理内存不够时,就会把一些不常用的内存页交换到 swap 空间,以释放内存。他碰到物理内存耗尽、swap 空间增长,这是很正常的。只是这些增长的内存干嘛用了。

free -m 命令能只看到物理内存、交换空间各使用了多少,但看不到是每个进程具体用了多少。

还是得靠 top 命令,进入 top 命令的显示界面后,按下 Shift+m 就可以按内存使用排序,如下图:

aa57d639bd55c995b60bdda141fb8a8a.png

假如排在第一的是个 Java 进程,占用了 6G 内存,而JVM配置的最大堆内存是 4G,说明非堆内存(本地内存、线程栈等)占用了 2G。

后面跟那个同事求证,是他们最近上线的一个组件用了 Netty,使用不当导致本地内存泄漏。

关于 swap 的一切

Linux 把物理内存(RAM)分为一块一块,称为 页(page)。

交换是把内存页拷贝到提前配置在硬盘上的空间(称为交换空间)的过程,以释放页的内存。

物理内存和交互空间的组合就是可用的虚拟内存。

交互有两个重大意义:

* 首先,系统需要的内存比物理内存更大时,内核交换出较少使用的页,给当前应用(进程)立即需要的内存。

* 其次,应用启动阶段需要大量页可能只用于初始化,然后就再也没有使用。系统可以交换这些页并释放内存用于给其他进程或磁盘缓存。

交换的负面作用:

* 硬盘比内存慢了数个数量级,内存是以微秒衡量的,硬盘是以毫秒衡量;

* 频繁的交换入、交换出将导致性能瓶颈。

Linux 有两种形式的交换空间:

* 交换分区:硬盘上独立的区域,其他文件不能存放。

* 交换文件:文件系统里的一个特定文件。

查看 swap 空间信息: swapon -s

Filename Type Size Used Priority

/dev/sda5 partition 1046524 54244 -1

如果有两个交换空间且优先级相同,Linux swapping 系统将交换使用这两个空间,这样可以提升性能。

交换空间应该多大?

如果有足够的内存,可以把交换空间禁用了。

对于桌面系统,交换空间大小可以是内存的两倍;

对于服务器,使用小的交换空间(比如是物理内存的一般),要监控交换空间的使用情况,如果需要,升级内存。

欢迎关注我的微信公众号: coderbee笔记,可以更及时回复你的讨论。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要增加Linuxswap空间,可以按照以下步骤操作: 1. 查看当前系统的swap空间大小和使用情况,可以使用命令:`free -m`。 2. 创建一个新的swap文件,可以使用命令:`sudo fallocate -l [size] /swapfile`,其中[size]为需要创建的swap文件大小,单位为MB。 3. 设置swap文件的权限,可以使用命令:`sudo chmod 600 /swapfile`。 4. 将swap文件格式化为swap分区,可以使用命令:`sudo mkswap /swapfile`。 5. 启用swap分区,可以使用命令:`sudo swapon /swapfile`。 6. 验证swap分区是否已经启用,可以使用命令:`sudo swapon -s`。 7. 将swap分区设置为开机自动启用,可以编辑`/etc/fstab`文件,在文件末尾添加一行:`/swapfile swap swap defaults `。 完成以上步骤后,就可以成功增加Linuxswap空间了。 ### 回答2: Swap 空间Linux 中是为了增加内存容量而存在的一种虚拟内存。在物理内存不足的情况下,交换空间可以用作扩展内存的一部分,让系统能够继续工作。因此,当 Linux 系统中的物理内存不足时,增加 Swap 空间可以提高系统的稳定性和可靠性。本文将详细介绍如何在 Linux 系统中增加 Swap 空间。 一、查看系统当前的 Swap 空间 在开始之前,必须要先查看一下系统当前的 Swap 空间大小。我们可以用下面的命令来查看: ``` free -h ``` 其中,“-h”参数可以使输出结果以较为人性化的方式显示。此命令可以输出系统中的物理内存和 Swap 空间的使用情况。其中,Swap 一栏显示的是当前可用的 Swap 大小。如果 Swap 空间的可用空间为 0,则说明系统需要更多的 Swap 空间。 二、检查硬盘空间 在创建 Swap 空间之前,需要先检查硬盘空间,以确保有足够的空间来创建 Swap 分区。可以使用下面的命令来检查硬盘空间: ``` df -h ``` 其中,“-h”参数的作用同上。此命令输出的是文件系统的磁盘空间使用情况。 三、创建 Swap 分区 接下来就是创建 Swap 分区了。本文介绍两种方法: 1. 创建 Swap 文件 可以通过创建 Swap 文件来创建 Swap 空间。具体方法如下: ``` sudo fallocate -l <size> /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile ``` 其中,“<size>”表示需要创建的 Swap 文件的大小,可以设置为任意值,但一般不小于物理内存的大小。第二条命令将新创建的 Swap 文件的权限设置为 600,以避免安全问题。第三条命令将新生成的 Swap 分区格式化为 Swap 空间。最后一条命令启用新的 Swap 空间。 2. 创建 Swap 分区 可以通过分区工具创建一个新的 Swap 分区。具体方法如下: ``` sudo fdisk /dev/sda ``` 其中,“/dev/sda”表示需要分区的设备。使用 fdisk 工具,可以创建一个新的分区,将其类型设置为 "82"(Linux Swap)。 接下来,我们需要使用 mkswap 命令对新分区进行格式化: ``` sudo mkswap /dev/sda1 ``` 其中,“/dev/sda1”表示新创建的分区的设备名称。该命令将新分区格式化为 Swap 空间。 最后,我们需要使用 swapon 命令来启用这个新的 Swap 空间: ``` sudo swapon /dev/sda1 ``` 四、永久性激活 Swap 空间 在重启系统后,系统忽略先前创建的 Swap 空间。因此,我们需要在配置文件中添加新的 Swap 分区信息,以确保系统重启后仍能使用它。 1. 对于创建 Swap 分区的方法: 需要编辑 /etc/fstab 文件: ``` sudo nano /etc/fstab ``` 在文件的末尾添加一行类似于下面的代码: ``` /dev/sda1 swap swap defaults 0 0 ``` 其中,“/dev/sda1”表示新创建的分区的设备名,后面的 “swap swap defaults” 是 Swap 分区的参数。最后两个数字是文件系统检查的顺序,一般填写 0 即可。 保存文件,然后运行下面的命令确保新的 Swap 分区已正确添加到 fstab 文件中: ``` sudo mount -a ``` 2. 对于创建 Swap 文件的方法: 需要编辑 /etc/fstab 文件: ``` sudo nano /etc/fstab ``` 在文件的末尾添加一行类似于下面的代码: ``` /swapfile none swap sw 0 0 ``` 其中,“/swapfile”表示新创建的 Swap 文件的路径,后面的 “none swap sw” 是 Swap 文件的参数。最后两个数字是文件系统检查的顺序,一般填写 0 即可。 保存文件,然后运行下面的命令确保新的 Swap 文件已正确添加到 fstab 文件中: ``` sudo mount -a ``` 至此,我们已经完成了在 Linux 系统中增加 Swap 空间的详细过程。 ### 回答3: Swap空间Linux操作系统中一种虚拟内存的实现方式,它可以将运行中进程的数据暂时写入硬盘,从而释放出物理内存。然而,在某些情况下,Linux系统可能出现物理内存不足的情况,需要通过增加Swap空间来解决这个问题。下面我们来看一下如何增加Swap空间。 第一步:了解系统当前的Swap状况。通过以下命令可以查看系统当前的Swap大小和使用情况。 ```shell $ swapon -s ``` 第二步:创建Swap文件。可以通过以下命令创建一个大小为8GB的Swap文件。 ```shell $ sudo fallocate -l 8G /swapfile ``` 第三步:将文件格式化为Swap文件系统。 ```shell $ sudo mkswap /swapfile ``` 第四步:启用Swap文件。 ```shell $ sudo swapon /swapfile ``` 第五步:确认Swap文件已启用。 ```shell $ swapon -s ``` 第六步:设置Swap文件在系统启动时自动启用。将下面一行加入到/etc/fstab文件中。 ```shell /swapfile swap swap defaults 0 0 ``` 至此,已经成功增加了Swap空间。需要注意的是,Swap空间的大小应该根据系统的实际需求进行调整。同时,Swap空间使用过多也影响系统性能,因此应该尽量避免过度使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值