首页 > 系统相关 >Linux系统内存使用优化技巧

Linux系统内存使用优化技巧

时间:2025-01-15 16:00:02浏览次数:3  
标签:大页 缓存 技巧 Linux 场景 Swap 使用 内存

目录

交换空间(Swap)的优化

禁用 Swap

降低 swappiness 值

减少动态内存分配

使用大页(Hugepage)

优化数据访问,使用缓存和缓冲区

使用堆栈缓存

利用外部缓存组件

使用 cgroups 限制进程内存使用

创建 cgroup

限制内存使用

调整 OOM Score

调整进程的 OOM 分数

终止未使用的服务和程序

列出所有正在运行的服务

停止并禁用不需要的服务

始终使用最新的软件

定期更新软件

清理缓存

清理页面缓存

清理目录项和inode缓存


交换空间(Swap)的优化

禁用 Swap
sudo swapoff -a

作用:这个命令会禁用系统中所有的 Swap 空间。swapoff 命令用于关闭 Swap 空间,-a 参数表示关闭 /etc/fstab 文件中配置的所有 Swap 空间。

使用场景:在高性能应用场景下,比如数据库服务器或高性能计算服务器,禁用 Swap 可以减少磁盘 I/O,提高系统性能。

降低 swappiness
echo "vm.swappiness=10" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

作用:vm.swappiness 参数控制系统使用 Swap 的倾向。值越低,系统越倾向于使用物理内存而不是 Swap。默认值通常是 60,将其设置为 10 可以显著减少 Swap 的使用。

使用场景:适用于内存充足的系统,减少 Swap 的使用可以提高内存访问速度,提升系统性能。

减少动态内存分配

使用大页(Hugepage)
cat /proc/meminfo | grep HugePages

作用:查看系统当前的 HugePages 配置情况。/proc/meminfo 文件包含了系统的内存信息,grep HugePages 用于过滤出与 HugePages 相关的信息。

使用场景:在配置大页之前,需要先查看当前的配置情况。

vm.nr_hugepages = 2048

作用:在 /etc/sysctl.conf 文件中设置 vm.nr_hugepages 参数,指定系统分配的大页数量。假设应用需要 4GB 大页内存,大页大小为 2MB,则需要 2048 个大页。

使用场景:适用于内存密集型应用,如数据库服务器,使用大页可以减少页表项的数量,提高内存访问速度。

sudo sysctl -p

作用:使 /etc/sysctl.conf 文件中的配置生效。sysctl 命令用于运行时调整内核参数,-p 参数表示从 /etc/sysctl.conf 文件中读取配置并应用。

使用场景:每次修改 /etc/sysctl.conf 文件后,都需要执行这个命令来使配置生效。

export HUGETLB_MORECORE=yes

作用:设置环境变量 HUGETLB_MORECOREyes,使应用能够使用大页内存。这个环境变量通常在应用的启动脚本中设置。

使用场景:适用于需要使用大页内存的应用,如 Oracle 数据库。

优化数据访问,使用缓存和缓冲区

使用堆栈缓存

作用:使用堆栈来明确声明内存空间,以存储需要缓存的数据。堆栈缓存可以减少动态内存分配的开销。

使用场景:适用于需要频繁分配和释放小块内存的应用。

利用外部缓存组件

作用:利用外部缓存组件(如 Redis)来优化数据的访问,减少对数据库的频繁访问。Redis 是一个高性能的键值存储系统,可以作为缓存层,提高数据访问速度。

使用场景:适用于需要频繁读取数据的应用,如 Web 应用、API 服务等。

使用 cgroups 限制进程内存使用

创建 cgroup
sudo cgcreate -g memory:/mygroup

作用:创建一个名为 mygroup 的 cgroup,用于管理内存。cgcreate 命令用于创建 cgroup,-g memory:/mygroup 参数指定创建一个内存类型的 cgroup。

使用场景:适用于需要限制特定进程或组内进程的内存使用情况。

限制内存使用
echo "100M" > /sys/fs/cgroup/memory/mygroup/memory.limit_in_bytes

作用:设置 mygroup cgroup 的内存使用限制为 100MB。/sys/fs/cgroup/memory/mygroup/memory.limit_in_bytes 文件用于设置内存限制。

使用场景:适用于需要确保关键应用的内存需求,防止其他进程占用过多内存。

调整 OOM Score

调整进程的 OOM 分数
echo -17 > /proc/1234/oom_adj

作用:调整进程 ID 为 1234 的 OOM 分数为 -17。oom_adj 文件用于调整进程的 OOM 分数,值越低,进程越不容易被 OOM 杀死。

使用场景:适用于需要保护关键进程不被系统自动杀死的情况。

终止未使用的服务和程序

列出所有正在运行的服务
sudo systemctl list-units --type=service --state=running

