首页 > 系统相关 >Linux内存不够了?看看如何开启虚拟内存增加内存使用量

Linux内存不够了?看看如何开启虚拟内存增加内存使用量

时间:2024-07-02 08:57:37浏览次数:1  
标签:opt 交换 内存 交换文件 Linux 虚拟内存 swap

1、为什么要使用虚拟内存

当我们没有多余的钱去购买大内存的云服务器时,但是当前服务器里面的软件和程序运行的比较多导致内存不够用了。这个时候可以通过增加虚拟内存来扩大内存容量。但是在启用虚拟内存时,需要仔细考虑系统的实际需求和硬件配置,以及权衡虚拟内存的优缺点,考虑好利弊后在开启虚拟内存。

2、什么是虚拟内存

虚拟内存是一种将部分物理内存扩展到磁盘空间的技术,以提供更大的内存空间和更好的系统性能。虚拟内存允许系统在物理内存不足时,将不常用的内存页转移到磁盘上,从而释放物理内存供活跃的进程使用。

使用虚拟内存的优点:

  • 增加可用内存: 虚拟内存允许系统在物理内存不足时将部分内存数据存储到磁盘上,从而扩展了系统可用的内存空间。这样,即使系统的物理内存已经用尽,

    仍然可以继续运行应用程序,避免了因内存不足而导致的系统崩溃或应用程序崩溃。

  • 提高系统稳定性:虚拟内存可以防止系统因内存不足而崩溃。当物理内存不足时,Linux会将部分不活跃的内存页交换到交换空间中,从而释放物理内存供活跃的进程使用,提高了系统的稳定性和可靠性。

  • 支持大型程序运行: 对于需要大量内存的应用程序,如数据库服务器或大型数据处理应用,虚拟内存可以提供额外的内存空间,使其能够在物理内存有限的情况下继续运行。

  • 灵活管理内存:虚拟内存允许系统管理员根据实际需求动态调整交换空间的大小。通过调整交换空间的大小,可以根据系统的负载情况和应用程序的内存需求来优化系统的性能和稳定性。

  • 提高系统响应速度:虚拟内存可以减少因内存不足而导致的系统响应速度下降的情况。当系统使用虚拟内存时,虽然会增加磁盘 I/O 操作,但可以保持系统运行,并在内存资源再次可用时恢复正常操作。

使用虚拟内存的弊端:

  • 性能影响: 虚拟内存的使用可能会导致系统性能下降。当系统内存不足时,操作系统会将部分内存数据交换到磁盘上的交换空间中,这涉及到频繁的磁盘读写操作,会增加系统的响应时间和延迟。
  • 磁盘空间消耗: 交换空间占用磁盘空间,可能会导致磁盘空间不足的问题,特别是在磁盘本身就比较小的情况下。
  • SSD 磨损: 如果交换空间设置在 SSD 上,频繁的写入操作可能会加速 SSD 的磨损,缩短其寿命。
  • 应用程序性能下降:当系统使用虚拟内存时,应用程序可能会因为频繁的磁盘读写而性能下降,尤其是对于需要大量内存的应用程序。
  • 系统稳定性: 如果交换空间设置不当或者交换空间不足,可能会导致系统稳定性问题,如系统死锁或应用程序崩溃。

总的来说,虚拟内存的使用可以提高系统的稳定性、可用性和性能,使系统能够更好地应对变化的工作负载和内存需求。但是在启用虚拟内存时,需要仔细考虑系统的实际需求和硬件配置,以及权衡虚拟内存的优缺点。在某些情况下,可能需要调整交换空间的大小或者考虑其他内存管理策略来优化系统性能。

3、物理内存

物理内存是用于存储正在运行的程序和数据的地方,读写速度低于CPU,但是高于磁盘。当应用程序需要使用内存时,它会向操作系统请求内存分配。操作系统会将需要的数据载入物理内存中,并管理内存的分配和释放。当物理内存不足时,系统将部分数据从物理内存交换到磁盘上的交换区(Swap),这样可以释放物理内存,以便给其他进程使用。将数据交换到Swap会导致性能下降。因此系统管理员和开发人员最好要合理规划和管理物理内存,确保系统具有足够的内存来运行应用程序和提供良好的性能。

