CPU-IO-网络-内核参数的调优

CPU-IO-网络-内核参数的调优

  • CPU-IO-网络-内核参数的调优
    • 一、CPU 资源调优
      • 1.1 调整进程优先级(nice 值)
      • 1.2 设置 CPU 亲和力(taskset)
      • 1.3 cpu命令描述
      • 1.4 使用 vmstat 分析系统瓶颈
    • 二、磁盘 I/O 调优
      • 2.1 ulimit 资源限制
      • 2.2 测试磁盘速度
    • 三、内核参数调优
      • 3.1 防御 SYN 洪水攻击
      • 3.2 关键参数说明
    • 四、总结与建议

CPU-IO-网络-内核参数的调优

一、CPU 资源调优

1.1 调整进程优先级(nice 值)

  • 作用:通过调整进程的 nice 值,改变其 CPU 调度优先级。

  • 范围:-20(最高)到 19(最低),默认是 0。

  • 命令

    nice -n -5 vim a.txt      # 启动时设置优先级nice:用于给新进程设置 “nice 值”(优先级的数值表示,范围是 -2019-n -5:指定 nice 值为 -5(数值越小,优先级越高,系统会优先分配 CPU 资源)vim a.txt:要启动的进程(这里是用 vim 打开 a.txt)效果:启动的 vim 进程会获得较高的 CPU 优先级,在系统繁忙时,它能抢到更多 CPU 时间,操作更流畅renice -n 6 24318         # 修改运行中进程的优先级调整已运行的进程的优先级。renice:用于修改已有进程的 nice-n 6:将 nice 值设为 6(数值较大,优先级较低,系统会减少对它的 CPU 分配)24318:目标进程的 PID(进程 ID,可通过ps或top命令查看)效果:PID 为 24318 的运行中进程,优先级会降低,在系统繁忙时,它会 “谦让” CPU 资源给其他优先级更高的进
    
  • 注意:无法超出 -20~19 的范围。

  • 关键规律:

    • nice 值越小(甚至负数)→ 优先级越高 → 系统越 “照顾” 这个进程;
    • nice 值越大 → 优先级越低 → 系统越 “冷落” 这个进程。

    ​ 通常用于:让重要程序(如服务器进程)优先级更高,让耗资源但不紧急的程序(如后台备份)优先级更低,合理分配 CPU 资源。
    在这里插入图片描述
    在这里插入图片描述

1.2 设置 CPU 亲和力(taskset)

  • 作用:将进程绑定到指定 CPU 核心,减少上下文切换开销。

  • 安装yum install util-linux

  • 命令

    1)taskset -c 0 vim a.txt          # 绑定到 CPU0taskset:Linux 中用于设置进程 CPU 亲和力(绑定 CPU 核心)的工具-c 0:-c 表示指定 CPU 核心编号(从 0 开始),这里绑定到第 0 号 CPU 核心vim a.txt:要启动的进程(用 vim 打开 a.txt)效果:这个 vim 进程只会在 CPU0 上运行,不会被调度到其他核心,适合需要稳定占用单一核心的场景。2)taskset -cp 20146              # 查看进程 1087 的 CPU 绑定情况
    查看已运行进程的 CPU 绑定情况。-c:显示 CPU 核心编号(更易读)-p:表示操作对象是已存在的进程(通过 PID 指定)20146:目标进程的 PID(进程 ID,可通过 pstop 查看)[root@benet21 ~]# taskset -cp 20146
    pid 20146's current affinity list: 03)taskset -c 1,3 vim b.txt        # 绑定到 CPU1 和 CPU3
    启动进程时,绑定到多个 CPU 核心(核心列表)。-c 1,3:指定进程只能在 CPU1 和 CPU3 上运行(核心编号用逗号分隔)效果:这个 vim 进程会在 CPU1 和 CPU3 之间被调度,但不会跑到其他核心(如 CPU0、CPU2),适合需要限制进程使用特定核心组的场景。测试 :ps -o psr -p 98822top  按F  P(空格选) 按q退出 再输入 top
    生产环境场景:一般用在 你的业务(进程)非常重要 你需要绑定好的业务并且给他设置两个
    

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

1.3 cpu命令描述

cat /proc/cpuinfo 是 Linux 系统中用于查看 CPU 硬件信息 的命令,通过读取 /proc 虚拟文件系统中的 cpuinfo 文件,展示当前系统中 CPU 的详细参数。

输出内容的核心信息(以常见的多核 CPU 为例):

