Linux 内核参数

文章目录

    • 什么是内核参数
    • 参数种类
    • 配置方式
      • 1. 编译内核时配置
      • 2. 内核启动时配置
      • 3. 内核运行时配置
      • 4. 加载内核模块时配置
      • 总结

什么是内核参数

内核参数是 Linux 系统中用于控制和调整内核行为的可配置选项。这些参数影响系统的性能、安全性和各种功能特性。

参数种类

大部分参数和某个子系统相关,需要在编译或加载时加入子系统,而且相关硬件需要存在。

在这里插入图片描述

目录主要作用典型参数示例
abi/应用程序二进制接口相关较少直接调整,通常由系统自动管理
debug/内核调试参数kernel.debug.exception-trace(控制是否记录异常跟踪信息)
dev/设备驱动相关dev.cdrom.autoeject(CDROM自动弹出控制,1=启用,0=禁用)
fs/文件系统参数fs.file-max(系统最大文件句柄数)
kernel/通用内核行为kernel.shmmax(共享内存段最大尺寸,单位字节)
net/网络协议栈参数net.ipv4.tcp_fin_timeout(TCP连接FIN_WAIT状态超时时间)
sunrpc/NFS/RPC 相关sunrpc.rpc_timeout(指定 RPC 请求的超时时间)
user/用户空间限制user.max_user_namespaces(允许创建的最大用户命名空间数量)
vm/虚拟内存管理vm.dirty_ratio(内存脏页占比阈值,超过则同步写入磁盘)

配置方式

有下面几种办法向内核传递参数以控制其行为:

  1. 编译内核时:修改内核 .config 文件,或直接修改内核源码。
  2. 内核启动时:通过命令行参数。
  3. 内核运行时:通过 /proc/sys/ 和 /sys/ 中的文件。
  4. 加载内核模块时:通过 /etc/modprobe.d/ 中的 .conf 文件,或通过 insmod/modprobe 传递参数。

下面针对不同的内核参数配置方式,分别给出示例说明:

1. 编译内核时配置

在编译内核期间,可以借助内核配置文件或者直接修改内核源代码来设置参数。

示例:设置 CONFIG_RCU_CPU_STALL_TIMEOUT 参数,该参数是内核的 RCU(Read-Copy Update)机制的超时参数,单位为秒。

操作步骤:

  • 进入内核源码目录,
  • 打开配置界面,可使用 make menuconfig 命令。
  • 找到选项对应路径:Kernel hacking >
    RCU Debugging > (21) RCU CPU stall timeout in seconds
  • 对参数进行设置
  • 保存配置后,执行编译和安装操作,即 make && make install

特点:这种配置方式会使参数成为内核的固定设置,一旦内核编译完成,参数就无法再改变,除非重新编译内核。

2. 内核启动时配置

在内核启动阶段,可以通过修改引导加载程序(如 GRUB)的命令行参数来传递参数。

示例:调整 swappiness 参数,该参数用于控制内存与交换空间的使用倾向。
操作步骤:

  • 打开 GRUB 配置文件,路径为:/etc/default/grub
  • 找到 GRUB_CMDLINE_LINUX 行,并添加参数,示例如下:GRUB_CMDLINE_LINUX=“swappiness=10”
  • 更新 GRUB 配置,执行命令:update-grub
  • 重启系统使配置生效

特点:此方式设置的参数会在每次系统启动时生效,不过若要修改参数,就需要重新编辑 GRUB 配置文件。

3. 内核运行时配置

在内核运行过程中,可以通过 /proc/sys/ 或 /sys/ 目录下的文件来动态调整参数。

示例:修改 net.ipv4.tcp_tw_recycle 参数,该参数用于控制 TCP TIME_WAIT 状态的处理。
临时修改(重启后失效):

  • 直接执行命令:echo 1 > /proc/sys/net/ipv4/tcp_tw_recycle

永久修改:

  • 编辑 sysctl 配置文件,路径为:/etc/sysctl.conf
  • 添加或修改相应行:net.ipv4.tcp_tw_recycle = 1
  • 使配置立即生效,执行命令:sysctl -p

特点:这种配置方式灵活方便,无需重启系统即可生效,但临时修改的参数在系统重启后会恢复默认值。

4. 加载内核模块时配置