4、Swap介绍

Swap是Linux系统中的一种虚拟内存技术,用于辅助物理内存(RAM)的管理。当物理内存不足时,Swap提供了一种将部分内存内容交换到硬盘上的方法,以释放物理内存供其他进程使用。当物理内存不够的时候,会把不活跃的进程暂时存储到交换区。当需要这条进程时就从交换区重新加载到内存,否则它不会主动交换到物理内存中。swap有三种交换方式:交换分区(Swap Partition)、交换文件(Swap File)、交换空间(Swap Space)。

swap相关使用命令:

显示当前启用的交换分区和交换文件的摘要信息,包括路径、大小和使用情况:

swapon -s

swapon -show

启用指定的交换分区或交换文件:

swapon /opt/swapfile     # 启用交换文件

swapon /dev/vda1         # 启用交换分区

创建交换分区或交换文件:

mkswap swapdata

关闭正在使用的交换分区或交换文件

swapoff /opt/swapfile     # 关闭交换文件

swapoff /dev/vda1         # 关闭交换分区

多个swap设置优先级, 优先级相同将同时使用, 在0到32767中间选一个数字

swapon -p 0 /opt/swapfile   # 交换文件路径

5、虚拟内存设置

通过设置交换文件设置虚拟内存。

5.1、查看可用磁盘空间
df -h
5.2、 使用 dd 工具来创建一个交换文件
dd if=/dev/zero of=/opt/swapdata bs=1024 count=16777216