processor       : 0  # CPU 核心编号(从 0 开始,多核会依次显示 0、1、2...)
vendor_id       : GenuineIntel  # CPU 厂商(如 Intel、AMD)
cpu family      : 6  # CPU 系列(厂商内部的产品系列编号)
model           : 158  # 型号(同系列中的具体型号)
model name      : Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz  # 具体型号名称和主频
stepping        : 9  # 步进(硬件版本号,影响稳定性和兼容性)
microcode       : 0x84  # 微代码版本(CPU 内置的底层程序版本)
cpu MHz         : 2808.000  # 当前运行频率(动态调频时会变化)
cache size      : 6144 KB  # 缓存大小(L3 缓存,影响数据访问速度)
physical id   **  : 0  # 物理 CPU 编号(多物理 CPU 时区分,单 CPU 通常为 0)
siblings        : 8  # 单个物理 CPU 的逻辑核心数(包含超线程)
core id      **   : 0  # 物理核心编号(同一物理 CPU 内的核心编号)
cpu cores    **   : 4  # 单个物理 CPU 的物理核心数(此处为 4 核)
apicid          : 0  # 用于多核通信的 APIC 编号
initial apicid  : 0
fpu             : yes  # 是否支持浮点运算单元(FPU)
fpu_exception   : yes  # 是否支持 FPU 异常处理
cpuid level     : 22  # CPUID 指令支持的级别(用于查询 CPU 功能)
wp              : yes  # 是否支持写保护(内存安全特性)
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf tsc_known_freq pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb invpcid_single pti ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm mpx rdseed adx smap clflushopt intel_pt xsaveopt xsavec xgetbv1 xsaves dtherm ida arat pln pts hwp hwp_notify hwp_act_window hwp_epp md_clear flush_l1d  # CPU 支持的功能指令集(如 SSE、AVX 等加速指令)
bugs            : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs itlb_multihit  # 已知的硬件漏洞(如熔断、幽灵等)
bogomips        : 5616.00  # 伪性能指标(早期用于粗略衡量 CPU 速度,参考意义不大)
clflush size    : 64  # CLFLUSH 指令一次能刷新的缓存大小(字节)
cache_alignment : 64  # 缓存对齐粒度(字节,影响内存访问效率)
address sizes   : 39 bits physical, 48 bits virtual  # 支持的物理/虚拟地址位数(决定最大内存支持)
power management:  # 电源管理相关特性(如节能、调频技术)

在这里插入图片描述

详细详解:

  1. 核心数量

    • processor 条目数量 → 总逻辑核心数(包含超线程)。
    • cpu cores → 单个物理 CPU 的物理核心数(如 cpu cores : 4 表示 4 核)。
    • 例:4 物理核 + 超线程 = 8 逻辑核 → 会显示 8 个 processor 条目(0~7)。
  2. 型号和主频

    • model name 直接显示 CPU 型号(如 i7-7700HQ)和基础主频(如 2.80GHz)。
    • cpu MHz 显示当前实时频率(支持睿频的 CPU 会动态变化)。
  3. 厂商和功能

    • vendor_id 区分 Intel/AMD 等厂商。
    • flags 列出支持的指令集(如 avx2 加速多媒体处理,vmx 支持虚拟化)。

常用场景:

  • 快速确认服务器的 CPU 核心数(判断并行处理能力)。
  • 检查 CPU 是否支持特定功能(如虚拟化、硬件加速指令)。
  • 排查硬件相关问题(如型号是否与预期一致,是否存在已知漏洞)。

简单说,这条命令是“查看 CPU 身份证”的工具,能让你快速了解系统的 CPU 配置。

操作指令

  • 物理cpu:物理cpu数量,实际服务器中插槽上的cpu个数

    cat /proc/cpuinfo | grep "physical id" | sort |uniq
    
  • 逻辑cpu:操作系统可以使用逻辑CPU来模拟出真实CPU的效果

    cat /proc/cpuinfo | grep "processor" | sort -u | wc -l
    
  • cpu核数:一块CPU上面能处理数据的芯片组的数量

    cat /proc/cpuinfo | grep "cpu cores" | sort | uniq
    

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.4 使用 vmstat 分析系统瓶颈

  • 关键指标
    • r:等待运行的进程数,若持续 > CPU核心数×3,说明 CPU 繁忙。
    • us:用户态 CPU 时间,高表示应用程序消耗多。
    • sy:系统态 CPU 时间,高表示内核消耗多。
    • wa:等待 I/O 的 CPU 时间,高表示磁盘 I/O 瓶颈。
    • id:空闲 CPU 时间。
  • 实战场景
    • 上传大文件:wa 高,bo 大,说明写磁盘繁忙。
    • 复制文件:bibo 都高,wa 高,说明读写磁盘都繁忙。
    • 高并发 HTTP 请求:r 高,us 高,说明 CPU 处理不过来。

