{"name":"Linux性能优化","id":"操作系统-linux-Linux性能优化","content":"# Linux 性能优化\n\n## 一、总论：Linux 性能优化的第一性原理\n\n### 1. 性能的本质\n\nLinux 性能问题并非“参数不合理”或“机器不够好”，其本质是：\n\n> **有限资源在时间与空间维度上的分配失衡**\n\n所有性能问题，都可以归约为以下四类不变问题：\n\n| 维度 | 本质问题         | 典型症状            |\n| -- | ------------ | --------------- |\n| 计算 | CPU 是否被高效使用  | us/sys 高、cs 高   |\n| 存储 | 数据是否在“最近的地方” | cache miss、swap |\n| 队列 | 等待是否失控       | load 高、延迟抖动     |\n| 协调 | 调度与并发是否合理    | 抢占、锁竞争          |\n\n后续所有 CPU / 内存 / IO / 网络内容，均是这四个维度在不同子系统中的具体体现。\n\n---\n\n## 二、性能分析的统一方法论\n\n### 1. 性能问题的标准分析路径\n\n> 现象 → 指标 → 归因模型 → 决策原则 → 优化手段\n\n避免直接“看到指标就调参”。\n\n### 2. 性能指标的三层结构\n\n1. **症状指标**：load、latency、QPS\n2. **因果指标**：CPU 使用率、iowait、队列长度\n3. **机制指标**：缺页异常、上下文切换、中断\n\n---\n\n## 三、CPU 性能：计算与调度\n\n### 1. 本质模型\n\nCPU 性能问题 = **计算负载 + 调度策略 + 并发协调**\n\n### 2. 核心可观测指标\n\n* Load Average（运行队列 + 不可中断睡眠）\n* CPU 使用率（us/sys/wa/si/hi）\n* 上下文切换（cswch / nvcswch）\n\n### 3. 问题归因模型\n\n```text\nLoad 高 →\n  ├─ us 高 → 计算密集\n  ├─ sys 高 → 内核/中断\n  ├─ wa 高 → IO 阻塞\n  └─ cs 高 → 调度/并发问题\n```\n\n### 4. 策略分层\n\n* **调度隔离**：CPU 绑定、cpuset、cgroups\n* **优先级控制**：nice / sched policy\n* **拓扑感知**：NUMA 本地性\n* **中断治理**：irqbalance / affinity\n\n### 5. 稳定认知\n\n* CPU 永远在“公平”与“局部性”之间权衡\n* 过度绑定会降低系统弹性\n\n---\n\n## 四、内存性能：局部性与回收\n\n### 1. 本质模型\n\n内存性能 = **命中率 × 回收成本**\n\n### 2. 内存分层视角\n\n* CPU Cache\n* Page Cache\n* Slab Cache\n* Swap\n\n### 3. 可观测指标\n\n* available memory\n* major/minor page fault\n* swap in/out\n\n### 4. 回收与压力模型\n\nkswapd 基于 pages_min/low/high 进行回收决策，本质是：\n\n> **延迟回收，避免抖动**\n\n### 5. 策略分层\n\n* 结构性策略：减少动态分配、对象池\n* 系统性策略：swappiness、cgroups memory\n* 架构性策略：缓存前移、外部缓存\n\n---\n\n## 五、IO 性能：带宽、延迟与队列\n\n### 1. 本质模型\n\nIO 性能 = **设备能力 × 访问模式 × 队列治理**\n\n### 2. IO 栈统一视角\n\n应用 → 文件系统 → 通用块层 → 调度器 → 设备\n\n### 3. 核心指标\n\n* IOPS\n* 吞吐量\n* 响应时间\n* 饱和度\n\n### 4. 决策原则\n\n* 随机 IO 看 IOPS\n* 顺序 IO 看吞吐\n* 延迟敏感系统优先 deadline\n\n### 5. 优化策略分层\n\n* 应用层：批量、顺序化、零拷贝\n* 系统层：PageCache、异步 IO\n* 设备层：SSD、RAID、调度算法\n\n---\n\n## 六、网络性能：RTT、带宽与队列\n\n### 1. 本质模型\n\n网络性能 = **RTT × BDP × 队列管理**\n\n### 2. 收发路径抽象\n\nDMA → 中断 → softirq → 协议栈 → socket buffer\n\n### 3. 核心指标\n\n* RTT\n* Recv-Q / Send-Q\n* 丢包率\n\n### 4. 调优原则\n\n* 握手优化解决连接建立成本\n* 缓冲区优化解决带宽利用\n* 拥塞控制决定长期吞吐\n\n### 5. 风险提示\n\n* 过度关闭 ICMP 会降低可诊断性\n* tcp_tw_reuse 需谨慎\n\n---\n\n## 七、内核线程与后台机制\n\n### 1. 核心内核线程角色\n\n* kswapd：内存回收\n* kworker：异步内核任务\n* migration：负载均衡\n* jbd2：文件系统一致性\n\n### 2. 治理视角\n\n内核线程是系统“隐形负载”，不可忽视\n\n---\n\n## 八、系统级性能治理\n\n### 1. 性能不是调参问题\n\n而是：\n\n* 架构边界问题\n* 隔离与配额问题\n* 容量规划问题\n\n### 2. 推荐治理工具\n\n* cgroups\n* NUMA-aware 部署\n* 可观测性（指标 + 追踪）\n\n---\n\n## 九、稳定知识 vs 易变实现\n\n### 稳定不变\n\n* 局部性原理\n* 队列与等待\n* 调度与公平\n\n### 易变实现\n\n* 具体调度器\n* 具体 sysctl 参数\n* 具体 offload 技术\n\n---\n\n## 十、结语\n\n性能优化不是“把系统拧到最快”，而是：\n\n> **在约束条件下，构建可预测、可治理、可演进的系统行为**\n\n## 关联内容（自动生成）\n\n- [/操作系统/内存管理.md](/操作系统/内存管理.md) 与本文内存性能部分密切相关，探讨了内存分配、虚拟内存和页面置换等关键技术\n- [/操作系统/进程与线程.md](/操作系统/进程与线程.md) 与本文CPU调度部分相关，详细介绍了进程和线程的管理和调度机制\n- [/计算机系统/程序结构和执行/优化程序性能.md](/计算机系统/程序结构和执行/优化程序性能.md) 从底层程序执行角度探讨性能优化，与本文系统层面优化相辅相成\n- [/操作系统/linux/Linux.md](/操作系统/linux/Linux.md) Linux系统总体概述，为深入理解性能优化提供了背景知识\n- [/操作系统/linux/内核.md](/操作系统/linux/内核.md) 与Linux内核相关的性能优化，有助于理解系统底层机制\n- [/计算机网络/Linux虚拟化.md](/计算机网络/Linux虚拟化.md) 与Linux系统虚拟化相关的性能考量，扩展了性能优化的应用场景\n","metadata":"tags: ['操作系统']","hasMoreCommit":true,"totalCommits":17,"commitList":[{"date":"2026-05-27T10:08:04+08:00","author":"MY","message":"doc(性能工程): 重构文档","hash":"2e3648b1dc0bf9be8e1790389811bdd99e878f29"},{"date":"2026-02-12T14:07:03+08:00","author":"MY","message":"doc: 整理标签","hash":"290b3e8ad18f48832ac282290238d020fc030a88"},{"date":"2026-01-21T17:54:11+08:00","author":"MY","message":"docs(linux): 更新Linux性能优化文档内容并添加相关图片资源","hash":"42b0154ffdf65e1be29d4902832a2b1fd18fc9a5"},{"date":"2025-11-16T21:30:56+08:00","author":"MY","message":"docs: 统一并精简文档标签","hash":"21362e9d7aeb62e05364cd5e7f3a3c24d7e293c7"},{"date":"2025-09-21T14:03:43+08:00","author":"MY","message":"docs(mindmap): 统一思维导图根节点格式","hash":"44fc90fa0f22040d171dbf83cd6f2fd8c020444a"},{"date":"2024-11-27T16:25:26+08:00","author":"MY","message":"📦容器化","hash":"e562244320baadb10ffbe0aef6ff9679da0f475a"},{"date":"2024-11-21T19:08:00+08:00","author":"MY","message":"📦性能相关","hash":"340d03e0ac71d5d14daa022cce236600abece443"},{"date":"2024-05-28T19:53:40+08:00","author":"MY","message":"✏监控","hash":"86620b7aeaf14cd9f9f392c4fc8ee5a3f9be003c"},{"date":"2024-02-04T19:31:43+08:00","author":"MY","message":"✏Linux性能优化","hash":"81907c1d6ce35881cb26aa99a102f628dedef56a"},{"date":"2024-02-01T19:14:42+08:00","author":"MY","message":"✏Linux性能优化","hash":"e7036b91ec32d08606577979cb58bc1142b15a14"}],"createTime":"2024-01-22T19:56:24+08:00"}