当前位置: 首页 > news >正文

Linux篇之OS层内核参数的调优

Linux内核参数调优

Linux 内核参数的调优和分类是一个复杂的主题,这涉及到系统性能、稳定性和安全性等多个方面。
内核参数主要可以分为以下几类:

1. 内核参数的分类

1.1 系统性能参数
这些参数影响系统的整体性能,包括 CPU 调度、内存管理和文件系统性能。

  • vm.swappiness: 决定内核在使用交换空间时的倾向性。值范围从 0 到 100,0 表示只在物理内存用尽时使用交换空间,100表示尽可能多地使用交换空间。
  • vm.dirty_ratio: 设置文件系统在内存中缓存脏数据的最大比例(以百分比表示),超过该比例时将启动数据写入磁盘的过程。
  • fs.file-max: 系统允许的最大文件描述符数量。

1.2 网络参数
这些参数控制网络协议栈的行为,如 TCP/IP 设置、连接限制等。

  • net.ipv4.ip_forward: 控制系统是否允许 IP 数据包转发。设置为 1 表示启用 IP 转发,0 表示禁用。
  • net.core.somaxconn: 设置系统可以接受的最大连接数,控制待处理的 TCP 连接队列的大小。
  • net.ipv4.tcp_keepalive_time: 设置 TCP 连接保持活动的时间间隔。

1.3 安全性参数
这些参数影响系统的安全性,包括访问控制资源限制

  • kernel.randomize_va_space: 控制地址空间布局随机化(ASLR)的程度。值为 0(关闭)、1(启用部分随机化)或 2(启用完全随机化)。
  • fs.suid_dumpable: 控制是否允许以 SUID 权限运行的程序生成 core dump 文件。值为 0(禁用)、1(启用)或 2(仅 root 用户允许)。

1.4 内存管理参数
这些参数用于控制内存分配和使用策略。

  • vm.overcommit_memory: 决定内存超额分配策略。值为 0(启用标准的内存分配策略)、1(总是允许超额分配)或 2(禁止超额分配)。
  • vm.max_map_count: 设置每个进程允许的最大内存映射区域数。

1.5 文件系统参数
这些参数影响文件系统的行为和性能。

  • fs.inotify.max_user_watches: 设置 inotify 监视器的最大数量,适用于监视大量文件的场景。
  • fs.sync: 控制文件系统同步操作的行为。

1.6. 用户进程资源限制参数

一、参数分类如下:
1. 文件描述符限制 (nofile)
用途:限制一个进程可以打开的最大文件描述符数量。
命令查看当前限制:

ulimit -n

优化方法:
提高文件描述符的限制,适用于需要同时处理大量文件或网络连接的应用。
临时调整:

ulimit -n <new_limit>

永久调整:
编辑 /etc/security/limits.conf 文件并添加:

* soft nofile 65536
* hard nofile 65536

2. 进程数限制 (nproc)
用途:限制每个用户可以创建的最大进程数。
命令查看当前限制:

ulimit -u

优化方法:
增加进程数限制,适用于需要启动大量进程的应用(如高并发服务)。
临时调整:

ulimit -u <new_limit>

永久调整:
编辑 /etc/security/limits.conf 文件并添加:

* soft nproc 65536
* hard nproc 65536

3. 虚拟内存限制 (as)
用途:限制进程可以使用的最大虚拟内存量。
命令查看当前限制:

ulimit -v

优化方法:
增加虚拟内存限制,适用于内存密集型应用。
临时调整:

ulimit -v <new_limit>

4. 核心文件大小限制 (core)
用途:限制进程生成的 core dump 文件的最大大小。
命令查看当前限制:

ulimit -c

优化方法:
启用 core dump 文件生成以便调试程序崩溃问题。
临时调整:

ulimit -c unlimited

二、配置文件调整

要永久调整 ulimit 设置,需要修改系统配置文件:

/etc/security/limits.conf

设置软限制和硬限制:

* soft nofile 65536
* hard nofile 65536
* soft nproc 65536
* hard nproc 65536