在这里插入图片描述

二、磁盘 I/O 调优

2.1 ulimit 资源限制

  • 配置文件/etc/security/limits.conf

    资源限制配置文件(通常是 /etc/security/limits.conf/etc/security/limits.d/ 目录下的配置文件)中的设置,用于限制系统用户的进程资源使用上限

  • 常用设置

    * soft nofile 1024000
    * hard nofile 1024000
    * soft nproc 65535
    * hard nproc 65535*:表示对 所有用户 生效(也可以指定具体用户名,如 root 或 www)soft:软限制(警告线),超过时系统会警告,但允许临时超过(直到进程结束)hard:硬限制(强制线),由内核强制执行,绝对不能超过(软限制不能高于硬限制)nofile:限制 打开文件描述符的数量(包括文件、网络连接、管道等,Linux 中 “一切皆文件”)nproc:限制 用户能创建的进程 / 线程数量具体配置的含义:* soft nofile 1024000所有用户的 软限制:最多可打开 1024000 个文件描述符(超过会警告)* hard nofile 1024000所有用户的 硬限制:绝对不能打开超过 1024000 个文件描述符* soft nproc 65535所有用户的 软限制:最多可创建 65535 个进程 / 线程(超过会警告)* hard nproc 65535所有用户的 硬限制:绝对不能创建超过 65535 个进程 / 线程ulimit -n  # 查看 nofile 软限制
    ulimit -Hn # 查看 nofile 硬限制
    ulimit -u  # 查看 nproc 软限制
  • 临时修改ulimit -n 10000
    在这里插入图片描述

  • 永久修改:vim /etc/security/limits.conf 去最尾设置

2.2 测试磁盘速度

  • 读速度测试

    是一个用于测试硬盘读取速度的命令,主要用于评估磁盘的顺序读取性能

    hdparm -t --direct /dev/sdahdparm:Linux 下用于查看和调整硬盘参数的工具-t:测试硬盘的缓存读取速度(读取数据时会利用硬盘缓存和系统缓存)--direct:启用 “直接 IO” 模式(跳过系统缓存,直接从硬盘读取原始数据,更接近真实的物理读取速度)/dev/sda:指定要测试的硬盘设备(sda 通常是系统的第一个硬盘)

在这里插入图片描述

  • 写速度测试

    dd if=/dev/zero of=/test.dbf bs=1M count=2000 oflag=directdd:Linux 下用于复制和转换文件的工具,常被用来测试磁盘性能if=/dev/zero:if 表示 “输入文件”,/dev/zero 是一个特殊设备文件,会不断生成二进制的 0 数据(可理解为 “无限的空数据来源”)of=/test.dbf:of 表示 “输出文件”,即把数据写入到 /test.dbf 这个文件中bs=1M:bs 表示 “块大小”,这里设置为 1MB(每次读写的数据块大小)count=2000:count 表示 “块数量”,这里生成 2000 个 1MB 的块,总文件大小为 2000MB(约 2GB)oflag=direct:oflag 表示 “输出标志”,direct 启用直接 IO 模式(跳过系统缓存,直接写入物理硬盘,更真实反映硬盘写入速度)

在这里插入图片描述

  • 时间测试

    time dd if=/dev/zero of=/test.dbf bs=1M count=200
    time:用于统计后续命令的执行时间(包括实际耗时、用户态耗时、内核态耗时)
    dd:文件复制工具,这里用于生成测试文件if=/dev/zero:输入源为 /dev/zero(不断生成空数据,作为写入的数据源)of=/test.dbf:输出文件为 /test.dbf(要创建的测试文件)bs=1M:每次读写的数据块大小为 1MBcount=200:共写入 200 个块,总文件大小为 200MB(1M × 200)信息详解:dd 部分的输出:确认写入了 200MB 数据652 MB/s 是计算出的写入速度(总数据量 ÷ 实际耗时)注意:这里没有 oflag=direct,写入速度会包含系统缓存的加速效果,可能比硬盘真实物理速度快(尤其是写入小文件时)。time 部分的输出:real:实际总耗时(从命令开始到结束的墙钟时间,0.322 秒)user:命令在用户态运行的时间(几乎为 0,因为主要是 IO 操作)sys:命令在内核态运行的时间(0.320 秒,主要是磁盘 IO 的内核处理时间)