作用:列出所有正在运行的服务。systemctl 命令用于管理系统服务,list-units --type=service --state=running 参数用于列出所有正在运行的服务。

使用场景:在优化系统性能时,需要先列出所有正在运行的服务,以便决定哪些服务可以停止。

停止并禁用不需要的服务
sudo systemctl stop service_name
sudo systemctl disable service_name

作用:停止并禁用指定的服务。stop 命令用于停止服务,disable 命令用于禁用服务,防止服务在系统启动时自动启动。

使用场景:适用于需要减少不必要的内存占用,提高系统性能。

始终使用最新的软件

定期更新软件

作用:定期更新软件可以修复已知的错误和漏洞,提高系统的稳定性和性能。

使用场景:适用于所有系统,定期更新软件是系统维护的基本要求。

清理缓存

清理页面缓存
echo 1 > /proc/sys/vm/drop_caches

作用:清理页面缓存,释放内存。/proc/sys/vm/drop_caches 文件用于控制缓存的清理,值为 1 表示清理页面缓存。

使用场景:适用于需要临时释放内存,提高系统性能的情况。

清理目录项和inode缓存
echo 2 > /proc/sys/vm/drop_caches

作用:清理目录项和 inode 缓存。值为 2 表示清理目录项和 inode 缓存。

使用场景:适用于需要临时释放内存,提高系统性能的情况。

标签:大页,缓存,技巧,Linux,场景,Swap,使用,内存
From: https://blog.csdn.net/m0_67906358/article/details/145162277

相关文章

  • Linux 文件乱码问题及基于 inode 的排查与解决
    Linux文件乱码问题及基于inode的排查与解决在Linux系统中,文件乱码通常是由于显示或读取时使用的字符编码与文件实际编码不一致导致的。本文将详细介绍Linux文件乱码的常见原因、解决方法,包括压缩包解压后的乱码问题,并结合inode的概念,讲解如何利用inode进行问题排查和......
  • 【Linux】在虚拟机中安装
      ......
  • 【Linux】信号的艺术:深入理解 Linux 进程信号
    ......
  • 3.4 Pandas 数据合并和连接:掌握数据整合的核心技巧
    3.4Pandas数据合并和连接:掌握数据整合的核心技巧在实际的数据分析工作中,数据往往分散在多个数据源中。为了进行全面的分析,我们需要将这些数据合并或连接在一起。Pandas提供了强大的工具来实现数据的合并和连接操作。本文将详细介绍如何使用Pandas进行数据合并和连接,帮......
  • SQL 性能优化技巧
    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在where及orderby涉及的列上建立索引。2.应尽量避免在where子句中对字段进行null值判断,创建表时NULL是默认值,但大多数时候应该使用NOTNULL,或者使用一个特殊的值,如0,-1作为默认值。3.应尽量避免在where子句中使......
  • GIMP 3.0.0 (Linux, macOS, Windows) - 免费开源图像编辑器
    GIMP3.0.0(Linux,macOS,Windows)-免费开源图像编辑器GNUImageManipulationProgram(GIMP)请访问原文链接:https://sysin.org/blog/gimp/查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgGIMPGNUIMAGEMANIPULATIONPROGRAM免费且开源的图像编辑器GIMP......
  • digiKam 8.5 (Linux, macOS, Windows) - 开源照片管理软件
    digiKam8.5(Linux,macOS,Windows)-开源照片管理软件ProfessionalPhotoManagementwiththePowerofOpenSource请访问原文链接:https://sysin.org/blog/digikam/查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgdigiKam开源驱动的专业照片管理什么是dig......
  • 【 ATU NXP-MCX_A系列 】马达调适技巧与流程 ( 下 )
    1.概述本文章内容为“MCX_ABLDC马达调适流程_上”的后续,说明PID控制原理与内容,按照章节流程,依序调适马达FOC控制算法角度环,电流环,速度环,也会介绍弱磁控制的原理,请根据本文流程完成马达调适。2.   软硬体需求详细硬体与软体建立请参考大大通“ MCXA153EVB马......
  • 高级QT Widgets图形绘制技巧
    高级QTWidgets图形绘制技巧补天云火鸟博客创作软件补天云网站1Qt_Widgets基础与图形系统1.1Qt_Widgets概述1.1.1Qt_Widgets概述Qt_Widgets概述QtWidgets概述引言在软件开发领域,Qt框架因其跨平台性、强大的图形界面设计能力以及丰富的类库支持而备受开发者青睐......
  • 如何理解C语言之动态内存管理
     目录1.为什么要有动态内存分配2.malloc 和free2.1malloc2.2free3.calloc和realloc3.1calloc3.2realloc4.常⻅的动态内存的错误4.1对NULL指针的解引⽤操作4.2对动态开辟空间的越界访问 4.3对⾮动态开辟内存使⽤free释放4.4使⽤free释放⼀块动态......