Linux - 探秘 Linux 的 /proc/sys/vm 常见核心配置

文章目录

  • Pre
  • Linux 的 /proc/sys/vm 简述
  • 什么是 /proc/sys/vm?
  • 主要的配置文件及其用途
  • 参数调整对系统的影响
      • dirty_background_ratio 和 dirty_ratio
      • swappiness
      • overcommit_memory 和 overcommit_ratio
      • min_free_kbytes
  • 实例与使用建议
    • 调整 swappiness
    • 设置 min_free_kbytes
    • 设置 overcommit_memory
    • 总结

在这里插入图片描述


Pre

Linux - 记一次某Java程序启动报错(申请内存失败)


Linux 的 /proc/sys/vm 简述

在 Linux 操作系统中,内核管理着许多复杂的任务,其中包括内存管理。作为用户和管理员,我们可以通过配置内核参数来优化系统性能。而 /proc/sys/vm 目录正是提供了这样的接口。


什么是 /proc/sys/vm?

/proc/sys/vm 是 Linux 系统中的一个虚拟目录,属于 /proc 文件系统的一部分。/proc 文件系统提供了一种与内核交互的方式,其中的许多文件允许我们查看和调整内核的行为。/proc/sys/vm 目录专门用于内核的虚拟内存(Virtual Memory)管理相关的参数设置。


主要的配置文件及其用途

/proc/sys/vm 目录下,有多个文件,每个文件对应一个特定的内存管理参数。以下是一些常见且重要的配置文件及其用途:

  1. dirty_background_ratiodirty_ratio
    • dirty_background_ratio:定义了后台进程开始将脏数据(未写入磁盘的数据)写回磁盘的阈值,表示为可用内存的百分比。
    • dirty_ratio:定义了任何进程在写入新的脏数据之前,必须先将现有的脏数据写回磁盘的阈值,同样表示为可用内存的百分比。

  1. swappiness
    • swappiness:控制系统倾向于使用交换空间的程度。值范围是 0 到 100,值越高,系统越倾向于将内存中的数据换出到交换空间。

  1. overcommit_memoryovercommit_ratio
    • overcommit_memory:定义内存过度分配的策略。0 表示启用启发式过度分配,1 表示允许任何分配请求,2 表示根据 overcommit_ratio 限制分配。
    • overcommit_ratio:在 overcommit_memory 设置为 2 时使用,定义可分配内存总量的百分比。

  1. min_free_kbytes
    • min_free_kbytes:定义系统尝试保持的最小空闲内存量,以避免内存不足导致的性能问题。

参数调整对系统的影响

dirty_background_ratio 和 dirty_ratio

调节这两个参数可以影响系统的 I/O 性能。将这些值设置得较低,可以减少系统内存中脏数据的数量,从而提高数据一致性,但可能增加磁盘 I/O 操作的频率。设置得较高,可以减少磁盘 I/O 操作,但可能导致较长的写操作延迟。


swappiness

调节 swappiness 可以平衡内存和交换空间的使用。将 swappiness 设置得较低(如 10),系统会更倾向于使用物理内存,从而提高性能。将 swappiness 设置得较高(如 60),系统会更频繁地使用交换空间,可能在内存紧张时提高系统的稳定性。


overcommit_memory 和 overcommit_ratio

调整这些参数可以控制内存分配策略。启用内存过度分配可以提高系统灵活性,但可能导致 OOM(Out Of Memory)错误。限制过度分配可以提高系统稳定性,但可能会拒绝一些内存分配请求。


min_free_kbytes

设置这个参数可以确保系统有足够的空闲内存来应对突发的内存需求。过低的值可能导致性能问题,而过高的值可能浪费内存资源。


实例与使用建议

调整 swappiness

假设我们希望减少交换空间的使用,可以通过以下命令调整 swappiness:

echo 10 > /proc/sys/vm/swappiness

设置 min_free_kbytes