在这里插入图片描述


三、内核参数调优

3.1 防御 SYN 洪水攻击

  • 修改 /etc/sysctl.conf

    net.ipv4.tcp_synack_retries = 0
    net.ipv4.tcp_syn_retries = 1
    net.ipv4.tcp_max_syn_backlog = 20480
    net.ipv4.tcp_syncookies = 1
    net.ipv4.tcp_tw_reuse = 1
    net.ipv4.tcp_tw_recycle = 1
    net.ipv4.tcp_fin_timeout = 10
    fs.file-max = 819200
    net.core.somaxconn = 65535
    net.core.rmem_max = 1024123000
    net.core.wmem_max = 16777216
    net.core.netdev_max_backlog = 165536
    net.ipv4.ip_local_port_range = 10000 65535
    
  • 生效sysctl -p

3.2 关键参数说明

  • tcp_synack_retries=0:不重发 SYN+ACK,快速释放半连接。
  • tcp_syncookies=1:启用 SYN Cookie 防御少量攻击。
  • file-max:系统最大文件句柄数。
  • somaxconn:最大连接队列长度。

四、总结与建议

模块调优手段适用场景
CPUnice、taskset、vmstat高 CPU 负载、多进程调度
磁盘 I/Oulimit、hdparm、dd高并发读写、备份任务
网络Bonding、内核参数高可用、负载均衡、防攻击
内核sysctl 参数优化高并发连接、安全防护

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

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

相关文章

JavaScript 实战进阶:工程化、性能与未来展望

一、JavaScript 工程化实践 随着前端项目规模的扩大,“工程化”成为提升开发效率、保证代码质量的核心手段。它涵盖模块化设计、构建工具链、代码规范与测试等多个维度。 (一)模块化开发 模块化是将复杂代码拆分为可复用、可维护的独立单元的…

破局与增长:全球电商的业财一体化战略与数字化未来

一、全球电商的数字化转型背景在瞬息万变的全球电商市场中,数字化转型已经成为企业保持竞争力的必由之路。近年来,国内品牌出海企业快速扩张,业务范围覆盖数十个国家和平台。然而,随着规模的几何级增长,行业普遍面临以…

Excel怎么换行?3种单元格内换行方法?【图文详解】Excel自动换行?Alt+Enter?

一、问题背景 在日常使用 Excel 处理数据时,很多人会遇到这样的困扰:输入长文本(比如产品说明、多行备注、地址信息等)时,文字会一直横向延伸,不仅导致单元格变宽、表格排版混乱,还可能遮挡相邻…

【生产实践】局域网多服务器多用户SSH登录批量测试(附完整shell脚本)

在企业运维场景中,局域网内多台服务器的SSH登录凭据(用户名/密码)验证是高频需求——无论是新服务器部署后的凭据校验,还是定期安全巡检中的凭据有效性检查,手动逐台逐用户测试不仅效率低下,还容易出错。 本…

专题:2025人工智能2.0智能体驱动ERP、生成式AI经济现状落地报告|附400+份报告PDF、原数据表汇总下载

原文链接:https://tecdat.cn/?p43713 2025年,人工智能正从技术概念快速渗透到产业实操层面——大模型推理能力的突破让复杂任务自动化成为可能,AI代理的规模化应用重构企业效率边界,而AI企业“天生全球化”的特性更是打破了传统创…

机器学习--支持向量机

目录 一、为什么需要 SVM?先解决 “怎么分才好” 的问题 二、SVM 的核心:什么是 “最好的超平面”?用 “间隔” 说话 1. 先搞懂两个关键概念 2. 目标:把 “间隔” 拉到最大 三、从 “想要最大间隔” 到 “解数学问题”&#…

Multi-output Classification and Multi-label Classification|多输出分类和多标签分类

----------------------------------------------------------------------------------------------- 这是我在我的网站中截取的文章,有更多的文章欢迎来访问我自己的博客网站rn.berlinlian.cn,这里还有很多有关计算机的知识,欢迎进行留言或…

【目标检测】论文阅读5