在加载内核模块时,可以通过配置文件或命令行参数来传递参数。

示例:设置 loop 模块的最大设备数。

通过配置文件设置:

  • 创建或编辑模块配置文件,路径为:/etc/modprobe.d/loop.conf
  • 添加内容:options loop max_loop=64
  • 重新加载模块,执行命令:modprobe -r loop && modprobe loop

通过命令行设置:

  • 执行命令:modprobe loop max_loop=64

特点:这种配置方式只对特定的内核模块有效,并且需要确保模块加载时参数能够正确传递。

总结

配置方式生效时间持久性适用场景
编译内核内核编译时永久(除非重新编译)需要深度定制内核功能的场景
启动参数系统启动时永久(需修改 GRUB 配置)系统启动相关参数的设置
/proc/sys即时生效临时(可通过 sysctl.conf 永久化)需要动态调整参数的场景
模块配置模块加载时永久(通过配置文件)特定内核模块参数的设置

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

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

相关文章

pythonocc 拉伸特征

micromamba install -c conda-forge pythonocc-core opencascade.js安装不起来,ai用pythonocc练个手 拉伸线框 线成面 from OCC.Core.gp import gp_Pnt, gp_Dir, gp_Vec from OCC.Core.BRepBuilderAPI import BRepBuilderAPI_MakeEdge, BRepBuilderAPI_MakeWire f…

Vue.js 页面切换空白与刷新 404 问题深度解析

在使用 Vue.js 开发单页应用 (SPA) 的过程中,开发者经常会遇到两个常见问题:页面切换时出现短暂的空白屏幕,以及刷新页面时返回 404 错误。这两个问题不仅影响用户体验,还可能阻碍项目的正常上线。本文将深入探讨这两个问题的成因…

Go 语言 slice(切片) 的使用

序言 在许多开发语言中,动态数组是必不可少的一个组成部分。在实际的开发中很少会使用到数组,因为对于数组的大小大多数情况下我们是不能事先就确定好的,所以他不够灵活。动态数组通过提供自动扩容的机制,极大地提升了开发效率。这…

Qt5.14.2 链接 MySQL 8.4 遇到的问题

问题一: "Plugin caching_sha2_password could not be loaded: 找不到指定的模块。 Library path is caching_sha2_password.dll QMYSQL: Unable to connect" 解决方法: alter user root@localhost identified with mysql_native_password by root;问题二: ERR…

Docker 部署 - Crawl4AI 文档 (v0.5.x)

Docker 部署 - Crawl4AI 文档 (v0.5.x) 快速入门 🚀 拉取并运行基础版本: # 不带安全性的基本运行 docker pull unclecode/crawl4ai:basic docker run -p 11235:11235 unclecode/crawl4ai:basic# 带有 API 安全性启用的运行 docker run -p 11235:1123…

开发工具分享: Web前端编码常用的在线编译器

1.OneCompiler 工具网址:https://onecompiler.com/ OneCompiler支持60多种编程语言,在全球有超过1280万用户,让开发者可以轻易实现代码的编写、运行和共享。 OneCompiler的线上调试功能完全免费,对编程语言的覆盖也很全&#x…

Docker-配置私有仓库(Harbor)

配置私有仓库(Harbor) 一、环境准备安装 Docker 三、安装docker-compose四、准备Harbor五、配置证书六、部署配置Harbor七、配置启动服务八、定制本地仓库九、测试本地仓库 Harbor(港湾),是一个用于 存储 和 分发 Docker 镜像的企业级 Regi…

关于高并发GIS数据处理的一点经验分享

1、背景介绍 笔者过去几年在参与某个大型央企的项目开发过程中,遇到了十分棘手的难题。其与我们平常接触的项目性质完全不同。在一般的项目中,客户一般只要求我们能够通过桌面软件对原始数据进行加工处理,将各类地理信息数据加工处理成地图/场景和工作空间,然后再将工作空…

使用 DMM 测试 TDR