为了确保有足够的空闲内存,可以调整 min_free_kbytes:

echo 65536 > /proc/sys/vm/min_free_kbytes

设置 overcommit_memory

点这里


总结

/proc/sys/vm 目录提供了丰富的内存管理参数,允许用户根据具体需求优化系统性能。理解并合理配置这些参数,可以显著提高 Linux 系统的效率和稳定性。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/33037.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

移动展厅:便捷高效的展示新模式—轻空间

在现代社会,移动展厅作为一种创新的展示模式,逐渐成为各行业的重要工具。凭借其便捷高效的特点,移动展厅为企业和组织提供了全新的展示解决方案。 快速部署与灵活性 移动展厅采用气膜结构,能够在短时间内快速部署。这种高效的搭建…

【非常实验】如何在移动设备上运行 Docker?

本章就从在 DevOps 中最基本但也是最强大的工具 Docker 开始。最近,我在尝试更多Termux的可能性,于是就想着试试Docker适不适合arm架构。 我用的是天玑9000芯片,而不是高通,所以显示不出来 Qualcomm。所以我决定从在手机上运行 docker 开始,但这可能吗?让我们一起来看看吧…

什么是超级智能?

“超级智能”可以理解为将多个人的智能、机器智能以及环境智能融合在一起。这个定义强调了跨越不同领域和系统的综合与协同,以实现更强大和高效的智能能力。 多个人的智能融合指的是将多个个体的知识、经验和创造力结合起来。通过协作和信息共享,能够集思…

论文阅读--Cross-view Transformers for real-time Map-view Semantic Segmentation