Small-object detection based on YOLOv5 in autonomous driving systems 发表期刊:Pattern Recognition Letters;发表时间:2023年 论文地址 摘要 随着自动驾驶领域的快速发展,对更快、更准确的目标检测框架的需求已经成为必要。…

Playwright进阶指南 (6) | 自动化测试实战

2025企业级测试解决方案:从单测到千级并发,打造高可用测试体系一、为什么传统自动化测试难以落地?根据2025年最新行业调研,测试项目失败的三大核心原因:失败原因占比典型表现维护成本过高45%选择器频繁失效&#xff0c…

uv 简单使用

二进制安装 powershell -ExecutionPolicy Bypass -c "irm https://ghproxy.cn/https://github.com/astral-sh/uv/releases/download/0.8.13/uv-installer.ps1 | iex"版本号:0.8.13,自行更改github加速前缀:https://ghproxy.cn/ 配置…

Linux程序管理

目录 一、Linux程序与进程 1、程序,进程,线程的概念 2、程序和进程的区别 3、进程和线程的区别 二、Linux进程基础(生命周期) 1、进程生命周期 2、父子进程的关系 三、程序管理 1、课程目标 2、常见的软件包类型 3、安装方法 使用独立的rpm包安装 rpm包的命名方法…

Linux-进程替换exec

文章目录进程替换exec 函数族使用说明查看命令的路径 which测试 execl测试 execlp测试 execv测试 execvp进程替换 概述 在 Windows 平台下,我们可以通过双击运行可执行程序,让这个可执行程序成为一个进程;而在 Linux 平台,我们可…

Seaborn数据可视化实战:Seaborn数据可视化实战入门

Seaborn数据可视化实战:从数据到图表的完整旅程 学习目标 通过本课程的学习,你将能够掌握使用Seaborn进行数据可视化的完整流程,从数据准备到图表设计,再到最终的图表呈现。本课程将通过一个具体的项目案例,帮助你全面…

控制系统仿真之时域分析(二)

一、时域分析法时域分析法是从传递函数出发直接在时域上研究控制系统性能的方法,实质上是研究系统在某典型输入信号下随时间变化的曲线,从而分析系统性能。控制系统的时域响应决定于系统本身的参数和结构,还有系统的初始状态,以及…

PDF 表单创建与分发

PDF 表单是一种交互式文档,允许用户填写信息、做出选择并提交数据。与静态 PDF 不同,PDF 表单包含可交互的字段元素,如文本框、复选框、单选按钮等。#mermaid-svg-sZe9We4UG0yKymyl {font-family:"trebuchet ms",verdana,arial,san…

Guava 简介:让 Java 开发更高效

Guava 简介:让 Java 开发更高效 Guava 是由 Google 开源的 Java 库,旨在为开发者提供一系列实用的工具类,以提高开发效率。它包含了集合类、缓存、并发工具、字符串处理等实用方法。 Guava 的常用场景 集合处理:Guava 提供了多种扩…

「ECG信号处理——(24)基于ECG和EEG信号的多模态融合疲劳分析」2025年8月23日

目录 一、引言 二、核心原理 2.1 心电 HRV 疲劳关联原理 2.2 脑电 EEG 疲劳关联原理 2.3 疲劳综合指数 三、数据处理流程 四、结果展示与分析 参考文献 一、引言 针对作业安全(如驾驶、精密操作)场景下的疲劳状态实时监测需求,本文提…

EXCEL自动调整列宽适应A4 A3 A2

Public xlPaperA2%Sub 填满页面排版()xlPaperA2 66 A2编号66Dim ws As Worksheet: Set ws ActiveSheetDim FirstCol As Long, LastCol As Long, LastRow As LongDim TargetRange As RangeDim UsablePageWidth As DoubleDim CurrentWidth As DoubleDim StartFontSize As Doubl…

Linux系统性能优化全攻略:从CPU到网络的全方位监控与诊断

引言 在Linux系统运维和开发过程中,系统性能优化是一个永恒的话题。无论是服务器负载过高,还是应用程序响应缓慢,准确快速地定位问题根源至关重要。本文将全面介绍Linux系统中常用的性能诊断工具和方法,帮助您从CPU、内存、磁盘I/…

uniapp+vue+uCharts开发常见问题汇总

项目结构:uniapp vue2 uni-ui uCharts 1、chunk-vendors.js:2765[Vue warn]: Invalid prop: custom validator check failed for prop "navigationBarTextStyle". 检索发现原因: 在 pages.json 文件中,navigationBarTextStyle 属…