TDR(时域反射计)可能是实验室中上升时间最快的仪器,但您可以使用直流欧姆表测试其准确性。 TDR 测量什么 在所有高速通道中,反射都很糟糕。我们尝试设计一个通道来减少反射,这些反射都会导致符号间干扰 (…

可视化图解算法37:序列化二叉树-II

1. 题目 描述 请实现两个函数,分别用来序列化和反序列化二叉树,不对序列化之后的字符串进行约束,但要求能够根据序列化之后的字符串重新构造出一棵与原二叉树相同的树。 二叉树的序列化(Serialize)是指:把一棵二叉树按照某种遍…

【Python】Python常用数据类型详解

Python常用数据类型详解:增删改查全掌握 Python作为一门简洁高效的编程语言,其丰富的数据类型是构建程序的基础。本文将详细介绍数字、字符串、列表、元组、字典、集合这六种核心数据类型的特点及增删改查操作,并附代码示例,助你全面掌握数据操作技巧。 一、数字(Number)…

模板引用、组件基础

#### 组件基础 1. 定义和使用简单组件 - ![alt text](./img/image-2.png) vue <!-- 在App.vue里 --> <script setup>import HelloWorld from ./components/HelloWorld.vue </script> <template><HelloWorld></HelloWorld></temp…

深入探索 RKNN 模型转换之旅

在人工智能蓬勃发展的当下&#xff0c;边缘计算领域的应用愈发广泛。瑞芯微的 RKNN 技术在这一领域大放异彩&#xff0c;它能让深度学习模型在其芯片平台上高效运行。而在整个应用流程中&#xff0c;模型转换是极为关键的一环&#xff0c;今天就让我们一同深入这个神奇的 RKNN …

iframe嵌套网站的安全机制实现

背景&#xff1a; 公司内部有一套系统A部署在内网&#xff0c;这套系统嵌套了B网站&#xff08;也是内网&#xff09;&#xff0c;只有内网才能访问。现在需要将这个A系统暴露到公网。B系统的安全策略比较低&#xff0c;想快速上线并提高B系统的安全性。 通过 Nginx 代理层 设置…

青少年编程与数学 02-019 Rust 编程基础 08课题、字面量、运算符和表达式

青少年编程与数学 02-019 Rust 编程基础 08课题、字面量、运算符和表达式 一、字面量1. 字面量的分类1.1 整数字面量1.2 浮点数字面量1.3 字符字面量1.4 字符串字面量1.5 布尔字面量1.6 字节数组字面量 2. 字面量的类型推断3. 字面量的用途4. 字面量的限制字面量总结 二、运算符…

危化品安全员职业发展方向的优劣对比

以下是危化品安全员不同职业发展方向的优劣对比&#xff1a; 纵向晋升 优势 职业路径清晰&#xff1a;从危化品安全员逐步晋升为安全主管、安全经理、安全总监等管理职位&#xff0c;层级明确&#xff0c;有较为清晰的上升通道。管理能力提升&#xff1a;随着职位上升&#x…

谈AI/OT 的融合

过去的十几年间&#xff0c;工业界讨论最多的话题之一就是IT/OT 融合&#xff0c;现在&#xff0c;我们不仅要实现IT/OT 的融合&#xff0c;更要面向AI/OT 的融合。看起来不太靠谱&#xff0c;却留给我们无限的想象空间。OT 领域的专家们不要再当“九斤老太”&#xff0c;指责这…

计算机网络核心技术解析:从基础架构到应用实践

计算机网络作为现代信息社会的基石&#xff0c;承载着全球数据交换与资源共享的核心功能。本文将从网络基础架构、核心协议、分层模型到实际应用场景&#xff0c;全面解析计算机网络的核心技术&#xff0c;并结合行业最新趋势&#xff0c;为读者构建系统的知识体系。 一、计算机…

大规模数据并行排序策略(Parallel Sample Sort)

大规模数据并行排序策略 对于上亿条大型记录的并行排序&#xff0c;基于MPI的多节点环境&#xff0c;可以采用以下策略来充分利用内存和网络资源&#xff1a; 推荐算法&#xff1a;样本排序(Sample Sort) 样本排序是大规模并行排序的高效算法&#xff0c;特别适合MPI环境&am…

o.redisson.client.handler.CommandsQueue : Exception occured. Channel

1&#xff0c; 版本 <dependency><groupId>org.redisson</groupId><artifactId>redisson</artifactId><version>2.15.2</version> </dependency>2&#xff0c;问题 2025-05-12 10:46:47.436 ERROR 27780 --- [sson-netty-5-…