一种新的2D维度的bev特征提取方案,其通过引入相机先验信息(相机内参和外参)构建了一个多视图交叉注意力机制,能够将多视图特征映射为BEV特征。 cross view attention:BEV位置编码由根据相机标定结果(内参和…

ChatGPT原理和训练【 ChatGPT是由OpenAI开发】

本人详解 作者:王文峰,参加过 CSDN 2020年度博客之星,《Java王大师王天师》 公众号:JAVA开发王大师,专注于天道酬勤的 Java 开发问题中国国学、传统文化和代码爱好者的程序人生,期待你的关注和支持!本人外号:神秘小峯 山峯 转载说明:务必注明来源(注明:作者:王文峰…

oracle 外连接(+)和left join用法

案例1: select count(1) FROM TFUNDINFO A, TFUNDTYPE B WHERE A.VC_FUNDCODEB.VC_FUNDCODE() select count(1) FROM TFUNDINFO A, TFUNDTYPE B WHERE A.VC_FUNDCODEB.VC_FUNDCODE SELECT count(1): 这表示查询将返回一个计数,count(1)是一种常见的计数…

ANR灵魂拷问:四大组件中的onCreate-onReceive方法中Thread-sleep(),会产生几个ANR-

findViewById(R.id.btn).setOnClickListener(new View.OnClickListener() { Override public void onClick(View v) { sleepTest(); } }); sleepTest方法详情 public void sleepTest(){ new Handler().postDelayed(new Runnable() { Override public void run() { Button but…

Android MVP模式 入门

View:对应于布局文件 Model:业务逻辑和实体模型 Controllor:对应于Activity 看起来的确像那么回事,但是细细的想想这个View对应于布局文件,其实能做的事情特别少,实际上关于该布局文件中的数据绑定的操…

【转型指南】从软件测试到技术多面手

★ 导言 小艺是一位毕业于985的计算机硕士,工作多年,现在某大厂从事软件测试方面的管理工作。目前在工作中游刃有余,但面对技术的飞速变化和职业发展的不确定性,还是难免焦虑,正在积极思考如何进一步提升自己&#xff…

瑞_MongoDB_MongoDB副本集

文章目录 1 MongoDB副本集-Replica Sets1.1 简介1.2 副本集的三个角色1.3 副本集架构目标1.4 副本集的创建1.4.1 创建主节点1.4.2 创建副本节点1.4.3 创建仲裁节点1.4.4 初始化配置副本集和主节点1.4.5 查看副本集的配置内容 rs.conf()1.4.6 查看副本集状态1.4.7 添加副本从节点…

AIGC时代算法工程师的面试秘籍(2024.5.27-6.9第十五式) |【三年面试五年模拟】

写在前面 【三年面试五年模拟】旨在整理&挖掘AI算法工程师在实习/校招/社招时所需的干货知识点与面试方法,力求让读者在获得心仪offer的同时,增强技术基本面。也欢迎大家提出宝贵的优化建议,一起交流学习💪 欢迎大家关注Rocky…

ROS话题通信机制实操C++

ROS话题通信机制实操C 创建ROS工程发布方(二狗子)订阅方(翠花)编辑配置文件编译并执行注意订阅的第一条数据丢失 ROS话题通信的理论查阅ROS话题通信流程理论 在ROS话题通信机制实现中,ROS master 不需要实现,且连接的建立也已经被封装了,需要…

Applied Spatial Statistics(七):Python 中的空间回归

Applied Spatial Statistics(七):Python 中的空间回归 本笔记本演示了如何使用 pysal 的 spreg 库拟合空间滞后模型和空间误差模型。 OLS空间误差模型空间滞后模型三种模型的比较探索滞后模型中的直接和间接影响 import numpy as np impor…

【html】用html写一个博物馆首页

效果图&#xff1a; 二级导航&#xff1a; 源码&#xff1a; <!DOCTYPE html> <html lang"zh"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><l…

江协科技51单片机学习- p14 调试LCD1602显示屏

前言&#xff1a; 本文是根据哔哩哔哩网站上“江协科技51单片机”视频的学习笔记&#xff0c;在这里会记录下江协科技51单片机开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了江协科技51单片机教学视频和链接中的内容。 引用&#xff1a; 51单片机入门教程-2…

RabbitMQ消息队列 安装及基本介绍

一.MQ介绍 Message Queue &#xff08;MQ&#xff09;是一种跨进程的通信机制&#xff0c;用于在系统之间进行传递消息。MQ作为消息中间件&#xff0c;可以进行异步处理请求&#xff0c;从而减少请求响应时间和解耦 1.1 应用场景 1.1.1 系统之间通过MQ进行消息通信&#xff0…

leetcode 二分查找·系统掌握 x的平方根

题目&#xff1a; 题解 这题可以使用~01~泛型查找在0~x/2的范围内查找答案。 int mySqrt(int x) {long l0,rx,mid;while(l<r){mid(lr1)>>1;if(mid*mid>x)rmid-1;else lmid;}//因为一定有答案所以不用判定是否查找失败return l;}

Docker构建多平台镜像

docker的多架构镜像构建 目前很多服务器都是基于arm架构的&#xff0c;而现在大多数的docker镜像都是基于x86架构的。一种情况就是同样的代码编译成业务包做成镜像需要部署在不同架构的服务器上&#xff0c;这个时候我们就可以使用docker的多平台构建了。 以下操作是在centos7.…

深入探索 Nuxt3 Composables:掌握目录架构与内置API的高效应用

title: 深入探索 Nuxt3 Composables&#xff1a;掌握目录架构与内置API的高效应用 date: 2024/6/23 updated: 2024/6/23 author: cmdragon excerpt: 摘要&#xff1a;“本文深入探讨了Nuxt3 Composables&#xff0c;重点介绍了其目录架构和内置API的高效应用。通过学习本文&…

pcl::PointXYZRGBA造成点云无法显示

如果pcd文件没有rgba信息&#xff0c;使用pcl::PointXYZRGBA类型打开会提示以下信息&#xff1a; Failed to find match for field rgba另外&#xff0c;显示出来的点云是黑色&#xff0c;如果使用默认背景色为黑色&#xff0c;就无法显示点云了。 如果设置其它背景色&#xf…