/etc/pam.d/common-session 和 /etc/pam.d/common-session-noninteractive

确保 PAM 模块加载 limits.conf 配置:

session required pam_limits.so

系统级限制

修改 /etc/sysctl.conf 来调整系统级别的限制,如文件句柄数(如果相关):

fs.file-max = 65536

2. 调优策略

调优内核参数通常需要根据系统的实际工作负载、硬件配置以及业务需求来进行。
以下是一些通用的调优策略:

确定需求:了解系统的工作负载和瓶颈,例如网络流量、文件访问模式、内存使用情况等。

测试和监控:在调整参数之前,使用性能监控工具(如 top、vmstat、iostat、netstat 等)来收集系统性能数据。

调整参数:基于需求和监控数据进行调整。可以通过 /etc/sysctl.conf 文件或 sysctl 命令来临时或永久修改内核参数。
例如:

sysctl -w net.ipv4.ip_forward=1

或编辑 /etc/sysctl.conf 文件并添加:

net.ipv4.ip_forward = 1

应用修改:对于通过 sysctl 命令修改的参数,可以使用以下命令使其生效:

sysctl -p

监控效果:调整参数后,继续监控系统的性能,确保调整带来了预期的改进。

3. 内核参数的用途示例

  • vm.swappiness: 调整此参数可以优化系统在内存压力下的行为,减少或增加交换空间的使用,以提高性能。
  • net.core.somaxconn: 在高负载的网络服务器上,增加此值可以提高系统接受的连接数,从而提升服务能力。
  • kernel.randomize_va_space: 启用地址空间布局随机化(ASLR)可以提高系统的安全性,减少潜在的安全漏洞风险。

调优内核参数是一项涉及系统调试和优化的高级操作,建议在有经验的系统管理员或运维人员的指导下进行,以避免对系统稳定性和性能造成负面影响。

4、优化思路

  • 一般优化的调整的方向都是与磁盘文件IO、网络通信、内存管理、线程数量有关。
  • 中间件系统需要开启大量的线程(跟vm.max_map_count有关)
  • 进行大量的网络通信和磁盘IO(跟ulimit有关)
  • 大量使用内存(vm.swappiness和vm.overcommit_memory有关)
    所以对于OS内核参数的调整,往往是调整与系统运行最相关的部分。

相关文章:

Linux篇之OS层内核参数的调优

Linux内核参数调优 Linux 内核参数的调优和分类是一个复杂的主题&#xff0c;这涉及到系统性能、稳定性和安全性等多个方面。 内核参数主要可以分为以下几类&#xff1a; 1. 内核参数的分类 1.1 系统性能参数 这些参数影响系统的整体性能&#xff0c;包括 CPU 调度、内存管理…...

DLMS/COSEM中的信息安全:安全密钥(上)

加密密钥是一个参数,和加密算法一起使用,加密算法决定了这样一种方式,带有密钥的实体,可以重现和进行逆操作,而没有密钥则不能。对DLMS/COSEM的用途,操作的例子包含: ——明文转换成密文; ——密文转换成明文; ——计算和验证认证码(MAC); …...

Taro基础知识学习

一、安装及使用 CLI工具安装 需要使用 npm 或者 yarn 全局安装 tarojs/cli //使用 npm 安装 CLI npm install -g tarojs/cli//使用 yarn 安装 CLI yarn global add tarojs/cli//使用 cnpm 安装 CLI cnpm install -g tarojs/cli//使用npm info查看Taro的版本信息 npm info ta…...

浮点型在内存中的存储

前言 在上一期中我们讲到了有关于整型在内存中的存储&#xff0c;新朋友可以点开&#x1f517;了解一下&#xff0c;那这一期中我们将讲到的浮点数是不是存储方式和整型一致呢&#xff1f; 一、浮点数在内存中的存储 为了探究这个问题我们先来看一段代码 #include<stdio…...

微信小程序之behaviors

