Linux 内存管理与 Swap 空间扩展实践

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
可观测可视化 Grafana 版,10个用户账号 1个月
简介: 该文介绍了Linux系统中`free`命令的使用,解析了其输出信息,包括物理内存(总内存、已用、空闲、缓存)和交换空间(总大小、使用和空闲)。Linux优先使用物理内存作缓存,当内存紧张时使用Swap空间。文章还提供了扩展Swap空间的步骤,并强调适度Swap使用对性能的影响,建议合理平衡物理内存和Swap的比例。

在 Linux 系统中,内存管理策略偏向于高效利用物理内存,通过缓存机制提升文件读取速度和程序响应能力。本文旨在深入解读 free 命令输出的含义,并指导如何在物理内存紧张时,通过扩大 Swap 空间来缓解压力。

解析 free -m 输出

执行 free -m 命令,我们得到以下输出:

              total       used       free     shared    buffers     cached
Mem:          7918       7865         52          0         7228        143
-/+ buffers/cache:        493       7424
Swap:         4996          0          4996
  • 总览:
  • total: 物理内存总量。
  • used: 当前已分配的物理内存。
  • free: 可供新进程使用的未分配物理内存。
  • shared: 多个进程共享的内存。
  • bufferscached: 文件系统缓存,用于提升读写效率。
  • 深入理解:
  • -/+ buffers/cache: 此行展示了从应用程序视角的内存使用情况。used 表示真正被进程消耗的物理内存,free 则包含未分配的物理内存和缓存空间。
  • Swap:
  • Swap: 交换空间总量。
  • used: 当前正在使用的交换空间量。
  • free: 可用的交换空间量。

Linux 内存管理机制

Linux 优先使用物理内存,即使应用程序已关闭,仍会保留部分物理内存作为缓存,以加速后续访问速度。当物理内存接近饱和时,Linux 将开始使用 Swap 空间,通过置换机制释放物理内存。

扩展 Swap 空间

当物理内存不足以满足需求时,可以通过以下步骤增加 Swap 空间:

  1. 创建交换文件:
  2. Bash
# 使用 dd 命令创建一个交换文件,例如 64MB 的大小
dd if=/dev/zero of=/swapfile bs=1024 count=65536
  1. 格式化交换文件:
  2. Bash
# 使用 mkswap 格式化交换文件
mkswap /swapfile
  1. 启用交换文件:
  2. Bash
# 启用交换文件
swapon /swapfile
  1. 持久化设置:
  • 修改 /etc/fstab 文件,确保重启后自动启用交换文件。
  • 添加一行:/swapfile none swap defaults 0 0

性能考量

适度使用 Swap 空间不会显著降低系统性能。然而,频繁的磁盘 I/O 操作可能会导致性能瓶颈。因此,合理规划物理内存与 Swap 空间的比例至关重要。

结论

理解 free 命令的输出有助于洞察 Linux 内存管理机制。在内存资源紧张的情况下,适当增加 Swap 空间可以有效提升系统稳定性和响应速度,但应避免过度依赖 Swap,以保持良好的系统性能。


相关文章
|
8天前
|
存储 Linux Android开发
Volatility3内存取证工具安装及入门在Linux下的安装教程
Volatility 是一个完全开源的工具,用于从内存 (RAM) 样本中提取数字工件。支持Windows,Linux,MaC,Android等多类型操作系统系统的内存取证。针对竞赛这块(CTF、技能大赛等)基本上都是用在Misc方向的取证题上面,很多没有听说过或者不会用这款工具的同学在打比赛的时候就很难受。以前很多赛项都是使用vol2.6都可以完成,但是由于操作系统更新,部分系统2.6已经不支持了,如:Win10 等镜像,而Volatility3是支持这些新版本操作系统的。
|
1天前
|
监控 Linux 数据处理
探索Linux中的`lsmem`命令:深入了解系统内存布局
`lsmem`是Linux命令,用于显示系统内存布局和大小,帮助管理员和开发者理解内存使用情况。它提供详细输出,包括内存块的大小、范围、类型和关联,支持多种格式展示,如树状图。命令参数如`-h`显示帮助,`-t`以树形展示,`--human-readable`使大小更易读。需root权限运行,常与`free`、`vmstat`等工具结合使用,用于监控和优化内存。注意不同发行版可能存在兼容性差异。
|
3天前
|
算法 Java
Java垃圾回收(Garbage Collection,GC)是Java虚拟机(JVM)的一种自动内存管理机制,用于在运行时自动回收不再使用的对象所占的内存空间
【6月更文挑战第18天】Java的GC自动回收内存,包括标记清除(产生碎片)、复制(效率低)、标记整理(兼顾连续性与效率)和分代收集(区分新生代和老年代,用不同算法优化)等策略。现代JVM通常采用分代收集,以平衡性能和内存利用率。
30 3
|
2天前
|
Java Linux PHP
【应急响应】后门攻击检测指南&Rookit&内存马&权限维持&WIN&Linux
【应急响应】后门攻击检测指南&Rookit&内存马&权限维持&WIN&Linux
|
7天前
|
安全 Linux 编译器
Linux进程——进程地址空间
Linux进程——进程地址空间
15 2
|
7天前
|
Linux Windows 虚拟化
【Linux环境搭建实战手册】:打造高效开发空间的秘籍
【Linux环境搭建实战手册】:打造高效开发空间的秘籍
|
10天前
|
算法 Linux 测试技术
Linux编程:测试-高效内存复制与随机数生成的性能
该文探讨了软件工程中的性能优化,重点关注内存复制和随机数生成。文章通过测试指出,`g_memmove`在内存复制中表现出显著优势,比简单for循环快约32倍。在随机数生成方面,`GRand`库在1000万次循环中的效率超过传统`rand()`。文中提供了测试代码和Makefile,建议在性能关键场景中使用`memcpy`、`g_memmove`以及高效的随机数生成库。
|
2天前
|
存储 安全 Unix
【内网安全】Win&Linux&内存离线读取&Hashcat破解&RDP&SSH存储提取
【内网安全】Win&Linux&内存离线读取&Hashcat破解&RDP&SSH存储提取
|
8天前
|
存储 IDE 编译器
c++primer plus 6 读书笔记 第九章 内存模型和名称空间
c++primer plus 6 读书笔记 第九章 内存模型和名称空间
|
1月前
|
算法 安全 Linux
深度解析:Linux内核内存管理机制
【4月更文挑战第30天】 在操作系统领域,内存管理是核心功能之一,尤其对于多任务操作系统来说更是如此。本文将深入探讨Linux操作系统的内核内存管理机制,包括物理内存的分配与回收、虚拟内存的映射以及页面替换算法等关键技术。通过对这些技术的详细剖析,我们不仅能够理解操作系统如何高效地利用有限的硬件资源,还能领会到系统设计中的性能与复杂度之间的权衡。