参数说明:

  • dddd 用来创建交换文件。
  • if=/dev/zeroif 参数表示输入文件(input file)的路径。/dev/zero`是一个特殊设备文件,它会提供一系列的零字节。
  • of=/opt/swapdataof参数表示输出文件(output file)的路径。指定了交换文件的路径为/opt/swapdata。选择其他路径和文件名。
  • bs=1024bs参数表示块大小(block size),指定 dd 命令一次传输的数据块大小为1024字节(即1KB)。根据需求进行调整。
  • count=16777216:创建一个16GB大小的交换文件。与 bs 参数相乘,即16GB = 1024 * 1024 * 16 可以根据需要调整此参数来大小

创建成功在/opt目录生成一个swapdata文件

5.3、 设置交换文件的权限为只有 root 用户能读写:
chown root:root /opt/swapdata # 交换文件的所有者和所属组

chmod 600 /opt/swapdata   #只有root用户能读写

5.4、 创建文件类型设置为交换文件
mkswap /opt/swapdata # 交换文件路径
5.5、激活文件:指定的交换文件
swapon /opt/swapdata

激活成功后就可以使用 swapon -s 查看交换文件的摘要信息了

5.6、机器重启的时候自动挂载Swap
# 进入/etc/fstab文件进行修改。
vim /etc/fstab

#末尾追加
/opt/swapdata swap swap defaults 0 0

5.7、配置swap分区的使用机制

对于使用多大比例内存之后开始使用swap,在系统配置文件中可以通过调整参数进行修改。查看比例信息:

cat /proc/sys/vm/swappiness

该参数范围为0-100。0 就是最大限度使用内存,尽量不使用swap。100是积极使用swap。越高越会使用swap分区。重新配置值:

sysctl vm.swappiness=30

如需永久配置:

echo "vm.swappiness = 30" >> /etc/sysctl.conf
5.8、 查看使用情况

通过 free -h 命令查看内存使用情况。

6、关闭虚拟内存

关闭 swap 文件

swapoff /opt/swapdata

删除swap分区文件

rm -rf /opt/swapdata

删除fstab文件里追加的swap分区开机自动挂载配置内容

/opt/swapdata swap swap defaults 0 0

标签:opt,交换,内存,交换文件,Linux,虚拟内存,swap
From: https://www.cnblogs.com/sowler/p/18277877

相关文章

  • 操作系统——内存
    目录1.内存管理(MemoryManagement)1.1存储层次结构(StorageHierarchy)1.2内存管理器(MemoryManager)1.3没有内存抽象1.3.1没有内存抽象的单道程序1.3.2没有内存抽象的多道程序1.4内存抽象:地址空间(AddressSpace)1.4.1概念(notion)1.4.2动态重定位(Dynamic......
  • 万字长文|下一代系统内存数据加速接口SDXI解读
    本文内容分为5章节,总计10535字,内容较多,建议先收藏!1.SDXI技术产生的背景2.SDXI相比DMA的优势3.SDXI实现原理与架构  3.1描述符环原理解读  3.2上下文管理介绍  3.3AKey与RKey解读  3.4错误日志和状态管理  3.5跨Function访问4.SDXI与CXL协同......
  • 玄机-第一章 应急响应-Linux日志分析
    玄机-第一章应急响应-Linux日志分析账号root密码linuxrzsshroot@IP1.有多少IP在爆破主机ssh的root帐号,如果有多个使用","分割2.ssh爆破成功登陆的IP是多少,如果有多个使用","分割3.爆破用户名字典是什么?如果有多个使用","分割4.登陆成功的IP共爆破了多少次5.黑客登陆主机......
  • 【嵌入式Linux】<总览> 多线程(更新中)
    文章目录前言一、多线程1.概述2.创建线程3.线程退出4.线程回收5.线程分离6.线程取消7.线程的ID比较二、线程同步1.概述2.互斥锁3.死锁4.读写锁5.条件变量6.信号量三、线程池前言记录学习多线程的知识重点与难点,若涉及版权问题请联系本人删除!......
  • linux高级编程(线程)(1)
    虚拟地址:线程:        概念:线程是轻量级进程,一般是一个进程中的多个任务。        进程是系统中最小的资源分配单位。(竞争计算机资源的最小单位)(进程能分配硬件资源,线程不行)线程是系统中最小的执行单位。   特征:   1、共享资源(除了栈区都共享)-->......
  • Linux基本技巧
    linux查看cpu占用率的方法查看单核CPU占用率,终端上输入“top”。查看多核CPU占用率,终端上输入“top”,进入界面再输入“1”。Linuxtop命令里面%CPU和cpu(s)的差别Cpu(s):所有用户进程占用整个cpu的平均值,由于每个核心占用的百分比不同,所以按平均值来算比较有参考意义。%CPU......
  • 谈谈JVM内存区域的划分,哪些区域可能发生OutOfMemoryError?(jvm)
    Java虚拟机(JVM)在运行时将内存划分为多个区域,以便有效管理和分配内存资源。这些内存区域包括堆(Heap)、方法区(MethodArea)、程序计数器(ProgramCounterRegister)、虚拟机栈(JVMStack)和本地方法栈(NativeMethodStack)。每个区域的作用和管理方式有所不同,某些区域在特定情况下可能......
  • linux yum的安装与管理
    (学生填写)(一)yum配置本地源在使用yum安装之前是必须配置yum源的,在不能联网的情况下,可使用DVD光盘或ISO文件做本地yum源.建立光盘文件存放目录(/mnt/dvd)和创建光盘挂载点,如图1所示。 图1挂载光盘成功2.利用挂载光盘命令,已将光盘正常挂载好,如图2......
  • linux网络配置与管理
    1.Setup配置(centos7之后使用nmtui)首先,查看网卡的信息,是否有IP地址。如图所示:图1查看网卡信息进入set设置,在终端输入“setup”,点击“enter”键。如图所示:图2进入setup设置点击“enter”后,就进入了setup配置界面了,选择“网络配置”。如图所示:图3......
  • Linux 中 uid、gid、euid、egid、groups 之间的关系
    导航1权限匹配流程2五种身份变化3有效用户/组4特权对Shell脚本无效5Sudo与SUID/SGID的优先级6SUID、SGID、Sticky各自的功能Linux最优秀的地方之一,就在于他的多人多工环境。而为了让各个使用者具有较保密的档案资料,因此档案的权限管理就变的很重要了。Linu......