目录 概括 Demo演示 进阶演示 1. 若具有同名的属性或方法 2. 若有同名的数据 3. 若有同名的生命周期函数 应用场景 最后 属性&方法 组件中使用 代码示例&#xff1a; 同名字段的覆盖和组合规则 概括 一句话总结: behaviors是用于组件间代码共享的特性, 类似一…...

java.lang.NoClassDefFoundError: ch/qos/logback/core/util/StatusPrinter2

1、问题 SpringBoot升级报错&#xff1a; Exception in thread "main" java.lang.NoClassDefFoundError: ch/qos/logback/core/util/StatusPrinter2 类找不到&#xff1a; Caused by: java.lang.ClassNotFoundException: ch.qos.logback.core.util.StatusPrinter22、…...

WebRTC ICE配置类型

ICE&#xff08;Interactive Connectivity Establishment&#xff09;是一个用于建立WebRTC和其他实时通信会话中的点对点连接的框架。ICE协议通过尝试多个候选地址&#xff08;候选者&#xff09;来寻找最佳路径来连接两个对等端。ICE有多种配置类型&#xff0c;包括标准ICE、…...

制造知识普及(八)--企业内部物料编码(IPN)与制造商物料编码(MPN)

1、什么是物料编码 通常情况下&#xff0c;物料编码分两种&#xff0c;一种是企业内部物料编码&#xff08;IPN&#xff09;&#xff0c;由于在企业研发制造和生产中确认物料唯一性的&#xff0c;用于承载设计参数要求和技术要求。另一种是制造商物料编码&#xff08;MPN&…...

大模型学习笔记 - InstructGPT中的微调与对齐

LLM 微调 之 InstructGPT中的微调与对齐 LLM 微调 之 InstructGPT中的微调与对齐 技术概览 InstructGPT中的微调与对齐 大体步骤标注数据量模型训练 1. SFT 是如何训练的2. Reward Model是如何训练的3. RLHF 是如何训练的具体讲解RLHF 的loss 函数 模型效果参考链接&#xf…...

Unity近似的Transform实现

Unity近似的Transform实现 #include <stdint.h> #include<iomanip> #include <sstream>#include "Transform.h"//Transform::Transform(const Transform& a){ // LOGW("xww 2"); //}Transform::Transform(glm::vec3 localPositio…...

openvidu私有化部署

openvidu私有化部署 简介 OpenVidu 是一个允许您实施实时应用程序的平台。您可以从头开始构建全新的 OpenVidu 应用程序&#xff0c;但将 OpenVidu 集成到您现有的应用程序中也非常容易。 OpenVidu 基于 WebRTC 技术&#xff0c;允许开发您可以想象的任何类型的用例&#xf…...

基于深度学习的视频伪造检测

基于深度学习的视频伪造检测旨在利用深度学习技术来检测和识别伪造的视频内容。伪造视频&#xff0c;尤其是深伪&#xff08;Deepfake&#xff09;视频&#xff0c;近年来随着生成对抗网络&#xff08;GAN&#xff09;技术的发展&#xff0c;变得越来越逼真和难以识别。这对个人…...

python机器人编程——开发一个pymatlab工具箱(上)

目录 一、前言二、实现过程2.1 封装属性2.2 数据流化显示2.3 输入数据的适应性 三、核心代码说明3.1 设置缓存3.2 随机信号3.3 根据设置绘图 五、总结四、源码PS.扩展阅读ps1.六自由度机器人相关文章资源ps2.四轴机器相关文章资源ps3.移动小车相关文章资源 一、前言 我们知道m…...

输入类控件

目录 1.Line Edit 代码示例: 录入个人信息 代码示例: 使用正则表达式验证输入框的数据 代码示例: 验证两次输入的密码一致 代码示例: 切换显示密码 2.Text Edit 代码示例: 获取多行输入框的内容 代码示例: 验证输入框的各种信号 3.Combo Box 代码示例: 使用下拉框模拟…...

C++20中的模块

大多数C项目使用多个翻译单元(translation units)&#xff0c;因此它们需要在这些单元之间共享声明和定义(share declarations and definitions)。headers的使用在这方面非常突出。模块(module)是一种language feature&#xff0c;用于在翻译单元之间共享声明和定义。它们是某些…...

Selenium与流行框架集成:pytest与Allure报告

Selenium与流行框架集成&#xff1a;pytest与Allure报告 在现代软件开发中&#xff0c;自动化测试是确保产品质量和快速迭代的关键。Selenium作为业界领先的Web自动化测试工具&#xff0c;其灵活性和强大的功能受到广泛认可。为了进一步提升测试效率和报告质量&#xff0c;本文…...

日撸Java三百行(day17:链队列)

目录 一、队列基础知识 1.队列的概念 2.队列的实现 二、代码实现 1.链队列创建 2.链队列遍历 3.入队 4.出队 5.数据测试 6.完整的程序代码 总结 一、队列基础知识 1.队列的概念 今天我们继续学习另一个常见的数据结构——队列。和栈一样&#xff0c;队列也是一种操…...

Android摄像头采集选Camera1还是Camera2?

Camera1还是Camera2&#xff1f; 好多开发者纠结&#xff0c;Android平台采集摄像头&#xff0c;到底是用Camera1还是Camera2&#xff1f;实际上&#xff0c;Camera1和Camera2分别对应相机API1和相机API2。Android 5.0开始&#xff0c;已经弃用了Camera API1&#xff0c;新平台…...

零基础5分钟上手亚马逊云科技AWS核心云开发/云架构 - 创建高可用数据库集群

简介&#xff1a; 欢迎来到小李哥全新亚马逊云科技AWS云计算知识学习系列&#xff0c;适用于任何无云计算或者亚马逊云科技技术背景的开发者&#xff0c;让大家零基础5分钟通过这篇文章就能完全学会亚马逊云科技一个经典的服务开发架构方案。 我将每天介绍一个基于亚马逊云科…...

力扣315.计算右侧小于当前元素的个数

力扣315.计算右侧小于当前元素的个数 离散化 树状数组 const int N 100010;int tr[N],n;class Solution {public:vector<int> countSmaller(vector<int>& nums) {n nums.size();vector<int> tmp(nums);vector<int> res(n);memset(tr,0,sizeo…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望

文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例&#xff1a;使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例&#xff1a;使用OpenAI GPT-3进…...

【入坑系列】TiDB 强制索引在不同库下不生效问题

文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

【解密LSTM、GRU如何解决传统RNN梯度消失问题】

解密LSTM与GRU&#xff1a;如何让RNN变得更聪明&#xff1f; 在深度学习的世界里&#xff0c;循环神经网络&#xff08;RNN&#xff09;以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而&#xff0c;传统RNN存在的一个严重问题——梯度消失&#…...

linux 下常用变更-8

1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行&#xff0c;YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID&#xff1a; YW3…...

C++ 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

自然语言处理——循环神经网络

自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元&#xff08;GRU&#xff09;长短期记忆神经网络&#xff08;LSTM&#xff09…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2

每日一言 今天的每一份坚持&#xff0c;都是在为未来积攒底气。 案例&#xff1a;OLED显示一个A 这边观察到一个点&#xff0c;怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 &#xff1a; 如果代码里信号切换太快&#xff08;比如 SDA 刚变&#xff0c;SCL 立刻变&#…...

Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信

文章目录 Linux C语言网络编程详细入门教程&#xff1a;如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket&#xff08;服务端和客户端都要&#xff09;2. 绑定本地地址和端口&#x…...

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要&#xff1a; 近期&#xff0c;在使用较新版本的OpenSSH客户端连接老旧SSH服务器时&#xff0c;会遇到 "no matching key exchange method found"​, "n…...

莫兰迪高级灰总结计划简约商务通用PPT模版

莫兰迪高级灰总结计划简约商务通用PPT模版&#xff0c;莫兰迪调色板清新简约工作汇报PPT模版&#xff0c;莫兰迪时尚风极简设计PPT模版&#xff0c;大学生毕业论文答辩PPT模版&#xff0c;莫兰迪配色总结计划简约商务通用PPT模版&#xff0c;莫兰迪商务汇报PPT模版&#xff0c;…...