<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <generator uri="https://hexo.io/">Hexo</generator>
  <id>http://localhost:4000/</id>
  <link href="http://localhost:4000/" rel="alternate"/>
  <link href="http://localhost:4000/atom.xml" rel="self"/>
  <subtitle>系统理解服务器硬件</subtitle>
  <title>服务器基础知识全解</title>
  <updated>2026-05-24T13:49:48.032Z</updated>
  <entry>
    <category term="09-基准测试与认证" scheme="http://localhost:4000/categories/09-%E5%9F%BA%E5%87%86%E6%B5%8B%E8%AF%95%E4%B8%8E%E8%AE%A4%E8%AF%81/"/>
    <category term="基准测试选型" scheme="http://localhost:4000/tags/%E5%9F%BA%E5%87%86%E6%B5%8B%E8%AF%95%E9%80%89%E5%9E%8B/"/>
    <category term="第九章小结" scheme="http://localhost:4000/tags/%E7%AC%AC%E4%B9%9D%E7%AB%A0%E5%B0%8F%E7%BB%93/"/>
    <content>
      <![CDATA[<p>第九章前面 6 篇分别讲了 benchmark 概览、CPU&#x2F;数据库基准、HPC、存储&#x2F;网络、AI、认证。本篇收口，也是全书的最后一篇。</p><!-- more --><h2 id="选-benchmark-的”四层决策”"><a href="#选-benchmark-的”四层决策”" class="headerlink" title="选 benchmark 的”四层决策”"></a>选 benchmark 的”四层决策”</h2><pre class="mermaid">graph TD  Q1[第 1 层: 业务类型?]  Q1 --> Q2[第 2 层: 验收阶段?]  Q2 --> Q3[第 3 层: 报告读者?]  Q3 --> Q4[第 4 层: 时长 / 预算?]  Q4 --> A[最终 benchmark 组合]</pre><h2 id="第-1-层：业务类型"><a href="#第-1-层：业务类型" class="headerlink" title="第 1 层：业务类型"></a>第 1 层：业务类型</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><code class="hljs text">通用计算 / Web / 应用：    SPEC CPU2017 + SPECjbb 2015<br>数据库（OLTP）：          HammerDB TPROC-C / sysbench oltp<br>数据库（OLAP）：          TPC-DS / HammerDB TPROC-H<br>HPC（FP64）：           HPL + HPCG<br>AI 训练：               HPL-MxP + NCCL-tests + MLPerf Training + NeMo burn-in<br>AI 推理：               cublasMatmulBench + vLLM/TRT-LLM bench + MLPerf Inference<br>存储（块）：              fio<br>存储（NAS）：            SPECstorage SFS 2020<br>存储（分布式 / HPC）：    IO500 / IOR / mdtest<br>网络（TCP）：            iperf3<br>网络（RDMA）：           perftest 套件（ib_write_bw 等）<br></code></pre></td></tr></table></figure><h2 id="第-2-层：验收阶段"><a href="#第-2-层：验收阶段" class="headerlink" title="第 2 层：验收阶段"></a>第 2 层：验收阶段</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><code class="hljs text">研发选型 / POC：       SPEC CPU2017 + 业务模拟<br>集群验收（节点）：      DCGM diag + nvbandwidth + cublasMatmulBench + HPL<br>集群验收（机柜）：      NCCL-tests + ClusterKit + SHARP<br>集群验收（应用）：      NeMo / Megatron 24-72h burn-in<br>生产监控：            DCGM Exporter + Prometheus + Grafana 持续基线<br>故障排查：            对比基线、单点回归测试<br></code></pre></td></tr></table></figure><h2 id="第-3-层：报告读者"><a href="#第-3-层：报告读者" class="headerlink" title="第 3 层：报告读者"></a>第 3 层：报告读者</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs text">高管 / 财务：        TCO 数字（$/TPM, $/TFLOPS, GFLOPS/W）<br>采购 / 招标：        tpmC（合同硬指标）+ SPEC 系列<br>DBA / SRE：         HammerDB / fio 实际曲线 + P99<br>GPU 集群运维：       NCCL busbw + DCGM 报告<br>AI 工程师：         MFU + tokens/sec + loss 曲线<br></code></pre></td></tr></table></figure><p>不同读者要不同数字。<strong>给老板看 TCO，给运维看 P99，给 AI 工程师看 MFU</strong>——一份”All in one”报告反而每方都不满意。</p><h2 id="第-4-层：时长-预算"><a href="#第-4-层：时长-预算" class="headerlink" title="第 4 层：时长 &#x2F; 预算"></a>第 4 层：时长 &#x2F; 预算</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><code class="hljs text">1 小时：       fio + iperf + nccl-tests 单 size + dcgmi diag -r 2<br>1 天：         + HPL + HPL-MxP + nccl-tests 全 size + 单机 NeMo 短跑<br>1 周：         + 多机 burn-in 24-72h + IO500 + MLPerf 复现<br>1 个月：       完整 SuperPOD 验收 + 客户场景 POC + MLPerf 提交准备<br></code></pre></td></tr></table></figure><p>时间越多越能 dump 隐藏问题——但客户通常给不了那么多。<strong>压缩到 1-3 天的”快验”是最常见</strong>。</p><h2 id="各章-benchmark-速查表"><a href="#各章-benchmark-速查表" class="headerlink" title="各章 benchmark 速查表"></a>各章 benchmark 速查表</h2><p>按服务器章节回顾：</p><table><thead><tr><th>章</th><th>主题</th><th>推荐 benchmark</th></tr></thead><tbody><tr><td>01</td><td>服务器通用</td><td>整机功耗 &#x2F; 散热（IPMI &#x2F; DCGM 监控）、UL 安规</td></tr><tr><td>02</td><td>CPU</td><td>SPEC CPU2017 &#x2F; SPECpower &#x2F; SPECjbb</td></tr><tr><td>03</td><td>内存</td><td>mlc &#x2F; stream &#x2F; mbw（带宽）+ Intel MLC（延迟）</td></tr><tr><td>04</td><td>存储</td><td>fio &#x2F; SPECsfs &#x2F; IO500</td></tr><tr><td>05</td><td>GPU&#x2F;AI</td><td>nvbandwidth &#x2F; cublasMatmulBench &#x2F; NCCL-tests &#x2F; MLPerf &#x2F; NeMo</td></tr><tr><td>06</td><td>网络</td><td>iperf3 &#x2F; perftest &#x2F; RFC2544</td></tr><tr><td>07</td><td>OS</td><td>UnixBench &#x2F; sysbench &#x2F; phoronix-test-suite</td></tr><tr><td>08</td><td>可信计算</td><td>tpm2-tools &#x2F; OpenSSL benchmark &#x2F; IMA 完整性</td></tr><tr><td>09</td><td>整合验收</td><td>三阶段（节点 → 机柜 → 应用）</td></tr></tbody></table><h2 id="服务器选型的”benchmark-矩阵”"><a href="#服务器选型的”benchmark-矩阵”" class="headerlink" title="服务器选型的”benchmark 矩阵”"></a>服务器选型的”benchmark 矩阵”</h2><p>把 9 章融合成一张实战矩阵——按业务横向、按 benchmark 纵向：</p><table><thead><tr><th>业务</th><th>CPU</th><th>内存</th><th>存储</th><th>GPU</th><th>网络</th><th>整体</th></tr></thead><tbody><tr><td>数据库 OLTP</td><td>SPEC int + HammerDB</td><td>mlc</td><td>fio + 文件系统</td><td>—</td><td>iperf</td><td>$&#x2F;tpmC</td></tr><tr><td>数据仓库</td><td>SPEC fp + TPC-DS</td><td>stream</td><td>fio seq</td><td>—</td><td>iperf</td><td>$&#x2F;QphH</td></tr><tr><td>Web &#x2F; Java</td><td>SPECjbb</td><td>—</td><td>fio rand</td><td>—</td><td>iperf</td><td>latency P99</td></tr><tr><td>HPC</td><td>SPEC fp</td><td>stream</td><td>IOR</td><td>HPL&#x2F;HPCG</td><td>ib_write_bw</td><td>TFLOPS&#x2F;W</td></tr><tr><td>AI 训练</td><td>—</td><td>mlc</td><td>IOR&#x2F;GDS</td><td>NCCL&#x2F;HPL-MxP</td><td>ib_write_bw</td><td>MFU + tokens&#x2F;s</td></tr><tr><td>AI 推理</td><td>—</td><td>—</td><td>NVMe fio</td><td>cublasMatmul</td><td>iperf</td><td>TTFT&#x2F;TPOT P99</td></tr><tr><td>虚拟化云</td><td>SPEC int + jbb</td><td>—</td><td>fio + SPECsfs</td><td>MIG&#x2F;vGPU</td><td>iperf</td><td>$&#x2F;VM</td></tr></tbody></table><h2 id="认证选型"><a href="#认证选型" class="headerlink" title="认证选型"></a>认证选型</h2><p>按市场 + 客户类型回顾：</p><table><thead><tr><th>市场 &#x2F; 客户</th><th>必拿</th><th>推荐</th></tr></thead><tbody><tr><td>中国互联网</td><td>CCC</td><td>ISO 9001</td></tr><tr><td>中国国央政企</td><td>CCC + 信创目录</td><td>等保 2.0 + 密评</td></tr><tr><td>欧盟</td><td>CE + Lot 9 能效</td><td>ENERGY STAR</td></tr><tr><td>美国数据中心</td><td>FCC + UL&#x2F;NRTL</td><td>ENERGY STAR</td></tr><tr><td>AI 客户 NVIDIA 生态</td><td>—</td><td>NVIDIA-Certified Systems</td></tr><tr><td>银行 &#x2F; 金融</td><td>CCC</td><td>ISO 27001 + 等保三级</td></tr></tbody></table><h2 id="SA-实施工程师”成长路径”"><a href="#SA-实施工程师”成长路径”" class="headerlink" title="SA &#x2F; 实施工程师”成长路径”"></a>SA &#x2F; 实施工程师”成长路径”</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br></pre></td><td class="code"><pre><code class="hljs text">0-1 年（初级）：<br>  考 NCA-AIIO（NVIDIA 入门）<br>  熟练 fio / iperf / sysbench<br>  会读 nvidia-smi / DCGM 报告<br>  能独立完成节点级验收<br>  <br>1-3 年（中级）：<br>  考 NCP-AII<br>  能调 HPL / HPL-MxP，跑出 70%+ 效率<br>  熟练 NCCL-tests，能定位 busbw 瓶颈<br>  能跑通 NeMo / Megatron 烧机<br>  能读懂 MLPerf 结果<br>  <br>3 年+（高级）：<br>  能做集群级故障 root-cause<br>  能写 reproduce 脚本给客户<br>  能为客户做 TCO 分析<br>  能根据业务负载推荐 benchmark 组合 + 整体方案<br></code></pre></td></tr></table></figure><h2 id="整本书的回顾"><a href="#整本书的回顾" class="headerlink" title="整本书的回顾"></a>整本书的回顾</h2><p>第一章 → 第九章串起来：</p><pre class="mermaid">graph TB  C1[01-服务器通用<br/>主板 / 总线 / 散热]  C2[02-CPU<br/>指令集 / 微架构 / 国产]  C3[03-内存<br/>DDR/HBM/CXL]  C4[04-存储<br/>HDD/SSD/NVMe]  C5[05-GPU/AI<br/>NVIDIA/AMD/国产]  C6[06-网络<br/>NIC/SmartNIC/DPU]  C7[07-OS<br/>Linux/Windows/国产]  C8[08-可信计算<br/>TPM/TEE/机密]  C9[09-基准 + 认证<br/>SPEC/MLPerf/CCC]  C1 --> C2 --> C3 --> C4 --> C5 --> C6 --> C7 --> C8 --> C9</pre><p>每一章都是一台服务器的”一层”——从主板到芯片，从硬件到软件，最后用 benchmark + 认证检验。<strong>把这 9 章串起来，能看懂任何一份服务器规格书 + 验收报告 + 招标文件</strong>——这就是本书的目标。</p><h2 id="给读者的几句"><a href="#给读者的几句" class="headerlink" title="给读者的几句"></a>给读者的几句</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br></pre></td><td class="code"><pre><code class="hljs text">1. 不要&quot;背 benchmark 数字&quot;<br>   → 数字会过时，方法论不会<br>   → 学怎么读 / 怎么跑 / 怎么排障，而不是 H100 FP8 是 3958 TFLOPS<br><br>2. 不要&quot;只看销售 PPT&quot;<br>   → 销售给的是&quot;理想配置 + 理想 workload&quot;<br>   → 自己跑一遍才有真相<br><br>3. 不要&quot;跳过认证&quot;<br>   → 认证不是装饰，是法定责任 + 客户信任<br>   → 没有 CCC 的服务器进不了国采，没 NCP 的 SA 拿不到 NVIDIA partner 项目<br><br>4. 不要&quot;孤岛验收&quot;<br>   → 节点过了不代表机柜过；机柜过了不代表应用 MFU 达标<br>   → 三阶段必须全跑<br><br>5. 不要&quot;一次验收过了就放着&quot;<br>   → 集群跑半年后要做&quot;健康度回测&quot;<br>   → 用同一套基线对比，找到漂移<br></code></pre></td></tr></table></figure><h2 id="结语"><a href="#结语" class="headerlink" title="结语"></a>结语</h2><p>写到这里九章都齐了。<strong>服务器是最复杂的工程产品之一</strong>——从晶体管到机房，从 NVLink 到 BGP，从 BIOS 到 PyTorch，跨越十几个学科。</p><p>但拆开看，每一层有自己的逻辑：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs text">硬件层有摩尔定律 + 散热墙<br>互联层有 PCIe / NVLink / IB 各代演进<br>软件层有 OS / 驱动 / 框架 / 编排<br>信任层有 TPM / TEE / 远程证明<br>评估层有 SPEC / MLPerf / TPC<br></code></pre></td></tr></table></figure><p>这些”层”不是孤立的——一个 H100 集群训练慢，可能是 BIOS 的 prefetch 没开，也可能是 NVLink 拓扑配错，也可能是 NCCL 走了 IB 而不是 NVLink。<strong>架构师的能力就是看穿层之间的链路</strong>——这本书希望提供这种”穿层”的能力。</p><p>服务器世界还会变。HBM4 &#x2F; PCIe 7.0 &#x2F; CXL 3.x &#x2F; 1.6T 网络 &#x2F; 800V HVDC &#x2F; 万亿参数大模型——下一个 5 年又是新故事。</p><p>但<strong>主干不会变</strong>：电源 → 主板 → CPU → 内存 → 存储 → 加速器 → 网络 → OS → 应用 → 度量。</p><p>把这条主干理清，新东西出来时你能在 5 分钟内放进合适的位置。这是这本书最想传递的。</p><p>写完了。下次见。</p>]]>
    </content>
    <id>http://localhost:4000/posts/6a1f0b07/</id>
    <link href="http://localhost:4000/posts/6a1f0b07/"/>
    <published>2026-05-23T11:45:00.000Z</published>
    <summary>把第九章 6 篇连起来——按场景实际怎么挑基准、怎么拿认证。本篇是第九章也是全书的收口。</summary>
    <title>基准测试与认证的实战收口 —— 第九章小结</title>
    <updated>2026-05-24T13:49:48.032Z</updated>
  </entry>
  <entry>
    <category term="09-基准测试与认证" scheme="http://localhost:4000/categories/09-%E5%9F%BA%E5%87%86%E6%B5%8B%E8%AF%95%E4%B8%8E%E8%AE%A4%E8%AF%81/"/>
    <category term="CCC" scheme="http://localhost:4000/tags/CCC/"/>
    <category term="CE" scheme="http://localhost:4000/tags/CE/"/>
    <category term="FCC" scheme="http://localhost:4000/tags/FCC/"/>
    <category term="NVIDIA-Certified" scheme="http://localhost:4000/tags/NVIDIA-Certified/"/>
    <category term="NCP-AII" scheme="http://localhost:4000/tags/NCP-AII/"/>
    <content>
      <![CDATA[<p>服务器不是想卖就能卖——进哪个市场要拿哪些认证，是合规第一关。本文系统讲。</p><!-- more --><h2 id="什么是”认证”"><a href="#什么是”认证”" class="headerlink" title="什么是”认证”"></a>什么是”认证”</h2><blockquote><p>认证是指由认证机构证明产品、服务、管理体系符合相关技术规范、相关技术规范的强制性要求或者标准的合格评定活动。<br>认证通常分为产品、管理体系和服务认证。</p></blockquote><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><code class="hljs text">产品认证：       CCC（强制）/ CE（强制）/ FCC / ENERGY STAR<br>管理体系认证：    ISO9001（质量）/ ISO14001（环境）/ ISO27001（信息安全）<br>服务认证：       体育场所、银行业等<br></code></pre></td></tr></table></figure><p>服务器场景下主要打交道的是<strong>产品认证</strong>和<strong>部分管理体系认证</strong>。</p><h2 id="认证要求覆盖哪些方面"><a href="#认证要求覆盖哪些方面" class="headerlink" title="认证要求覆盖哪些方面"></a>认证要求覆盖哪些方面</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs text">安全（Safety）            人身安全 / 不起火 / 不漏电<br>电磁兼容（EMC）           不相互干扰 / 不影响其他设备<br>健康环保（HE）            RoHS / WEEE / 包装回收<br>频谱协调（RF）            无线频段合规<br>接口性能（Telecom）       入网证（含 SRRC 型号核准等）<br>认证评估程序              测试机构资质 / 评定流程<br>市场监管                  上市后抽检<br>标识标志（Labeling）      标签 / 防伪 / 可追溯<br></code></pre></td></tr></table></figure><h2 id="中国市场：CCC"><a href="#中国市场：CCC" class="headerlink" title="中国市场：CCC"></a>中国市场：CCC</h2><p><a href="https://www.cnca.gov.cn/">CCC（China Compulsory Certification）</a> 是国家市场监督管理总局负责的强制认证。</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><code class="hljs text">适用范围（不完全列举）：<br>  电脑及配件、显示器、UPS、电池<br>  含无线模块的设备需 SRRC 型号核准 + CCC<br><br>不适用：<br>  专业服务器（部分目录调整后免 CCC，但仍需自我声明 + 第三方 EMC/Safety 报告）<br>  数据中心专用网络设备（按品类）<br></code></pre></td></tr></table></figure><p>服务器机型上 CCC 主要查：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><code class="hljs text">GB 4943.1：信息技术设备安全<br>GB 9254：  信息技术设备 EMI（辐射干扰）<br>GB 17625.1: 谐波电流限值<br></code></pre></td></tr></table></figure><p>CCC 标志由”圆形 CCC”图案 + 编号组成，必须贴在产品上。<strong>没有 CCC 不能在国内合法销售</strong>（针对目录内品类）。</p><h2 id="欧盟市场：CE"><a href="#欧盟市场：CE" class="headerlink" title="欧盟市场：CE"></a>欧盟市场：CE</h2><p><a href="https://europa.eu/youreurope/business/product-requirements/labels-markings/ce-marking/">CE（Conformité Européenne）</a> 是欧盟”自我声明”型认证：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><code class="hljs text">原则：<br>  厂家自己声明符合若干指令（Directive）<br>  不强制第三方测试，但出问题厂家担责<br>  <br>关键指令：<br>  低电压指令 LVD：     EN 62368-1（替代 EN 60950-1）<br>  EMC 指令：          EN 55032 / EN 55035<br>  RoHS 指令：         有害物质限值<br>  WEEE 指令：         电子产品回收<br>  Eco-design 能效指令：服务器与存储能耗规则（EU 2019/424）<br></code></pre></td></tr></table></figure><p>服务器进欧盟必须有 <strong>EU 2019&#x2F;424（”Lot 9”能效规则）</strong>——欧盟 2019 年生效，规定服务器闲置功耗、PSU 效率、信息披露等要求。新代次服务器要符合（或申请豁免）。</p><h2 id="美国市场：FCC-UL-NRTL"><a href="#美国市场：FCC-UL-NRTL" class="headerlink" title="美国市场：FCC + UL&#x2F;NRTL"></a>美国市场：FCC + UL&#x2F;NRTL</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><code class="hljs text">FCC Part 15B：      EMC（无意辐射）<br>FCC Part 15C：      含无线模块时<br>UL/NRTL：          安全（NRTL = Nationally Recognized Testing Laboratory，UL 是其中一家）<br>                 服务器装机柜 → 数据中心要求 NRTL 证书<br></code></pre></td></tr></table></figure><p>美国市场 FCC 是法规要求；UL 不是强制，但<strong>绝大多数美国数据中心入场要求 UL&#x2F;NRTL 安全证书</strong>——实际等价于强制。</p><h2 id="能效认证：ENERGY-STAR"><a href="#能效认证：ENERGY-STAR" class="headerlink" title="能效认证：ENERGY STAR"></a>能效认证：ENERGY STAR</h2><p><a href="https://www.energystar.gov/products/computer_servers">ENERGY STAR</a> for Servers 由 EPA 主导，自愿性能效认证：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><code class="hljs text">要求：<br>  有 PMI（Power Management Interface）能耗实时上报<br>  待机功耗低于阈值<br>  PSU 效率达 80 PLUS Platinum 以上<br>  服务器空闲 / 满载下功耗符合曲线<br>  <br>好处：<br>  公共采购加分（部分国家政府采购优先）<br>  在欧美数据中心竞争中有市场优势<br></code></pre></td></tr></table></figure><p>国内对应的”中国能效标识”也是类似机制——服务器属于 GB 28381 标准。</p><h2 id="安全-质量管理认证"><a href="#安全-质量管理认证" class="headerlink" title="安全 + 质量管理认证"></a>安全 + 质量管理认证</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs text">ISO 9001：     质量管理体系（厂家级）<br>ISO 14001：    环境管理体系<br>ISO 27001：    信息安全管理体系（数据中心运营方常做）<br>ISO 22301：    业务连续性<br>TL 9000：      电信行业质量<br></code></pre></td></tr></table></figure><p>这些是<strong>厂家或运营方层面的认证</strong>，不是产品上贴的，但客户招标时常要求供应商提供。</p><h2 id="NVIDIA-Certified-Systems-——-GPU-服务器的”上车证”"><a href="#NVIDIA-Certified-Systems-——-GPU-服务器的”上车证”" class="headerlink" title="NVIDIA-Certified Systems —— GPU 服务器的”上车证”"></a>NVIDIA-Certified Systems —— GPU 服务器的”上车证”</h2><p><a href="https://www.nvidia.com/en-us/data-center/products/certified-systems/">NVIDIA-Certified Systems</a> 不是法规要求，但卖 NVIDIA AI 方案的 OEM 必须拿。</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><code class="hljs text">覆盖：<br>  Mainstream NVIDIA-Certified（主流推理 / 训练）<br>  Enterprise NVIDIA-Certified（企业 AI）<br>  HGX H100/H200/B200/B300 reference 设计<br>  GB200 / GB300 NVL72 整机柜认证<br>  <br>测试套件：<br>  GPU + CPU 兼容性<br>  PCIe / NVLink 拓扑<br>  网络 &amp; 存储性能基线<br>  整机散热 &amp; 功耗<br>  NGC 容器 + AI Enterprise 软件兼容<br></code></pre></td></tr></table></figure><p>戴尔 &#x2F; HPE &#x2F; 联想 &#x2F; 浪潮 &#x2F; 超微等 OEM 各自的”AI 服务器”就是基于 HGX 基板 + 自家整机集成 + 通过 NVIDIA-Certified。</p><h2 id="NVIDIA-AI-Enterprise-平台认证"><a href="#NVIDIA-AI-Enterprise-平台认证" class="headerlink" title="NVIDIA AI Enterprise 平台认证"></a>NVIDIA AI Enterprise 平台认证</h2><p><a href="https://www.nvidia.com/en-us/data-center/products/ai-enterprise/">NVIDIA AI Enterprise</a> 是企业级 AI 软件平台订阅，认证从”硬件 + 虚拟化层 + 平台”:</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs text">硬件：           NVIDIA-Certified System<br>Hypervisor：     VMware vSphere / Red Hat OpenShift / Nutanix<br>K8s：           OpenShift / Tanzu / Anthos / EKS / GKE / AKS<br>Bare-metal：    Ubuntu / RHEL / Rocky<br>软件栈：         NGC 容器 + NIM 微服务 + Triton + NeMo<br></code></pre></td></tr></table></figure><p>国内出口管制后，国产化 OS（统信 UOS、麒麟等）的 NVIDIA AI Enterprise 适配还在补 —— 待补充。</p><h2 id="NCP-AII-——-SA-实施工程师必备"><a href="#NCP-AII-——-SA-实施工程师必备" class="headerlink" title="NCP-AII —— SA 实施工程师必备"></a>NCP-AII —— SA 实施工程师必备</h2><p>NVIDIA 自家的<a href="https://www.nvidia.com/en-us/training/certification/">人员认证</a>，不是产品认证：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><code class="hljs text">NCA-AIIO：     基础级（销售、解决方案工程师入门）<br>NCP-AII：      专业级（SA、实施工程师）<br>NCP-AI Operations：   运维方向<br>NCA / NCP - Generative AI：内容方向<br></code></pre></td></tr></table></figure><h3 id="NCP-AII-考点权重（速查）"><a href="#NCP-AII-考点权重（速查）" class="headerlink" title="NCP-AII 考点权重（速查）"></a>NCP-AII 考点权重（速查）</h3><table><thead><tr><th>比重</th><th>模块</th></tr></thead><tbody><tr><td><strong>31%</strong></td><td>Cluster bring-up</td></tr><tr><td>5%</td><td>Physical layer</td></tr><tr><td>19%</td><td>Control plane</td></tr><tr><td><strong>33%</strong></td><td>Cluster test</td></tr><tr><td>12%</td><td>Troubleshooting</td></tr></tbody></table><p>考查内容（节选官方学习指南）：</p><h4 id="System-and-Server-Bring-up（31-）"><a href="#System-and-Server-Bring-up（31-）" class="headerlink" title="System and Server Bring-up（31%）"></a>System and Server Bring-up（31%）</h4><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><code class="hljs text">- 部署与验证序列<br>- AI factory 网络拓扑<br>- BMC / OOB / TPM 初始配置<br>- 固件升级（含 HGX）与故障检测<br>- 电力与散热参数验证<br>- GPU 服务器安装（SMI）<br>- 安装硬件验证<br>- 线缆类型与光模块识别<br>- 物理 GPU 安装<br>- 第三方存储初始参数配置<br></code></pre></td></tr></table></figure><h4 id="Physical-Layer-Management（5-）"><a href="#Physical-Layer-Management（5-）" class="headerlink" title="Physical Layer Management（5%）"></a>Physical Layer Management（5%）</h4><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs text">- BlueField 网络平台配置管理<br>- MIG（AI 和 HPC）配置<br></code></pre></td></tr></table></figure><h4 id="Control-Plane-Installation（19-）"><a href="#Control-Plane-Installation（19-）" class="headerlink" title="Control Plane Installation（19%）"></a>Control Plane Installation（19%）</h4><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><code class="hljs text">- Base Command Manager（BCM）安装、HA 配置<br>- OS 安装<br>- Cluster 安装（category、interfaces、Slurm/Enroot/Pyxis）<br>- NVIDIA GPU &amp; DOCA 驱动管理<br>- NVIDIA container toolkit<br>- GPU + Docker 演示<br>- NGC CLI 安装<br></code></pre></td></tr></table></figure><h4 id="Cluster-Test-and-Verification（33-）"><a href="#Cluster-Test-and-Verification（33-）" class="headerlink" title="Cluster Test and Verification（33%）"></a>Cluster Test and Verification（33%）</h4><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><code class="hljs text">- 单节点压力测试<br>- HPL 执行<br>- 单节点 NCCL（含 NVLink Switch 验证）<br>- 线缆信号质量验证<br>- 线缆连接确认<br>- 交换机 FW/SW 确认<br>- BlueField-3 FW/SW 确认<br>- 光模块 FW 确认<br>- ClusterKit 多面节点评估<br>- NCCL 验证 E/W fabric 带宽<br>- NCCL burn-in<br>- HPL burn-in<br>- NeMo burn-in<br>- 存储测试<br></code></pre></td></tr></table></figure><h4 id="Troubleshoot-and-Optimize（12-）"><a href="#Troubleshoot-and-Optimize（12-）" class="headerlink" title="Troubleshoot and Optimize（12%）"></a>Troubleshoot and Optimize（12%）</h4><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs text">- 硬件故障识别（GPU / 风扇 / 网卡）<br>- 故障卡 / GPU / PSU 识别替换<br>- NVSM 应用：https://docs.nvidia.com/nvidia-system-management-nvsm/<br>- AMD / Intel 服务器性能优化<br>- 存储优化<br></code></pre></td></tr></table></figure><p>NCP-AII 是 NVIDIA SA &#x2F; partner SA 的”必备资格”——考完才能独立交付 GB200&#x2F;H100 SuperPOD 集群验收。</p><h2 id="国产-GPU-与”信创认证”"><a href="#国产-GPU-与”信创认证”" class="headerlink" title="国产 GPU 与”信创认证”"></a>国产 GPU 与”信创认证”</h2><p>国产 AI 服务器除常规 CCC 外还涉及：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs text">信创目录：       工信部 / 国资委发布的&quot;信息技术应用创新&quot;产品目录<br>等保 2.0：       网络安全等级保护<br>密评：          密码应用安全性评估<br>GB/T 28181：    安防领域（部分场景）<br>GJB / 军品认证： 军工渠道<br></code></pre></td></tr></table></figure><p>这些不是统一一张证，而是分行业 &#x2F; 分省份 &#x2F; 分客户 群组织的——比如某省国采明确”必须在 XX 省信创目录”。</p><h2 id="数据中心整体认证"><a href="#数据中心整体认证" class="headerlink" title="数据中心整体认证"></a>数据中心整体认证</h2><p>数据中心运营方拿的”机房认证”：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs text">Uptime Institute：    Tier I-IV（常用 Tier III/IV）<br>TIA-942：            机房 Rated 1-4<br>EN 50600：           欧洲数据中心标准<br>GB 50174：           中国数据中心设计规范（A/B/C 类）<br>LEED：              绿色建筑<br>PUE：               能源使用效率（不是认证，是指标）<br>WUE：               水使用效率<br>CUE：               碳使用效率<br></code></pre></td></tr></table></figure><p>这些不是”服务器”的认证，而是”机房 &#x2F; 整个数据中心”的认证。但服务器选型时要考虑能否在某个 Tier 等级的机房落地（功率密度、抗震、冗余等）。</p><h2 id="一张速查"><a href="#一张速查" class="headerlink" title="一张速查"></a>一张速查</h2><table><thead><tr><th>认证</th><th>谁发</th><th>强制性</th><th>测什么</th></tr></thead><tbody><tr><td>CCC</td><td>中国国家认监委</td><td>强制（目录内）</td><td>安全 + EMC（中国）</td></tr><tr><td>CE</td><td>EU 自声明 + 第三方</td><td>强制（欧盟）</td><td>安全 + EMC + 能效 + RoHS</td></tr><tr><td>FCC</td><td>美国 FCC</td><td>强制（美）</td><td>EMC（美国）</td></tr><tr><td>UL&#x2F;NRTL</td><td>UL 等 NRTL</td><td>实质强制（美数据中心入场）</td><td>安全</td></tr><tr><td>ENERGY STAR</td><td>EPA</td><td>自愿</td><td>能效</td></tr><tr><td>ISO 9001</td><td>TÜV &#x2F; SGS &#x2F; BV 等</td><td>自愿</td><td>厂家质量管理</td></tr><tr><td>NVIDIA-Certified</td><td>NVIDIA</td><td>自愿（NVIDIA 生态）</td><td>GPU 兼容 + 性能基线</td></tr><tr><td>NCA&#x2F;NCP</td><td>NVIDIA</td><td>人员资格</td><td>SA &#x2F; 销售 &#x2F; 实施</td></tr><tr><td>信创目录</td><td>工信部</td><td>部分场景强制</td><td>自主可控</td></tr><tr><td>等保 2.0</td><td>公安部</td><td>强制（联网系统）</td><td>网络安全分级</td></tr></tbody></table><h2 id="实战经验"><a href="#实战经验" class="headerlink" title="实战经验"></a>实战经验</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><code class="hljs text">1. 卖到中国 → CCC 必拿（看品类目录）<br>2. 卖到欧盟 → CE 必拿，2019/424 能效硬指标<br>3. 卖到美国 → FCC + UL/NRTL（实质强制）<br>4. 国内大客户 → ISO 9001 / 14001 / 27001 是招标常见<br>5. NVIDIA AI 方案 → NVIDIA-Certified 是品牌背书<br>6. 政府国央 → 信创目录 / 等保 2.0<br>7. SA 入职 → 半年内拿 NCA-AIIO，1-2 年内拿 NCP-AII<br></code></pre></td></tr></table></figure><blockquote><p>待补充：H20 &#x2F; B20 在中国市场的 CCC + 信创认证状态。</p></blockquote><h2 id="小结"><a href="#小结" class="headerlink" title="小结"></a>小结</h2><ul><li>认证体系覆盖产品（CCC&#x2F;CE&#x2F;FCC）、体系（ISO）、人员（NCP）三类</li><li>卖到不同市场拿不同证：中国 CCC、欧盟 CE+能效指令、美国 FCC+UL</li><li>ENERGY STAR 是自愿但带来公共采购加分</li><li>NVIDIA-Certified 是 GPU 服务器进 NVIDIA 生态的必经</li><li>NCP-AII 是 SA 实施工程师 1-2 年内必拿的人员资格</li></ul><p>下一篇是第九章小结，按业务场景串起所有 benchmark 与认证。</p>]]>
    </content>
    <id>http://localhost:4000/posts/6a1f0b06/</id>
    <link href="http://localhost:4000/posts/6a1f0b06/"/>
    <published>2026-05-17T15:00:00.000Z</published>
    <summary>服务器卖到一个市场前要拿一堆&quot;认证&quot;——CCC、CE、FCC、ENERGY STAR、ISO9001、NVIDIA-Certified Systems。本文讲清这些认证各管什么、谁发、要做哪些测试，以及 SA 必备的 NCP-AII 资格。</summary>
    <title>服务器认证体系 —— CCC、CE、FCC、能效之星、NVIDIA-Certified</title>
    <updated>2026-05-24T13:49:48.032Z</updated>
  </entry>
  <entry>
    <category term="09-基准测试与认证" scheme="http://localhost:4000/categories/09-%E5%9F%BA%E5%87%86%E6%B5%8B%E8%AF%95%E4%B8%8E%E8%AE%A4%E8%AF%81/"/>
    <category term="MLPerf" scheme="http://localhost:4000/tags/MLPerf/"/>
    <category term="cuBLASMatmulBench" scheme="http://localhost:4000/tags/cuBLASMatmulBench/"/>
    <category term="nvbandwidth" scheme="http://localhost:4000/tags/nvbandwidth/"/>
    <category term="NeMo" scheme="http://localhost:4000/tags/NeMo/"/>
    <category term="GEMM" scheme="http://localhost:4000/tags/GEMM/"/>
    <content>
      <![CDATA[<p>GPU 集群和传统 HPC 集群的验收哲学不同：HPC 看 HPL 一个数字，AI 集群看的是<strong>算力 + 显存 + 互联 + 集合通信 + 真实训练 token&#x2F;s</strong> 一连串数字。本文按 NVIDIA SA 实战视角串完。</p><!-- more --><h2 id="AI-集群验收三阶段"><a href="#AI-集群验收三阶段" class="headerlink" title="AI 集群验收三阶段"></a>AI 集群验收三阶段</h2><pre class="mermaid">graph TB  S1[1. 节点级<br/>HPL, HPL-MxP<br/>nvbandwidth<br/>cublasMatmulBench<br/>DCGM diag]  S2[2. 机柜/Pod 级<br/>nccl-tests<br/>SHARP 验证]  S3[3. 应用级<br/>NeMo / Megatron 真训练<br/>token/sec]  S1 --> S2 --> S3</pre><p>每一阶段都不能跳——单卡过了不代表机柜过；机柜过了不代表大模型训练 MFU 达标。</p><h2 id="第-1-阶段（节点级）"><a href="#第-1-阶段（节点级）" class="headerlink" title="第 1 阶段（节点级）"></a>第 1 阶段（节点级）</h2><h3 id="nvbandwidth-——-H2D-D2H-D2D-带宽"><a href="#nvbandwidth-——-H2D-D2H-D2D-带宽" class="headerlink" title="nvbandwidth —— H2D &#x2F; D2H &#x2F; D2D 带宽"></a>nvbandwidth —— H2D &#x2F; D2H &#x2F; D2D 带宽</h3><p><a href="https://github.com/NVIDIA/nvbandwidth">nvbandwidth</a> 是 NVIDIA 官方的 GPU 带宽测试工具。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 编译（需要 boost）</span><br>cmake .<br>make -j $(<span class="hljs-built_in">nproc</span>)<br><br><span class="hljs-comment"># 列出所有 case</span><br>./nvbandwidth -h<br></code></pre></td></tr></table></figure><h4 id="两种执行单元：CE-vs-SM"><a href="#两种执行单元：CE-vs-SM" class="headerlink" title="两种执行单元：CE vs SM"></a>两种执行单元：CE vs SM</h4><p><strong>Copy Engine (CE)</strong>：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><code class="hljs text">CE 是 GPU 内部的 DMA（Direct Memory Access）引擎，独立于 SM<br>当 CPU/GPU 发起 CE 拷贝时，向 DMA 控制器发一组描述符<br>（源地址、目的地址、数据大小），DMA 接管 PCIe / NVLink 总线和显存控制器，直接搬比特流<br>仅搬数据，不能做计算或格式转换；数量、吞吐硬件 fix<br><br>cudaMemcpy / cudaMemcpyAsync 通常底层就用 CE<br>CE 测出来的数值是 NVLink 理论的 ~80% 即合格<br></code></pre></td></tr></table></figure><p><strong>Streaming Multiprocessor (SM)</strong>：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><code class="hljs text">SM 是流式多处理器（含 CUDA Core、寄存器、shared memory、Load/Store）<br>SM 拷贝是把搬运当成 CUDA Kernel 跑<br>GPU 启动成千上万线程，每线程负责一小块数据<br>线程通过 PTX 的 LD/ST 指令搬数据<br>极依赖内存合并（Memory Coalescing）：一个 Warp 32 线程同时访连续地址<br>显存控制器会合并成 128 字节宽事务，打满 HBM 带宽<br><br>SM 在做带宽测试时显然干不了别的（计算）<br>SM 效率会更低，~75-80% 算合理<br>典型地，CE 比 SM 效率高（CE 是专用 DMA 硬件）<br></code></pre></td></tr></table></figure><h4 id="使用模式"><a href="#使用模式" class="headerlink" title="使用模式"></a>使用模式</h4><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 列出所有测试</span><br>./nvbandwidth -t list<br><br><span class="hljs-comment"># 跑 host-to-device、device-to-host、device-to-device 全套</span><br>./nvbandwidth -t 0,1,2,3<br><br><span class="hljs-comment"># 只跑特定测试</span><br>./nvbandwidth -t host_to_device_memcpy_ce<br>./nvbandwidth -t device_to_device_memcpy_write_sm<br></code></pre></td></tr></table></figure><h4 id="期望数值"><a href="#期望数值" class="headerlink" title="期望数值"></a>期望数值</h4><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><code class="hljs text">H100 SXM5 单卡：<br>  H2D PCIe Gen5 x16：  ~52 GB/s（理论 64）<br>  D2H PCIe Gen5 x16：  ~52 GB/s<br>  D2D NVLink 4 双向：  ~720 GB/s（理论 900）<br><br>B200 SXM5 单卡：<br>  D2D NVLink 5 双向：  ~1500 GB/s（理论 1800）<br></code></pre></td></tr></table></figure><p>低于上述 80% 一般是 PCIe lane &#x2F; NVLink 链路问题。</p><h3 id="GEMM-算力测试"><a href="#GEMM-算力测试" class="headerlink" title="GEMM 算力测试"></a>GEMM 算力测试</h3><p>测算力 &#x3D; 测 GEMM（General Matrix Multiply）—— 几乎所有 AI workload 的基础原语。</p><h4 id="关键调优要点"><a href="#关键调优要点" class="headerlink" title="关键调优要点"></a>关键调优要点</h4><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs text">锁频：测试前必须 nvidia-smi -lgc &lt;clock&gt; 锁 GPU 频率<br>      否则 GPU Boost 会抖动，无法横向对比<br><br>Warmup：所有工具计时前必须预热（空跑几圈）<br>        否则第一次包含 PTX JIT 编译或库加载时间，数据不准<br><br>矩阵尺寸：要测出峰值算力，M, N, K 必须足够大（4096+）<br>         且最好是 8 或 16 倍数（Tensor Core 对齐）<br></code></pre></td></tr></table></figure><h4 id="工具家族"><a href="#工具家族" class="headerlink" title="工具家族"></a>工具家族</h4><p><strong>cublasMatmulBench</strong>（NVIDIA 内部 &#x2F; NDA 工具，集成在 benchmark guide）：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># INT8</span><br>cublasMatmulBench -P=bisb_imma -m=8192 -n=3456 -k=16384 -T=1000 -ta=1 -B=0<br><span class="hljs-comment"># FP16</span><br>cublasMatmulBench -P=hsh -m=12288 -n=9216 -k=32768 -T=1000 -tb=1 -B=0<br><span class="hljs-comment"># TF32</span><br>cublasMatmulBench -P=sss_fast_tf32 -m=8192 -n=3456 -k=16384 -T=1000 -ta=1 -B=0<br><span class="hljs-comment"># FP32</span><br>cublasMatmulBench -P=ddd -m=3456 -n=2048 -k=16384 -T=1000 -tb=1 -B=0<br><span class="hljs-comment"># FP64</span><br>cublasMatmulBench -P=sss -m=3456 -n=2048 -k=16384 -T=1000 -tb=1 -B=0<br></code></pre></td></tr></table></figure><p><strong>GEMM CublasLt</strong> —— 公开 Python 版：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs text">https://github.com/Azure/AI-benchmarking-guide/blob/main/Benchmarks/NVIDIA/GEMMCublasLt.py<br></code></pre></td></tr></table></figure><p><strong>batchBLAS</strong> —— CUDA Samples 自带：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs text">cuda_samples / 4_CUDA_Libraries / batchCUBLAS<br></code></pre></td></tr></table></figure><p><strong>MAMF Finder</strong>（开源）：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs text">https://github.com/stas00/ml-engineering/blob/master/compute/accelerator/benchmarks/mamf-finder.py<br>帮你找出最高 achievable GEMM 算力（&quot;Maximum Achievable Matmul FLOPS&quot;）<br></code></pre></td></tr></table></figure><h4 id="期望算力（dense-throughput）"><a href="#期望算力（dense-throughput）" class="headerlink" title="期望算力（dense throughput）"></a>期望算力（dense throughput）</h4><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><code class="hljs text">H100 SXM5：<br>  FP8：     3958 TFLOPS dense<br>  FP16/BF16： 1979 TFLOPS dense<br>  TF32：    989 TFLOPS dense<br>  FP64：    67 TFLOPS dense<br><br>B200 SXM5：<br>  FP4：     18000 TFLOPS dense<br>  FP8：     9000 TFLOPS dense<br>  FP16/BF16： 2250 TFLOPS dense<br>  FP64：    40 TFLOPS dense<br></code></pre></td></tr></table></figure><p>跑出来 ≥ 90% 理论值算合格。低于 80% 排查锁频 &#x2F; NUMA &#x2F; cuBLAS 版本。</p><h3 id="DCGM-diag-——-节点健康自检"><a href="#DCGM-diag-——-节点健康自检" class="headerlink" title="DCGM diag —— 节点健康自检"></a>DCGM diag —— 节点健康自检</h3><p><a href="https://developer.nvidia.com/dcgm">NVIDIA DCGM</a> 是 GPU 监控 + 诊断工具：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><code class="hljs bash">dcgmi diag -r 1   <span class="hljs-comment"># 快速 (~30s)</span><br>dcgmi diag -r 2   <span class="hljs-comment"># 中等 (~5min)</span><br>dcgmi diag -r 3   <span class="hljs-comment"># 完整（含压力测试，~30min）</span><br>dcgmi diag -r 4   <span class="hljs-comment"># 长时（含 thermal stress, ~1h+）</span><br></code></pre></td></tr></table></figure><p><code>-r 3</code> 通常够节点初验。<code>-r 4</code> 用于客户怀疑 thermal throttle 时跑长时间压测。</p><h2 id="第-2-阶段（机柜-Pod-级）"><a href="#第-2-阶段（机柜-Pod-级）" class="headerlink" title="第 2 阶段（机柜 &#x2F; Pod 级）"></a>第 2 阶段（机柜 &#x2F; Pod 级）</h2><h3 id="NCCL-tests-——-集合通信带宽"><a href="#NCCL-tests-——-集合通信带宽" class="headerlink" title="NCCL-tests —— 集合通信带宽"></a>NCCL-tests —— 集合通信带宽</h3><p><a href="https://github.com/NVIDIA/nccl-tests">NCCL-tests</a> 是事实标准。前一篇已展开测试列表（all_reduce_perf 等）和 algbw &#x2F; busbw 区别。</p><h4 id="NVL72-多机不同规模-busbw-基线"><a href="#NVL72-多机不同规模-busbw-基线" class="headerlink" title="NVL72 &#x2F; 多机不同规模 busbw 基线"></a>NVL72 &#x2F; 多机不同规模 busbw 基线</h4><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><code class="hljs text">单机 8 卡 H100 NVLink 4：     AllReduce busbw ~370-400 GB/s<br>单机 8 卡 B200 NVLink 5：     AllReduce busbw ~700-900 GB/s<br>NVL72 72 卡 NVLink 5：       AllReduce busbw ~700-900 GB/s<br>跨节点 H100 + IB NDR 单端口：  ~50 GB/s 量级<br>跨节点 H100 + IB NDR 双端口：  ~100 GB/s<br>SuperPOD H100 256-GPU NVLink Network：达到 100+ GB/s<br>SHARP 启用后大规模 AllReduce：~2× 提升<br></code></pre></td></tr></table></figure><blockquote><p>待补充：完整 NVL72 &#x2F; NVL576 &#x2F; DGX SuperPOD 不同 message size 的 busbw 表。</p></blockquote><h4 id="排障思路"><a href="#排障思路" class="headerlink" title="排障思路"></a>排障思路</h4><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs text">1. NCCL_DEBUG=INFO 看选了哪个 algorithm + protocol<br>2. 拓扑：nvidia-smi topo -m 看 NVLink / PCIe / SYS 矩阵<br>3. 网络：nccl-tests 加 -x NCCL_IB_HCA=mlx5_0,mlx5_1 显式指定<br>4. SHARP：NCCL_COLLNET_ENABLE=1<br>5. P2P：NCCL_P2P_LEVEL 控制是否走 P2P / 强制走 NIC<br></code></pre></td></tr></table></figure><h3 id="ClusterKit-——-SuperPOD-验收快速-sanity-check"><a href="#ClusterKit-——-SuperPOD-验收快速-sanity-check" class="headerlink" title="ClusterKit —— SuperPOD 验收快速 sanity check"></a>ClusterKit —— SuperPOD 验收快速 sanity check</h3><p><a href="https://developer.nvidia.com/networking/hpc-x">NVIDIA HPC-X</a> 自带的集群验证工具集：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><code class="hljs text">clusterkit 主入口<br>单对 / 全对 latency-bandwidth<br>GPU↔GPU、CPU↔GPU 多组合<br>报告生成与 baseline 比对<br></code></pre></td></tr></table></figure><p>ClusterKit 是 SuperPOD 验收里”几分钟出全图”的工具，比手工拼 nccl-tests 高效。</p><blockquote><p>完整使用示例多在 Partner &#x2F; NVIDIA 内部 RA，等待补充。</p></blockquote><h3 id="MLPerf"><a href="#MLPerf" class="headerlink" title="MLPerf"></a>MLPerf</h3><p><a href="https://mlcommons.org/benchmarks/">MLCommons MLPerf</a> 是行业内 NVIDIA &#x2F; Google &#x2F; Intel &#x2F; AMD 加速器对比的标准入口。</p><p>主要类别：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><code class="hljs text">MLPerf Training      — pretraining / fine-tuning<br>MLPerf Inference     — Datacenter / Edge<br>MLPerf HPC           — 科学计算<br>MLPerf Storage       — 存储吞吐<br>MLPerf Power         — 能效<br>MLPerf Client/Mobile/Tiny — 端侧<br></code></pre></td></tr></table></figure><p>NVIDIA 通常以 DGX &#x2F; HGX &#x2F; GB200 系统提交：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs text">详细工程报告：     NVIDIA blog 与 GitHub repo nvidia/MLPerf*<br>复现工件：         NeMo / Megatron / TensorRT-LLM 等<br></code></pre></td></tr></table></figure><ul><li>NVIDIA MLPerf blog 索引：<a href="https://developer.nvidia.com/blog/tag/mlperf/">https://developer.nvidia.com/blog/tag/mlperf/</a></li><li>NVIDIA submission repos：<a href="https://github.com/mlcommons">https://github.com/mlcommons</a></li></ul><blockquote><p>待补充：跟踪最新一轮 MLPerf Training&#x2F;Inference 中 NVIDIA 的 SoTA 数字。</p></blockquote><h4 id="怎么读-MLPerf-结果"><a href="#怎么读-MLPerf-结果" class="headerlink" title="怎么读 MLPerf 结果"></a>怎么读 MLPerf 结果</h4><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs text">Closed Division：    严格规则，能直接横比<br>Open Division：      开放优化，看创新方向<br>&quot;提交规模&quot;：         看 GPU 数（8 / 64 / 1024 / 11000+）<br>&quot;模型 / 任务&quot;：       Llama-2 70B, GPT-3 175B, BERT, ResNet-50, RNN-T, Stable Diffusion ...<br>&quot;指标&quot;：             Training time-to-train（分钟）/ Inference QPS、samples/sec<br></code></pre></td></tr></table></figure><p>NVIDIA 几乎每轮都是榜首——<strong>这是 NVIDIA 卖 GPU 的”市场背书”</strong>。但 SoTA 数字基于”DGX SuperPOD 万卡级 + 整套 SW stack”——客户实际能不能复现要看自己软硬件配置。</p><h2 id="第-3-阶段（应用级）"><a href="#第-3-阶段（应用级）" class="headerlink" title="第 3 阶段（应用级）"></a>第 3 阶段（应用级）</h2><h3 id="NeMo-Megatron-Burn-in-烧机"><a href="#NeMo-Megatron-Burn-in-烧机" class="headerlink" title="NeMo &#x2F; Megatron Burn-in 烧机"></a>NeMo &#x2F; Megatron Burn-in 烧机</h3><p>集群级烧机测试通常用 NeMo &#x2F; Megatron 跑真实 training step 数小时～数十小时，监控：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><code class="hljs text">Tokens/sec 稳定性<br>GPU / HBM 温度<br>链路 down / NCCL timeout<br>训练 loss 曲线是否平滑<br></code></pre></td></tr></table></figure><h4 id="关键监控"><a href="#关键监控" class="headerlink" title="关键监控"></a>关键监控</h4><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><code class="hljs text">DCGM Exporter → Prometheus → Grafana<br>NetQ / UFM 链路 telemetry<br>SLURM / Run:ai 任务日志<br></code></pre></td></tr></table></figure><h4 id="典型烧机配置"><a href="#典型烧机配置" class="headerlink" title="典型烧机配置"></a>典型烧机配置</h4><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><code class="hljs text">模型：           Llama-2 70B / GPT-3 175B / Llama-3 8B（轻量）<br>数据集：         合成数据或 C4 子集<br>精度：           BF16 + FP8 (TE)<br>batch / seq：    跟 NVIDIA reference recipe<br>并行：           TP=8 + PP=8 + DP=N（按集群规模）<br>时长：           24h（短）/ 72h（中）/ 7 天（长）<br></code></pre></td></tr></table></figure><blockquote><p>标准烧机时长 &#x2F; 阈值多来自 RA，等待补充。</p></blockquote><h4 id="通过标准"><a href="#通过标准" class="headerlink" title="通过标准"></a>通过标准</h4><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><code class="hljs text">Tokens/sec：     稳定（&lt; 5% 抖动）<br>loss 曲线：      平滑下降，无 NaN / Inf<br>GPU 温度：       &lt; 85°C 持续<br>HBM 温度：       &lt; 95°C 持续<br>NCCL timeout：  0 次<br>节点重启：       0 次<br></code></pre></td></tr></table></figure><p>任何一项失败 → 排查节点 &#x2F; 链路 &#x2F; 散热，整改后重测。</p><h3 id="vLLM-TensorRT-LLM-推理验收"><a href="#vLLM-TensorRT-LLM-推理验收" class="headerlink" title="vLLM &#x2F; TensorRT-LLM 推理验收"></a>vLLM &#x2F; TensorRT-LLM 推理验收</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># vLLM 自带 benchmark</span><br>python -m vllm.entrypoints.openai.api_server --model meta-llama/Llama-3-70B<br>python benchmark_serving.py --num-prompts 1000 --request-rate 10<br><br><span class="hljs-comment"># TensorRT-LLM perf</span><br>trtllm-bench --model_path /path/to/llama3 --max_batch_size 32 throughput<br></code></pre></td></tr></table></figure><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><code class="hljs text">观察：<br>  P50 / P99 TTFT（Time To First Token）<br>  P50 / P99 TPOT（Time Per Output Token）<br>  Throughput（tokens/sec）<br>  GPU 利用率（nvidia-smi dmon）<br>  HBM 占用<br></code></pre></td></tr></table></figure><p>不同模型 &#x2F; 量化 &#x2F; 序列长度组合下数字差很多——验收前先和客户对齐”业务侧 SLA”，再选基线。</p><h2 id="一张验收表"><a href="#一张验收表" class="headerlink" title="一张验收表"></a>一张验收表</h2><table><thead><tr><th>阶段</th><th>工具</th><th>通过标准</th></tr></thead><tbody><tr><td>节点</td><td>DCGM diag -r 3</td><td>All PASS</td></tr><tr><td>节点</td><td>nvbandwidth</td><td>NVLink ≥ 80% 理论</td></tr><tr><td>节点</td><td>cublasMatmulBench</td><td>FP8&#x2F;FP16 ≥ 90% peak</td></tr><tr><td>节点</td><td>HPL</td><td>效率 70-80%</td></tr><tr><td>节点</td><td>HPL-MxP</td><td>Tensor Core 跑出</td></tr><tr><td>机柜</td><td>nccl-tests all_reduce</td><td>busbw 符合基线</td></tr><tr><td>机柜</td><td>nccl-tests alltoall</td><td>MoE 路径 OK</td></tr><tr><td>机柜</td><td>SHARP 启用</td><td>大消息 ~2× 提升</td></tr><tr><td>应用</td><td>NeMo &#x2F; Megatron 24h+</td><td>tokens&#x2F;sec 稳 &#x2F; loss 平</td></tr><tr><td>应用</td><td>vLLM &#x2F; TRT-LLM</td><td>TTFT&#x2F;TPOT 满足 SLA</td></tr></tbody></table><h2 id="为什么不能跳阶段"><a href="#为什么不能跳阶段" class="headerlink" title="为什么不能跳阶段"></a>为什么不能跳阶段</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><code class="hljs text">跳节点 → 集群：<br>  单卡有 thermal throttle，集群表现像&quot;扩展性差&quot;<br>  排查时 N×N 排错，浪费几天<br>  <br>跳机柜 → 应用：<br>  AllReduce busbw 不达标，但训练能跑（只是 MFU 低）<br>  → 客户拿到集群训练 MFU 30%，怀疑硬件<br>  → 实际是网络 ~30% 折损<br>  → 排查极困难<br>  <br>所以三阶段必须按顺序跑过<br></code></pre></td></tr></table></figure><h2 id="一些坑"><a href="#一些坑" class="headerlink" title="一些坑"></a>一些坑</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br></pre></td><td class="code"><pre><code class="hljs text">1. 锁频忘了：<br>   GPU Boost 让单次 GEMM 跑出 110% 理论<br>   → 多次跑分波动 10%+<br>   <br>2. NUMA 没绑：<br>   nvidia-smi topo -m 显示 GPU 0 应该在 numa node 0<br>   实际 mpirun 把进程跑到 numa node 1<br>   → 跨 socket 链路加 30-50% 延迟<br>   <br>3. PCIe 降速：<br>   nvidia-smi 查&quot;GPU Link Width&quot;应该是 16x，&quot;Link Generation&quot;应该是 5<br>   实际 5 → 3，链路问题，需要重新插或换板<br>   <br>4. 容器版本不对：<br>   NVIDIA hpc-benchmarks 容器有不同版本（24.06 / 24.09 / 24.12）<br>   大模型测试要 PyTorch + CUDA + cuDNN + NCCL 全套版本对齐<br>   → 不对齐有时候慢一倍<br>   <br>5. 客户拿走 baseline 自己跑出来不一致：<br>   客户没跑 nvidia-smi -lgc 锁频<br>   客户用了不同 BIOS / Power Profile<br>   客户驱动版本不一致<br>   → 一定要把 reproduce 文档写细<br></code></pre></td></tr></table></figure><h2 id="小结"><a href="#小结" class="headerlink" title="小结"></a>小结</h2><ul><li>AI 集群验收三阶段：节点 → 机柜 → 应用，缺一不可</li><li>节点级：nvbandwidth + cublasMatmulBench + DCGM diag + HPL</li><li>机柜级：nccl-tests（busbw）+ ClusterKit + SHARP 验证</li><li>应用级：NeMo&#x2F;Megatron 24h+ burn-in + vLLM&#x2F;TRT-LLM 推理 SLA</li><li>MLPerf 是行业标尺，看 SoTA 但客户复现要慎重</li><li>锁频、NUMA、PCIe、版本是四大坑</li></ul><p>下一篇讲服务器认证体系——CCC、CE、FCC、能效之星、NVIDIA-Certified。</p>]]>
    </content>
    <id>http://localhost:4000/posts/6a1f0b05/</id>
    <link href="http://localhost:4000/posts/6a1f0b05/"/>
    <published>2026-05-10T08:25:00.000Z</published>
    <summary>AI 集群验收&quot;三阶段&quot;：节点级算力 + 带宽、机柜级集合通信、应用级 NeMo 真训练。本文按 NVIDIA SA 视角串完 cuBLASMatmulBench / nvbandwidth / NCCL-tests / MLPerf / NeMo burn-in。</summary>
    <title>AI 基准 —— MLPerf、cuBLAS、nvbandwidth、NCCL-tests、NeMo 烧机</title>
    <updated>2026-05-24T13:49:48.032Z</updated>
  </entry>
  <entry>
    <category term="09-基准测试与认证" scheme="http://localhost:4000/categories/09-%E5%9F%BA%E5%87%86%E6%B5%8B%E8%AF%95%E4%B8%8E%E8%AE%A4%E8%AF%81/"/>
    <category term="fio" scheme="http://localhost:4000/tags/fio/"/>
    <category term="iperf" scheme="http://localhost:4000/tags/iperf/"/>
    <category term="ib_write_bw" scheme="http://localhost:4000/tags/ib-write-bw/"/>
    <category term="SPECsfs" scheme="http://localhost:4000/tags/SPECsfs/"/>
    <content>
      <![CDATA[<p>存储和网络两条线的 benchmark 在集群验收里同样占大头——HPL 测 GPU、fio 测盘、iperf&#x2F;perftest 测网。本文讲实操。</p><!-- more --><h2 id="存储-benchmark-的几个层级"><a href="#存储-benchmark-的几个层级" class="headerlink" title="存储 benchmark 的几个层级"></a>存储 benchmark 的几个层级</h2><pre class="mermaid">graph TB  L1[块设备 / RAW<br/>fio / iozone]  L2[文件系统<br/>fio + ext4/xfs/zfs]  L3[NAS / 网络文件<br/>SPECsfs / fio over NFS]  L4[分布式存储<br/>IO500 / Gluster bench / Ceph bench]  L5[GPUDirect Storage<br/>gdsio / NVIDIA fio plugin]  L1 --> L2 --> L3 --> L4 --> L5</pre><p>各层关注点不同。<strong>测 SSD 性能用 fio 直对块设备；测分布式文件系统用 IO500</strong>。</p><h2 id="fio-——-块-文件存储基准事实标准"><a href="#fio-——-块-文件存储基准事实标准" class="headerlink" title="fio —— 块&#x2F;文件存储基准事实标准"></a>fio —— 块&#x2F;文件存储基准事实标准</h2><p><a href="https://github.com/axboe/fio">fio</a> 是 Jens Axboe（Linux block layer 作者）写的，块&#x2F;文件存储测试事实标准。</p><h3 id="关键参数"><a href="#关键参数" class="headerlink" title="关键参数"></a>关键参数</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><code class="hljs bash">fio \<br>  --name=<span class="hljs-built_in">test</span> \<br>  --filename=/dev/nvme0n1 \   <span class="hljs-comment"># 直接对块设备</span><br>  --rw=randread \              <span class="hljs-comment"># 模式</span><br>  --bs=4k \                    <span class="hljs-comment"># 块大小</span><br>  --iodepth=128 \              <span class="hljs-comment"># 队列深度</span><br>  --numjobs=8 \                <span class="hljs-comment"># 并发线程</span><br>  --runtime=300 \              <span class="hljs-comment"># 持续秒数</span><br>  --time_based \<br>  --group_reporting \<br>  --ioengine=libaio \          <span class="hljs-comment"># 引擎（io_uring 也常用）</span><br>  --direct=1                    <span class="hljs-comment"># 绕过 page cache</span><br></code></pre></td></tr></table></figure><h3 id="五个标准-workload"><a href="#五个标准-workload" class="headerlink" title="五个标准 workload"></a>五个标准 workload</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs text">seq_read：     大块顺序读     → 测带宽 GB/s<br>seq_write：    大块顺序写     → 测带宽 GB/s<br>rand_read：    4K 随机读      → 测 IOPS / 延迟<br>rand_write：   4K 随机写      → 测 IOPS / 延迟（写最痛苦）<br>70/30 mix：    70% 读 30% 写  → 模拟真实数据库<br></code></pre></td></tr></table></figure><h3 id="看哪几个数字"><a href="#看哪几个数字" class="headerlink" title="看哪几个数字"></a>看哪几个数字</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs text">IOPS：      每秒 IO 操作数<br>bw：        带宽（MB/s 或 GB/s）<br>clat avg/95/99/99.9：  完成延迟分布<br>clat stddev：          延迟抖动（越小越稳）<br>util：      设备利用率（高 ≠ 满，注意 multipath）<br></code></pre></td></tr></table></figure><p>P99&#x2F;P999 延迟比平均延迟更重要——<strong>用户感知的是”慢请求的尾巴”</strong>。</p><h3 id="一些经验值"><a href="#一些经验值" class="headerlink" title="一些经验值"></a>一些经验值</h3><table><thead><tr><th>介质</th><th>顺序读</th><th>4K 随机读 IOPS</th><th>P99 延迟</th></tr></thead><tbody><tr><td>7200 转 HDD</td><td>200 MB&#x2F;s</td><td>100-200</td><td>10-30 ms</td></tr><tr><td>SATA SSD</td><td>550 MB&#x2F;s</td><td>50K-100K</td><td>&lt; 1 ms</td></tr><tr><td>NVMe Gen4 SSD</td><td>7 GB&#x2F;s</td><td>1M</td><td>&lt; 100 μs</td></tr><tr><td><strong>NVMe Gen5 SSD</strong></td><td><strong>14 GB&#x2F;s</strong></td><td><strong>2M</strong></td><td>&lt; 100 μs</td></tr><tr><td>Optane PMem（已停产）</td><td>6 GB&#x2F;s</td><td>0.5M</td><td>&lt; 10 μs</td></tr></tbody></table><p>新代次（PCIe Gen5 NVMe）一颗盘 IOPS 已经够干掉传统 RAID 阵列。</p><h3 id="跑-fio-的几个坑"><a href="#跑-fio-的几个坑" class="headerlink" title="跑 fio 的几个坑"></a>跑 fio 的几个坑</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br></pre></td><td class="code"><pre><code class="hljs text">1. direct=1 必须加<br>   → 不加 direct，page cache 会让&quot;随机读&quot;变成&quot;内存读&quot;<br><br>2. fio 之前 fio --filename=... --rw=write --io_size=400G 预热<br>   → SSD 没写过的页（trim 状态）读出来很快但是假象<br><br>3. 队列深度 iodepth：<br>   → 单线程 NVMe 测 IOPS 至少 32-128<br>   → SATA SSD iodepth=32 即可（HBA 队列限制）<br><br>4. 多线程 numjobs：<br>   → 测带宽用 numjobs=多个、bs 大<br>   → 测 IOPS 用 numjobs=多个、bs=4k<br><br>5. runtime 至少 5 分钟<br>   → SSD 有 SLC cache，开始几秒数字虚高<br>   → 真实长时持续 IOPS 通常 30-50% 峰值<br><br>6. 不要测整盘 100% 容量<br>   → 写满后 GC 触发，性能崩<br>   → 留 10-20% OP（over-provisioning）<br></code></pre></td></tr></table></figure><h2 id="SPECsfs-——-NAS-文件存储基准"><a href="#SPECsfs-——-NAS-文件存储基准" class="headerlink" title="SPECsfs —— NAS &#x2F; 文件存储基准"></a>SPECsfs —— NAS &#x2F; 文件存储基准</h2><p><a href="https://www.spec.org/sfs2020/">SPEC SFS 2014 &#x2F; SPECstorage Solution 2020</a> 是 NAS 选型主基准。</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><code class="hljs text">4 个 workload pattern：<br>  SWBUILD     软件构建（小文件密集）<br>  VDA         视频数据采集（大顺序写）<br>  EDA         电路设计（混合读写）<br>  AI_IMAGE    AI 训练数据集（小文件随机读）<br><br>指标：<br>  ops/sec（操作数）<br>  ORT（Overall Response Time，关键阈值）<br></code></pre></td></tr></table></figure><p>NetApp &#x2F; Pure &#x2F; IBM &#x2F; Huawei OceanStor 等存储厂家在 SPEC 官网定期提交结果——是 NAS 招标的硬指标。</p><h2 id="IO500-——-分布式存储榜"><a href="#IO500-——-分布式存储榜" class="headerlink" title="IO500 —— 分布式存储榜"></a>IO500 —— 分布式存储榜</h2><p><a href="https://io500.org/">IO500</a> 半年度榜单，分布式 &#x2F; HPC 存储事实尺。</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><code class="hljs text">工作负载：<br>  IOR easy / hard：    带宽<br>  mdtest easy / hard：  元数据<br>  find：               遍历<br><br>子分数：<br>  Bandwidth + Metadata = IO500 score（GiB/s × kIOPS）<br><br>榜单：<br>  Frontier (ORNL Lustre)：     ~5000 IO500 score<br>  WekaFS in 多家 site<br>  GPFS / Spectrum Scale<br>  Ceph<br></code></pre></td></tr></table></figure><blockquote><p>待补充：2026 年最新 IO500 榜单。</p></blockquote><p>GPU 集群验收里<strong>通常会跑 IOR &#x2F; mdtest 而不是完整 IO500</strong>——要的就是带宽和元数据上限。</p><h2 id="GPUDirect-Storage-基准"><a href="#GPUDirect-Storage-基准" class="headerlink" title="GPUDirect Storage 基准"></a>GPUDirect Storage 基准</h2><p><a href="https://docs.nvidia.com/gpudirect-storage/">GPUDirect Storage (GDS)</a> 让 NVMe 数据直通 GPU 显存，绕开 CPU bounce buffer。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># NVIDIA 自带 gdsio 工具</span><br>gdsio -d 0 -D /mnt/wekafs -w 8 -s 1G -i 1024K -I 0 -x 0 -T 60<br><span class="hljs-comment"># -d device, -D dir, -w workers, -s size, -i I/O size, -I direction(read), -T runtime</span><br></code></pre></td></tr></table></figure><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><code class="hljs text">观察：<br>  GiB/s：           直通带宽<br>  CPU 利用率：       应该接近 0（成功 bypass）<br>  HBM 占用：         数据应该出现在 GPU 显存<br></code></pre></td></tr></table></figure><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs text">传统路径：     SSD → DMA → CPU RAM → PCIe → GPU HBM    （瓶颈：CPU bounce + PCIe 一圈）<br>GDS：         SSD → DMA → PCIe → GPU HBM             （直接，~3-5× 带宽）<br></code></pre></td></tr></table></figure><p>LLM checkpoint &#x2F; dataloader 用 GDS 显著提升——这就是为什么 WekaFS &#x2F; DDN &#x2F; VAST 等 AI 存储厂商都强调 GDS 认证。</p><h2 id="网络基准"><a href="#网络基准" class="headerlink" title="网络基准"></a>网络基准</h2><h3 id="iperf-iperf3-——-TCP-UDP-吞吐"><a href="#iperf-iperf3-——-TCP-UDP-吞吐" class="headerlink" title="iperf &#x2F; iperf3 —— TCP&#x2F;UDP 吞吐"></a>iperf &#x2F; iperf3 —— TCP&#x2F;UDP 吞吐</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 服务端</span><br>iperf3 -s<br><br><span class="hljs-comment"># 客户端</span><br>iperf3 -c &lt;server_ip&gt; -t 60 -P 8 -O 5<br><span class="hljs-comment"># -t 60s, -P 8 并发流, -O 5 omit 前 5s 预热</span><br></code></pre></td></tr></table></figure><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><code class="hljs text">观察：<br>  GBits/sec：    总吞吐<br>  Retransmits：  重传（网络丢包指标）<br>  RTT：          基础延迟<br></code></pre></td></tr></table></figure><h3 id="qperf-netperf-——-延迟-吞吐综合"><a href="#qperf-netperf-——-延迟-吞吐综合" class="headerlink" title="qperf &#x2F; netperf —— 延迟 + 吞吐综合"></a>qperf &#x2F; netperf —— 延迟 + 吞吐综合</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># qperf 服务端</span><br>qperf<br><br><span class="hljs-comment"># 客户端</span><br>qperf &lt;server&gt; -t 30 tcp_bw tcp_lat<br></code></pre></td></tr></table></figure><p>netperf 更老牌，cloud 自己测试常用。</p><h3 id="ib-write-bw-ib-read-bw-ib-send-lat-——-InfiniBand-RDMA"><a href="#ib-write-bw-ib-read-bw-ib-send-lat-——-InfiniBand-RDMA" class="headerlink" title="ib_write_bw &#x2F; ib_read_bw &#x2F; ib_send_lat —— InfiniBand RDMA"></a>ib_write_bw &#x2F; ib_read_bw &#x2F; ib_send_lat —— InfiniBand RDMA</h3><p><a href="https://github.com/linux-rdma/perftest">perftest</a> 套件：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 服务端</span><br>ib_write_bw -d mlx5_0 -F<br><br><span class="hljs-comment"># 客户端</span><br>ib_write_bw -d mlx5_0 -F &lt;server_ip&gt; --report_gbits<br></code></pre></td></tr></table></figure><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs text">ib_write_bw：    单向 RDMA Write 带宽<br>ib_read_bw：     单向 RDMA Read 带宽（通常稍低于 Write）<br>ib_send_bw：     SEND 操作带宽<br>ib_write_lat：   单向 RDMA Write 延迟<br>ib_send_lat：    SEND 延迟<br></code></pre></td></tr></table></figure><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><code class="hljs text">NDR 400G InfiniBand 单端口 期望：<br>  ib_write_bw：    ≈ 380-395 Gbit/s（理论 400G 的 ~95%）<br>  ib_write_lat：   &lt; 1 μs（机内）<br>  <br>跨柜（OSFP 光缆 + Quantum-2 交换机）：<br>  ib_write_bw：    ≈ 360-390 Gbit/s<br>  ib_write_lat：   ~2-5 μs<br></code></pre></td></tr></table></figure><p>低于这个数就要排查 cable &#x2F; FEC &#x2F; GPU NUMA &#x2F; firmware。</p><h3 id="NCCL-tests-——-集合通信"><a href="#NCCL-tests-——-集合通信" class="headerlink" title="NCCL-tests —— 集合通信"></a>NCCL-tests —— 集合通信</h3><p>GPU 集群验收必跑。NVIDIA SA 视图里：</p><table><thead><tr><th>测试</th><th>含义</th></tr></thead><tbody><tr><td><code>all_reduce_perf</code></td><td>AllReduce 带宽（最关键）</td></tr><tr><td><code>all_gather_perf</code></td><td>AllGather</td></tr><tr><td><code>reduce_scatter_perf</code></td><td>ReduceScatter</td></tr><tr><td><code>broadcast_perf</code></td><td>Broadcast</td></tr><tr><td><code>reduce_perf</code></td><td>Reduce</td></tr><tr><td><code>alltoall_perf</code></td><td>AllToAll（MoE 关键）</td></tr><tr><td><code>sendrecv_perf</code></td><td>Point-to-point</td></tr></tbody></table><p>关键指标：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs text">busbw (bus bandwidth)：考虑算法因子后的&quot;真实&quot;带宽，跨规模可比<br>algbw (algorithm bandwidth)：原始数据量 / 时间<br></code></pre></td></tr></table></figure><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 单机 8 卡</span><br>all_reduce_perf -b 1G -e 16G -f 2 -g 8<br><br><span class="hljs-comment"># 多机（结合 mpirun + slurm）</span><br>mpirun -np 64 -hostfile hosts.txt \<br>  -x NCCL_DEBUG=INFO -x NCCL_IB_HCA=mlx5_0,mlx5_1 \<br>  all_reduce_perf -b 1G -e 16G -f 2<br></code></pre></td></tr></table></figure><p>常用环境变量：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs text">NCCL_IB_HCA       指定 HCA<br>NCCL_TESTS_SPLIT  拆分通信器<br>NCCL_ALGO         算法（Tree / Ring）<br>NCCL_PROTO        协议（Simple / LL / LL128）<br>NCCL_DEBUG=INFO   排障<br></code></pre></td></tr></table></figure><h3 id="busbw-期望值（H100-B200-单机-8-GPU）"><a href="#busbw-期望值（H100-B200-单机-8-GPU）" class="headerlink" title="busbw 期望值（H100 &#x2F; B200 单机 8 GPU）"></a>busbw 期望值（H100 &#x2F; B200 单机 8 GPU）</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><code class="hljs text">H100 SXM5 8 GPU AllReduce busbw：    ~370-400 GB/s（NVLink 4 域内）<br>B200 SXM5 8 GPU AllReduce busbw：    ~700-900 GB/s（NVLink 5 域内）<br>NVL72 72 GPU AllReduce busbw：       ~700-900 GB/s（NVLink 5，72-domain）<br>跨节点 8节点 H100 over IB NDR：       ~80-100 GB/s（IB 限制）<br></code></pre></td></tr></table></figure><p>低于这个值优先排查：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs text">1. NVLink 拓扑（nvidia-smi topo -m）<br>2. PCIe Gen5 x16 是否 lane 全开<br>3. NCCL_TOPO_FILE / NCCL_GRAPH_FILE 是否被错误使用<br>4. NUMA binding（mpirun 加 PE=12 / map-by 等）<br>5. ATS / PCIe ACS 是否关闭<br></code></pre></td></tr></table></figure><h2 id="SHARP-——-InfiniBand-内-in-network-compute"><a href="#SHARP-——-InfiniBand-内-in-network-compute" class="headerlink" title="SHARP —— InfiniBand 内 in-network compute"></a>SHARP —— InfiniBand 内 in-network compute</h2><p>NVIDIA Quantum-2 &#x2F; Quantum-3 交换机支持 SHARPv3：<strong>AllReduce 在交换机内完成</strong>，减少 NIC 流量。</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs text">普通 RDMA AllReduce：<br>  每节点把数据通过 NIC → 交换机 → NIC 给其他节点 → 累加<br>  N 节点 = N 倍流量<br>  <br>SHARP：<br>  数据进交换机后在芯片内累加，结果广播回去<br>  N 节点 ≈ 2 倍流量<br>  → 大规模 AllReduce 性能跃升<br></code></pre></td></tr></table></figure><p>跑 NCCL-tests 时打 <code>NCCL_COLLNET_ENABLE=1</code> 启用 SHARP 路径。</p><h2 id="一张速查"><a href="#一张速查" class="headerlink" title="一张速查"></a>一张速查</h2><table><thead><tr><th>层级</th><th>工具</th><th>主指标</th></tr></thead><tbody><tr><td>块&#x2F;SSD</td><td>fio</td><td>IOPS, BW, P99 lat</td></tr><tr><td>文件系统</td><td>fio</td><td>同上（+ overhead）</td></tr><tr><td>NAS</td><td>SPECstorage SFS 2020</td><td>ops&#x2F;sec, ORT</td></tr><tr><td>分布式</td><td>IO500 &#x2F; IOR &#x2F; mdtest</td><td>bw + meta</td></tr><tr><td>GPUDirect Storage</td><td>gdsio</td><td>GiB&#x2F;s, CPU &#x3D; 0</td></tr><tr><td>TCP&#x2F;UDP 网络</td><td>iperf3</td><td>Gbit&#x2F;s, retrans</td></tr><tr><td>RDMA</td><td>ib_write_bw &#x2F; perftest</td><td>Gbit&#x2F;s, lat</td></tr><tr><td>集合通信</td><td>nccl-tests</td><td>algbw &#x2F; busbw</td></tr></tbody></table><h2 id="一些验收脚本骨架"><a href="#一些验收脚本骨架" class="headerlink" title="一些验收脚本骨架"></a>一些验收脚本骨架</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 节点级（单机）</span><br>fio --name=4krand --filename=/dev/nvme0n1 \<br>    --rw=randread --bs=4k --iodepth=128 --numjobs=8 \<br>    --runtime=300 --time_based --direct=1 --group_reporting<br><br>iperf3 -c <span class="hljs-variable">$NEIGHBOR</span> -t 60 -P 8<br><br>ib_write_bw -d mlx5_0 -F <span class="hljs-variable">$NEIGHBOR</span> --report_gbits<br><br><span class="hljs-comment"># 单机 8 卡 collective</span><br>all_reduce_perf -b 1G -e 16G -f 2 -g 8<br><br><span class="hljs-comment"># 多机（slurm）</span><br>sbatch nccl_test.slurm    <span class="hljs-comment"># 内含 mpirun + all_reduce_perf 多 size</span><br></code></pre></td></tr></table></figure><h2 id="小结"><a href="#小结" class="headerlink" title="小结"></a>小结</h2><ul><li>存储 benchmark 用 fio 是事实标准，必须 direct&#x3D;1、足够队列深度、足够时长</li><li>NAS 看 SPECsfs，分布式存储看 IO500</li><li>网络 TCP 用 iperf3，RDMA 用 perftest 套件，集合通信用 nccl-tests</li><li>ib_write_bw 应跑到端口理论的 ~95%，低于 90% 就要排查</li><li>NVLink 域内 AllReduce busbw 是 GPU 集群验收最重要数字</li><li>SHARP 让 InfiniBand 大规模 AllReduce 翻倍快</li></ul><p>下一篇讲 AI 基准——MLPerf、cuBLASMatmulBench、nvbandwidth、NeMo 烧机。</p>]]>
    </content>
    <id>http://localhost:4000/posts/6a1f0b04/</id>
    <link href="http://localhost:4000/posts/6a1f0b04/"/>
    <published>2026-05-03T12:10:00.000Z</published>
    <summary>存储和网络是数据中心的&quot;管道&quot;，跑得动业务全靠它。本文讲 fio 怎么跑出有意义的 IOPS 数字，iperf/qperf 怎么测网络，ib_write_bw 在 InfiniBand 上的标准用法。</summary>
    <title>存储与网络基准 —— fio、iperf、ib_write_bw、SPECsfs</title>
    <updated>2026-05-24T13:49:48.032Z</updated>
  </entry>
  <entry>
    <category term="09-基准测试与认证" scheme="http://localhost:4000/categories/09-%E5%9F%BA%E5%87%86%E6%B5%8B%E8%AF%95%E4%B8%8E%E8%AE%A4%E8%AF%81/"/>
    <category term="HPL" scheme="http://localhost:4000/tags/HPL/"/>
    <category term="Linpack" scheme="http://localhost:4000/tags/Linpack/"/>
    <category term="HPCG" scheme="http://localhost:4000/tags/HPCG/"/>
    <category term="TOP500" scheme="http://localhost:4000/tags/TOP500/"/>
    <content>
      <![CDATA[<p>HPC 基准是 GPU 集群验收里第一个跑的——既是验机也是衡量峰值。本文专题讲 HPL、HPCG、HPL-MxP，以及 TOP500 &#x2F; Green500 &#x2F; HPCG 三张榜单。</p><!-- more --><h2 id="TOP500-用什么标尺"><a href="#TOP500-用什么标尺" class="headerlink" title="TOP500 用什么标尺"></a>TOP500 用什么标尺</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><code class="hljs text">TOP500 自 1993 年起，每年 6 月（ISC）/ 11 月（SC）发布<br>排名标尺：HPL Linpack（FP64 LU 分解 GFLOPS）<br>HPL 2.0 规范 2008 年定稿，沿用至今<br></code></pre></td></tr></table></figure><blockquote><p>TOP500 创始人之一的田纳西大学教授 Jack Dongarra 认为 Linpack 性能已经过时，大家也意识到单看 CPU 性能的弊端，开始使用 HPCG（The High Performance Conjugate Gradients）性能来全面衡量超算性能。Linpack 更考验超算的处理器理论性能，而 HPCG 更看重实际性能，对内存系统、网络延迟要求也更高。</p></blockquote><h2 id="HPL-——-Linpack-怎么跑"><a href="#HPL-——-Linpack-怎么跑" class="headerlink" title="HPL —— Linpack 怎么跑"></a>HPL —— Linpack 怎么跑</h2><p><a href="https://www.netlib.org/benchmark/hpl/">HPL</a> 解一个 N×N 稠密线性方程组（双精度）。计算量 ≈ 2&#x2F;3 N³ + 2 N²。</p><p>GPU 时代用 NVIDIA 优化版的 HPL（容器名 <code>nvcr.io/nvidia/hpc-benchmarks</code>），底层调 cuBLAS &#x2F; NCCL。</p><h3 id="关键参数-HPL-dat"><a href="#关键参数-HPL-dat" class="headerlink" title="关键参数 HPL.dat"></a>关键参数 HPL.dat</h3><p>按 NVIDIA SA benchmark 实战经验：</p><h4 id="1-N（矩阵规模-Problem-Size）"><a href="#1-N（矩阵规模-Problem-Size）" class="headerlink" title="1. N（矩阵规模 &#x2F; Problem Size）"></a>1. N（矩阵规模 &#x2F; Problem Size）</h4><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><code class="hljs text">原则：填满所有 GPU 显存（85-92%）<br>公式：显存占用 (Bytes) = N² × 8（FP64）<br><br>单机 8× A100 80GB（总 640 GB）：<br>  N ≈ √(640 × 1024^3 × 0.9 / 8) ≈ 268,328<br>  <br>注意：N 必须是 NB 的整数倍。<br></code></pre></td></tr></table></figure><h4 id="2-NB（数据块大小-Block-Size）"><a href="#2-NB（数据块大小-Block-Size）" class="headerlink" title="2. NB（数据块大小 &#x2F; Block Size）"></a>2. NB（数据块大小 &#x2F; Block Size）</h4><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><code class="hljs text">现代 NVIDIA GPU 推荐 NB 远大于传统 CPU 的设定<br>A100 / H100 / H200：    2048、3840、4096<br>B200 / B300：           尝试 2048-4096，跑几个值取最高<br></code></pre></td></tr></table></figure><h4 id="3-P-×-Q（进程网格）"><a href="#3-P-×-Q（进程网格）" class="headerlink" title="3. P × Q（进程网格）"></a>3. P × Q（进程网格）</h4><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><code class="hljs text">P × Q = 总 MPI 进程数 = 总 GPU 数<br>P ≤ Q 且尽量接近正方形（或 P 是 Q 的一半）<br>避免 1×8 这种极度狭长<br><br>单机 8 卡：       P=2, Q=4<br>4×8=32 卡：      P=4, Q=8<br>NVL72：         P=8, Q=9<br></code></pre></td></tr></table></figure><h4 id="其他"><a href="#其他" class="headerlink" title="其他"></a>其他</h4><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><code class="hljs text">PMAP：     1 (Row-major) 或 0 (Column-major)，NVIDIA 优化版脚本通常自动管理<br>BCAST：    广播算法，尝试 1 或 2<br>DEPTH：    Look-ahead 深度，GPU 上通常 0 或 1<br></code></pre></td></tr></table></figure><h3 id="跑分目标"><a href="#跑分目标" class="headerlink" title="跑分目标"></a>跑分目标</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><code class="hljs text">HPL 效率 = 实测 GFLOPS / 理论峰值 GFLOPS<br>单机 8× A100 / H100：典型 70-80%<br>NVL72：             典型 65-75%（受 NVLink + IB 影响）<br>万卡集群：           典型 55-70%<br></code></pre></td></tr></table></figure><p>低于 60% 一般有问题——下面是典型排查路径。</p><h3 id="调优排查（来自-NVIDIA-SA-实战-guide）"><a href="#调优排查（来自-NVIDIA-SA-实战-guide）" class="headerlink" title="调优排查（来自 NVIDIA SA 实战 guide）"></a>调优排查（来自 NVIDIA SA 实战 guide）</h3><h4 id="问题-1：性能远低于理论峰值（效率-60-）"><a href="#问题-1：性能远低于理论峰值（效率-60-）" class="headerlink" title="问题 1：性能远低于理论峰值（效率 &lt; 60%）"></a>问题 1：性能远低于理论峰值（效率 &lt; 60%）</h4><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><code class="hljs text">原因：显存未充分利用<br>  → 增大 N，逼近 OOM 临界点（90% 显存利用）<br><br>原因：降频<br>  → sudo nvidia-smi -pm 1            # 持久模式<br>  → sudo nvidia-smi -lgc &lt;Max_Clock&gt; # 锁最高加速频率<br><br>原因：NUMA 拓扑绑定不当<br>  → MPI 启动加 NUMA binding 参数<br>  → 用 NVIDIA bind.sh 等脚本，确保 GPU 分到最近的 CPU 物理核<br><br>原因：P/Q 不合理<br>  → 交换 P 和 Q 的值，调整比例<br></code></pre></td></tr></table></figure><h4 id="问题-2：多节点扩展性极差"><a href="#问题-2：多节点扩展性极差" class="headerlink" title="问题 2：多节点扩展性极差"></a>问题 2：多节点扩展性极差</h4><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><code class="hljs text">原因：InfiniBand/RoCE 未全速运行<br>  → ib_write_bw 测试节点间 RDMA 是否达标<br><br>原因：GPUDirect RDMA 未生效<br>  → lsmod | grep nv_peer_mem<br>  → 没加载会经 CPU 内存回环，延迟暴涨<br><br>原因：NCCL 调优<br>  → NCCL_IB_HCA 指定 HCA<br>  → NCCL_DEBUG=INFO 查看实际链路<br></code></pre></td></tr></table></figure><h2 id="HPCG-——-“真实性能”基准"><a href="#HPCG-——-“真实性能”基准" class="headerlink" title="HPCG —— “真实性能”基准"></a>HPCG —— “真实性能”基准</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs text">[HPCG](https://www.hpcg-benchmark.org/) 每半年发布榜单<br>求解 SpMV（稀疏矩阵向量乘）+ 多重网格预条件<br>对内存带宽、延迟、网络通信极度敏感<br>   <br>HPCG 性能通常 = HPL 性能的 1-3%<br></code></pre></td></tr></table></figure><p>为什么 HPCG”低得多”？</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs text">HPL：稠密 BLAS-3 操作，几乎都是 GEMM<br>   → 计算密度高，HBM/cache 复用极好<br>   → GPU Tensor Core 不能用（只支持 FP16+）但 FP64 cuBLAS 已经很优<br><br>HPCG：稀疏访存为主<br>   → memory-bound，HBM 带宽决定上限<br>   → 内存延迟、网络延迟一一暴露<br>   → 真实科学计算更像 HPCG<br></code></pre></td></tr></table></figure><p>跑 HPCG 时 GPU 利用率（nvidia-smi 看）只有 30-50%——这不是 bug，是 workload 性质决定。</p><h3 id="历史事件"><a href="#历史事件" class="headerlink" title="历史事件"></a>历史事件</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs text">天河 2 号之前是 HPCG 性能第一名<br>2016 上半年：     中国天河 2 号第一，日本 K 第二<br>2016 下半年起：   日本 K 超算夺第一（K 超算在 TOP500 排名第七）<br>富岳（Fugaku）：   2020 年起 HPCG 长期第一<br>                 富岳 HPCG ~16 PFLOPS（vs Linpack 442 PFLOPS）<br></code></pre></td></tr></table></figure><blockquote><p>待补充：2026 年最新 HPCG 榜单数据。</p></blockquote><h2 id="HPL-MxP-——-混合精度-HPL"><a href="#HPL-MxP-——-混合精度-HPL" class="headerlink" title="HPL-MxP —— 混合精度 HPL"></a>HPL-MxP —— 混合精度 HPL</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><code class="hljs text">[HPL-MxP](https://hpl-mxp.org/) 原名 HPL-AI（2019 年）<br>用 FP16/FP32 做主体计算，FP64 修正<br>利用 Tensor Core 大幅加速<br>针对 LU 分解的迭代细化方法<br></code></pre></td></tr></table></figure><p>为什么需要 HPL-MxP？</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><code class="hljs text">HPL 只能用 FP64 cuBLAS<br>  → V100 起 FP64 算力远低于 Tensor Core 算力<br>  → H100 FP64 67 TFLOPS vs Tensor FP16 1979 TFLOPS（相差 30×）<br>  → &quot;大半算力闲着&quot;<br><br>HPL-MxP：<br>  主迭代用 FP16/BF16 Tensor Core 算<br>  最后用 FP64 修正残差到精度<br>  → 能跑出 5-10× 于纯 FP64 HPL 的成绩<br></code></pre></td></tr></table></figure><p>NVIDIA SA 集群验收里 HPL 和 HPL-MxP 都会跑——前者是历史延续可比，后者是真实 AI&#x2F;HPC 混合负载的体现。</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><code class="hljs text">2024-11 HPL-MxP 榜单 TOP（参考）：<br>  Frontier (MI250X)：       11.4 EFLOPS（混合精度）<br>  Aurora：                  10.6 EFLOPS<br>  El Capitan：              16.7 EFLOPS（最新提交）<br></code></pre></td></tr></table></figure><blockquote><p>待补充：2026 年 HPL-MxP 最新数据。</p></blockquote><h2 id="NVL72-NVL576-上跑-HPL"><a href="#NVL72-NVL576-上跑-HPL" class="headerlink" title="NVL72 &#x2F; NVL576 上跑 HPL"></a>NVL72 &#x2F; NVL576 上跑 HPL</h2><p>NVIDIA 在 GB-NVL72 &#x2F; HGX B200&#x2F;B300 都有官方 step-by-step benchmark guide（NDA &#x2F; Partner，公开版可在 <a href="https://docs.nvidia.com/">docs.nvidia.com</a> 检索 DGX&#x2F;HGX benchmark guide）。</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><code class="hljs text">典型流程：<br>1. 节点 prep：DCGM diag、nvbandwidth、cublasMatmulBench<br>2. 单机 HPL：8 卡 / 节点<br>3. 多机扩展：rail-optimized IB + NCCL-tests 通过<br>4. NVL72 整柜 HPL（72 GPU 单 NVLink domain）<br>5. HPL-MxP 跑 Tensor Core<br></code></pre></td></tr></table></figure><p>NVL72 整柜 HPL <strong>要求所有 72 GPU 在同一个 NVLink domain 内一次跑过</strong>——这是 GB200 NVL72 区别于”8 节点 HGX H100 + IB”的本质：72 GPU 之间 collective 走 NVLink，HPL 多节点扩展性损失更小。</p><h2 id="Green500-——-能效榜"><a href="#Green500-——-能效榜" class="headerlink" title="Green500 —— 能效榜"></a>Green500 —— 能效榜</h2><p><a href="https://www.top500.org/lists/green500/">Green500</a> 与 TOP500 同源：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><code class="hljs text">排名标尺：HPL GFLOPS / Watt<br>2024-11 第一：JEDI（NVIDIA H100 + Grace）≈ 72 GFLOPS/W<br>2024-11 富岳：约 14 GFLOPS/W<br></code></pre></td></tr></table></figure><p>GPU 集群通常 60-72 GFLOPS&#x2F;W，纯 CPU 集群 10-20 GFLOPS&#x2F;W——<strong>HPC 已经实质 GPU 化</strong>。</p><h2 id="HPC-三张榜怎么选"><a href="#HPC-三张榜怎么选" class="headerlink" title="HPC 三张榜怎么选"></a>HPC 三张榜怎么选</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs text">HPL：     &quot;我家硬件 FP64 峰值多少&quot;——历史延续，TOP500 主榜<br>HPCG：    &quot;我家硬件真实跑多少&quot;——内存/网络瓶颈<br>HPL-MxP：  &quot;我家硬件 AI 友好场景多少&quot;——Tensor Core 时代<br>Green500： &quot;我家硬件能效如何&quot;——TCO 视角<br><br>HPC 中心日常：       三张榜都看<br>GPU 集群验收：       HPL + HPL-MxP 必跑，HPCG 选跑<br>AI 集群验收：        HPL-MxP / NCCL-tests / MLPerf<br></code></pre></td></tr></table></figure><h2 id="一些命令与文档"><a href="#一些命令与文档" class="headerlink" title="一些命令与文档"></a>一些命令与文档</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># NVIDIA hpc-benchmarks 容器（HPL/HPL-MxP/HPCG）</span><br>docker run --gpus all --<span class="hljs-built_in">rm</span> -it \<br>  -v <span class="hljs-variable">$PWD</span>:/workspace \<br>  nvcr.io/nvidia/hpc-benchmarks:24.09 bash<br><br><span class="hljs-comment"># 容器内跑 HPL</span><br>mpirun -np 8 --map-by node:PE=12 \<br>  ./hpl.sh --dat HPL.dat<br><br><span class="hljs-comment"># 跑 HPL-MxP（NVIDIA 容器自带）</span><br>./hpl-mxp.sh --m=2048 --n=2048 ...<br></code></pre></td></tr></table></figure><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><code class="hljs text">查 TOP500：       https://www.top500.org/<br>查 HPCG：         https://www.hpcg-benchmark.org/<br>查 Green500：     https://www.top500.org/lists/green500/<br>NVIDIA HPC bench：https://docs.nvidia.com/ → DGX/HGX Benchmark Guide<br></code></pre></td></tr></table></figure><h2 id="一张速查"><a href="#一张速查" class="headerlink" title="一张速查"></a>一张速查</h2><table><thead><tr><th>测试</th><th>测什么</th><th>适合场景</th><th>占总时间</th></tr></thead><tbody><tr><td>HPL</td><td>FP64 峰值 LU 分解</td><td>集群初验、TOP500 提交</td><td>数小时</td></tr><tr><td>HPL-MxP</td><td>Tensor Core 混合精度</td><td>AI 集群验收</td><td>数小时</td></tr><tr><td>HPCG</td><td>真实科学计算</td><td>真实 workload 摸底</td><td>1-2 小时</td></tr><tr><td>nvbandwidth</td><td>H2D&#x2F;D2H&#x2F;D2D 带宽</td><td>单卡基线</td><td>几分钟</td></tr><tr><td>NCCL-tests</td><td>集合通信带宽</td><td>集群互联验收</td><td>1-2 小时</td></tr></tbody></table><h2 id="小结"><a href="#小结" class="headerlink" title="小结"></a>小结</h2><ul><li>HPL（Linpack）测 FP64 峰值，TOP500 标尺，效率 65-80% 算合格</li><li>HPCG 测真实场景，性能通常是 HPL 的 1-3%</li><li>HPL-MxP 用 Tensor Core 跑混合精度，AI 时代的”新 HPL”</li><li>跑 HPL 关键三参数 N &#x2F; NB &#x2F; P×Q，效率低主排查显存、降频、NUMA、IB</li><li>Green500 看能效，GPU 集群比 CPU 集群高 5-10×</li></ul><p>下一篇讲存储与网络 benchmark——fio &#x2F; iperf &#x2F; ib_write_bw &#x2F; SPECsfs 实战。</p>]]>
    </content>
    <id>http://localhost:4000/posts/6a1f0b03/</id>
    <link href="http://localhost:4000/posts/6a1f0b03/"/>
    <published>2026-04-26T07:35:00.000Z</published>
    <summary>超算榜 TOP500 跑了 30 年的 Linpack 早被批&quot;过时&quot;，但仍是事实尺。本文讲 HPL 怎么调、HPCG 为什么&quot;低得多&quot;、HPL-MxP 又是什么。</summary>
    <title>HPC 基准 —— HPL、HPCG 与 TOP500</title>
    <updated>2026-05-24T13:49:48.032Z</updated>
  </entry>
  <entry>
    <category term="09-基准测试与认证" scheme="http://localhost:4000/categories/09-%E5%9F%BA%E5%87%86%E6%B5%8B%E8%AF%95%E4%B8%8E%E8%AE%A4%E8%AF%81/"/>
    <category term="SPEC CPU" scheme="http://localhost:4000/tags/SPEC-CPU/"/>
    <category term="TPC-C" scheme="http://localhost:4000/tags/TPC-C/"/>
    <category term="HammerDB" scheme="http://localhost:4000/tags/HammerDB/"/>
    <category term="tpmC" scheme="http://localhost:4000/tags/tpmC/"/>
    <content>
      <![CDATA[<p>第九章第二篇专题讲 CPU 和数据库基准——这是服务器采购合同里最常出现的两组数字。</p><!-- more --><h2 id="SPEC-CPU2017-——CPU-性能的事实标尺"><a href="#SPEC-CPU2017-——CPU-性能的事实标尺" class="headerlink" title="SPEC CPU2017 ——CPU 性能的事实标尺"></a>SPEC CPU2017 ——CPU 性能的事实标尺</h2><p><a href="https://www.spec.org/cpu2017/">SPEC CPU 2017</a> 2017 年发布，取代 2006 版。今天数据中心 CPU datasheet 几乎都用它。</p><h3 id="四个子套件"><a href="#四个子套件" class="headerlink" title="四个子套件"></a>四个子套件</h3><pre class="mermaid">graph TB  ROOT[SPEC CPU 2017]  ROOT --> SR[SPECrate<br/>多任务并行<br/>测吞吐]  ROOT --> SS[SPECspeed<br/>单任务<br/>测响应时间]  SR --> SRINT[SPECrate Integer<br/>10 个整数程序]  SR --> SRFP[SPECrate Floating Point<br/>13 个浮点程序]  SS --> SSINT[SPECspeed Integer<br/>10 个整数程序]  SS --> SSFP[SPECspeed Floating Point<br/>10 个浮点程序]</pre><p>实际报告里看到的几个常用名字：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><code class="hljs text">SPECrate2017_int_base / _peak    多核整数吞吐<br>SPECrate2017_fp_base  / _peak    多核浮点吞吐<br>SPECspeed2017_int_base/peak      单线程整数响应时间<br>SPECspeed2017_fp_base /peak      单线程浮点响应时间<br></code></pre></td></tr></table></figure><p><code>base</code> 用规定编译选项（公平比较），<code>peak</code> 允许厂家激进优化（看上限）。<strong>真实采购看 base</strong>。</p><h3 id="怎么读-SPECrate"><a href="#怎么读-SPECrate" class="headerlink" title="怎么读 SPECrate"></a>怎么读 SPECrate</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><code class="hljs text">某 2-socket 服务器 SPECrate2017_int_base = 800<br>代表：在 2 socket × 64 core × 2 SMT = 256 线程上<br>      跑 10 个整数 workload 的几何平均吞吐 = 基准的 800 倍<br><br>→ 比对 base 越高越快<br>→ 单核数字 = 800 ÷ 256 ≈ 3.1（&quot;线程效率&quot;参考）<br></code></pre></td></tr></table></figure><p>注意：单核高 ≠ 总吞吐高，反之亦然。<strong>Intel Xeon SP &#x2F; AMD EPYC &#x2F; Ampere AmpereOne 等都有自己 sweet spot</strong>——选型时分清自己的 workload 是 throughput-bound 还是 latency-bound。</p><h3 id="SPEC-CPU-看哪几列"><a href="#SPEC-CPU-看哪几列" class="headerlink" title="SPEC CPU 看哪几列"></a>SPEC CPU 看哪几列</h3><p>读 SPEC CPU 报告（每条 SUT 一份 PDF + HTML）时关键列：</p><table><thead><tr><th>列</th><th>含义</th><th>看什么</th></tr></thead><tbody><tr><td>Hardware</td><td>CPU、内存、存储、BIOS</td><td>配置基线</td></tr><tr><td>Software</td><td>OS、编译器、libc、glibc</td><td>软件栈</td></tr><tr><td>Tunable</td><td>NUMA、Turbo、HT、Power Profile</td><td>调优</td></tr><tr><td>Result</td><td>base &#x2F; peak</td><td>实际数字</td></tr><tr><td>Energy</td><td>部分报告有功耗</td><td>能效</td></tr></tbody></table><p><strong>比较时一定保证：编译器版本、HT 开关、Power Profile 一致</strong>——否则结果不可比。</p><h3 id="国内查-CPU-性能时的常见情况"><a href="#国内查-CPU-性能时的常见情况" class="headerlink" title="国内查 CPU 性能时的常见情况"></a>国内查 CPU 性能时的常见情况</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><code class="hljs text">1. 国产 CPU 厂家通常给 SPEC CPU 2006（旧版）数字<br>   → 不能直接和 Intel/AMD 的 2017 数字比<br>   → 需要换算（一般 2006 → 2017 大致 0.5-0.6× 缩放，参考意义）<br><br>2. ARM Server CPU（鲲鹏 920、AmpereOne）<br>   → 编译器要支持 SVE/NEON，不然性能掉一半<br><br>3. RISC-V Server CPU（少量）<br>   → 公开 SPEC CPU 数字仍稀缺<br></code></pre></td></tr></table></figure><blockquote><p>待补充：鲲鹏 920 &#x2F; 海光 &#x2F; AmpereOne 在 SPEC CPU2017 base 公开数字。</p></blockquote><h2 id="SPECpower：能效"><a href="#SPECpower：能效" class="headerlink" title="SPECpower：能效"></a>SPECpower：能效</h2><p><a href="https://www.spec.org/power_ssj2008/">SPECpower_ssj2008</a> 测的是”性能 &#x2F; 瓦”——服务器能效之标尺。</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><code class="hljs text">ssj_ops（操作/秒）/ Watt<br>从 100% 负载逐档降到 0%（idle）<br>用 PTDaemon 同步采集功率<br>最终一个综合分数：overall ssj_ops/W<br></code></pre></td></tr></table></figure><p>数据中心选型 TCO 模型几乎都引用 SPECpower 数字——电费占数据中心 OPEX 30-40%，<strong>能效高 10% 一年省几百万电费</strong>。</p><h2 id="SPECjbb-2015：Java-中间件"><a href="#SPECjbb-2015：Java-中间件" class="headerlink" title="SPECjbb 2015：Java 中间件"></a>SPECjbb 2015：Java 中间件</h2><p><code>jbb</code> 全称 Java Business Benchmark。模拟 ERP &#x2F; 中间件场景：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><code class="hljs text">multi-JVM、多线程、java heap 几十 GB<br>随机请求、模拟订单/库存/客户<br>指标：max-jOPS（最大吞吐）/ critical-jOPS（带 SLA 约束的吞吐）<br></code></pre></td></tr></table></figure><p><strong>SPECjbb 2015 是 OLAP-like Java 服务器选型主流尺</strong>——金融、电信、政府常用。新版还在持续维护，比退役的 SPEC Web2005 时效性强。</p><h2 id="TPC-C-——-OLTP-经典"><a href="#TPC-C-——-OLTP-经典" class="headerlink" title="TPC-C —— OLTP 经典"></a>TPC-C —— OLTP 经典</h2><p>TPC 系列里最经典：模拟电商订单系统。</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><code class="hljs text">仓库（Warehouse）数 W<br>订单生成（New-Order）每分钟数 = tpmC<br>要求 90% 事务在 5s 内完成、ACID 一致性<br>价格披露 → $ / tpmC<br></code></pre></td></tr></table></figure><blockquote><p>20 世纪 90 年代，TPC（事务处理性能委员会）成立，Benchmark（基准测试）随之走上历史舞台。tpmC 值在国内外被广泛用于衡量计算机系统的事务处理能力，为”每分钟内系统处理新订单个数”的英文缩写。<strong>TPMC 测试及发布的成本极高（百万美元级）</strong>，只有少数厂商的少数设备会在 TPC 官网上发布测试数据。未在官网上发布的数据都是评估出来的。</p></blockquote><h3 id="历史里程碑"><a href="#历史里程碑" class="headerlink" title="历史里程碑"></a>历史里程碑</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><code class="hljs text">2010 IBM Power 780：           10 M tpmC<br>2013 Oracle SuperCluster：     30 M tpmC<br>2017+ Oracle Exadata：         50-100 M tpmC（云超大配置）<br></code></pre></td></tr></table></figure><h3 id="tpmC-在-2026-年的位置"><a href="#tpmC-在-2026-年的位置" class="headerlink" title="tpmC 在 2026 年的位置"></a>tpmC 在 2026 年的位置</h3><p>正式 TPC-C 提交几乎已停滞——发布门槛太高、云时代少有厂家愿意花钱跑。<strong>国内合同里”要求 X 万 tpmC”基本是评估值</strong>，不是 TPC 官网真实发布。</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><code class="hljs text">评估方法：<br>  根据 SPEC CPU 数字 + 内存 / 存储配置<br>  按经验公式估算 tpmC<br>  → 数字接近 TPC-C 官网早年的同档系统<br></code></pre></td></tr></table></figure><p>国采、国企招标里仍把 tpmC 作”硬指标”，但实际意义不如 HammerDB 真跑一遍。</p><h2 id="HammerDB-sysbench-——-现代-OLTP-测试事实标准"><a href="#HammerDB-sysbench-——-现代-OLTP-测试事实标准" class="headerlink" title="HammerDB &#x2F; sysbench —— 现代 OLTP 测试事实标准"></a>HammerDB &#x2F; sysbench —— 现代 OLTP 测试事实标准</h2><p>正式 TPC-C 太贵 → 业界用开源工具跑”TPC-C-like” workload：</p><pre class="mermaid">graph LR  HDB[HammerDB<br/>开源, GUI/CLI]  SB[sysbench<br/>开源, CLI]  HDB --> ORACLE[Oracle / MySQL / PG / MS SQL / Db2]  SB --> MYSQL[MySQL / PostgreSQL / TiDB]</pre><p><a href="https://www.hammerdb.com/">HammerDB</a> 实现了 <strong>TPROC-C</strong>（TPC-C 风格）和 <strong>TPROC-H</strong>（TPC-H 风格），跑出来的指标叫 NOPM（new orders per minute），和 tpmC 同含义但不发布到 TPC 官网。</p><h3 id="实操要点"><a href="#实操要点" class="headerlink" title="实操要点"></a>实操要点</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs text">仓库数（warehouse）：       至少 100，实测最好 500-2000（避免被单仓库锁住）<br>虚拟用户数（vuser）：       从 1 ramp 到 max，看曲线<br>预热时间：                  5-10 min<br>持续时间：                  至少 10-20 min<br>观察指标：                  NOPM, TPM, P99 延迟<br></code></pre></td></tr></table></figure><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><code class="hljs text">典型对比：<br>  Intel Xeon 8480C 2-socket + 1.5TB RAM + NVMe + Oracle 19c<br>    → HammerDB NOPM ≈ 8-12 M<br>  AMD EPYC 9654 2-socket 同配置<br>    → NOPM ≈ 10-15 M<br>  鲲鹏 920 2-socket + openGauss<br>    → NOPM ≈ 4-7 M<br></code></pre></td></tr></table></figure><blockquote><p>待补充：上面数字仅作量级参考，具体看实际配置和调优。</p></blockquote><h2 id="TPC-H-TPC-DS-——-数据仓库-大数据"><a href="#TPC-H-TPC-DS-——-数据仓库-大数据" class="headerlink" title="TPC-H &#x2F; TPC-DS —— 数据仓库 &#x2F; 大数据"></a>TPC-H &#x2F; TPC-DS —— 数据仓库 &#x2F; 大数据</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><code class="hljs text">TPC-H：     22 个复杂分析查询，scale factor 1GB-100TB<br>TPC-DS：    99 个查询，更接近真实数仓 / BI workload<br>指标：      QphH@SF（每小时查询数 × scale factor）<br></code></pre></td></tr></table></figure><p>云时代 TPC-DS 比 TPC-H 更主流——特别是 <strong>数据湖 &#x2F; Spark &#x2F; Presto &#x2F; Trino &#x2F; ClickHouse</strong> 都用 TPC-DS 自我对标。</p><h3 id="选型场景"><a href="#选型场景" class="headerlink" title="选型场景"></a>选型场景</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><code class="hljs text">单机数据库（Oracle/Db2/MySQL/PG）：HammerDB TPROC-H<br>分布式数仓（GreenPlum/TiDB/StarRocks/Doris）：TPC-DS @SF1000-10000<br>云数仓（Snowflake/BigQuery/Redshift）：TPC-DS 公开 benchmarks<br>湖仓（Iceberg/Hudi/Delta + Trino/Spark）：TPC-DS 是&quot;事实公约数&quot;<br></code></pre></td></tr></table></figure><h2 id="数据库基准的真相-——-“选型不能只看-benchmark”"><a href="#数据库基准的真相-——-“选型不能只看-benchmark”" class="headerlink" title="数据库基准的真相 —— “选型不能只看 benchmark”"></a>数据库基准的真相 —— “选型不能只看 benchmark”</h2><p>数据库性能受<strong>实际数据分布</strong>影响巨大：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><code class="hljs text">benchmark：    数据均匀生成、查询模板固定、并发可控<br>生产：         数据极度不均、热点 key、查询千差万别、并发峰谷波动<br>              → benchmark 跑得好，生产可能跑不动<br>              → benchmark 跑得一般，生产可能反而合适<br></code></pre></td></tr></table></figure><p>成熟做法：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><code class="hljs text">1. 先跑标准 benchmark 排除明显短板<br>2. 用真实业务数据做&quot;冒烟测试&quot;（部分库 dump）<br>3. 用真实查询日志重放<br>4. 再做 POC（4-8 周生产试运行）<br></code></pre></td></tr></table></figure><p><strong>没有 POC 就不敢决定数据库选型</strong>——这是 DBA 圈的共识。</p><h2 id="CPU-数据库选型时的几条经验"><a href="#CPU-数据库选型时的几条经验" class="headerlink" title="CPU + 数据库选型时的几条经验"></a>CPU + 数据库选型时的几条经验</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br></pre></td><td class="code"><pre><code class="hljs text">1. SPECrate2017_int_base 反映&quot;多核吞吐&quot;<br>   → 数据库 / 中间件场景看它最直接<br>   <br>2. SPECspeed 反映&quot;单线程响应&quot;<br>   → CPU-bound 单线程 task（数据库 query 优化器、序列化）看它<br><br>3. SPECpower 反映&quot;性能/瓦&quot;<br>   → 算 TCO 时核心，3 年电费可能比硬件贵<br><br>4. SPECjbb 反映&quot;Java 中间件&quot;<br>   → Java 应用服务器（WebSphere/JBoss/Tomcat）选型直接对应<br><br>5. tpmC 在国内合同里仍存在但实际意义有限<br>   → 真要测 OLTP，HammerDB 是事实标准<br><br>6. CPU 频率 ≠ 性能<br>   → 看微架构代次（Intel 5/6 代、AMD Zen4/5、ARMv9）+ 内存通道 + AVX/SVE 支持<br><br>7. NUMA 拓扑必影响数据库性能<br>   → 单 socket &gt; 双 socket（少量 workload，看场景）<br>   → 可以用 numactl 绑核做对照测试<br></code></pre></td></tr></table></figure><h2 id="一些命令"><a href="#一些命令" class="headerlink" title="一些命令"></a>一些命令</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># Linux 看 CPU</span><br>lscpu                           <span class="hljs-comment"># 拓扑 / 频率 / NUMA / flag</span><br><span class="hljs-built_in">cat</span> /proc/cpuinfo | <span class="hljs-built_in">head</span> -50    <span class="hljs-comment"># 详细</span><br>numactl --hardware              <span class="hljs-comment"># NUMA 详情</span><br><br><span class="hljs-comment"># 单核基准（速测）</span><br>sysbench cpu --threads=1 --cpu-max-prime=20000 run<br><br><span class="hljs-comment"># 多核基准</span><br>sysbench cpu --threads=$(<span class="hljs-built_in">nproc</span>) --cpu-max-prime=20000 run<br><br><span class="hljs-comment"># 内存带宽</span><br>sysbench memory --memory-block-size=1M --memory-total-size=10G run<br>mbw 1024                        <span class="hljs-comment"># 简易内存带宽</span><br><br><span class="hljs-comment"># OLTP 快速测试（MySQL）</span><br>sysbench oltp_read_write --tables=10 --table-size=1000000 \<br>  --mysql-host=127.0.0.1 --mysql-user=root \<br>  --threads=64 --<span class="hljs-keyword">time</span>=120 run<br><br><span class="hljs-comment"># HammerDB CLI（TPROC-C）</span><br>hammerdbcli auto bm-tprocc-pg.tcl    <span class="hljs-comment"># 全脚本驱动</span><br></code></pre></td></tr></table></figure><h2 id="一张速查"><a href="#一张速查" class="headerlink" title="一张速查"></a>一张速查</h2><table><thead><tr><th>场景</th><th>主基准</th><th>次要基准</th></tr></thead><tbody><tr><td>CPU 通用计算</td><td>SPEC CPU2017 (rate base)</td><td>SPEC CPU2017 (speed base)</td></tr><tr><td>CPU 能效</td><td>SPECpower</td><td>—</td></tr><tr><td>单核响应</td><td>SPECspeed_int_base</td><td>sysbench cpu</td></tr><tr><td>Java 中间件</td><td>SPECjbb 2015</td><td>—</td></tr><tr><td>OLTP（MySQL&#x2F;PG）</td><td>sysbench oltp &#x2F; HammerDB TPROC-C</td><td>TPC-C 官网（参考）</td></tr><tr><td>OLTP（Oracle&#x2F;Db2）</td><td>HammerDB TPROC-C</td><td>TPC-C 官网（参考）</td></tr><tr><td>决策支持</td><td>TPC-H</td><td>HammerDB TPROC-H</td></tr><tr><td>大数据数仓</td><td>TPC-DS</td><td>—</td></tr></tbody></table><h2 id="小结"><a href="#小结" class="headerlink" title="小结"></a>小结</h2><ul><li>SPEC CPU2017 是 CPU 通用计算的事实标尺，看 base、看 rate vs speed</li><li>SPECpower &#x2F; SPECjbb &#x2F; SPECstorage 各有领域</li><li>TPC-C &#x2F; tpmC 在合同里仍重要，实际选型用 HammerDB &#x2F; sysbench</li><li>数据库选型不能只看 benchmark，必须 POC 真实数据</li><li>看曲线、看 P99、看长时间持续，不只看峰值</li></ul><p>下一篇专题讲 HPC 基准——HPL、HPCG 与 TOP500 的实战。</p>]]>
    </content>
    <id>http://localhost:4000/posts/6a1f0b02/</id>
    <link href="http://localhost:4000/posts/6a1f0b02/"/>
    <published>2026-04-19T14:15:00.000Z</published>
    <summary>服务器选型最先看的两条线——CPU 计算能力和数据库事务能力。本文讲清 SPEC CPU2017 怎么读、tpmC 怎么算、HammerDB / sysbench 在生产里怎么用。</summary>
    <title>CPU 与数据库基准 —— SPEC CPU、TPC-C、SPECjbb</title>
    <updated>2026-05-24T13:49:48.032Z</updated>
  </entry>
  <entry>
    <category term="09-基准测试与认证" scheme="http://localhost:4000/categories/09-%E5%9F%BA%E5%87%86%E6%B5%8B%E8%AF%95%E4%B8%8E%E8%AE%A4%E8%AF%81/"/>
    <category term="基准测试" scheme="http://localhost:4000/tags/%E5%9F%BA%E5%87%86%E6%B5%8B%E8%AF%95/"/>
    <category term="TPC" scheme="http://localhost:4000/tags/TPC/"/>
    <category term="SPEC" scheme="http://localhost:4000/tags/SPEC/"/>
    <category term="MLPerf" scheme="http://localhost:4000/tags/MLPerf/"/>
    <content>
      <![CDATA[<p>前八章把硬件讲完了——但实际选型时，”H100 算力 1979 TFLOPS”这种 datasheet 数字不能直接拿来对比 Llama 3 训练性能。<strong>基准测试（benchmark）是把硬件性能落到同一把尺上</strong>的工具。第九章讲基准。</p><!-- more --><h2 id="为什么需要基准测试"><a href="#为什么需要基准测试" class="headerlink" title="为什么需要基准测试"></a>为什么需要基准测试</h2><p>服务器场景里，”快”是个多维概念：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs text">CPU 整数运算 vs 浮点运算 vs 内存带宽 vs 数据库 TPM<br>存储 顺序读 vs 随机写 vs 队列深度 vs 延迟<br>网络 带宽 vs 延迟 vs P99 抖动 vs 集合通信<br>GPU 单精度 vs Tensor FP16 vs FP8 vs FP4<br>集群 单卡持续 vs 万卡 AllReduce vs 真实训练 token/s<br></code></pre></td></tr></table></figure><p>不同 workload 看不同维度。”<strong>用谁的数据当尺</strong>“决定了选型结果——这就是为什么 30 多年来工业界形成了一系列<strong>第三方公认的基准组织</strong>。</p><h2 id="两大主流基准体系"><a href="#两大主流基准体系" class="headerlink" title="两大主流基准体系"></a>两大主流基准体系</h2><pre class="mermaid">graph TB  ROOT[服务器基准测试两大体系]  ROOT --> TPC[TPC<br/>事务处理性能委员会<br/>1988 成立]  ROOT --> SPEC[SPEC<br/>标准性能评估机构<br/>1988 成立]  TPC --> TPCC[TPC-C<br/>OLTP 经典]  TPC --> TPCH[TPC-H<br/>决策支持/分析]  TPC --> TPCDS[TPC-DS<br/>大数据分析]  TPC --> TPCx[TPCx-AI / TPCx-HS<br/>AI 与 Hadoop]  SPEC --> SPECCPU[SPEC CPU<br/>处理器整数/浮点]  SPEC --> SPECjbb[SPEC jbb<br/>Java 中间件]  SPEC --> SPECpower[SPECpower<br/>能效]  SPEC --> SPECstorage[SPEC SFS<br/>NAS 文件存储]  SPEC --> SPECMLPerf[SPECaccel /<br/>SPEChpc]</pre><p><strong>TPC（Transaction Processing Performance Council）</strong>：1988 年成立，主战场是数据库 &#x2F; OLTP &#x2F; 数据分析。代表测试：TPC-C（OLTP）、TPC-H（决策支持）、TPC-DS（大数据）。tpmC 这个国内常听到的”每分钟事务数”就是 TPC-C 的指标。</p><p><strong>SPEC（Standard Performance Evaluation Corporation）</strong>：同样 1988 年成立，覆盖更广——CPU、Java 中间件、Web 服务、能效、存储、HPC、ML。SPEC CPU2017 是当前 CPU 性能 datasheet 的事实标尺。</p><p>两家都是非营利第三方，结果<strong>必须在官网发布</strong>才算数——这是第三方背书的核心价值。</p><h2 id="按-workload-分类的基准"><a href="#按-workload-分类的基准" class="headerlink" title="按 workload 分类的基准"></a>按 workload 分类的基准</h2><p>整理一张实战中真正会用到的”benchmark 全景”：</p><table><thead><tr><th>领域</th><th>经典基准</th><th>现代主流</th><th>测什么</th></tr></thead><tbody><tr><td>CPU 整数 &#x2F; 浮点</td><td>SPEC CPU2006</td><td><strong>SPEC CPU2017</strong></td><td>单核 &#x2F; 多核计算</td></tr><tr><td>CPU 能效</td><td>—</td><td><strong>SPECpower_ssj2008</strong></td><td>性能 &#x2F; 瓦</td></tr><tr><td>数据库 OLTP</td><td>TPC-C（tpmC）</td><td><strong>HammerDB &#x2F; sysbench</strong></td><td>每分钟事务数</td></tr><tr><td>数据库分析</td><td>TPC-H</td><td><strong>TPC-DS</strong></td><td>复杂查询响应时间</td></tr><tr><td>Java 中间件</td><td>SPECjbb2005</td><td><strong>SPECjbb2015</strong></td><td>Java 服务端吞吐</td></tr><tr><td>Web 服务器</td><td>SPECweb2005</td><td>（已退役）</td><td>HTTP QPS</td></tr><tr><td>HPC 峰值</td><td><strong>HPL &#x2F; Linpack</strong></td><td>HPL（仍是 TOP500 标尺）</td><td>FP64 峰值</td></tr><tr><td>HPC 真实</td><td>—</td><td><strong>HPCG</strong></td><td>内存 &#x2F; 网络综合</td></tr><tr><td>存储块设备</td><td>iozone</td><td><strong>fio</strong></td><td>IOPS &#x2F; 带宽 &#x2F; 延迟</td></tr><tr><td>NAS 文件</td><td>SPECsfs</td><td><strong>SPECstorage SFS 2020</strong></td><td>文件操作并发</td></tr><tr><td>网络带宽</td><td>iperf</td><td><strong>iperf3 &#x2F; qperf</strong></td><td>TCP &#x2F; UDP 吞吐</td></tr><tr><td>RDMA 网络</td><td>—</td><td><strong>ib_write_bw &#x2F; perftest</strong></td><td>InfiniBand &#x2F; RoCE</td></tr><tr><td>集合通信</td><td>—</td><td><strong>NCCL-tests</strong></td><td>AllReduce &#x2F; AllGather busbw</td></tr><tr><td>AI 训练 &#x2F; 推理</td><td>—</td><td><strong>MLPerf</strong></td><td>端到端 训练 &#x2F; 推理</td></tr><tr><td>AI GEMM</td><td>—</td><td><strong>cuBLASMatmulBench &#x2F; nvbandwidth</strong></td><td>算力 &#x2F; 带宽底层</td></tr></tbody></table><p><strong>注意</strong>：TPC-W（Web）、SPEC Web2005 等测试在云时代基本退役——因为现实业务的 Web 服务太复杂，单一 benchmark 失去意义。</p><h2 id="基准结果”怎么读”"><a href="#基准结果”怎么读”" class="headerlink" title="基准结果”怎么读”"></a>基准结果”怎么读”</h2><p>基准报告里常见的几个指标维度：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><code class="hljs text">绝对值：     TFLOPS / TPM / IOPS / token-per-sec<br>单位价格：   $ / TPM、$ / TFLOPS<br>单位功耗：   TPM / W、TFLOPS / W<br>百分位延迟： P50 / P90 / P99 / P999<br>扩展性：     N 节点时性能 / 单节点性能（理想 = N）<br>持续 vs 峰值：burst 能跑多高、稳定能跑多久<br></code></pre></td></tr></table></figure><p>只看绝对值容易被销售带偏——<strong>真正成熟的采购方看 $&#x2F;TPM、性能&#x2F;瓦、扩展性曲线</strong>。</p><h2 id="一份典型-benchmark-报告应有什么"><a href="#一份典型-benchmark-报告应有什么" class="headerlink" title="一份典型 benchmark 报告应有什么"></a>一份典型 benchmark 报告应有什么</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br></pre></td><td class="code"><pre><code class="hljs text">1. 系统配置（SUT, System Under Test）<br>   - CPU 型号 / 核数 / 频率<br>   - 内存容量 / 通道 / DIMM 频率<br>   - 存储介质 / RAID / 文件系统<br>   - 网络型号 / 交换机<br>   - GPU 型号 / NVLink 拓扑（AI 场景）<br>   - OS / kernel / 驱动 / 微码版本<br>2. 软件栈<br>   - 编译器 / 优化等级 / BLAS 库版本<br>   - DBMS 版本 / 应用版本<br>3. 测试方法<br>   - 数据集大小 / scale factor<br>   - 预热 / 持续时间 / 重复次数<br>4. 结果<br>   - 主指标 + 次要指标<br>   - 性能曲线（不只单点）<br>5. 价格披露（TPC 强制）<br>6. 能效披露（SPECpower / 部分 TPC）<br></code></pre></td></tr></table></figure><p><strong>TPC 报告强制披露完整 SUT + 价格</strong>——这是为什么 TPC-C 报告动辄上百页 PDF。SPEC 也要求公开 config，但价格披露不是强制。</p><h2 id="测试结果”为什么会差很多”"><a href="#测试结果”为什么会差很多”" class="headerlink" title="测试结果”为什么会差很多”"></a>测试结果”为什么会差很多”</h2><p>同一颗 CPU、同一种 benchmark，不同厂商提交结果可能差 1.5-3×：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><code class="hljs text">编译器选项：     -O3 vs -O2，AVX-512 开关，PGO/LTO<br>内存配置：       通道数、DIMM rank、是否 1DPC<br>NUMA 绑定：      自动 vs 手工 numactl<br>BIOS 设置：      Turbo / SMT / power profile / prefetch<br>OS tuning：     transparent hugepage、cpu governor、swappiness<br>存储调优：       I/O scheduler、queue depth、direct IO<br>网络调优：       MTU、RSS、IRQ affinity、DCQCN<br></code></pre></td></tr></table></figure><p>这些”调优”在销售文档里通常一笔带过，但实际上<strong>决定了结果的可比性</strong>。所以读 benchmark 报告时，<strong>配置详情比绝对数字更重要</strong>。</p><h2 id="TOP500：HPC-的”奥运会”"><a href="#TOP500：HPC-的”奥运会”" class="headerlink" title="TOP500：HPC 的”奥运会”"></a>TOP500：HPC 的”奥运会”</h2><p>每年 6 月 &#x2F; 11 月发布两次的 <a href="https://www.top500.org/">TOP500</a>，是世界上最大公开 HPC 系统排行榜：</p><ul><li>排名标尺：<strong>HPL Linpack</strong>（FP64 峰值 LU 分解）</li><li>1993 年开始，已经 30 多年</li><li>中国曾长期占榜单一半以上份额，2020 年后受出口管制影响数量下降</li></ul><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><code class="hljs text">2024-11 榜单 TOP 5（参考）：<br>  El Capitan (LLNL, AMD MI300A)：       1742 PFLOPS<br>  Frontier (ORNL, AMD MI250X)：         1353 PFLOPS<br>  Aurora (ANL, Intel Ponte Vecchio)：    1012 PFLOPS  <br>  Eagle (Microsoft Azure, NVIDIA H100)：561 PFLOPS<br>  富岳 (RIKEN, A64FX)：                 442 PFLOPS<br></code></pre></td></tr></table></figure><blockquote><p>待补充：TOP500 最新 2026 年榜单数据。</p></blockquote><p>但<strong>Linpack 早就被 HPCG 补充</strong>——后者更看重真实工作负载（内存、网络、不规则访存）。Jack Dongarra（TOP500 创始人之一）2014 年就推动 HPCG 排行榜：HPCG 性能通常是 Linpack 性能的 <strong>1-3%</strong>。</p><h2 id="MLPerf：AI-时代的新基准"><a href="#MLPerf：AI-时代的新基准" class="headerlink" title="MLPerf：AI 时代的新基准"></a>MLPerf：AI 时代的新基准</h2><p>MLCommons 维护，2018 年起步，AI 算力的”事实标准”：</p><pre class="mermaid">graph LR  ML[MLCommons MLPerf]  ML --> T[Training<br/>训练]  ML --> I[Inference<br/>推理]  ML --> H[HPC<br/>科学计算]  ML --> S[Storage<br/>存储吞吐]  ML --> P[Power<br/>能效]  ML --> C[Client / Mobile / Tiny<br/>端侧]</pre><p>每轮提交分 <strong>Closed</strong>（严格规则、可比性强）和 <strong>Open</strong>（自由优化、展示创新）。NVIDIA &#x2F; Google &#x2F; Intel &#x2F; AMD &#x2F; Huawei 等都按轮次提交。</p><p><code>07-Benchmark</code> 目录里 NVIDIA SA 视角的视图：</p><blockquote><p>NVIDIA 通常以 DGX&#x2F;HGX&#x2F;GB200 系统提交 MLPerf；详细工程报告在 NVIDIA blog 与 GitHub repo <code>nvidia/MLPerf*</code>，复现工件包含 NeMo &#x2F; Megatron &#x2F; TensorRT-LLM 等。</p></blockquote><p>后面的 <a href="/posts/6a1f0b05/">05-AI 基准测试</a> 专门展开。</p><h2 id="专用-厂家-benchmark"><a href="#专用-厂家-benchmark" class="headerlink" title="专用 &#x2F; 厂家 benchmark"></a>专用 &#x2F; 厂家 benchmark</h2><p>除两大公开体系外，还有大量”专用基准”：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><code class="hljs text">Oracle / SAP：   厂家自己的 ERP/数据库 benchmark<br>SAP SD：        销售-分销模块用户数（SAP 标尺）<br>TPC-H 变体：    实际生产中常被改成 sysbench-tpch<br>LLM 专用：      lm-evaluation-harness 等评测精度<br>推理服务：      vLLM benchmark / Triton perf_analyzer<br>NVIDIA NCCL-tests：集合通信 SoTA 工具<br></code></pre></td></tr></table></figure><p>这些不一定上 TPC &#x2F; SPEC 官网，但在自家生态里是实际选型依据。</p><h2 id="实战中”benchmark-怎么用”"><a href="#实战中”benchmark-怎么用”" class="headerlink" title="实战中”benchmark 怎么用”"></a>实战中”benchmark 怎么用”</h2><p>数据中心采购或集群验收时，benchmark 一般分三阶段：</p><pre class="mermaid">graph TB  L1[1. 节点级<br/>HPL / SPEC CPU / fio / iperf<br/>验证单机硬件]  L2[2. 机柜 / Pod 级<br/>NCCL-tests / SHARP / RDMA<br/>验证互联与路由]  L3[3. 应用级<br/>NeMo / Megatron / vLLM / 真实业务<br/>验证端到端]  L1 --> L2 --> L3</pre><p>NVIDIA SA 内部就是用这三层做集群验收（详见 <a href="/posts/6a1f0b05/">05-AI 基准测试</a> ）。每一层都不能跳——单机过了不代表集群过；集群通了不代表大模型训练 MFU 就达标。</p><h2 id="一些避坑"><a href="#一些避坑" class="headerlink" title="一些避坑"></a>一些避坑</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br></pre></td><td class="code"><pre><code class="hljs text">1. 看绝对值不看 config：<br>   &quot;我看 SPEC CPU 2017 排名厂商 A 比 B 高 5%&quot;<br>   实际 A 用 96 GB DDR5-5600 + AVX-512、B 用 256 GB DDR5-4800 关 SMT<br>   → 没法比<br><br>2. 看单点不看曲线：<br>   &quot;厂家说 IOPS 1000K&quot;<br>   实际 P99 延迟 50ms，业务无法接受<br>   → 看 P99/P999 比看峰值有意义<br><br>3. 跑短时间不跑长时间：<br>   GPU 头 5 min 全 turbo，30 min 后 thermal throttle<br>   → 至少跑 30-60 min 看持续值<br><br>4. 不公开复现脚本：<br>   厂家 demo 一套，客户复现完全不是这数<br>   → 索要完整 reproduce 脚本和参数<br><br>5. 偷换 benchmark 版本：<br>   比 SPEC CPU2006（已退役）和 SPEC CPU2017 数字<br>   → 完全不可比<br></code></pre></td></tr></table></figure><h2 id="第九章会展开什么"><a href="#第九章会展开什么" class="headerlink" title="第九章会展开什么"></a>第九章会展开什么</h2><table><thead><tr><th>篇</th><th>内容</th></tr></thead><tbody><tr><td>02</td><td>CPU &amp; 数据库 benchmark：SPEC CPU2017、TPC-C、SPECjbb</td></tr><tr><td>03</td><td>HPC benchmark：HPL、HPCG、TOP500 实战</td></tr><tr><td>04</td><td>存储与网络 benchmark：fio、iperf、ib_write_bw、SPECsfs</td></tr><tr><td>05</td><td>AI benchmark：MLPerf、cuBLAS、nvbandwidth、NCCL-tests、NeMo burn-in</td></tr><tr><td>06</td><td>服务器认证：CCC、CE、FCC、ISO9001、NVIDIA-Certified、能效之星</td></tr><tr><td>07</td><td>选型与第九章小结</td></tr></tbody></table><h2 id="小结"><a href="#小结" class="headerlink" title="小结"></a>小结</h2><ul><li>基准测试是把”datasheet 数字”翻译成”业务性能”的桥</li><li>两大体系 TPC（事务）+ SPEC（计算&#x2F;能效）；HPC 看 TOP500 &#x2F; HPL；AI 看 MLPerf</li><li>报告必看 SUT 配置 + 软件栈 + 调优参数，不能只看绝对值</li><li>集群验收三阶段：节点级 → 机柜级 → 应用级</li><li>避坑：看曲线、看 P99、看持续值、要可复现</li></ul><p>下一篇展开 CPU &amp; 数据库基准——SPEC CPU 怎么读、tpmC 怎么算、HammerDB 怎么用。</p>]]>
    </content>
    <id>http://localhost:4000/posts/6a1f0b01/</id>
    <link href="http://localhost:4000/posts/6a1f0b01/"/>
    <published>2026-04-12T13:50:00.000Z</published>
    <summary>服务器选型不能&quot;光听销售吹&quot;，得有共同的标尺。第九章讲基准测试。本文先把整张地图铺出来——TPC、SPEC、TOP500、MLPerf、专用基准，各自负责什么领域。</summary>
    <title>基准测试体系概览 —— TPC、SPEC、TOP500 与 MLPerf</title>
    <updated>2026-05-24T13:49:48.032Z</updated>
  </entry>
  <entry>
    <category term="08-可信计算" scheme="http://localhost:4000/categories/08-%E5%8F%AF%E4%BF%A1%E8%AE%A1%E7%AE%97/"/>
    <category term="可信计算选型" scheme="http://localhost:4000/tags/%E5%8F%AF%E4%BF%A1%E8%AE%A1%E7%AE%97%E9%80%89%E5%9E%8B/"/>
    <category term="第八章小结" scheme="http://localhost:4000/tags/%E7%AC%AC%E5%85%AB%E7%AB%A0%E5%B0%8F%E7%BB%93/"/>
    <content>
      <![CDATA[<p>第八章前面 5 篇分别讲了 TPM&#x2F;TCM、Secure Boot&#x2F;IMA、TEE（SGX&#x2F;TDX&#x2F;SEV&#x2F;TrustZone）、机密计算、国产可信。本篇收口。</p><!-- more --><h2 id="选型的”四层决策”"><a href="#选型的”四层决策”" class="headerlink" title="选型的”四层决策”"></a>选型的”四层决策”</h2><pre class="mermaid">graph TD  Q1[第 1 层: 威胁模型?]  Q1 --> Q2[第 2 层: 数据保护粒度?]  Q2 --> Q3[第 3 层: 国密 / 信创要求?]  Q3 --> Q4[第 4 层: 性能 / 成本预算?]  Q4 --> A[最终方案]</pre><h2 id="第-1-层：威胁模型"><a href="#第-1-层：威胁模型" class="headerlink" title="第 1 层：威胁模型"></a>第 1 层：威胁模型</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br></pre></td><td class="code"><pre><code class="hljs text">威胁 1：物理偷盘 / 服务器被搬走<br>  → LUKS 全盘加密 + TPM 密封 PCR 7<br><br>威胁 2：BIOS / Bootloader 被篡改<br>  → Secure Boot + Measured Boot<br><br>威胁 3：root 用户恶意 / 内部攻击<br>  → IMA Appraisal + 文件签名<br><br>威胁 4：CSP 不可信 / 多租户隔离<br>  → Confidential VM（TDX / SEV-SNP）<br><br>威胁 5：跨数据所有者协作<br>  → MPC + Confidential Computing<br><br>威胁 6：供应链 / 后门<br>  → TPCM 主动可信 + 全栈国产<br><br>威胁 7：内存 dump / 侧信道<br>  → TEE 内存加密 + 时间常数代码<br></code></pre></td></tr></table></figure><h2 id="第-2-层：数据保护粒度"><a href="#第-2-层：数据保护粒度" class="headerlink" title="第 2 层：数据保护粒度"></a>第 2 层：数据保护粒度</h2><table><thead><tr><th>粒度</th><th>推荐方案</th><th>适用场景</th></tr></thead><tbody><tr><td>全盘</td><td>LUKS + TPM</td><td>防偷盘</td></tr><tr><td>文件</td><td>IMA + Appraisal</td><td>应用文件防篡改</td></tr><tr><td>进程</td><td>Intel SGX</td><td>KMS &#x2F; 密钥保护</td></tr><tr><td>VM</td><td>TDX &#x2F; SEV-SNP &#x2F; CSV</td><td>整 VM 加密</td></tr><tr><td>容器</td><td>CoCo（基于 VM TEE）</td><td>K8s 机密容器</td></tr><tr><td>GPU</td><td>NVIDIA Confidential Mode + TDX</td><td>大模型机密推理</td></tr></tbody></table><h2 id="第-3-层：国密-信创"><a href="#第-3-层：国密-信创" class="headerlink" title="第 3 层：国密 &#x2F; 信创"></a>第 3 层：国密 &#x2F; 信创</h2><pre class="mermaid">graph TD  Q1{业务等保等级?}  Q1 -- "等保 1-2 级" --> S1[国际方案 OK<br/>TPM 2.0 + LUKS]  Q1 -- "等保 3 级" --> S2[国密 + TCM<br/>麒麟 / 欧拉]  Q1 -- "等保 4 级 / 关基" --> S3[全栈国产<br/>TPCM + 海光 CSV / 鲲鹏 iTrustee]  Q1 -- "军工 / 国防" --> S4[龙芯 / 申威 + 自研可信]</pre><h2 id="第-4-层：性能-成本"><a href="#第-4-层：性能-成本" class="headerlink" title="第 4 层：性能 &#x2F; 成本"></a>第 4 层：性能 &#x2F; 成本</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs text">最便宜：     纯软件方案（IMA / dm-crypt）<br>中端：       TPM + Secure Boot + LUKS（每机几十元 TPM 芯片）<br>中高：       Confidential VM（云价格 +10-20%）<br>高：         CoCo（资源开销 + 启动慢）<br>最高：       Confidential GPU（H100 量级 + 软件）<br></code></pre></td></tr></table></figure><h2 id="几个典型场景的清单"><a href="#几个典型场景的清单" class="headerlink" title="几个典型场景的清单"></a>几个典型场景的清单</h2><h3 id="场景-1：互联网公司一般业务"><a href="#场景-1：互联网公司一般业务" class="headerlink" title="场景 1：互联网公司一般业务"></a>场景 1：互联网公司一般业务</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><code class="hljs text">推荐：     不用 TPM / TEE，靠普通安全<br>理由：     ROI 不划算，运维成本高<br>保护手段：     <br>  - dm-crypt 普通磁盘加密<br>  - SELinux / AppArmor<br>  - 入侵检测 / 审计<br></code></pre></td></tr></table></figure><h3 id="场景-2：金融核心系统"><a href="#场景-2：金融核心系统" class="headerlink" title="场景 2：金融核心系统"></a>场景 2：金融核心系统</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><code class="hljs text">推荐：     全栈可信启动<br>配置：     <br>  - TPM 2.0 / TCM 芯片<br>  - Secure Boot 启用<br>  - Measured Boot 记录<br>  - LUKS + TPM 密封 PCR 7<br>  - IMA Appraisal<br>  - 远程证明上报<br>  - 国密 SSL（GmSSL）<br>预算：     额外 5-10% 硬件 + 运维<br></code></pre></td></tr></table></figure><h3 id="场景-3：政府-央企信创系统"><a href="#场景-3：政府-央企信创系统" class="headerlink" title="场景 3：政府 &#x2F; 央企信创系统"></a>场景 3：政府 &#x2F; 央企信创系统</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><code class="hljs text">推荐：     国产全栈 + TPCM<br>配置：     <br>  - 海光 / 鲲鹏 + TPCM 模块<br>  - 麒麟 V10 / openEuler / UOS<br>  - TCM 芯片（与 TPCM 配合）<br>  - 国密 Secure Boot（SM2 签名）<br>  - IMA + EVM 国密版<br>  - 海光 CSV / 鲲鹏 iTrustee（敏感业务）<br>认证：     等保 3+ / 信创目录<br></code></pre></td></tr></table></figure><h3 id="场景-4：多方计算-联邦学习"><a href="#场景-4：多方计算-联邦学习" class="headerlink" title="场景 4：多方计算 &#x2F; 联邦学习"></a>场景 4：多方计算 &#x2F; 联邦学习</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><code class="hljs text">推荐：     Confidential VM + Confidential GPU<br>配置：     <br>  - 云上 TDX VM 或 SEV-SNP VM<br>  - NVIDIA H100 Confidential Mode<br>  - 远程证明 + KBS 密钥分发<br>  - Veraison / Intel Trust Authority<br>应用：     银行联合反欺诈、医疗 AI、广告 Data Clean Room<br></code></pre></td></tr></table></figure><h3 id="场景-5：军方-国防"><a href="#场景-5：军方-国防" class="headerlink" title="场景 5：军方 &#x2F; 国防"></a>场景 5：军方 &#x2F; 国防</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><code class="hljs text">推荐：     龙芯 / 申威 + 自研可信芯片<br>配置：     <br>  - 全自主指令集<br>  - 自研 BIOS / OS / 可信 module<br>  - 物理隔离网络<br>  - 国密 + 自定义算法<br>等保：     4 级以上<br></code></pre></td></tr></table></figure><h2 id="几个常见的”老坑”"><a href="#几个常见的”老坑”" class="headerlink" title="几个常见的”老坑”"></a>几个常见的”老坑”</h2><h3 id="坑-1：以为-TPM-安全"><a href="#坑-1：以为-TPM-安全" class="headerlink" title="坑 1：以为 TPM &#x3D; 安全"></a>坑 1：以为 TPM &#x3D; 安全</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs text">TPM 只能&quot;度量&quot;，不能&quot;防御&quot;：     <br>  - 启动时 BIOS 改了，PCR 也改，但系统照样启动<br>  - TPM 不阻止攻击，只记录状态<br>  <br>完整方案：     TPM 度量 + Secure Boot 阻止 + IMA 运行时验证 + 远程证明<br></code></pre></td></tr></table></figure><h3 id="坑-2：Secure-Boot-关闭后还以为安全"><a href="#坑-2：Secure-Boot-关闭后还以为安全" class="headerlink" title="坑 2：Secure Boot 关闭后还以为安全"></a>坑 2：Secure Boot 关闭后还以为安全</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><code class="hljs text">有人嫌 Secure Boot 麻烦关掉：     <br>  - PCR 7 变化（reboot 后 LUKS 解不开）<br>  - 但 BIOS 度量仍记录<br>  - 攻击面立即扩大<br></code></pre></td></tr></table></figure><h3 id="坑-3：把-Confidential-VM-当魔法"><a href="#坑-3：把-Confidential-VM-当魔法" class="headerlink" title="坑 3：把 Confidential VM 当魔法"></a>坑 3：把 Confidential VM 当魔法</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><code class="hljs text">启用 TDX / SEV-SNP 不等于&quot;完全安全&quot;：     <br>  - 业务代码漏洞照样存在<br>  - 侧信道攻击仍可能<br>  - 远程证明不实现 = 走过场<br>  <br>正确：     TEE + 应用层安全 + 持续审计<br></code></pre></td></tr></table></figure><h3 id="坑-4：远程证明不验签"><a href="#坑-4：远程证明不验签" class="headerlink" title="坑 4：远程证明不验签"></a>坑 4：远程证明不验签</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><code class="hljs text">拿到 attestation report 但不验签：     <br>  - 攻击者可伪造<br>  - TCB level 不查 = 旧漏洞 CPU 仍信任<br>  - 不防重放<br>  <br>完整验证：     签名链 + nonce + TCB level + 撤销列表<br></code></pre></td></tr></table></figure><h3 id="坑-5：vTPM-状态丢失"><a href="#坑-5：vTPM-状态丢失" class="headerlink" title="坑 5：vTPM 状态丢失"></a>坑 5：vTPM 状态丢失</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><code class="hljs text">KVM vTPM 默认非持久化：     <br>  - VM 重启 → PCR 全空<br>  - LUKS 密封解不开<br>  - 业务 down<br>  <br>解决：     swtpm + libvirt 持久化模式<br></code></pre></td></tr></table></figure><h3 id="坑-6：万级集群基线管理"><a href="#坑-6：万级集群基线管理" class="headerlink" title="坑 6：万级集群基线管理"></a>坑 6：万级集群基线管理</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><code class="hljs text">每机 PCR 因 BIOS / kernel 略差异：     <br>  - 远程证明要逐机维护基线<br>  - 升级时全集群 PCR 重算<br>  - 运维成本高<br>  <br>缓解：     用 PCR 7 + Secure Boot 抽象，不直接比 PCR 0/4<br></code></pre></td></tr></table></figure><h3 id="坑-7：性能预估错位"><a href="#坑-7：性能预估错位" class="headerlink" title="坑 7：性能预估错位"></a>坑 7：性能预估错位</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><code class="hljs text">TEE 加密内存 5-10% 性能损失看起来小：     <br>  - 但有些业务（数据库 / 高频交易）20% 都受不了<br>  - 实测后再决定生产用<br></code></pre></td></tr></table></figure><h2 id="一些性能直觉数字"><a href="#一些性能直觉数字" class="headerlink" title="一些性能直觉数字"></a>一些性能直觉数字</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br></pre></td><td class="code"><pre><code class="hljs text">TPM 操作：     <br>  生成 RSA 2048 密钥：     500-1000 ms<br>  RSA 签名：              50-100 ms<br>  PCR Extend：            1-5 ms<br>  Quote：                  50-150 ms<br><br>启动开销：     <br>  Secure Boot：            +50-200 ms<br>  Measured Boot：          +500 ms<br>  IMA：                   +1-5 秒<br>  TPM 解 LUKS：           +200-500 ms<br><br>TEE 性能：     <br>  SGX 内存敏感应用：       50-70%（大数据集）<br>  SGX CPU 敏感应用：       95%<br>  TDX / SEV-SNP：         95%（&lt; 5% 损失）<br>  Confidential GPU：     90-95%<br><br>启动 + 远程证明：     <br>  Confidential VM：        +3-5 秒<br>  CoCo Pod：              +5-10 秒<br></code></pre></td></tr></table></figure><h2 id="第八章整体小结"><a href="#第八章整体小结" class="headerlink" title="第八章整体小结"></a>第八章整体小结</h2><p>回看第八章覆盖：</p><ol><li><strong>TPM &#x2F; TCM 基础</strong> — 硬件根 + PCR + 度量启动链</li><li><strong>Secure Boot &#x2F; Measured Boot &#x2F; IMA</strong> — 启动链验签 + 度量 + 运行时验证</li><li><strong>TEE</strong> — SGX &#x2F; TDX &#x2F; SEV &#x2F; TrustZone &#x2F; CCA</li><li><strong>机密计算</strong> — Confidential VM &#x2F; Container 产品形态</li><li><strong>国产可信计算</strong> — TCM &#x2F; TPCM &#x2F; 海光 CSV &#x2F; 鲲鹏 iTrustee</li><li><strong>可信计算选型与小结</strong>（本篇）</li></ol><p>几条贯穿全章的主线：</p><pre class="mermaid">graph LR  HW[硬件根<br/>TPM/TCM/CPU TEE]  BOOT[启动链<br/>Secure + Measured]  RUN[运行时<br/>IMA / TEE]  REMOTE[远程证明]  APP[业务可信]  HW --> BOOT --> RUN --> REMOTE --> APP</pre><p><strong>核心认知</strong>：</p><ul><li>可信计算 &#x3D; “硬件证明系统状态”</li><li>TPM 度量 + Secure Boot 验签 + IMA 运行时 &#x3D; 完整启动链</li><li>TEE 进一步保护”运行时数据”</li><li>远程证明把”信任”延伸到远端</li><li>国产路线分两条：TPM 2.0 + 国密 &#x2F; TCM-TPCM 主动可信</li><li>互联网启用率低，政企 &#x2F; 金融 &#x2F; 关基启用率高</li></ul><h2 id="可信计算未来-2-3-年趋势"><a href="#可信计算未来-2-3-年趋势" class="headerlink" title="可信计算未来 2-3 年趋势"></a>可信计算未来 2-3 年趋势</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><code class="hljs text">1. TDX / SEV-SNP 在公有云全面铺开<br>2. Confidential GPU（NVIDIA H100/B200）走向规模化<br>3. CoCo（K8s 机密容器）从研究走向生产<br>4. ARM CCA 商用 + 鲲鹏 + 飞腾跟进<br>5. RATS（IETF 远程证明）成为跨厂家标准<br>6. 量子安全密码学开始嵌入 TPM（PQC）<br>7. 国产 TPCM 在关基 / 政企持续渗透<br>8. 海光 CSV3 / GPU TEE 大规模落地<br>9. 联邦学习 + 机密计算结合（数据合作）<br>10. 监管推动（PIPL / GDPR / DORA）使机密计算成为合规手段<br></code></pre></td></tr></table></figure><h2 id="给读者的实战建议"><a href="#给读者的实战建议" class="headerlink" title="给读者的实战建议"></a>给读者的实战建议</h2><p>如果你在公司负责可信计算 &#x2F; 安全规划：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><code class="hljs text">1. 先评估威胁模型——不要&quot;为了用而用&quot;<br>2. 一般业务先做基本面：     磁盘加密 + SELinux + 审计<br>3. 关键业务再叠加：     TPM + Secure Boot + IMA<br>4. 对外提供服务：     考虑 Confidential VM 给客户证明<br>5. 跨方合作：     选 TDX / SEV-SNP 路线<br>6. 国产化要求按等保等级分层<br>7. 远程证明要规划基线管理（最大坑）<br>8. 性能 / 成本先做 PoC 实测<br>9. 留 fallback（recovery key / 等密码）<br>10. 团队培训：     可信计算运维比常规更复杂<br></code></pre></td></tr></table></figure><blockquote><p>待补充：你公司或项目的可信计算选型经验。</p></blockquote><h2 id="第八章结束"><a href="#第八章结束" class="headerlink" title="第八章结束"></a>第八章结束</h2><p>下一章进入<strong>第九章 基准测试与认证</strong>。会重点讲：</p><ul><li>SPEC CPU &#x2F; Linpack &#x2F; SPECpower</li><li>TPC-C &#x2F; TPC-H &#x2F; TPC-DS（数据库基准）</li><li>MLPerf（AI 基准）</li><li>STREAM &#x2F; fio &#x2F; iperf 等工具</li><li>国产认证（CCC &#x2F; 中标 &#x2F; 信创目录 &#x2F; 等保 &#x2F; 国密）</li><li>全书收口</li></ul><p>Chapter 8 done.</p>]]>
    </content>
    <id>http://localhost:4000/posts/8b48038e/</id>
    <link href="http://localhost:4000/posts/8b48038e/"/>
    <published>2026-04-05T15:20:00.000Z</published>
    <summary>把第八章 5 篇连起来——按业务场景实际怎么选 TPM、TEE、机密计算栈。本篇是第八章收口。</summary>
    <title>可信计算选型与第八章小结</title>
    <updated>2026-05-24T13:49:48.031Z</updated>
  </entry>
  <entry>
    <category term="08-可信计算" scheme="http://localhost:4000/categories/08-%E5%8F%AF%E4%BF%A1%E8%AE%A1%E7%AE%97/"/>
    <category term="TCM" scheme="http://localhost:4000/tags/TCM/"/>
    <category term="TPCM" scheme="http://localhost:4000/tags/TPCM/"/>
    <category term="海光 CSV" scheme="http://localhost:4000/tags/%E6%B5%B7%E5%85%89-CSV/"/>
    <category term="鲲鹏 iTrustee" scheme="http://localhost:4000/tags/%E9%B2%B2%E9%B9%8F-iTrustee/"/>
    <category term="国密" scheme="http://localhost:4000/tags/%E5%9B%BD%E5%AF%86/"/>
    <content>
      <![CDATA[<p>中国可信计算 1990 年代起步，2000 年后形成”沈昌祥院士”主导的”可信计算 2.0”路线——和国际 TCG 路线有差异。本文盘点国产可信硬件、软件、标准全景。</p><!-- more --><h2 id="中国可信计算的”两条线”"><a href="#中国可信计算的”两条线”" class="headerlink" title="中国可信计算的”两条线”"></a>中国可信计算的”两条线”</h2><pre class="mermaid">graph TB  CN[国产可信计算]  CN --> L1[国际兼容路线<br/>TPM 2.0 + 国密扩展]  CN --> L2[国密自主路线<br/>TCM + TPCM 主动可信]    L1 --> H1[多数 OEM 主板带 TPM]  L1 --> H2[海光 CSV / 鲲鹏 iTrustee]    L2 --> H3[TCM 芯片 主板加]  L2 --> H4[TPCM 主控可信芯片]  L2 --> H5[等保 2.0 / 关基要求]</pre><h2 id="TCM：可信密码模块"><a href="#TCM：可信密码模块" class="headerlink" title="TCM：可信密码模块"></a>TCM：可信密码模块</h2><p>国密版 TPM：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><code class="hljs text">TCM（Trusted Cryptography Module）：     <br>  - 国家密码管理局主导<br>  - GB/T 29827-2013（&quot;信息安全技术 可信计算规范 TCM&quot;）<br>  - 算法：     SM2 / SM3 / SM4<br>  - 接口：     LPC / SPI<br><br>与 TPM 1.2 类比：     <br>  - TPM SHA-1 → TCM SM3<br>  - TPM RSA → TCM SM2<br>  - TPM AES → TCM SM4<br><br>商用：     兆芯 / 海光 / 龙芯主板都可选 TCM 芯片<br>厂家：    国民技术、华大半导体、海泰方圆、瑞达等<br></code></pre></td></tr></table></figure><h2 id="TPCM：可信平台控制模块"><a href="#TPCM：可信平台控制模块" class="headerlink" title="TPCM：可信平台控制模块"></a>TPCM：可信平台控制模块</h2><p>中国”主动可信”路线的核心创新：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><code class="hljs text">TPCM（Trusted Platform Control Module）：     <br>  - &quot;可信计算 3.0&quot;概念<br>  - 沈昌祥院士主推<br>  - 不同于 TPM / TCM 的&quot;被动度量&quot;<br>  - TPCM 主动控制系统启动<br>  <br>区别于 TPM：     <br>  TPM：     CPU 调它，被动响应<br>  TPCM：    自身有控制权，可主动启动 / 阻断<br><br>物理形态：     <br>  - 主板上独立模块<br>  - 上电时优先启动<br>  - 控制 BIOS 是否被允许执行<br>  - 持续监督系统运行<br></code></pre></td></tr></table></figure><h3 id="TPCM-工作流程"><a href="#TPCM-工作流程" class="headerlink" title="TPCM 工作流程"></a>TPCM 工作流程</h3><pre class="mermaid">graph TB  POW[上电] --> TPCM[TPCM 优先启动]  TPCM --> CHECK[校验 BIOS 完整性]  CHECK -- 通过 --> RUN[允许 BIOS 执行]  CHECK -- 不通过 --> BLK[阻止系统启动 / 告警]  RUN --> MON[运行时持续监督<br/>主动度量]  MON -- 发现异常 --> ACTION[报警 / 隔离 / 重启]</pre><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><code class="hljs text">关键差异：     <br>  - TPM 等&quot;度量后请求&quot;的方式：     CPU 主动询问 TPM 是否 OK<br>  - TPCM 等&quot;主动控制&quot;：     TPCM 自己决定 CPU 能不能跑<br>  <br>理论上 TPCM 比 TPM 更安全——硬件级&quot;看门狗&quot;。<br><br>实际部署：     <br>  - 政府 / 国央企 / 关基系统<br>  - 等保 2.0 / 3.0 三级及以上<br>  - 部分电网 / 银行 / 军方<br>  <br>争议：     <br>  - 与国际 TCG 标准不同<br>  - 国际生态较弱<br>  - 但在国内信创市场是确定的需求<br></code></pre></td></tr></table></figure><h2 id="海光-CSV（China-Secure-Virtualization）"><a href="#海光-CSV（China-Secure-Virtualization）" class="headerlink" title="海光 CSV（China Secure Virtualization）"></a>海光 CSV（China Secure Virtualization）</h2><p>8.3 已介绍——海光 EPYC 衍生 CPU 的 SEV 国密版：</p><pre class="mermaid">graph LR  S1[CSV1<br/>2020<br/>仅内存加密] --> S2[CSV2<br/>2021<br/>+ 寄存器加密]  S2 --> S3[CSV3<br/>2023<br/>+ 完整性 + 防回滚]</pre><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><code class="hljs text">CSV 系列：     <br>  CSV1：    SM4 加密 DRAM，对应 SEV<br>  CSV2：    + 寄存器加密，对应 SEV-ES<br>  CSV3：    + 完整性 + 嵌套页表保护，对应 SEV-SNP<br><br>用 SM4 不是 AES：     <br>  - DRAM 内存加密用 SM4-128<br>  - 满足国密要求<br>  - 性能与 AES 相当（硬件实现）<br><br>应用：     <br>  - 海光 + 麒麟 / 欧拉 / UOS：信创机密计算<br>  - 与海光 DCU 配合做 GPU TEE<br>  - 阿里 / 腾讯云国产化区域使用<br></code></pre></td></tr></table></figure><blockquote><p>待补充：海光 CSV 实际部署规模和案例。</p></blockquote><h2 id="鲲鹏-iTrustee"><a href="#鲲鹏-iTrustee" class="headerlink" title="鲲鹏 iTrustee"></a>鲲鹏 iTrustee</h2><p>华为 &#x2F; 海思系：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><code class="hljs text">鲲鹏 iTrustee：     <br>  - ARM TrustZone 上的 Secure World OS<br>  - 华为自研<br>  - 与昇腾 / 鲲鹏 / 麒麟深度集成<br>  <br>secGear SDK：     <br>  - 华为开源 confidential computing 编程框架<br>  - 抽象 Intel SGX / TrustZone / 鲲鹏 / 海光<br>  - 跨 TEE 应用编程<br>  <br>应用：     <br>  - 华为云机密计算服务<br>  - 政企 / 金融 / 运营商<br>  - 鲲鹏 + 麒麟 V10 标配<br></code></pre></td></tr></table></figure><h2 id="飞腾-PSPA"><a href="#飞腾-PSPA" class="headerlink" title="飞腾 PSPA"></a>飞腾 PSPA</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs text">飞腾 PSPA（Phytium Security Processing Architecture）：     <br>  - 飞腾自家&quot;可信路线&quot;<br>  - 基于 ARM TrustZone<br>  - 与麒麟 / UOS 配套<br>  - PSPA 协处理器集成在 SoC 内<br></code></pre></td></tr></table></figure><blockquote><p>待补充：飞腾 PSPA 详细规格和成熟度。</p></blockquote><h2 id="龙芯安全方案"><a href="#龙芯安全方案" class="headerlink" title="龙芯安全方案"></a>龙芯安全方案</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs text">龙芯（LoongArch 架构）：     <br>  - 自研可信计算扩展<br>  - 与中科方德 / 麒麟适配<br>  - GUKI 安全 OS（中科方德）<br>  - 国产可信芯片<br><br>特点：     从指令集到 OS 全栈自主<br>应用：     军方 / 关基核心系统<br></code></pre></td></tr></table></figure><blockquote><p>待补充：龙芯可信计算具体实现细节。</p></blockquote><h2 id="申威-兆芯"><a href="#申威-兆芯" class="headerlink" title="申威 &#x2F; 兆芯"></a>申威 &#x2F; 兆芯</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs text">申威（SW64）：     <br>  - 国防 / 关基<br>  - 全自主指令集<br>  - 自带可信扩展<br><br>兆芯（x86）：     <br>  - 通过 VIA x86 授权<br>  - 部分通用 + 国密扩展<br></code></pre></td></tr></table></figure><h2 id="国产可信计算的标准体系"><a href="#国产可信计算的标准体系" class="headerlink" title="国产可信计算的标准体系"></a>国产可信计算的标准体系</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br></pre></td><td class="code"><pre><code class="hljs text">GB/T 29827-2013：     可信计算规范——TCM<br>GB/T 29828-2013：     可信连接架构（TCA）<br>GB/T 29829-2013：     TCM 服务模块（TSM）<br>GB/T 36639-2018：     可信计算规范——服务器可信支撑平台<br>GB/T 41388-2022：     机密计算技术框架<br>GB/T 39786-2021：     信息系统密码应用基本要求<br><br>等保 2.0 / 3.0：     <br>  - 三级以上要求&quot;可信验证&quot;<br>  - 启动时验证 BIOS / Bootloader<br>  - 运行时验证关键应用<br>  - 可信验证记录留存<br><br>关键信息基础设施保护条例（2021）：     <br>  - &quot;关基&quot;必须有可信验证<br>  - 涵盖电力 / 金融 / 交通 / 政务等<br></code></pre></td></tr></table></figure><h2 id="信创可信计算栈"><a href="#信创可信计算栈" class="headerlink" title="信创可信计算栈"></a>信创可信计算栈</h2><pre class="mermaid">graph TB  L1[硬件层]  L1 --> H1[CPU：海光 / 鲲鹏 / 飞腾 / 龙芯]  L1 --> H2[TCM / TPCM 芯片]  L1 --> H3[GPU：海光 DCU / 昇腾]    L2[固件层]  L2 --> F1[国产 BIOS / UEFI]  L2 --> F2[Secure Boot 国密签名]    L3[OS 层]  L3 --> O1[麒麟 V10 / openEuler / UOS / 龙蜥]  L3 --> O2[IMA + 国密验证]    L4[应用层]  L4 --> A1[国密 OpenSSL（GmSSL）]  L4 --> A2[国产数据库 / 中间件]    L5[监管面]  L5 --> M1[CCRC 认证]  L5 --> M2[国密局认证]  L5 --> M3[等保测评]</pre><h2 id="国密算法在可信计算"><a href="#国密算法在可信计算" class="headerlink" title="国密算法在可信计算"></a>国密算法在可信计算</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><code class="hljs text">SM2：     椭圆曲线公钥（256-bit），对应 ECDSA<br>SM3：     哈希（256-bit），对应 SHA-256<br>SM4：     对称加密（128-bit），对应 AES-128<br>SM9：     标识密码（基于双线性对），无国际等价<br><br>可信启动用法：     <br>  - SM3 哈希 PCR Extend<br>  - SM2 签名 attestation<br>  - SM4 加密 LUKS / DRAM<br><br>TPM 2.0 标准支持自定义 hash 算法：     <br>  → TPM 厂家可以做&quot;国密版 TPM&quot;（也叫 TCM 升级版）<br>  → 同一颗芯片支持 SHA-256 + SM3 双 PCR bank<br></code></pre></td></tr></table></figure><h2 id="国产-OS-中的可信适配"><a href="#国产-OS-中的可信适配" class="headerlink" title="国产 OS 中的可信适配"></a>国产 OS 中的可信适配</h2><h3 id="openEuler"><a href="#openEuler" class="headerlink" title="openEuler"></a>openEuler</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><code class="hljs text">openEuler 22.03 LTS：     <br>  - secGear（机密计算 SDK）<br>  - shimx64.efi 国密签名<br>  - GRUB / kernel 适配 SM2/SM3<br>  - IMA + EVM 国密版本<br>  - 与海光 CSV / 鲲鹏 iTrustee 集成<br>  <br>工具链：     <br>  - tpm2-tss + 国密扩展<br>  - keylime 国密版<br></code></pre></td></tr></table></figure><h3 id="麒麟-V10"><a href="#麒麟-V10" class="headerlink" title="麒麟 V10"></a>麒麟 V10</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><code class="hljs text">银河麒麟 V10 SP3：     <br>  - 默认启用国密 Secure Boot<br>  - TCM / TPCM 标配<br>  - 等保 3 级合规<br>  - 国密 OpenSSL（GmSSL）<br>  - 国密 SSH<br><br>与 PKI 集成：     <br>  - SM2 数字证书<br>  - 与中国电子签名服务对接<br></code></pre></td></tr></table></figure><h3 id="统信-UOS"><a href="#统信-UOS" class="headerlink" title="统信 UOS"></a>统信 UOS</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><code class="hljs text">UOS Server V20 / V21：     <br>  - 部分支持 TCM<br>  - 与海光 / 鲲鹏 / 飞腾全适配<br>  - 等保 / 国密合规<br></code></pre></td></tr></table></figure><h2 id="应用场景"><a href="#应用场景" class="headerlink" title="应用场景"></a>应用场景</h2><h3 id="党政信息系统"><a href="#党政信息系统" class="headerlink" title="党政信息系统"></a>党政信息系统</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><code class="hljs text">要求：     <br>  - 等保 3 级及以上<br>  - TCM / TPCM 启用<br>  - 全栈国产 + 国密<br>  <br>典型部署：     <br>  - 海光 + 麒麟 V10 + TPCM<br>  - openEuler + 鲲鹏 + iTrustee<br>  - 飞腾 + UOS + TCM<br></code></pre></td></tr></table></figure><h3 id="央国企生产系统"><a href="#央国企生产系统" class="headerlink" title="央国企生产系统"></a>央国企生产系统</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><code class="hljs text">银行核心系统：     <br>  - 国密 SSL（OpenSSL → GmSSL）<br>  - 数据库国密（GaussDB / OceanBase 国密版）<br>  - HSM 用国密<br>  - 部分用 TEE（海光 CSV / 鲲鹏）<br>  <br>电力调度系统：     <br>  - TPCM 主动可信<br>  - 电网信创目录<br>  - 边界网关国密<br></code></pre></td></tr></table></figure><h3 id="军方-关基"><a href="#军方-关基" class="headerlink" title="军方 &#x2F; 关基"></a>军方 &#x2F; 关基</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><code class="hljs text">要求：     <br>  - 等保 4 级<br>  - 自主可控（指令集 + 全栈）<br>  - 龙芯 / 申威优先<br>  - 自研可信芯片<br>  <br>典型部署：     <br>  - 龙芯 + 中科方德 + 自研可信<br>  - 申威 + 凝思 / 麒麟信安<br></code></pre></td></tr></table></figure><h2 id="国产可信计算的挑战"><a href="#国产可信计算的挑战" class="headerlink" title="国产可信计算的挑战"></a>国产可信计算的挑战</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br></pre></td><td class="code"><pre><code class="hljs text">1. 国际生态弱：     <br>   - TCM / TPCM 与 TCG 不完全兼容<br>   - 跨厂家工具少<br>   - 学术研究少<br>   <br>2. 应用兼容：     <br>   - 国密 OpenSSL 替代国际版<br>   - 国产中间件 / 数据库适配<br>   - 应用层移植成本<br><br>3. 性能：     <br>   - SM2 / SM4 性能稍逊 RSA / AES（差距小）<br>   - SM3 与 SHA-256 相当<br>   - 国密硬件加速覆盖度不如 AES-NI<br><br>4. 工具链：     <br>   - 调试 / profiling 工具少<br>   - 与开源社区互动有限<br>   - 标准更新慢<br><br>5. 主动可信路线分歧：     <br>   - TPCM 仅国内推<br>   - 国际厂家不实现<br>   - 跨国企业落地难<br></code></pre></td></tr></table></figure><h2 id="国产可信计算的优势"><a href="#国产可信计算的优势" class="headerlink" title="国产可信计算的优势"></a>国产可信计算的优势</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><code class="hljs text">1. 监管确定性：     <br>   - 信创目录 / 等保 2.0 / 关基保护条例<br>   - 一定数量的政企采购&quot;必带&quot;<br>   <br>2. 全栈自主：     <br>   - 从指令集到 TEE 全栈自研<br>   - 不被外部&quot;卡脖子&quot;<br><br>3. 与国密深度结合：     <br>   - SM2 / SM3 / SM4 / SM9 硬件加速<br>   - 国密合规直接达成<br><br>4. 主动可信创新：     <br>   - TPCM 是国内创新点<br>   - 未来可能反向输出<br></code></pre></td></tr></table></figure><h2 id="工具与命令"><a href="#工具与命令" class="headerlink" title="工具与命令"></a>工具与命令</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 看 TCM 支持</span><br><span class="hljs-built_in">ls</span> /dev/tcm*<br><span class="hljs-built_in">cat</span> /sys/class/tcm/tcm0/version<br><br><span class="hljs-comment"># 国密 OpenSSL（GmSSL）</span><br>gmssl version<br>gmssl sm3 -<span class="hljs-keyword">in</span> file.txt<br>gmssl sm2sign -<span class="hljs-keyword">in</span> file.txt -inkey sm2.pem<br><br><span class="hljs-comment"># 海光 CSV 检测</span><br>dmesg | grep -i csv<br><span class="hljs-built_in">ls</span> /dev/csv-guest<br><br><span class="hljs-comment"># 鲲鹏 iTrustee（OP-TEE 衍生）</span><br>optee-supplicant status<br><br><span class="hljs-comment"># secGear（华为机密计算 SDK）</span><br>secgear-cli list-tee<br></code></pre></td></tr></table></figure><h2 id="一些查询"><a href="#一些查询" class="headerlink" title="一些查询"></a>一些查询</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 看 CPU 是否支持国密扩展</span><br>grep -E <span class="hljs-string">&quot;sm3|sm4|sm9&quot;</span> /proc/cpuinfo<br><br><span class="hljs-comment"># 看 TPM 是否双 bank（SHA-256 + SM3）</span><br>tpm2_pcrread sha256:0,1,2<br>tpm2_pcrread sm3_256:0,1,2<br><br><span class="hljs-comment"># 安装国密支持</span><br><span class="hljs-comment"># openEuler：     </span><br>dnf install GmSSL openssl-gmssl<br><span class="hljs-comment"># 麒麟 V10：     </span><br>yum install GmSSL kysec<br></code></pre></td></tr></table></figure><h2 id="业界进展"><a href="#业界进展" class="headerlink" title="业界进展"></a>业界进展</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><code class="hljs text">2022-2024：     <br>  - 信创采购爆发期<br>  - TCM / TPCM 上量<br>  - 海光 CSV 商用化<br>  - 鲲鹏 iTrustee 进入华为云<br><br>2024-2026：     <br>  - 万节点级国产可信集群<br>  - 与机密计算 / 多方计算结合<br>  - GPU TEE（海光 DCU + CSV）<br><br>2026+：     <br>  - 全栈机密计算（海光 / 鲲鹏 + 国密）<br>  - 国密 + 国际标准互认<br>  - 信创 + 关基的可信网络（TNC）<br></code></pre></td></tr></table></figure><blockquote><p>待补充：实际项目国产可信计算选型经验。</p></blockquote><h2 id="与国际方案对比"><a href="#与国际方案对比" class="headerlink" title="与国际方案对比"></a>与国际方案对比</h2><table><thead><tr><th>国际</th><th>国产对应</th><th>现状</th></tr></thead><tbody><tr><td>TPM 2.0</td><td>TCM 2.0（GB&#x2F;T 29827-2024 进化中）</td><td>TCM 已成熟</td></tr><tr><td>Intel TDX</td><td>海光 CSV3</td><td>海光 CSV 已商用</td></tr><tr><td>AMD SEV-SNP</td><td>海光 CSV3</td><td>兼容 SEV</td></tr><tr><td>Intel SGX</td><td>鲲鹏 iTrustee（不同模型）</td><td>进程级 vs VM 级</td></tr><tr><td>ARM TrustZone</td><td>鲲鹏 iTrustee &#x2F; 飞腾 PSPA</td><td>同根 ARM</td></tr><tr><td>ARM CCA</td><td>鲲鹏 + 国密版 CCA（探索）</td><td>未量产</td></tr><tr><td>TPM Quote</td><td>国密 attestation</td><td>标准化进行中</td></tr></tbody></table><h2 id="一些”国产可信”的真实落地"><a href="#一些”国产可信”的真实落地" class="headerlink" title="一些”国产可信”的真实落地"></a>一些”国产可信”的真实落地</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br></pre></td><td class="code"><pre><code class="hljs text">国家电网调度系统：     <br>  - 全栈国产 + TPCM 主动可信<br>  - 等保 4 级<br>  - 千节点级<br><br>中国银联：     <br>  - 海光 + 麒麟 + 国密<br>  - 部分核心系统<br><br>某省级政务云：     <br>  - 鲲鹏 + 麒麟 + iTrustee<br>  - 与机密计算结合<br><br>军工 / 国防系统：     <br>  - 龙芯 / 申威 + 自研可信<br>  - 全脱网部署<br></code></pre></td></tr></table></figure><blockquote><p>待补充：你公司或项目的国产可信选型实际情况。</p></blockquote><h2 id="一些数字直觉"><a href="#一些数字直觉" class="headerlink" title="一些数字直觉"></a>一些数字直觉</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br></pre></td><td class="code"><pre><code class="hljs text">TPCM 启动：     <br>  +1-3 秒（主动验证 BIOS）<br>  <br>海光 CSV 启动：     <br>  类似 SEV，+2-3 秒<br><br>国密 vs 国际：     <br>  SM2 签名 vs ECDSA：    几乎相同<br>  SM3 哈希 vs SHA-256：    几乎相同<br>  SM4 加密 vs AES-128：    硬件加速后接近<br><br>实际部署成本：     <br>  TCM 芯片：    单颗几十元 RMB<br>  TPCM 模块：    数百元 RMB<br>  海光 CSV：    随海光 CPU 免费<br>  鲲鹏 iTrustee：    随 SoC 免费<br></code></pre></td></tr></table></figure><h2 id="小结"><a href="#小结" class="headerlink" title="小结"></a>小结</h2><ul><li>国产可信计算分两条路线：TPM 2.0 + 国密 &#x2F; TCM-TPCM 主动可信</li><li>TCM 是国密版 TPM，TPCM 是”主动可信”创新</li><li>海光 CSV 是国密版 SEV，鲲鹏 iTrustee 基于 ARM TrustZone</li><li>国密算法 SM2&#x2F;3&#x2F;4&#x2F;9 全栈替换 RSA&#x2F;SHA&#x2F;AES</li><li>信创 &#x2F; 等保 &#x2F; 关基是主要驱动力</li><li>全栈自主优势 + 国际生态弱势是当前现状</li><li>应用：     党政、央国企、银行、电力、军方</li></ul><p>下一篇是第八章收口——可信计算选型与第八章小结。</p>]]>
    </content>
    <id>http://localhost:4000/posts/3e88b025/</id>
    <link href="http://localhost:4000/posts/3e88b025/"/>
    <published>2026-03-29T08:30:00.000Z</published>
    <summary>中国可信计算 2.0 路线和国际 TPM / TEE 不完全一样——主动可信、国密算法、TPCM 主控。本文盘点国产可信计算的硬件、软件、标准。</summary>
    <title>国产可信计算 —— TCM、TPCM、海光 CSV、鲲鹏</title>
    <updated>2026-05-24T13:49:48.031Z</updated>
  </entry>
  <entry>
    <category term="08-可信计算" scheme="http://localhost:4000/categories/08-%E5%8F%AF%E4%BF%A1%E8%AE%A1%E7%AE%97/"/>
    <category term="Confidential Computing" scheme="http://localhost:4000/tags/Confidential-Computing/"/>
    <category term="机密计算" scheme="http://localhost:4000/tags/%E6%9C%BA%E5%AF%86%E8%AE%A1%E7%AE%97/"/>
    <category term="CVM" scheme="http://localhost:4000/tags/CVM/"/>
    <category term="CoCo" scheme="http://localhost:4000/tags/CoCo/"/>
    <content>
      <![CDATA[<p>第 8.3 讲了 TEE 技术（SGX &#x2F; TDX &#x2F; SEV &#x2F; TrustZone）。本篇讲它们的”产品形态”——云上的 <strong>Confidential VM</strong>、<strong>Confidential Container</strong>，以及实际业务应用。</p><!-- more --><h2 id="Confidential-Computing-的定义"><a href="#Confidential-Computing-的定义" class="headerlink" title="Confidential Computing 的定义"></a>Confidential Computing 的定义</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><code class="hljs text">Confidential Computing Consortium 定义：     <br>  &quot;Protection of data in use by performing <br>   computation in a hardware-based, <br>   attested Trusted Execution Environment.&quot;<br><br>核心三要素：     <br>  1. 硬件 TEE<br>  2. 远程证明（attested）<br>  3. 运行时数据保护（data in use）<br></code></pre></td></tr></table></figure><h3 id="数据三种状态"><a href="#数据三种状态" class="headerlink" title="数据三种状态"></a>数据三种状态</h3><pre class="mermaid">graph TB  D[数据]  D --> R1[At Rest 静态<br/>磁盘加密 LUKS / S3]  D --> R2[In Transit 传输<br/>TLS / IPsec]  D --> R3[In Use 使用<br/>过去无解 → 现在 TEE]</pre><p>数据”使用中”加密——这是机密计算填补的空白。</p><h2 id="Confidential-VM（CVM）"><a href="#Confidential-VM（CVM）" class="headerlink" title="Confidential VM（CVM）"></a>Confidential VM（CVM）</h2><h3 id="主流云的-CVM-产品"><a href="#主流云的-CVM-产品" class="headerlink" title="主流云的 CVM 产品"></a>主流云的 CVM 产品</h3><table><thead><tr><th>云</th><th>产品</th><th>底层</th></tr></thead><tbody><tr><td>Microsoft Azure</td><td>DCe &#x2F; DCa &#x2F; ECe &#x2F; ECa 系列</td><td>Intel TDX &#x2F; AMD SEV-SNP</td></tr><tr><td>Google Cloud</td><td>Confidential VM C2D &#x2F; N2D</td><td>AMD SEV &#x2F; SEV-SNP &#x2F; TDX</td></tr><tr><td>AWS</td><td>Nitro Enclaves（限制版本）</td><td>Nitro 自家 + SEV</td></tr><tr><td>阿里云</td><td>ECS 安全增强型</td><td>TDX &#x2F; SEV &#x2F; 海光 CSV</td></tr><tr><td>腾讯云</td><td>TKE 机密计算</td><td>SEV &#x2F; 海光 CSV</td></tr><tr><td>华为云</td><td>鲲鹏 + iTrustee</td><td>TrustZone</td></tr></tbody></table><h3 id="启动-Confidential-VM-的流程"><a href="#启动-Confidential-VM-的流程" class="headerlink" title="启动 Confidential VM 的流程"></a>启动 Confidential VM 的流程</h3><pre class="mermaid">graph LR  U[用户提交 VM 模板] --> H[CSP Hypervisor]  H --> CR[创建加密 VM<br/>注入 vTPM / TDX module]  CR --> BOOT[VM 启动 + Measured Boot]  BOOT --> AT[VM 调 Quote API<br/>得到 Attestation Report]  AT --> US[用户拿到 Report]  US --> VER[用户验证签名 + PCR]  VER --> KEY[确认可信 → 注入业务密钥]  KEY --> APP[业务运行]</pre><p>关键点：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><code class="hljs text">1. 用户不信任 CSP / Hypervisor<br>2. CSP 看不到 VM 内存<br>3. 用户先验证 attestation，再决定是否注入数据 / 密钥<br>4. 整个流程&quot;硬件 + 协议&quot;保证<br></code></pre></td></tr></table></figure><h3 id="简单-Demo：Azure-Confidential-VM"><a href="#简单-Demo：Azure-Confidential-VM" class="headerlink" title="简单 Demo：Azure Confidential VM"></a>简单 Demo：Azure Confidential VM</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># Azure CLI 创建 Confidential VM</span><br>az vm create \<br>  --resource-group myRG \<br>  --name myCVM \<br>  --image Ubuntu2204 \<br>  --size Standard_DC4ads_v5 \  <span class="hljs-comment"># SEV-SNP</span><br>  --security-type ConfidentialVM \<br>  --enable-vtpm <span class="hljs-literal">true</span> \<br>  --enable-secure-boot <span class="hljs-literal">true</span><br><br><span class="hljs-comment"># 在 VM 内取 attestation</span><br><span class="hljs-built_in">sudo</span> apt install snp-guest-tools<br>snp-guest-report report.bin<br><br><span class="hljs-comment"># 验证</span><br>snp-guest verify report.bin<br></code></pre></td></tr></table></figure><h2 id="Confidential-Container（CoCo）"><a href="#Confidential-Container（CoCo）" class="headerlink" title="Confidential Container（CoCo）"></a>Confidential Container（CoCo）</h2><p>容器粒度的机密计算：</p><pre class="mermaid">graph TB  K8S[K8s API]  K8S --> CC[Confidential Container]  CC --> KATA[Kata Container 运行时]  KATA --> TDX_VM[TDX / SEV-SNP VM]  TDX_VM --> POD[Pod 容器]</pre><h3 id="CoCo-项目（CNCF）"><a href="#CoCo-项目（CNCF）" class="headerlink" title="CoCo 项目（CNCF）"></a>CoCo 项目（CNCF）</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><code class="hljs text">Confidential Containers（CoCo）：     <br>  - K8s 上跑机密容器的开源项目<br>  - 基于 Kata Containers 改造<br>  - 支持 SGX / TDX / SEV-SNP / CCA<br>  - 红帽 / Intel / IBM / Microsoft 共同推动<br>  <br>工作流：     <br>  1. K8s 调度 Pod<br>  2. CoCo 运行时启动加密 VM<br>  3. VM 内 kata-agent 启动容器<br>  4. 远程证明触发<br>  5. 业务镜像解密 + 运行<br></code></pre></td></tr></table></figure><h3 id="CoCo-与普通容器对比"><a href="#CoCo-与普通容器对比" class="headerlink" title="CoCo 与普通容器对比"></a>CoCo 与普通容器对比</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><code class="hljs text">普通容器：     <br>  - 共享内核<br>  - Host root 能 dump 进程内存<br>  - 不可信<br><br>CoCo（基于 TDX/SEV-SNP）：     <br>  - 每 Pod 一个加密 VM<br>  - 内核独立<br>  - Host 看不到 VM 内存<br>  - 远程证明<br>  - 启动比普通容器慢 2-5 秒<br>  - 资源占用比普通容器多一些<br></code></pre></td></tr></table></figure><h3 id="镜像保护"><a href="#镜像保护" class="headerlink" title="镜像保护"></a>镜像保护</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><code class="hljs text">普通容器镜像：     公开（registry 直接拉）<br>CoCo 加密镜像：     <br>  - 用密钥加密 layer<br>  - 远程证明通过后才下发解密 key<br>  - 镜像层只在 enclave 内解密<br>  <br>工具：     <br>  Skopeo + ocicrypt：    加密 OCI 镜像<br>  KBS（Key Broker Service）：    远程证明 + key 分发<br></code></pre></td></tr></table></figure><h2 id="Nitro-Enclaves（AWS）"><a href="#Nitro-Enclaves（AWS）" class="headerlink" title="Nitro Enclaves（AWS）"></a>Nitro Enclaves（AWS）</h2><p>AWS 走的是不一样的路线：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><code class="hljs text">Nitro Enclaves：     <br>  - 不基于 SGX / TDX / SEV<br>  - 基于 AWS Nitro 自研 Hypervisor<br>  - 隔离 vCPU + RAM 给 enclave<br>  - 无网络、无持久化（只 vsock）<br>  - 通过 Nitro 远程证明 API<br><br>应用：     <br>  - 金融业（合规要求高）<br>  - 区块链私钥<br>  - DRM 内容保护<br><br>特点：     不需要特殊 CPU，只要 EC2<br></code></pre></td></tr></table></figure><blockquote><p>待补充：Nitro Enclaves 与 SEV-SNP 实测对比。</p></blockquote><h2 id="NVIDIA-Confidential-Computing（GPU-TEE）"><a href="#NVIDIA-Confidential-Computing（GPU-TEE）" class="headerlink" title="NVIDIA Confidential Computing（GPU TEE）"></a>NVIDIA Confidential Computing（GPU TEE）</h2><p>H100 引入的 GPU 机密计算：</p><pre class="mermaid">graph LR  CVM[Confidential VM<br/>TDX/SEV-SNP] -.- |加密 PCIe| GPU[H100/B200<br/>Confidential Mode]  GPU --> ENC[GPU 显存加密]</pre><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br></pre></td><td class="code"><pre><code class="hljs text">H100 Confidential Mode：     <br>  - GPU 内存加密<br>  - PCIe 总线密文<br>  - 与 TDX VM 配合<br>  - vGPU 内 attest GPU 状态<br>  - 性能损失 ~5-10%<br><br>应用：     <br>  - 多方训练（数据所有者不信 CSP）<br>  - 模型权重保护<br>  - 监管 / 合规 AI<br><br>支持栈：     <br>  CUDA 12.x+<br>  NVIDIA Driver R535+<br>  与 Microsoft Azure / GCP 联动<br></code></pre></td></tr></table></figure><h2 id="业务应用"><a href="#业务应用" class="headerlink" title="业务应用"></a>业务应用</h2><h3 id="1-多方计算（MPC）-联邦学习"><a href="#1-多方计算（MPC）-联邦学习" class="headerlink" title="1. 多方计算（MPC）&#x2F; 联邦学习"></a>1. 多方计算（MPC）&#x2F; 联邦学习</h3><pre class="mermaid">graph TB  P1[参与方 A 数据]  P2[参与方 B 数据]  P3[参与方 C 数据]    P1 --> CVM[Confidential VM<br/>多方都不信任的 CSP]  P2 --> CVM  P3 --> CVM    CVM --> RESULT[联合训练结果]</pre><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><code class="hljs text">传统 MPC：     全密文计算（HE / 秘密分享），慢<br>TEE 替代：     明文进 enclave，性能近原生<br>应用：     <br>  - 银行间联合反欺诈<br>  - 医院联合医疗 AI<br>  - 跨集团 / 跨国数据合作<br></code></pre></td></tr></table></figure><h3 id="2-数据安全屋（Data-Clean-Room）"><a href="#2-数据安全屋（Data-Clean-Room）" class="headerlink" title="2. 数据安全屋（Data Clean Room）"></a>2. 数据安全屋（Data Clean Room）</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><code class="hljs text">广告主 + 媒体方：     <br>  - 双方都有用户数据<br>  - 想合并分析但不公开各自数据<br>  - 把数据进 Confidential VM<br>  - 在里面联合查询 / 建模<br>  - 输出仅汇总结果<br>  <br>代表产品：     <br>  AWS Clean Rooms<br>  Snowflake Data Clean Room<br>  Google Ads Data Hub<br>  阿里云 / 腾讯云的 Privacy-Preserving Computing<br></code></pre></td></tr></table></figure><h3 id="3-区块链-Web3-私钥"><a href="#3-区块链-Web3-私钥" class="headerlink" title="3. 区块链 &#x2F; Web3 私钥"></a>3. 区块链 &#x2F; Web3 私钥</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><code class="hljs text">传统区块链节点：     私钥在内存 → 攻击面大<br>TEE 节点：     <br>  - 私钥永远不出 enclave<br>  - 签交易在 enclave 内<br>  - 即使 root 也偷不到<br><br>代表：     <br>  - Hyperledger Avalon<br>  - Microsoft Confidential Consortium Framework (CCF)<br>  - 各家区块链的&quot;硬件钱包&quot;<br></code></pre></td></tr></table></figure><h3 id="4-监管合规"><a href="#4-监管合规" class="headerlink" title="4. 监管合规"></a>4. 监管合规</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><code class="hljs text">GDPR / HIPAA / 金融数据保护法：     <br>  - &quot;数据所有者不信任云&quot;是常见诉求<br>  - Confidential VM 提供&quot;我可以用云但不让 CSP 看见&quot;<br>  - 部分行业法规已认可 Confidential Computing 为合规手段<br>  <br>中国：     <br>  - 个人信息保护法（PIPL）<br>  - 关键信息基础设施保护<br>  - 信创 + 等保对机密计算有要求<br></code></pre></td></tr></table></figure><h3 id="5-大模型推理保护"><a href="#5-大模型推理保护" class="headerlink" title="5. 大模型推理保护"></a>5. 大模型推理保护</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><code class="hljs text">场景：     <br>  - 客户上传数据用 LLM 推理<br>  - 不希望 CSP / 服务商看到 prompt 和结果<br>  - 也不希望模型被偷<br>  <br>解决：     <br>  - Confidential VM + Confidential GPU<br>  - prompt / model / output 全程加密<br>  - 远程证明保证<br><br>代表：     <br>  Microsoft Azure Confidential AI<br>  NVIDIA Confidential AI<br>  阿里云、华为云类似产品<br></code></pre></td></tr></table></figure><h2 id="CoCo-与-Service-Mesh"><a href="#CoCo-与-Service-Mesh" class="headerlink" title="CoCo 与 Service Mesh"></a>CoCo 与 Service Mesh</h2><pre class="mermaid">graph TB  CL[客户端]  CL -->|TLS| GW[网关]  GW -->|mTLS| SVC1[CoCo Pod 1]  GW -->|mTLS| SVC2[CoCo Pod 2]    SVC1 -.- AT[Attestation Service]  SVC2 -.- AT</pre><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><code class="hljs text">机密计算 + Service Mesh：     <br>  - 每个微服务跑在 CoCo<br>  - 服务间 mTLS + attestation 双重验证<br>  - 端到端加密 + 端到端可信<br>  <br>挑战：     <br>  - 启动慢（每 Pod 一 VM）<br>  - 资源开销<br>  - 调试困难<br></code></pre></td></tr></table></figure><h2 id="远程证明的”两层”"><a href="#远程证明的”两层”" class="headerlink" title="远程证明的”两层”"></a>远程证明的”两层”</h2><pre class="mermaid">graph TB  L1[第一层：硬件 attestation]  L1 --> Q1[Intel TDX Quote / AMD SEV-SNP Report]  Q1 --> CPU[CPU 厂家签名]  CPU --> ROOT[Intel / AMD 根证书]    L2[第二层：业务 attestation]  L2 --> Q2[包含业务公钥 / hash]  Q2 --> APP[应用层验证]</pre><p>第一层硬件证明 + 第二层业务证明 &#x3D; 端到端可信。</p><h2 id="标准化进展"><a href="#标准化进展" class="headerlink" title="标准化进展"></a>标准化进展</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br></pre></td><td class="code"><pre><code class="hljs text">IETF RATS（Remote ATtestation procedureS）：     <br>  - 跨厂家 attestation 协议<br>  - EAT（Entity Attestation Token）<br>  - CWT / JWT 风格<br><br>CCC（Confidential Computing Consortium）：     <br>  - Open Enclave SDK<br>  - Veracruz<br>  - Confidential Containers<br>  - 跨平台 SDK<br><br>Linux Kernel：     <br>  - kvm/coco：    内核 CoCo 子系统<br>  - tdx-guest / sev-guest 驱动<br><br>国内标准：     <br>  - GB/T 41388（机密计算技术框架）<br>  - 工信部、信通院推<br>  - 国家可信云体系<br></code></pre></td></tr></table></figure><h2 id="部署的几个老坑"><a href="#部署的几个老坑" class="headerlink" title="部署的几个老坑"></a>部署的几个老坑</h2><h3 id="坑-1：性能预期错位"><a href="#坑-1：性能预期错位" class="headerlink" title="坑 1：性能预期错位"></a>坑 1：性能预期错位</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><code class="hljs text">Confidential VM：     <br>  - 内存加密：    带宽降 5-10%<br>  - 启动慢：     +几秒<br>  - 适合稳态业务，不适合频繁启停<br>  <br>CoCo（每 Pod 一 VM）：     <br>  - 启动 2-5 秒<br>  - 资源占用比普通 Pod 多<br>  - 大规模 Job 调度成本高<br></code></pre></td></tr></table></figure><h3 id="坑-2：迁移复杂"><a href="#坑-2：迁移复杂" class="headerlink" title="坑 2：迁移复杂"></a>坑 2：迁移复杂</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><code class="hljs text">普通 VM → Confidential VM：     <br>  - 部分老镜像不兼容（缺驱动）<br>  - kernel 要支持 TDX guest / SEV guest<br>  - GRUB / initrd 要支持 attestation 流程<br>  <br>建议：     用 CSP 提供的官方镜像起步<br></code></pre></td></tr></table></figure><h3 id="坑-3：远程证明实现门槛高"><a href="#坑-3：远程证明实现门槛高" class="headerlink" title="坑 3：远程证明实现门槛高"></a>坑 3：远程证明实现门槛高</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><code class="hljs text">要正确实现：     <br>  - Attestation 库（rats / ratls）<br>  - 签名链验证<br>  - 撤销列表查询<br>  - TCB 版本管理<br>  - Nonce 防重放<br>  <br>开源工具：     <br>  Veraison（Linux Foundation）<br>  Microsoft Maa<br>  Intel Trust Authority<br>  阿里 vSGX / 龙蜥 attestation<br></code></pre></td></tr></table></figure><h3 id="坑-4：密钥分发服务（KBS）"><a href="#坑-4：密钥分发服务（KBS）" class="headerlink" title="坑 4：密钥分发服务（KBS）"></a>坑 4：密钥分发服务（KBS）</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs text">&quot;远程证明通过 → 给密钥&quot;——这个 KBS 怎么部署？     <br>  - 自建：     高可用 + 安全（KBS 本身要 TEE）<br>  - 用 CSP 服务：    依赖 CSP<br><br>正确实现：     <br>  - KBS 自己跑在 Confidential VM<br>  - 密钥分级（root key 在 HSM，业务 key 派生）<br>  - 严格审计<br></code></pre></td></tr></table></figure><h3 id="坑-5：调试困难"><a href="#坑-5：调试困难" class="headerlink" title="坑 5：调试困难"></a>坑 5：调试困难</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><code class="hljs text">Confidential VM 内：     <br>  - 无法 console attach<br>  - 无法 strace / gdb（attestation 不通过会拒）<br>  - dmesg 看不到内核启动<br>  <br>调试模式：     <br>  - SEV-SNP / TDX 都有 &quot;debug&quot; 选项<br>  - 但 attestation TCB level 不一样<br>  - 不能用于生产<br></code></pre></td></tr></table></figure><h2 id="监控与可观测"><a href="#监控与可观测" class="headerlink" title="监控与可观测"></a>监控与可观测</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><code class="hljs text">传统 VM：     <br>  Hypervisor 看 / IPMI / cAdvisor<br><br>Confidential VM：     <br>  - Hypervisor 看不到内部<br>  - 必须从内部上报 metrics<br>  - 但要保护 metrics 不被监控泄露<br><br>实践：     <br>  - Prometheus 客户端跑在 CVM 内<br>  - 加密上报到外部存储<br>  - 业务侧分析<br></code></pre></td></tr></table></figure><h2 id="CSP-信任假设"><a href="#CSP-信任假设" class="headerlink" title="CSP 信任假设"></a>CSP 信任假设</h2><pre class="mermaid">graph TB  T1[传统 VM]  T1 --> N1[Trust 链：你 → CSP → 物理机]    T2[Confidential VM]  T2 --> N2[Trust 链：你 → CPU 厂家 → 物理机硬件]  T2 -.- |不 trust| CSP[CSP 软件 / Hypervisor / Host OS]</pre><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><code class="hljs text">Confidential Computing 不能：     <br>  - 防御 CPU 厂家后门<br>  - 防御 Quote 服务被劫持<br>  - 防御侧信道（理论上）<br>  - 抵抗物理 / 实验室级攻击<br>  <br>能做的：     <br>  - 防御 CSP 内部威胁（恶意管理员）<br>  - 防御 Hypervisor 入侵<br>  - 防御 Host OS 入侵<br>  - 满足合规要求<br></code></pre></td></tr></table></figure><h2 id="监管-合规中的位置"><a href="#监管-合规中的位置" class="headerlink" title="监管 &#x2F; 合规中的位置"></a>监管 &#x2F; 合规中的位置</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><code class="hljs text">中国：     <br>  - 关基设施保护：     等保 3+ 鼓励 TEE<br>  - 个保法：    敏感数据处理推荐<br>  - 信创目录：    部分项目要求<br><br>欧洲：     <br>  - GDPR：    Confidential Computing 是隐私技术<br>  - eIDAS 2.0：    欧盟数字身份<br>  <br>美国：     <br>  - HIPAA / SOC2：    医疗 / 金融<br>  - FedRAMP：    政府云<br>  - DoD IL5/IL6：    国防场景<br></code></pre></td></tr></table></figure><h2 id="价格"><a href="#价格" class="headerlink" title="价格"></a>价格</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><code class="hljs text">Microsoft Azure Confidential VM：     <br>  - 标准 VM 价格 + 10-20% 溢价<br>  <br>Google Confidential VM：     <br>  - 标准 VM 价格 + 5-15%<br>  <br>阿里云 / 腾讯云：     <br>  - 类似溢价<br><br>CoCo 容器：     <br>  - 同价但资源占用多<br></code></pre></td></tr></table></figure><blockquote><p>待补充：实际项目机密计算的成本预算。</p></blockquote><h2 id="一些查询命令"><a href="#一些查询命令" class="headerlink" title="一些查询命令"></a>一些查询命令</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># Confidential VM 内部：     </span><br><span class="hljs-comment"># AMD SEV-SNP</span><br><span class="hljs-built_in">sudo</span> dmesg | grep -i sev<br><span class="hljs-built_in">ls</span> /dev/sev-guest<br>snp-guest-report report.bin<br><br><span class="hljs-comment"># Intel TDX</span><br><span class="hljs-built_in">sudo</span> dmesg | grep -i tdx<br><span class="hljs-built_in">ls</span> /dev/tdx_guest<br><br><span class="hljs-comment"># CoCo 项目</span><br>kubectl get nodes -L node.kubernetes.io/instance-type<br>kubectl get runtimeclass<br><br><span class="hljs-comment"># Pod yaml 用 CoCo：     </span><br>spec:<br>  runtimeClassName: kata-qemu-tdx<br>  containers:<br>  - image: &lt;encrypted-image&gt;<br><br><span class="hljs-comment"># 远程证明</span><br>veraison-verify report.bin<br></code></pre></td></tr></table></figure><h2 id="几个权威资源"><a href="#几个权威资源" class="headerlink" title="几个权威资源"></a>几个权威资源</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><code class="hljs text">Confidential Computing Consortium：     <br>  https://confidentialcomputing.io/<br><br>Linux Kernel CoCo 文档：     <br>  Documentation/virt/coco/<br><br>Project documentation：     <br>  - Intel TDX：    intel.com/sgx<br>  - AMD SEV：     developer.amd.com/sev/<br>  - ARM CCA：     developer.arm.com/cca<br><br>学术论文：     <br>  IEEE S&amp;P / USENIX Security 上每年都有 TEE 攻击 / 防御论文<br></code></pre></td></tr></table></figure><h2 id="一些数字直觉"><a href="#一些数字直觉" class="headerlink" title="一些数字直觉"></a>一些数字直觉</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br></pre></td><td class="code"><pre><code class="hljs text">Confidential VM 启动：     <br>  Azure DCa：    +3-5 秒（attestation）<br>  GCP C2D：     +2-3 秒<br>  <br>CoCo Pod 启动：     <br>  +5-10 秒（VM + attestation + 解密镜像）<br>  <br>性能：     <br>  纯 CPU 业务：    &lt; 5% 损失<br>  内存密集：     5-10% 损失<br>  IO 密集：     可能更高（vsock）<br>  GPU 业务（H100 confidential）：    +5-10%<br><br>实际可用规模（2026）：     <br>  Confidential VM：    数十万节点（Azure / GCP / 阿里）<br>  CoCo：              小规模（几千 Pod）<br>  Confidential GPU：    刚起步<br></code></pre></td></tr></table></figure><h2 id="小结"><a href="#小结" class="headerlink" title="小结"></a>小结</h2><ul><li>机密计算 &#x3D; TEE 的产品形态</li><li>Confidential VM 是主流方向（TDX &#x2F; SEV-SNP）</li><li>Confidential Container 是 K8s 上的探索（CoCo）</li><li>远程证明 + KBS 是核心信任链</li><li>多方计算 &#x2F; 联邦学习 &#x2F; 数据安全屋是主要业务场景</li><li>NVIDIA H100 Confidential Mode 是 GPU TEE 起点</li><li>性能开销 &lt; 10%，启动慢几秒</li><li>满足 GDPR &#x2F; HIPAA &#x2F; 信创 等合规需求</li></ul><p>下一篇讲国产可信计算——海光 CSV、鲲鹏 iTrustee、TPCM、TCM 等国密路线。</p>]]>
    </content>
    <id>http://localhost:4000/posts/4abfd450/</id>
    <link href="http://localhost:4000/posts/4abfd450/"/>
    <published>2026-03-22T12:40:00.000Z</published>
    <summary>TEE 是技术，机密计算是产品形态。本文讲云上 Confidential VM、Confidential Container 的实际部署方式，以及多方计算 / 联邦学习等&quot;业务为先&quot;的应用。</summary>
    <title>机密计算 —— Confidential VM 与 Confidential Container</title>
    <updated>2026-05-24T13:49:48.031Z</updated>
  </entry>
  <entry>
    <category term="08-可信计算" scheme="http://localhost:4000/categories/08-%E5%8F%AF%E4%BF%A1%E8%AE%A1%E7%AE%97/"/>
    <category term="TEE" scheme="http://localhost:4000/tags/TEE/"/>
    <category term="SGX" scheme="http://localhost:4000/tags/SGX/"/>
    <category term="TDX" scheme="http://localhost:4000/tags/TDX/"/>
    <category term="SEV" scheme="http://localhost:4000/tags/SEV/"/>
    <category term="TrustZone" scheme="http://localhost:4000/tags/TrustZone/"/>
    <content>
      <![CDATA[<p>TPM 解决的是”启动可信”，但启动后内存仍然透明——OS、Hypervisor、root 用户都能 dump 内存。<strong>TEE（Trusted Execution Environment）</strong> 在 CPU 内开辟”加密飞地”，让运行时数据也”硬件加密”。本文展开各家 TEE。</p><!-- more --><h2 id="TEE-的核心思想"><a href="#TEE-的核心思想" class="headerlink" title="TEE 的核心思想"></a>TEE 的核心思想</h2><pre class="mermaid">graph TB  subgraph WITHOUT["传统模式"]    OS[OS / Hypervisor / root<br/>都能看 / 改 进程内存]  end    subgraph WITH["TEE 模式"]    TEE[加密飞地内存]    TEE -.- |"只有 enclave 内代码能访问"| OUT[OS / 攻击者看不到]  end</pre><p>TEE 的目标：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><code class="hljs text">1. 内存加密：     enclave 内存硬件级加密，OS 看不到明文<br>2. 完整性保护：    enclave 代码 / 数据被改 → CPU 拒绝执行<br>3. 远程证明：     远端可验证 &quot;我在某个 TEE 里跑了某段代码&quot;<br>4. 隔离：     不同租户 / 进程的 enclave 互相隔离<br></code></pre></td></tr></table></figure><h2 id="TEE-的几种主流路线"><a href="#TEE-的几种主流路线" class="headerlink" title="TEE 的几种主流路线"></a>TEE 的几种主流路线</h2><pre class="mermaid">graph TB  TEE[TEE 路线]  TEE --> P1[进程级<br/>一个进程内的飞地]  TEE --> P2[VM 级<br/>整个 VM 加密]  TEE --> P3[安全世界级<br/>独立"安全 OS"]    P1 --> SGX[Intel SGX]    P2 --> TDX[Intel TDX]  P2 --> SEV[AMD SEV / SEV-SNP]  P2 --> CCA[ARM CCA]  P2 --> CSV[海光 CSV]    P3 --> TZ[ARM TrustZone]  P3 --> SE[Apple Secure Enclave]</pre><h2 id="Intel-SGX（Software-Guard-Extensions）"><a href="#Intel-SGX（Software-Guard-Extensions）" class="headerlink" title="Intel SGX（Software Guard Extensions）"></a>Intel SGX（Software Guard Extensions）</h2><p>最早商用的进程级 TEE，2015 年 Skylake 引入：</p><pre class="mermaid">graph TB  PROC[用户进程]  PROC --> EN[Enclave 飞地]  EN --> EPC[EPC 加密内存]    OS[OS 内核]  OS -.- |看不到 Enclave 内存| EN</pre><h3 id="SGX-工作机制"><a href="#SGX-工作机制" class="headerlink" title="SGX 工作机制"></a>SGX 工作机制</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br></pre></td><td class="code"><pre><code class="hljs text">1. 应用启动：     普通进程<br>2. 创建 Enclave：    <br>   - ECREATE 指令分配加密内存（EPC）<br>   - 加载 Enclave 代码 + 数据<br>   - EINIT 锁定，从此 OS 看不到内存<br><br>3. 进入 Enclave：    <br>   - EENTER 指令切入 enclave<br>   - 在 enclave 内执行受保护代码<br>   <br>4. 退出：     EEXIT 回到普通模式<br><br>EPC 内存：     <br>  - CPU 访问时 MEE（Memory Encryption Engine）解密<br>  - DRAM 中存的是密文<br>  - DMA / 总线嗅探拿不到明文<br></code></pre></td></tr></table></figure><h3 id="SGX-的限制"><a href="#SGX-的限制" class="headerlink" title="SGX 的限制"></a>SGX 的限制</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><code class="hljs text">EPC 大小：     <br>  - SGX1：128 MB（Skylake/Coffee Lake，物理上限）<br>  - SGX2：512 MB - 1 GB（Ice Lake Server）<br>  - SGX 3rd gen：    几十到几百 GB（Sapphire Rapids，2023+）<br><br>性能开销：     <br>  - 加密 / 完整性校验：    内存访问慢 30-50%<br>  - 进入 / 退出 Enclave：    几千 CPU cycles<br>  - 不适合大数据集计算<br>  <br>攻击：     <br>  - Foreshadow（2018）：    侧信道泄露<br>  - LVI / Plundervolt：    其他 CVE<br>  - 这些已修复但生态信心受损<br></code></pre></td></tr></table></figure><h3 id="SGX-的应用"><a href="#SGX-的应用" class="headerlink" title="SGX 的应用"></a>SGX 的应用</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br></pre></td><td class="code"><pre><code class="hljs text">密钥管理 KMS：     <br>  - 在 enclave 内做加密 / 签名<br>  - 即使 root 也偷不到密钥<br>  <br>区块链 / Confidential Computing：     <br>  - Microsoft Azure Confidential Containers（早期）<br>  - Hyperledger Avalon<br>  - Intel ISV 生态<br><br>数据库加密：     <br>  - SQL Server Always Encrypted<br>  - Microsoft Azure SQL Confidential<br>  <br>SDK：     <br>  - Intel SGX SDK<br>  - Open Enclave SDK（Microsoft）<br>  - Gramine（项目）：    把整个 Linux 应用塞进 SGX<br><br>2022+ Intel 缩减消费级 SGX：     <br>  - 11th gen 桌面 CPU 起取消 SGX<br>  - 服务器仍然支持<br>  - 重心转向 TDX<br></code></pre></td></tr></table></figure><h2 id="Intel-TDX（Trust-Domain-Extensions）"><a href="#Intel-TDX（Trust-Domain-Extensions）" class="headerlink" title="Intel TDX（Trust Domain Extensions）"></a>Intel TDX（Trust Domain Extensions）</h2><p>TDX 是 SGX 的”VM 级”继任者，2023 年 Sapphire Rapids 商用：</p><pre class="mermaid">graph TB  HV[Hypervisor / Host OS<br/>不可信]    HV --> TD1[TD 1<br/>Trust Domain VM]  HV --> TD2[TD 2]  HV --> TD3[TD 3]    TD1 -.- HV</pre><h3 id="TDX-工作机制"><a href="#TDX-工作机制" class="headerlink" title="TDX 工作机制"></a>TDX 工作机制</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><code class="hljs text">1. TDX Module：     CPU 内的固件，管理 TD<br>2. Trust Domain：     一台加密 VM<br>   - VM 内存全部加密（MK-TME）<br>   - VM 寄存器在切换时加密保存<br>   - Hypervisor 不能读 VM 内存<br>   <br>3. 远程证明：     <br>   - TDX Quote 包含 TD 启动哈希<br>   - 远端验证 TD 是真 TDX 且内容正确<br><br>整个 VM 是 TEE：     <br>  - 应用不需要重写<br>  - Linux / Windows / 数据库 等都能跑<br>  - 性能开销 &lt; 5%（内存加密硬件级）<br></code></pre></td></tr></table></figure><h3 id="TDX-的优势-vs-SGX"><a href="#TDX-的优势-vs-SGX" class="headerlink" title="TDX 的优势 vs SGX"></a>TDX 的优势 vs SGX</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><code class="hljs text">SGX：     <br>  - 应用要拆 enclave 部分<br>  - EPC 大小受限<br>  - 编程复杂<br><br>TDX：     <br>  - 整 VM 加密<br>  - 应用无需修改<br>  - 大内存友好<br>  - 可跑大模型推理 / 训练<br>  - 客户场景普适<br></code></pre></td></tr></table></figure><h3 id="TDX-在云上"><a href="#TDX-在云上" class="headerlink" title="TDX 在云上"></a>TDX 在云上</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs text">Azure DCe / DCa（2024+）：    Confidential VM 用 TDX<br>GCP Confidential VM：         TDX 选项<br>阿里云 ACK Confidential：      TDX 适配中<br><br>应用：     <br>  - 多方计算 / 联邦学习<br>  - 数据安全房 (Data Clean Room)<br>  - 监管合规（GDPR / HIPAA）<br></code></pre></td></tr></table></figure><blockquote><p>待补充：TDX 实际生产部署规模 2025-2026 数据。</p></blockquote><h2 id="AMD-SEV-SEV-ES-SEV-SNP"><a href="#AMD-SEV-SEV-ES-SEV-SNP" class="headerlink" title="AMD SEV &#x2F; SEV-ES &#x2F; SEV-SNP"></a>AMD SEV &#x2F; SEV-ES &#x2F; SEV-SNP</h2><p>AMD 的”VM 级 TEE”路线，比 TDX 早：</p><pre class="mermaid">graph LR  S1[SEV<br/>2017<br/>仅内存加密] --> S2[SEV-ES<br/>2019<br/>+ 寄存器加密]  S2 --> S3[SEV-SNP<br/>2021<br/>+ 完整性 + 防回滚]</pre><h3 id="SEV（2017）"><a href="#SEV（2017）" class="headerlink" title="SEV（2017）"></a>SEV（2017）</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs text">- AMD EPYC 第 1 代 Naples 起<br>- AES-128 加密 DRAM<br>- 每 VM 一个 VEK（VM Encryption Key）<br>- Hypervisor 看到密文<br>- 但寄存器 / 中断未加密<br></code></pre></td></tr></table></figure><h3 id="SEV-ES（Encrypted-State，2019）"><a href="#SEV-ES（Encrypted-State，2019）" class="headerlink" title="SEV-ES（Encrypted State，2019）"></a>SEV-ES（Encrypted State，2019）</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><code class="hljs text">- VM 进出时 CPU 寄存器也加密保存<br>- 防止 Hypervisor 通过 vmexit 偷状态<br>- AMD EPYC 第 2 代 Rome 起<br></code></pre></td></tr></table></figure><h3 id="SEV-SNP（Secure-Nested-Paging，2021）"><a href="#SEV-SNP（Secure-Nested-Paging，2021）" class="headerlink" title="SEV-SNP（Secure Nested Paging，2021）"></a>SEV-SNP（Secure Nested Paging，2021）</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><code class="hljs text">- 加完整性保护：     防止 Hypervisor 改 VM 内存<br>- RMP（Reverse Map Table）：    每页归属验证<br>- 防回滚攻击<br>- 远程证明完整支持<br>- AMD EPYC 第 3 代 Milan 起<br><br>最完整的 AMD VM-level TEE 方案<br></code></pre></td></tr></table></figure><h3 id="SEV-SNP-在云上"><a href="#SEV-SNP-在云上" class="headerlink" title="SEV-SNP 在云上"></a>SEV-SNP 在云上</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><code class="hljs text">Microsoft Azure DCasv5（基于 SEV-SNP）：     已大规模部署<br>GCP Confidential VM（C2D / N2D）：           SEV<br>AWS：                                         自家 Nitro 等价能力<br>阿里云 / 腾讯云：                             SEV-SNP 选项<br><br>SEV 比 TDX 早 6 年商用——AMD 在 Confidential VM 市场领先。<br></code></pre></td></tr></table></figure><h2 id="ARM-TrustZone"><a href="#ARM-TrustZone" class="headerlink" title="ARM TrustZone"></a>ARM TrustZone</h2><p>ARM 的”安全世界”路线，2003 年起：</p><pre class="mermaid">graph TB  ARM[ARM CPU]  ARM --> NW[Normal World<br/>普通 OS]  ARM --> SW[Secure World<br/>独立安全 OS]    NW --> NS_OS[Linux / Android]  SW --> S_OS[OP-TEE / Trusty / 国产 TEE]</pre><h3 id="TrustZone-工作模式"><a href="#TrustZone-工作模式" class="headerlink" title="TrustZone 工作模式"></a>TrustZone 工作模式</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br></pre></td><td class="code"><pre><code class="hljs text">CPU 双世界：     <br>  - Normal World（NS）：    Linux / Android<br>  - Secure World（S）：     一个完全独立的安全 OS<br><br>切换：     SMC 指令进入 Secure Monitor<br><br>Secure World 内：     <br>  - 独立内核（OP-TEE / TrustyTEE / 国产 TEE）<br>  - 独立 RAM 区域<br>  - 独立外设访问<br><br>应用：     <br>  - 移动支付（Apple Pay / Samsung Pay）<br>  - 指纹 / 人脸数据<br>  - DRM 视频<br>  - 部分服务器场景<br></code></pre></td></tr></table></figure><h3 id="服务器场景"><a href="#服务器场景" class="headerlink" title="服务器场景"></a>服务器场景</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs text">ARM 服务器（Ampere / Graviton / 鲲鹏 / 飞腾）：     <br>  - TrustZone 仍存在<br>  - 但服务器 TEE 主要看 CCA<br>  <br>TrustZone 在服务器侧用得少——主要是嵌入式 / 移动场景。<br></code></pre></td></tr></table></figure><h2 id="ARM-CCA（Confidential-Compute-Architecture）"><a href="#ARM-CCA（Confidential-Compute-Architecture）" class="headerlink" title="ARM CCA（Confidential Compute Architecture）"></a>ARM CCA（Confidential Compute Architecture）</h2><p>ARM 在服务器市场对位 TDX &#x2F; SEV-SNP 的方案：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><code class="hljs text">ARM CCA（v9 引入，2021）：     <br>  - Realm 模式（VM 级 TEE）<br>  - RMM（Realm Management Monitor）<br>  - 类似 TDX 思路<br>  - Realm VM 内存加密 + 完整性<br>  <br>状态（2026）：     <br>  - ARM v9 服务器 CPU 商用<br>  - 软件生态成熟中<br>  - 主流云厂家适配中<br></code></pre></td></tr></table></figure><blockquote><p>待补充：ARM CCA 实际商用部署案例。</p></blockquote><h2 id="海光-CSV（China-Secure-Virtualization）"><a href="#海光-CSV（China-Secure-Virtualization）" class="headerlink" title="海光 CSV（China Secure Virtualization）"></a>海光 CSV（China Secure Virtualization）</h2><p>海光 DCU 时讲过——这里重点讲 CSV：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><code class="hljs text">海光 CSV：     <br>  - AMD SEV 国产授权 + 加密算法替换<br>  - SM4 加密 DRAM（不是 AES）<br>  - 与 SEV API 兼容<br>  - 海光 C86 / 7000 系列起支持<br><br>CSV1 / CSV2 / CSV3：     与 SEV / SEV-ES / SEV-SNP 对应<br><br>应用：     <br>  - 信创云<br>  - 国产机密计算<br>  - 政企客户<br></code></pre></td></tr></table></figure><blockquote><p>待补充：海光 CSV 实际部署规模。</p></blockquote><h2 id="鲲鹏-ITrustee"><a href="#鲲鹏-ITrustee" class="headerlink" title="鲲鹏 ITrustee"></a>鲲鹏 ITrustee</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs text">华为鲲鹏 / 麒麟 / 海思的 TEE：     <br>  - 基于 ARM TrustZone<br>  - 自研 Secure World OS（iTrustee）<br>  - 与昇腾 / 昇思深度集成<br>  <br>华为云 TEE：     <br>  - 鲲鹏 + iTrustee<br>  - 支持机密计算 SDK（secGear）<br></code></pre></td></tr></table></figure><h2 id="TEE-编程模型"><a href="#TEE-编程模型" class="headerlink" title="TEE 编程模型"></a>TEE 编程模型</h2><h3 id="Open-Enclave-SDK（跨平台）"><a href="#Open-Enclave-SDK（跨平台）" class="headerlink" title="Open Enclave SDK（跨平台）"></a>Open Enclave SDK（跨平台）</h3><figure class="highlight c"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><code class="hljs c"><span class="hljs-comment">// 编译为 enclave</span><br>oe_create_enclave(<span class="hljs-string">&quot;my_enclave.signed&quot;</span>);<br>oe_call_enclave(enclave, <span class="hljs-string">&quot;func&quot;</span>, args);<br></code></pre></td></tr></table></figure><p>支持 SGX &#x2F; TrustZone &#x2F; OP-TEE。</p><h3 id="Gramine-LibOS（容器化）"><a href="#Gramine-LibOS（容器化）" class="headerlink" title="Gramine LibOS（容器化）"></a>Gramine LibOS（容器化）</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><code class="hljs text">Gramine（前身 Graphene）：     <br>  - 把整个 Linux 应用塞进 SGX enclave<br>  - 不需要改代码<br>  - 性能损失但可用性好<br><br>graphene-direct：     非 SGX 也能跑（用于开发）<br></code></pre></td></tr></table></figure><h3 id="Confidential-Computing-Consortium（CCC）"><a href="#Confidential-Computing-Consortium（CCC）" class="headerlink" title="Confidential Computing Consortium（CCC）"></a>Confidential Computing Consortium（CCC）</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><code class="hljs text">Linux Foundation 旗下：     <br>  - Open Enclave SDK<br>  - Veracruz<br>  - Confidential Containers<br>  - SPDM 标准<br>  - 跨厂家 TEE 抽象层<br></code></pre></td></tr></table></figure><h2 id="远程证明（Attestation）的演进"><a href="#远程证明（Attestation）的演进" class="headerlink" title="远程证明（Attestation）的演进"></a>远程证明（Attestation）的演进</h2><pre class="mermaid">graph TB  TPM[TPM 远程证明<br/>启动状态]  TPM --> SGX_AT[SGX 远程证明<br/>Enclave 状态]  SGX_AT --> TDX_AT[TDX/SEV-SNP 远程证明<br/>VM 状态]  TDX_AT --> CCA_AT[ARM CCA 远程证明<br/>Realm 状态]</pre><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><code class="hljs text">SGX 远程证明：     <br>  - Intel Attestation Service（IAS）<br>  - 后来改 DCAP（Data Center Attestation Primitives）<br>  <br>TDX 远程证明：     <br>  - Intel Trust Authority<br>  - 跨云通用<br><br>SEV-SNP 远程证明：     <br>  - AMD KDS（Key Distribution Service）<br>  - SNP_REPORT 命令<br><br>工业标准趋同：     <br>  - IETF RATS（Remote ATtestation procedureS）<br>  - 跨厂家可互验<br></code></pre></td></tr></table></figure><h2 id="TEE-的性能数字"><a href="#TEE-的性能数字" class="headerlink" title="TEE 的性能数字"></a>TEE 的性能数字</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><code class="hljs text">SGX：     <br>  Enclave 内 CPU 性能：     ~95%（小数据）<br>  大数据 / 跨 enclave IO：    50-70%<br>  Enclave 切换：             几千 cycles（~ μs 级）<br><br>TDX / SEV-SNP：     <br>  整 VM 性能损失：    &lt; 5%（内存加密硬件级）<br>  启动 + 远程证明：    +几秒<br>  <br>TrustZone：     <br>  Secure World 切换：    几百 cycles<br>  适合短计算（密钥操作 / 验证）<br><br>CCA Realm：     <br>  类似 TDX，性能开销 &lt; 5%（待实测验证）<br></code></pre></td></tr></table></figure><h2 id="TEE-的几个安全”老坑”"><a href="#TEE-的几个安全”老坑”" class="headerlink" title="TEE 的几个安全”老坑”"></a>TEE 的几个安全”老坑”</h2><h3 id="坑-1：侧信道攻击"><a href="#坑-1：侧信道攻击" class="headerlink" title="坑 1：侧信道攻击"></a>坑 1：侧信道攻击</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs text">SGX 历史：     Foreshadow / LVI / SGAxe / Plundervolt<br>TDX：          一些早期理论攻击<br>SEV：         Cipherleaks / Crossline<br><br>教训：     <br>  - TEE 不是&quot;绝对安全&quot;<br>  - 仍有侧信道 / 故障注入风险<br>  - 应用层仍需防护<br></code></pre></td></tr></table></figure><h3 id="坑-2：远程证明实现复杂"><a href="#坑-2：远程证明实现复杂" class="headerlink" title="坑 2：远程证明实现复杂"></a>坑 2：远程证明实现复杂</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><code class="hljs text">正确实现 attestation：     <br>  - 验证签名链（厂家根 → CPU 证书 → Quote）<br>  - 验证 PCR / MR 哈希匹配预期<br>  - 验证 nonce 防重放<br>  - 验证 TCB level 不旧<br>  - 验证撤销列表<br><br>错误实现：     <br>  - 跳过签名验证<br>  - 不验 nonce<br>  - 不查 TCB<br>  → 攻击者可重放或冒充<br></code></pre></td></tr></table></figure><h3 id="坑-3：性能预期错位"><a href="#坑-3：性能预期错位" class="headerlink" title="坑 3：性能预期错位"></a>坑 3：性能预期错位</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs text">SGX 大内存应用：     性能崩<br>TDX 内存加密：       带宽降 5-10%<br>SEV-SNP：           类似<br><br>设计：     先 PoC 实测，再上生产<br></code></pre></td></tr></table></figure><h3 id="坑-4：CPU-错失支持"><a href="#坑-4：CPU-错失支持" class="headerlink" title="坑 4：CPU 错失支持"></a>坑 4：CPU 错失支持</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><code class="hljs text">不是所有 CPU 都支持：     <br>  - SGX：Skylake+ 服务器<br>  - TDX：Sapphire Rapids+<br>  - SEV：EPYC 全系<br>  - SEV-SNP：Milan+<br>  - CCA：ARM v9<br>  - 桌面 / 老服务器：不支持<br><br>→ 采购前确认 CPU 支持<br></code></pre></td></tr></table></figure><h3 id="坑-5：CSP-与租户信任假设"><a href="#坑-5：CSP-与租户信任假设" class="headerlink" title="坑 5：CSP 与租户信任假设"></a>坑 5：CSP 与租户信任假设</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><code class="hljs text">TDX / SEV-SNP 实际信任假设：     <br>  - 租户 trust：CPU 厂家（Intel / AMD）<br>  - 不 trust：    Hypervisor / Host OS / CSP<br><br>但：     <br>  - CPU 厂家有后门? <br>  - CPU 厂家 KMS 被入侵?<br>  - Quote 服务被劫持?<br>  <br>→ 现实中是&quot;减少信任面&quot;，不是&quot;零信任&quot;<br></code></pre></td></tr></table></figure><h2 id="TEE-与-GPU"><a href="#TEE-与-GPU" class="headerlink" title="TEE 与 GPU"></a>TEE 与 GPU</h2><p>GPU TEE 是新前沿：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><code class="hljs text">NVIDIA Confidential Computing（H100+）：     <br>  - GPU 内存加密<br>  - PCIe 总线密文<br>  - 需配 TDX / SEV-SNP CPU<br>  - VM 与 GPU 端到端加密<br>  - 2024+ 量产<br><br>应用：     <br>  - 多方训练（数据所有者不信任 CSP）<br>  - 模型权重保护（推理服务防偷模）<br>  - 监管合规 AI 训练<br></code></pre></td></tr></table></figure><blockquote><p>待补充：NVIDIA H100 &#x2F; B200 Confidential Computing 实际部署案例。</p></blockquote><h2 id="一些查询命令"><a href="#一些查询命令" class="headerlink" title="一些查询命令"></a>一些查询命令</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 看 SGX 支持</span><br>cpuid -1 | grep -i sgx<br><span class="hljs-built_in">ls</span> /dev/sgx_enclave<br><br><span class="hljs-comment"># 看 TDX 支持（CPU）</span><br><span class="hljs-built_in">cat</span> /proc/cpuinfo | grep -i tdx<br>dmesg | grep -i tdx<br><br><span class="hljs-comment"># 看 SEV 支持（AMD）</span><br>dmesg | grep -i sev<br><span class="hljs-built_in">ls</span> /dev/sev<br><br><span class="hljs-comment"># 看 TEE（ARM TrustZone）</span><br><span class="hljs-built_in">ls</span> /dev/tee*<br><span class="hljs-built_in">ls</span> /dev/teepriv*<br>optee-toolchain status<br><br><span class="hljs-comment"># CPU 加密能力</span><br>grep -E <span class="hljs-string">&quot;aes|sha_ni|gfni|vaes&quot;</span> /proc/cpuinfo<br><br><span class="hljs-comment"># 启动参数验证</span><br><span class="hljs-built_in">cat</span> /proc/cmdline | grep -E <span class="hljs-string">&quot;kvm_intel.tdx|kvm_amd.sev&quot;</span><br></code></pre></td></tr></table></figure><h2 id="几个-TEE-选型场景"><a href="#几个-TEE-选型场景" class="headerlink" title="几个 TEE 选型场景"></a>几个 TEE 选型场景</h2><table><thead><tr><th>场景</th><th>选什么</th><th>理由</th></tr></thead><tbody><tr><td>密钥保护 &#x2F; KMS</td><td>SGX 或 HSM</td><td>小内存，强隔离</td></tr><tr><td>Confidential VM 大模型</td><td>TDX 或 SEV-SNP</td><td>整 VM 加密，无修改</td></tr><tr><td>数据库 Always Encrypted</td><td>SGX（部分操作）</td><td>进程级精细控制</td></tr><tr><td>移动应用支付</td><td>TrustZone</td><td>嵌入式 + 已成熟</td></tr><tr><td>多方计算 &#x2F; 联邦学习</td><td>TDX &#x2F; SEV-SNP + Confidential GPU</td><td>端到端加密</td></tr><tr><td>国产化机密计算</td><td>海光 CSV &#x2F; 鲲鹏 iTrustee</td><td>信创要求</td></tr></tbody></table><h2 id="一些数字直觉"><a href="#一些数字直觉" class="headerlink" title="一些数字直觉"></a>一些数字直觉</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><code class="hljs text">TEE 启动时间：     <br>  TDX VM：     比普通 VM 多 3-5 秒（attestation）<br>  SEV VM：     +2-4 秒<br>  SGX Enclave：    100-500 ms<br><br>价格溢价：     <br>  Confidential VM vs 普通 VM：    +10-20%<br>  Confidential GPU：              价格暂未公开，预计溢价显著<br><br>部署规模（2026）：     <br>  TDX / SEV-SNP：    主流公有云已量产<br>  海光 CSV：         国内信创规模化<br>  ARM CCA：         初始<br>  GPU TEE：         小规模<br></code></pre></td></tr></table></figure><h2 id="信任模型对比"><a href="#信任模型对比" class="headerlink" title="信任模型对比"></a>信任模型对比</h2><pre class="mermaid">graph TB  M1[传统模式]  M1 --> T1[trust：硬件 + 固件 + Hypervisor + OS + 应用]    M2[Confidential Computing]  M2 --> T2[trust：CPU 厂家硬件 + 固件 + 应用代码]  M2 --> NT2[不 trust：CSP / Hypervisor / Host OS]</pre><p>TEE 把信任面<strong>从”整个云栈”缩到”CPU 硬件 + 固件”</strong>——这是机密计算的根本价值。</p><h2 id="小结"><a href="#小结" class="headerlink" title="小结"></a>小结</h2><ul><li>TEE 让运行时数据”硬件加密”，连 OS &#x2F; 攻击者也看不到</li><li>进程级 TEE：    Intel SGX，灵活但 EPC 受限</li><li>VM 级 TEE：    Intel TDX、AMD SEV-SNP、ARM CCA、海光 CSV，主流方向</li><li>安全世界：    ARM TrustZone，移动 &#x2F; 嵌入式</li><li>远程证明是 TEE 价值的关键</li><li>TDX &#x2F; SEV-SNP 性能开销 &lt; 5%</li><li>GPU TEE（NVIDIA Confidential Computing）是新前沿</li><li>国产路线：    海光 CSV、鲲鹏 iTrustee</li></ul><p>下一篇讲机密计算（Confidential Computing）—— TEE 在云上的实际产品形态。</p>]]>
    </content>
    <id>http://localhost:4000/posts/d850c454/</id>
    <link href="http://localhost:4000/posts/d850c454/"/>
    <published>2026-03-15T06:55:00.000Z</published>
    <summary>TEE（Trusted Execution Environment）让 CPU 在内存里开辟一块&quot;加密飞地&quot;，连 OS / Hypervisor 都看不见。本文讲 Intel SGX/TDX、AMD SEV、ARM TrustZone/CCA 的差异。</summary>
    <title>TEE —— SGX、TDX、SEV、TrustZone</title>
    <updated>2026-05-24T13:49:48.031Z</updated>
  </entry>
  <entry>
    <category term="08-可信计算" scheme="http://localhost:4000/categories/08-%E5%8F%AF%E4%BF%A1%E8%AE%A1%E7%AE%97/"/>
    <category term="Secure Boot" scheme="http://localhost:4000/tags/Secure-Boot/"/>
    <category term="Measured Boot" scheme="http://localhost:4000/tags/Measured-Boot/"/>
    <category term="IMA" scheme="http://localhost:4000/tags/IMA/"/>
    <category term="UEFI" scheme="http://localhost:4000/tags/UEFI/"/>
    <content>
      <![CDATA[<p>第 8.1 讲了 TPM 和 PCR——本篇讲怎么把它用起来。<strong>Secure Boot</strong>（验签防篡改）+ <strong>Measured Boot</strong>（度量记录）+ <strong>IMA</strong>（运行时完整性）&#x3D; Linux 完整可信启动链。</p><!-- more --><h2 id="三个机制对比"><a href="#三个机制对比" class="headerlink" title="三个机制对比"></a>三个机制对比</h2><pre class="mermaid">graph TB  M1[Secure Boot]  M1 --> R1[启动时验签<br/>签名错就拒绝执行]    M2[Measured Boot]  M2 --> R2[启动时记录<br/>哈希进 TPM PCR]    M3[IMA]  M3 --> R3[运行时验证<br/>读文件时检查]</pre><table><thead><tr><th>机制</th><th>时机</th><th>动作</th><th>失败后果</th></tr></thead><tbody><tr><td>Secure Boot</td><td>启动</td><td>验签</td><td>拒绝启动</td></tr><tr><td>Measured Boot</td><td>启动</td><td>度量记录</td><td>不阻止启动，但 PCR 不同</td></tr><tr><td>IMA</td><td>运行</td><td>验签 &#x2F; 度量</td><td>拒绝执行 &#x2F; 报警</td></tr></tbody></table><h2 id="UEFI-Secure-Boot"><a href="#UEFI-Secure-Boot" class="headerlink" title="UEFI Secure Boot"></a>UEFI Secure Boot</h2><pre class="mermaid">graph LR  PK[Platform Key<br/>主板厂家]  KEK[Key Exchange Key<br/>OS 厂家]  DB[DB<br/>允许的签名 / 哈希]  DBX[DBX<br/>禁用的签名 / 哈希]    PK --> KEK --> DB  KEK --> DBX</pre><p>UEFI Secure Boot 的密钥层次：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><code class="hljs text">PK（Platform Key）：     主板厂家，根<br>KEK（Key Exchange Key）：     OS 厂家用，可签 DB / DBX<br>DB（Allowed DB）：     允许执行的签名 / 哈希列表<br>DBX（Forbidden DB）：     禁用的签名（吊销列表）<br><br>启动时验签流程：     <br>  1. UEFI 加载 Bootloader<br>  2. 检查 Bootloader 签名是否在 DB 中<br>  3. 是 → 加载执行<br>  4. 否 → 拒绝，停止启动<br></code></pre></td></tr></table></figure><h3 id="Microsoft-主导的-DB"><a href="#Microsoft-主导的-DB" class="headerlink" title="Microsoft 主导的 DB"></a>Microsoft 主导的 DB</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs text">默认 DB 包含：     <br>  Microsoft Windows Production CA<br>  Microsoft UEFI CA（用于第三方 OS）<br>  <br>Linux Bootloader（shim）签名：     <br>  shim 由 Microsoft UEFI CA 签<br>  shim 内嵌 Linux 厂家公钥<br>  shim 加载 GRUB → GRUB 验签 kernel → kernel 验 module<br></code></pre></td></tr></table></figure><p>shim 是 Linux 在 Secure Boot 下的”信任桥梁”——所有发行版（RHEL &#x2F; Ubuntu &#x2F; SUSE）都用它。</p><h3 id="自管-Secure-Boot"><a href="#自管-Secure-Boot" class="headerlink" title="自管 Secure Boot"></a>自管 Secure Boot</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 装 shim 后看 Secure Boot 状态</span><br>mokutil --sb-state<br><br><span class="hljs-comment"># 看 MOK 列表（用户级密钥）</span><br>mokutil --list-enrolled<br><br><span class="hljs-comment"># 加自定义证书到 MOK</span><br>mokutil --import my_cert.crt<br><span class="hljs-comment"># 重启时设密码确认</span><br><br><span class="hljs-comment"># 完全清空 / 替换 PK / KEK / DB（高级用法）</span><br>sbkeysync --pk          <span class="hljs-comment"># 设 PK</span><br>sbkeysync --keystore /etc/secureboot/keys<br></code></pre></td></tr></table></figure><h3 id="shim-→-GRUB-→-kernel-的验签"><a href="#shim-→-GRUB-→-kernel-的验签" class="headerlink" title="shim → GRUB → kernel 的验签"></a>shim → GRUB → kernel 的验签</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><code class="hljs text">shim 启动后：     <br>  1. 检查 grubx64.efi 签名（用 shim 内嵌的发行版公钥）<br>  2. 通过 → 加载 GRUB<br>  <br>GRUB 启动后：     <br>  1. 检查 vmlinuz 签名<br>  2. 通过 → 加载 kernel<br>  <br>kernel 启动后：     <br>  1. 检查 .ko 模块签名（kernel 模块也要验签）<br>  2. 通过 → 允许加载<br>  <br>任何一步不通过 → 拒绝执行 → 启动失败<br></code></pre></td></tr></table></figure><h3 id="Secure-Boot-的几个重要实践"><a href="#Secure-Boot-的几个重要实践" class="headerlink" title="Secure Boot 的几个重要实践"></a>Secure Boot 的几个重要实践</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 启用 / 禁用 Secure Boot：BIOS 中</span><br><span class="hljs-comment"># 看当前状态</span><br>bootctl status<br><br><span class="hljs-comment"># 看 EFI 变量</span><br>mokutil --sb-state<br>efivar -l<br><br><span class="hljs-comment"># 自己签 kernel 模块</span><br>sbsign --key MOK.priv --cert MOK.crt --output module.ko.signed module.ko<br></code></pre></td></tr></table></figure><h2 id="Measured-Boot"><a href="#Measured-Boot" class="headerlink" title="Measured Boot"></a>Measured Boot</h2><p>Secure Boot 是”二选一”——通过或不通过。Measured Boot 是”完整记录”——把每一步都哈希进 TPM。</p><pre class="mermaid">graph TB  CRTM[CRTM] -->|度量并 Extend| PCR0[PCR 0]  BIOS[BIOS] -->|度量 Bootloader| PCR4[PCR 4]  GRUB[GRUB] -->|度量 kernel/initrd| PCR8[PCR 8]  GRUB -->|度量 cmdline| PCR9[PCR 9]  KER[Kernel] -->|度量初始化| PCR10[PCR 10]  IMA[IMA] -->|度量文件| PCR10b[PCR 10]</pre><h3 id="启动度量事件日志"><a href="#启动度量事件日志" class="headerlink" title="启动度量事件日志"></a>启动度量事件日志</h3><p>UEFI 实现把每次”度量”事件记到日志，开机后 OS 可以看：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 看 measured boot 事件日志</span><br><span class="hljs-built_in">sudo</span> tpm2_eventlog /sys/kernel/security/tpm0/binary_bios_measurements<br><br><span class="hljs-comment"># 输出例：</span><br><span class="hljs-comment"># Event:     EV_S_CRTM_VERSION</span><br><span class="hljs-comment"># PCR:       0</span><br><span class="hljs-comment"># Digest:    sha256: ...</span><br><span class="hljs-comment"># Data:      &quot;BIOS Vendor v3.5&quot;</span><br><span class="hljs-comment"># </span><br><span class="hljs-comment"># Event:     EV_EFI_VARIABLE_DRIVER_CONFIG</span><br><span class="hljs-comment"># PCR:       7</span><br><span class="hljs-comment"># Digest:    sha256: ...</span><br><span class="hljs-comment"># Data:      Secure Boot State=1</span><br></code></pre></td></tr></table></figure><p>事件日志 + 当前 PCR 值 &#x3D; “可重放”——验证方可以独立验证启动链。</p><h3 id="用-PCR-7-还是-PCR-0-4？"><a href="#用-PCR-7-还是-PCR-0-4？" class="headerlink" title="用 PCR 7 还是 PCR 0-4？"></a>用 PCR 7 还是 PCR 0-4？</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><code class="hljs text">PCR 0-4：     度量具体的 BIOS / Bootloader / kernel 哈希<br>  → 任何 BIOS / kernel 升级都改值<br>  → 灵活性差<br>  <br>PCR 7：     仅度量 Secure Boot 状态（PK / KEK / DB / DBX 等）<br>  → 升级 kernel 时 PCR 7 不变<br>  → 推荐用 PCR 7 + Secure Boot 组合<br></code></pre></td></tr></table></figure><h3 id="LUKS-Measured-Boot-实战"><a href="#LUKS-Measured-Boot-实战" class="headerlink" title="LUKS + Measured Boot 实战"></a>LUKS + Measured Boot 实战</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 把 LUKS 密钥密封到 PCR 7（推荐）</span><br>systemd-cryptenroll --tpm2-device=auto --tpm2-pcrs=7 /dev/sda3<br><br><span class="hljs-comment"># 重启后自动解密：     </span><br><span class="hljs-comment">#   - Secure Boot 状态没变 → PCR 7 不变 → 解封成功</span><br><span class="hljs-comment">#   - Secure Boot 被禁 → PCR 7 变了 → 解封失败 → 提示输 fallback 密码</span><br><br><span class="hljs-comment"># 配合 dracut / mkinitcpio：     </span><br><span class="hljs-comment">#   /etc/crypttab：</span><br><span class="hljs-comment">#   root  UUID=...  none  tpm2-device=auto</span><br><br><span class="hljs-comment"># 紧急情况：备用恢复 key</span><br>cryptsetup luksAddKey /dev/sda3 recovery_key.txt<br></code></pre></td></tr></table></figure><h2 id="IMA：Linux-文件完整性"><a href="#IMA：Linux-文件完整性" class="headerlink" title="IMA：Linux 文件完整性"></a>IMA：Linux 文件完整性</h2><p>IMA（Integrity Measurement Architecture）是 Linux 内核的运行时完整性子系统：</p><pre class="mermaid">graph TB  EXEC[执行 / mmap / open]  EXEC --> IMA[IMA Hook]  IMA --> CHECK{检查策略}  CHECK --> M[度量：写入 measurement list + Extend PCR 10]  CHECK --> A[Appraisal：验证签名 / 哈希]  CHECK --> AUDIT[审计：仅记录]    A --> R{验证通过?}  R -- 是 --> RUN[允许执行]  R -- 否 --> DENY[拒绝]</pre><p>IMA 的三种模式：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><code class="hljs text">1. 度量（Measurement）：     <br>   - 把文件哈希写入 /sys/kernel/security/ima/ascii_runtime_measurements<br>   - 同时 Extend PCR 10<br>   - 不阻止执行<br>   - 用于审计和远程证明<br>   <br>2. 评估（Appraisal）：     <br>   - 验证文件的扩展属性签名<br>   - 不通过 → 拒绝执行<br>   - 严格但需要预先签名<br><br>3. 审计（Audit）：     <br>   - 仅写日志<br></code></pre></td></tr></table></figure><h3 id="IMA-启用"><a href="#IMA-启用" class="headerlink" title="IMA 启用"></a>IMA 启用</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 启动参数（GRUB）</span><br>GRUB_CMDLINE_LINUX=<span class="hljs-string">&quot;ima_policy=tcb ima_template=ima-ng ima_hash=sha256&quot;</span><br><br><span class="hljs-comment"># 重启后看 measurements</span><br><span class="hljs-built_in">cat</span> /sys/kernel/security/ima/ascii_runtime_measurements | <span class="hljs-built_in">head</span><br><br><span class="hljs-comment"># 例：</span><br><span class="hljs-comment"># 10 4d29...  ima-ng  sha256:abc...  /usr/bin/ls</span><br><span class="hljs-comment"># 10 8def...  ima-ng  sha256:def...  /usr/lib/libc.so.6</span><br><br><span class="hljs-comment"># 看当前 PCR 10</span><br>tpm2_pcrread sha256:10<br></code></pre></td></tr></table></figure><p>IMA 度量后<strong>每个文件首次访问时</strong>都会哈希入 PCR 10——这就让”系统启动以来所有访问的文件”都被记录。</p><h3 id="IMA-策略"><a href="#IMA-策略" class="headerlink" title="IMA 策略"></a>IMA 策略</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># /etc/ima/ima-policy 例：</span><br>dont_measure fsmagic=0x9fa0           <span class="hljs-comment"># 不度量 procfs</span><br>dont_measure fsmagic=0x62656572        <span class="hljs-comment"># 不度量 sysfs</span><br>measure func=BPRM_CHECK                 <span class="hljs-comment"># 度量 execve</span><br>measure func=FILE_MMAP mask=MAY_EXEC   <span class="hljs-comment"># 度量可执行 mmap</span><br>measure func=MODULE_CHECK               <span class="hljs-comment"># 度量内核模块</span><br>appraise func=POLICY_CHECK              <span class="hljs-comment"># 验签策略文件</span><br></code></pre></td></tr></table></figure><h3 id="EVM：扩展属性签名"><a href="#EVM：扩展属性签名" class="headerlink" title="EVM：扩展属性签名"></a>EVM：扩展属性签名</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><code class="hljs text">EVM（Extended Verification Module）：     <br>  - 验证文件的扩展属性 xattr（IMA 哈希、SELinux 标签等）<br>  - 防止单独篡改 xattr<br><br>启用：     <br>  GRUB_CMDLINE_LINUX=&quot;... evm=fix&quot;  # 第一次自动签<br>  之后 evm=enforce<br></code></pre></td></tr></table></figure><h2 id="完整可信启动链的搭建"><a href="#完整可信启动链的搭建" class="headerlink" title="完整可信启动链的搭建"></a>完整可信启动链的搭建</h2><pre class="mermaid">graph TB  S1[BIOS Secure Boot]  S1 --> S2[Bootloader 验签 kernel]  S2 --> S3[Kernel 验签 module]  S3 --> S4[IMA 度量 + Appraisal]  S4 --> S5[远程证明可达]    S6[Measured Boot 同步进行]  S6 -.- S1 & S2 & S3 & S4</pre><p>实际部署：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs text">1. BIOS：     启用 Secure Boot + Measured Boot<br>2. Bootloader：     shim + GRUB 签名<br>3. Kernel：     发行版签的 kernel + 自签 module<br>4. initrd：     生成时签<br>5. IMA：     启动 ima_policy=appraise_tcb<br>6. EVM：     启用 evm<br>7. LUKS：     密封到 PCR 7<br>8. 应用：     按需 IMA 度量<br></code></pre></td></tr></table></figure><h2 id="实战案例：金融业可信服务器"><a href="#实战案例：金融业可信服务器" class="headerlink" title="实战案例：金融业可信服务器"></a>实战案例：金融业可信服务器</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><code class="hljs text">某银行核心交易系统：     <br>  - 物理 TPM 2.0 + Secure Boot<br>  - kernel + initrd 内部签<br>  - LUKS 全盘加密 + TPM 密封 PCR 7<br>  - IMA Appraisal 模式<br>  - 远程证明每天定时到中心化平台<br>  - 启动状态异常 → 自动告警 + 隔离<br><br>效果：     <br>  - 任何 BIOS / Bootloader / Kernel 篡改 → 启动失败<br>  - 任何关键二进制篡改 → 拒绝执行<br>  - 物理拆机偷盘 → 数据无法解密（PCR 不对）<br></code></pre></td></tr></table></figure><h2 id="远程证明实战"><a href="#远程证明实战" class="headerlink" title="远程证明实战"></a>远程证明实战</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 服务端：建立 attestation 服务（开源 keylime）</span><br><span class="hljs-comment"># 客户端：装 keylime agent</span><br>apt install keylime-agent<br><br><span class="hljs-comment"># Agent 注册到 verifier：     </span><br>keylime_register --addr &lt;verifier&gt; --uuid &lt;uuid&gt;<br><br><span class="hljs-comment"># Verifier 周期发起 Quote 检查</span><br><span class="hljs-comment"># Agent 调 TPM_Quote 返回</span><br><span class="hljs-comment"># Verifier 比对 PCR 是否匹配预期</span><br><br><span class="hljs-comment"># 不匹配 → 隔离机器</span><br></code></pre></td></tr></table></figure><p>主流远程证明方案：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br></pre></td><td class="code"><pre><code class="hljs text">keylime（NCC 出品，CNCF 项目）：     <br>  - 开源<br>  - Bootstrap + Periodic attest<br>  - 集成 IMA 度量列表<br><br>Microsoft Attestation Service：     <br>  - Windows Defender Device Health<br>  - Azure Attestation Service<br>  <br>Intel Trust Authority：     <br>  - Intel 官方<br>  - 服务化远程证明<br><br>国产：     <br>  - 公安部一所 / 中电科 等可信认证体系<br>  - 工信部&quot;可信云&quot;标准<br>  - 各家 OEM 自家方案<br></code></pre></td></tr></table></figure><h2 id="几个老坑"><a href="#几个老坑" class="headerlink" title="几个老坑"></a>几个老坑</h2><h3 id="坑-1：Secure-Boot-第三方驱动"><a href="#坑-1：Secure-Boot-第三方驱动" class="headerlink" title="坑 1：Secure Boot + 第三方驱动"></a>坑 1：Secure Boot + 第三方驱动</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><code class="hljs text">NVIDIA / Mellanox 等内核模块：     <br>  - shim 信任的是发行版公钥<br>  - 第三方模块需要单独签<br>  - 用 mokutil 加用户证书<br><br>正确流程：     <br>  1. 生成 MOK 密钥对<br>  2. mokutil --import 加证书<br>  3. 装第三方驱动时用 dkms 自动签<br></code></pre></td></tr></table></figure><h3 id="坑-2：Kernel-升级-PCR-0-4-改变"><a href="#坑-2：Kernel-升级-PCR-0-4-改变" class="headerlink" title="坑 2：Kernel 升级 PCR 0&#x2F;4 改变"></a>坑 2：Kernel 升级 PCR 0&#x2F;4 改变</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><code class="hljs text">LUKS 密封 PCR 0/4 → kernel 升级 → PCR 不一样 → 启动后无法解密<br><br>防御：     <br>  - 升级前 systemd-cryptenroll 重新封装<br>  - 或一直只用 PCR 7（推荐）<br>  - 留一把 fallback 密码<br></code></pre></td></tr></table></figure><h3 id="坑-3：IMA-性能开销"><a href="#坑-3：IMA-性能开销" class="headerlink" title="坑 3：IMA 性能开销"></a>坑 3：IMA 性能开销</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><code class="hljs text">IMA 默认全度量：     <br>  - 每次 execve / mmap 都要哈希<br>  - 4 KB 文件哈希 ~10 μs<br>  - 大量小文件应用受影响 5-15%<br><br>调优：     <br>  - 用 dont_measure 排除不必要路径<br>  - 用 ima-buf 替代 ima-ng（buffer 模式）<br>  - SHA-1 比 SHA-256 快但安全性弱<br></code></pre></td></tr></table></figure><h3 id="坑-4：BIOS-升级清密钥"><a href="#坑-4：BIOS-升级清密钥" class="headerlink" title="坑 4：BIOS 升级清密钥"></a>坑 4：BIOS 升级清密钥</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><code class="hljs text">BIOS 升级有时候清空 PK / KEK / DB<br>   → Secure Boot 关闭<br>   → mokutil 之前导入的全没<br><br>防御：     <br>  - 升级前导出 PK / KEK / DB 备份<br>  - 升级后用 sbkeysync 恢复<br></code></pre></td></tr></table></figure><h3 id="坑-5：vTPM-状态"><a href="#坑-5：vTPM-状态" class="headerlink" title="坑 5：vTPM 状态"></a>坑 5：vTPM 状态</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs text">KVM vTPM 默认 swtpm 持久化：     <br>  /var/lib/swtpm/&lt;uuid&gt;<br>  <br>迁移 VM：     vTPM 状态要同步迁移<br>否则：     新宿主机的 vTPM 是新的 → PCR 全空 → LUKS 解不开<br></code></pre></td></tr></table></figure><h3 id="坑-6：IMA-Appraisal-启用前没签好"><a href="#坑-6：IMA-Appraisal-启用前没签好" class="headerlink" title="坑 6：IMA Appraisal 启用前没签好"></a>坑 6：IMA Appraisal 启用前没签好</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><code class="hljs text">appraisal=enforce 时：     未签的文件不能执行<br>   → 突然启用 → 大量应用启动失败<br><br>正确：     <br>  1. 先 ima_appraise=fix 一次（自动签）<br>  2. 验证一切正常<br>  3. 再 ima_appraise=enforce<br></code></pre></td></tr></table></figure><h3 id="坑-7：远程证明引用值管理"><a href="#坑-7：远程证明引用值管理" class="headerlink" title="坑 7：远程证明引用值管理"></a>坑 7：远程证明引用值管理</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><code class="hljs text">万级集群每机 PCR 值不同（kernel / 配置略差异）：     <br>  - 集中维护&quot;已知好&quot;哈希列表<br>  - 每次升级都要更新基线<br>  - 大集群运维成本高<br><br>→ 这是为什么互联网厂启用率低<br></code></pre></td></tr></table></figure><h2 id="TPM-与-BIOS-的协议"><a href="#TPM-与-BIOS-的协议" class="headerlink" title="TPM 与 BIOS 的协议"></a>TPM 与 BIOS 的协议</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs text">TCG PC Client Profile：     <br>  - 度量哪些事件（PCR mapping）<br>  - 事件日志格式<br>  - 厂家必须遵循<br><br>每家 BIOS 实现略有差别：     <br>  - 同款服务器换 BIOS 厂 PCR 不一样<br>  - 跨厂家集群 PCR 基线管理头疼<br></code></pre></td></tr></table></figure><h2 id="一些查询命令"><a href="#一些查询命令" class="headerlink" title="一些查询命令"></a>一些查询命令</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># Secure Boot 状态</span><br>mokutil --sb-state<br><br><span class="hljs-comment"># 已注册 MOK</span><br>mokutil --list-enrolled<br><br><span class="hljs-comment"># UEFI 变量</span><br>efivar -l<br>efibootmgr -v<br><br><span class="hljs-comment"># Measured Boot 事件</span><br>tpm2_eventlog /sys/kernel/security/tpm0/binary_bios_measurements<br>tpm2_pcrread sha256:0,1,2,3,4,5,6,7,8,9,10<br><br><span class="hljs-comment"># IMA 度量列表</span><br><span class="hljs-built_in">cat</span> /sys/kernel/security/ima/ascii_runtime_measurements | <span class="hljs-built_in">wc</span> -l<br><br><span class="hljs-comment"># 看 IMA 策略</span><br><span class="hljs-built_in">cat</span> /sys/kernel/security/ima/policy<br><br><span class="hljs-comment"># 内核 lockdown 模式（与 Secure Boot 关联）</span><br><span class="hljs-built_in">cat</span> /sys/kernel/security/lockdown<br></code></pre></td></tr></table></figure><h2 id="一些数字直觉"><a href="#一些数字直觉" class="headerlink" title="一些数字直觉"></a>一些数字直觉</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><code class="hljs text">启动时间影响：     <br>  Secure Boot：     +50-200 ms<br>  Measured Boot：    +500-1000 ms<br>  IMA 度量：        +1-5 秒（按文件数）<br>  TPM 解 LUKS：     +200-500 ms<br>  <br>运行时性能：     <br>  IMA Measurement：    5% 性能损失<br>  IMA Appraisal：      10-15% 性能损失<br>  EVM 启用：           额外 5-10%<br>  <br>存储：     <br>  Measurement 列表：    小集群每天几十 MB<br>  Event log：          每机几 MB<br></code></pre></td></tr></table></figure><h2 id="不同发行版默认情况"><a href="#不同发行版默认情况" class="headerlink" title="不同发行版默认情况"></a>不同发行版默认情况</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br></pre></td><td class="code"><pre><code class="hljs text">RHEL 9：     <br>  - Secure Boot 默认启用<br>  - shim 已签<br>  - IMA 配置可选<br>  - TPM 工具齐全<br><br>Ubuntu 24.04：     <br>  - Secure Boot 默认启用<br>  - LUKS + TPM 通过 systemd-cryptenroll<br>  - IMA 不默认<br><br>openEuler 22.03 LTS：     <br>  - 信创目录默认启用 Secure Boot + Measured Boot<br>  - IMA 政企版默认启用<br>  - 与 TCM 集成<br><br>麒麟 V10：     <br>  - 等保 3+ 默认 Secure Boot + IMA<br>  - 国密签名（SM2/SM3）<br>  - 与 TCM / TPCM 适配<br></code></pre></td></tr></table></figure><h2 id="小结"><a href="#小结" class="headerlink" title="小结"></a>小结</h2><ul><li>Secure Boot &#x3D; 启动验签，不通过就拒绝</li><li>Measured Boot &#x3D; 启动度量记录到 TPM PCR</li><li>IMA &#x3D; 运行时文件完整性验证</li><li>三者配合形成完整可信启动链</li><li>远程证明把启动状态送到验证方</li><li>LUKS + TPM PCR 7 是最常用的全盘加密方案</li><li>互联网厂启用率低，政企 &#x2F; 金融 &#x2F; 关基启用率高</li></ul><p>下一篇讲 TEE——SGX、TDX、SEV、TrustZone 等”可信执行环境”。</p>]]>
    </content>
    <id>http://localhost:4000/posts/5c30e812/</id>
    <link href="http://localhost:4000/posts/5c30e812/"/>
    <published>2026-03-08T14:45:00.000Z</published>
    <summary>TPM 是&quot;度量&quot;的根，但要让系统真正&quot;可信&quot;，必须把度量贯穿启动链。本文讲 UEFI Secure Boot、Measured Boot、Linux IMA 三件套。</summary>
    <title>Secure Boot、Measured Boot 与 IMA</title>
    <updated>2026-05-24T13:49:48.031Z</updated>
  </entry>
  <entry>
    <category term="08-可信计算" scheme="http://localhost:4000/categories/08-%E5%8F%AF%E4%BF%A1%E8%AE%A1%E7%AE%97/"/>
    <category term="TPM" scheme="http://localhost:4000/tags/TPM/"/>
    <category term="TCM" scheme="http://localhost:4000/tags/TCM/"/>
    <category term="可信启动" scheme="http://localhost:4000/tags/%E5%8F%AF%E4%BF%A1%E5%90%AF%E5%8A%A8/"/>
    <category term="PCR" scheme="http://localhost:4000/tags/PCR/"/>
    <content>
      <![CDATA[<p>第八章讲可信计算。可信不是”加密”也不是”防火墙”——是”用硬件证明系统在某个状态”。本文从 TPM 这颗小芯片讲起。</p><!-- more --><h2 id="为什么需要可信计算"><a href="#为什么需要可信计算" class="headerlink" title="为什么需要可信计算"></a>为什么需要可信计算</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><code class="hljs text">传统安全：     防火墙 / 杀毒 / 加密 / 权限<br>缺陷：     <br>  - 软件防御软件，攻击者一旦进系统就能改一切<br>  - 没有&quot;硬件级根&quot;<br>  - 系统启动时无法验证 BIOS / Bootloader / Kernel 是否被篡改<br>  - 加密密钥放在内存里 → 内存 dump 就泄露<br><br>可信计算的核心思想：     <br>  1. 硬件根：     一颗独立芯片，物理隔离，不可被软件篡改<br>  2. 度量启动链：    每一层启动时哈希下一层，记录到芯片<br>  3. 远程证明：    把启动状态送到远端，远端判断是否可信<br>  4. 密封：     用启动状态作为&quot;密钥派生因子&quot;，状态错就解不开<br></code></pre></td></tr></table></figure><h2 id="TPM：可信平台模块"><a href="#TPM：可信平台模块" class="headerlink" title="TPM：可信平台模块"></a>TPM：可信平台模块</h2><p>TPM（Trusted Platform Module）是一颗独立小芯片：</p><pre class="mermaid">graph TB  CPU[CPU]  CHIPSET[Chipset / PCH]  TPM[TPM Chip<br/>独立芯片]  MB[主板]    CPU --- CHIPSET  CHIPSET --- TPM  TPM --- MB</pre><p>TPM 的物理形态：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><code class="hljs text">独立芯片（dTPM）：     主板焊一颗<br>固件 TPM（fTPM）：     CPU 内 TEE 模拟（Intel PTT、AMD fTPM）<br>虚拟 TPM（vTPM）：     VM 用的软件模拟<br>集成 TPM：             有些 SoC 内集成<br></code></pre></td></tr></table></figure><h3 id="TPM-的内部架构"><a href="#TPM-的内部架构" class="headerlink" title="TPM 的内部架构"></a>TPM 的内部架构</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><code class="hljs text">TPM 内部：     <br>  - 处理器（小 CPU）<br>  - 非易失存储（NVRAM）<br>  - 易失存储（PCR、密钥句柄）<br>  - 加密引擎（RSA / ECC / SHA / AES）<br>  - 随机数发生器（RNG）<br>  - 唯一身份（EK）<br><br>接口：     <br>  TPM 1.2：    LPC（Low Pin Count）<br>  TPM 2.0：    SPI / I²C / LPC<br>  fTPM：       内部接口<br></code></pre></td></tr></table></figure><h2 id="TPM-1-2-vs-2-0"><a href="#TPM-1-2-vs-2-0" class="headerlink" title="TPM 1.2 vs 2.0"></a>TPM 1.2 vs 2.0</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><code class="hljs text">TPM 1.2（2003）：     <br>  - 仅 SHA-1<br>  - 单 hash 算法<br>  - 难升级<br>  - 已淘汰<br><br>TPM 2.0（2014）：     <br>  - SHA-256 / SHA-384 / SHA-512<br>  - SM3（中国国密）支持<br>  - 算法可扩展<br>  - PCR 数量可配置<br>  - 已是当前标准<br></code></pre></td></tr></table></figure><p>Windows 11 强制要求 TPM 2.0——这是 2024 年 TPM 2.0 普及的主要推动力。</p><h2 id="TCM：国密版-TPM"><a href="#TCM：国密版-TPM" class="headerlink" title="TCM：国密版 TPM"></a>TCM：国密版 TPM</h2><p>中国”可信计算 2.0”路线推出的：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br></pre></td><td class="code"><pre><code class="hljs text">TCM（Trusted Cryptography Module）：     <br>  - 中国主导<br>  - 算法用国密：     SM2 / SM3 / SM4 / SM9<br>  - GM/T 0011-2012 等国标<br>  - 与 TPM 1.2 类似的接口<br>  - 兼容 TCG 部分协议<br><br>TPCM（Trusted Platform Control Module）：     <br>  - &quot;主动可信&quot;<br>  - TCM + 主控制器，可主动度量 / 干预系统<br>  - 不只是被动度量<br>  - 国内独有，类似&quot;安全协处理器&quot;<br><br>实现：     <br>  - 主板 TCM 芯片<br>  - 沈昌祥院士主推<br><br>应用：     <br>  - 党政信创<br>  - 等保 2.0 三级 / 四级<br>  - 关基设施<br></code></pre></td></tr></table></figure><h2 id="PCR：平台配置寄存器"><a href="#PCR：平台配置寄存器" class="headerlink" title="PCR：平台配置寄存器"></a>PCR：平台配置寄存器</h2><p>PCR（Platform Configuration Register）是 TPM 的核心：</p><pre class="mermaid">graph TB  PCR[PCR 寄存器组<br/>每个 32 字节]  PCR --> PCR0[PCR 0：BIOS]  PCR --> PCR1[PCR 1：BIOS 配置]  PCR --> PCR2[PCR 2：Option ROM]  PCR --> PCR3[PCR 3：Option ROM 配置]  PCR --> PCR4[PCR 4：MBR / Bootloader]  PCR --> PCR5[PCR 5：Bootloader 配置]  PCR --> PCR6[PCR 6：状态变更]  PCR --> PCR7[PCR 7：Secure Boot 状态]  PCR --> PCR8[PCR 8-15：OS 用]  PCR --> PCR16[PCR 16-23：debug / 应用]</pre><p>PCR 的核心特性：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><code class="hljs text">1. 不能直接写：     只能 Extend<br>2. Extend 操作：    PCR_new = SHA256( PCR_old || measurement )<br>3. 不可逆：     一旦写入，无法撤回<br>4. 重置：     只在系统重启时清零<br><br>→ 任何篡改都会改变最终的 PCR 值<br>→ 启动链状态被&quot;哈希链&quot;忠实记录<br></code></pre></td></tr></table></figure><p>PCR 的 24 个寄存器各有约定（TCG 规范）：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><code class="hljs text">PCR 0-7：     固件（BIOS / Boot 等）<br>PCR 8-15：    OS 层度量<br>PCR 16-22：   debug / 自定义<br>PCR 23：     应用 / 临时<br></code></pre></td></tr></table></figure><h2 id="度量启动链"><a href="#度量启动链" class="headerlink" title="度量启动链"></a>度量启动链</h2><pre class="mermaid">graph LR  CRTM[CRTM<br/>核心可信根<br/>BIOS 内只读] --> B[BIOS]  B --> B2[BIOS 度量 Bootloader]  B2 --> BOOT[Bootloader<br/>GRUB]  BOOT --> BOOT2[Bootloader 度量 Kernel]  BOOT2 --> KER[Kernel + initrd]  KER --> APP[OS / 应用]    CRTM -.-> TPM[TPM PCR]  B2 -.-> TPM  BOOT2 -.-> TPM  KER -.-> TPM</pre><p>整个启动过程：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br></pre></td><td class="code"><pre><code class="hljs text">1. 上电 → CRTM（Core Root of Trust for Measurement）开始执行<br>   CRTM 是 BIOS 中的一段不可变代码 / 不可变 mask ROM<br>   它度量自己 + 度量 BIOS 的剩余部分 → Extend PCR 0<br>   <br>2. BIOS 度量 Option ROM（PCI 卡 firmware）→ Extend PCR 2/3<br>   <br>3. BIOS 度量 Bootloader（GRUB）→ Extend PCR 4/5<br>   把控制权交给 Bootloader<br><br>4. Bootloader 度量 Kernel + initrd → Extend PCR 8/9<br>   把控制权交给 Kernel<br>   <br>5. Kernel IMA 度量重要文件 → Extend PCR 10<br>   挂载文件系统，启动应用<br><br>最终：     PCR 0-10 反映了整个启动链的&quot;哈希状态&quot;<br></code></pre></td></tr></table></figure><p>任意环节被篡改：     PCR 就会和”已知好的状态”不一样。</p><h2 id="TPM-的密钥层次"><a href="#TPM-的密钥层次" class="headerlink" title="TPM 的密钥层次"></a>TPM 的密钥层次</h2><pre class="mermaid">graph TB  EK[EK<br/>Endorsement Key<br/>制造时烧死，唯一身份]  SRK[SRK<br/>Storage Root Key<br/>用户拥有，加密其他密钥]  AIK[AIK<br/>Attestation Identity Key<br/>身份证明用]  CHK[Child Keys<br/>用户密钥]    EK -.- AIK  SRK --> CHK</pre><table><thead><tr><th>密钥</th><th>用途</th></tr></thead><tbody><tr><td>EK（Endorsement Key）</td><td>出厂烧入，证明这是真 TPM</td></tr><tr><td>SRK（Storage Root Key）</td><td>用户绑定的根密钥</td></tr><tr><td>AIK（Attestation Identity Key）</td><td>远程证明时用，避免泄露 EK</td></tr><tr><td>Child Keys</td><td>用户业务密钥</td></tr></tbody></table><p>EK 由 TPM 厂家签发——内置一张”出厂证书”。这是远程证明能信任 TPM 的根。</p><h2 id="远程证明（Remote-Attestation）"><a href="#远程证明（Remote-Attestation）" class="headerlink" title="远程证明（Remote Attestation）"></a>远程证明（Remote Attestation）</h2><pre class="mermaid">graph LR  CL[客户端机器]  CL --> Q[Quote 操作<br/>TPM 签名 PCR 状态]  Q --> SR[发到验证方]  SR --> SRV[验证服务器]  SRV --> CMP[比对预期 PCR]  CMP --> RES[可信 / 不可信]</pre><p>远程证明流程：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><code class="hljs text">1. 验证方发起挑战（Nonce）<br>2. 客户端调用 TPM_Quote(PCRs, Nonce)<br>3. TPM 用 AIK 签名 PCR 哈希 + Nonce → Quote<br>4. 客户端把 Quote + AIK 证书发给验证方<br>5. 验证方：     <br>   a. 验证 AIK 证书链（来自 EK 厂家）<br>   b. 验证 Quote 签名<br>   c. 比对 PCR 值是否匹配预期&quot;好的状态&quot;<br>   d. 通过 → 这台机器在可信状态<br></code></pre></td></tr></table></figure><p>应用场景：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><code class="hljs text">- 网络准入：     设备进网前要 attest<br>- 云租户：     租户验证云上 VM 是真 TEE<br>- 软件更新：     更新前验证当前状态<br>- 数据访问控制：     PCR 错就解密失败<br></code></pre></td></tr></table></figure><h2 id="密封（Sealing）"><a href="#密封（Sealing）" class="headerlink" title="密封（Sealing）"></a>密封（Sealing）</h2><p>TPM 可以把数据”密封”到某个 PCR 状态：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><code class="hljs text">密封 = 用 PCR 当前值作为派生因子加密数据：     <br>  TPM_Seal(data, PCR_target_values)<br>  <br>解封：     <br>  TPM_Unseal(sealed_blob)<br>  → 仅当 PCR 当前值 == 密封时的值，才能解出<br>  <br>应用：     <br>  - 全盘加密密钥密封到启动状态<br>  - 业务密钥密封到应用代码<br>  - 任何篡改 → 解封失败 → 数据无法访问<br></code></pre></td></tr></table></figure><p>LUKS 全盘加密 + TPM 密封是 Linux 上最常用的安全启动方案。</p><h2 id="DRTM-与-SRTM"><a href="#DRTM-与-SRTM" class="headerlink" title="DRTM 与 SRTM"></a>DRTM 与 SRTM</h2><p>度量根的两种类型：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><code class="hljs text">SRTM（Static Root of Trust for Measurement）：     <br>  - 系统启动时建立<br>  - 从 CRTM 一路度量<br>  - 大部分场景<br><br>DRTM（Dynamic Root of Trust for Measurement）：     <br>  - 系统运行时动态建立&quot;信任岛&quot;<br>  - Intel TXT / AMD SKINIT<br>  - 不需要从开机度量<br>  - 用于安全敏感任务的&quot;临时可信环境&quot;<br></code></pre></td></tr></table></figure><p>DRTM 应用：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><code class="hljs text">- 启动 hypervisor 时建立 measure<br>- 银行 / 政务 / 军方关键操作前 DRTM<br>- 现在 TEE 已经吸收大部分 DRTM 场景<br></code></pre></td></tr></table></figure><h2 id="TPM-的实战命令"><a href="#TPM-的实战命令" class="headerlink" title="TPM 的实战命令"></a>TPM 的实战命令</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 看 TPM 是否存在</span><br><span class="hljs-built_in">ls</span> /dev/tpm*<br><span class="hljs-comment"># /dev/tpm0</span><br><span class="hljs-comment"># /dev/tpmrm0</span><br><br><span class="hljs-comment"># TPM 版本</span><br><span class="hljs-built_in">cat</span> /sys/class/tpm/tpm0/tpm_version_major<br><span class="hljs-built_in">cat</span> /sys/class/tpm/tpm0/device/description<br><br><span class="hljs-comment"># 看 PCR 值</span><br>tpm2_pcrread sha256:0,1,2,3,4,5,6,7<br><br><span class="hljs-comment"># 输出例：</span><br><span class="hljs-comment"># sha256:</span><br><span class="hljs-comment">#   0: 0x...64-hex</span><br><span class="hljs-comment">#   1: 0x...</span><br><span class="hljs-comment">#   ...</span><br><br><span class="hljs-comment"># 取个随机数</span><br>tpm2_getrandom 32 | xxd<br><br><span class="hljs-comment"># 创建主密钥</span><br>tpm2_createprimary -c primary.ctx<br><br><span class="hljs-comment"># 创建子密钥</span><br>tpm2_create -C primary.ctx -u key.pub -r key.priv<br><br><span class="hljs-comment"># 加密 / 解密</span><br>tpm2_rsaencrypt -c key.ctx -o cipher.bin plain.txt<br>tpm2_rsadecrypt -c key.ctx -o plain.bin cipher.bin<br><br><span class="hljs-comment"># 密封</span><br><span class="hljs-built_in">echo</span> <span class="hljs-string">&quot;secret&quot;</span> | tpm2_create -C primary.ctx -u sealed.pub -r sealed.priv -i -<br><br><span class="hljs-comment"># Quote（远程证明）</span><br>tpm2_quote -c key.ctx -l sha256:0,1,2,3 -q <span class="hljs-string">&quot;challenge_nonce&quot;</span><br></code></pre></td></tr></table></figure><h2 id="TPM-在系统中的角色"><a href="#TPM-在系统中的角色" class="headerlink" title="TPM 在系统中的角色"></a>TPM 在系统中的角色</h2><pre class="mermaid">graph TB  TPM[TPM 2.0]  TPM --> SB[Secure Boot 验证]  TPM --> BOOT[Measured Boot 度量]  TPM --> LUKS[LUKS 密封]  TPM --> SSH[SSH 密钥保护]  TPM --> CERT[X.509 证书 / mTLS]  TPM --> WIN[Windows BitLocker / Hello]  TPM --> RA[远程证明]</pre><p>TPM 不直接做”业务”——它是给上层各种安全子系统提供根。</p><h3 id="LUKS-TPM"><a href="#LUKS-TPM" class="headerlink" title="LUKS + TPM"></a>LUKS + TPM</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><code class="hljs text">传统 LUKS：     用户输密码解密<br>TPM 密封 LUKS：    密码绑定 PCR<br>                启动状态正确 → 自动解密<br>                启动被篡改 → 解密失败<br><br>systemd-cryptenroll：     2021+ Linux 标准工具<br>  systemd-cryptenroll --tpm2-device=auto /dev/sda3<br>  <br>GRUB 加 measured boot：     <br>  → BIOS / GRUB / kernel / initrd 哈希都进 PCR<br>  → 任何篡改 → 解不开<br></code></pre></td></tr></table></figure><h3 id="Windows-BitLocker"><a href="#Windows-BitLocker" class="headerlink" title="Windows BitLocker"></a>Windows BitLocker</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs text">Windows 用 TPM：     <br>  - BitLocker 全盘加密自动解（密钥密封到 PCR）<br>  - Hello 生物识别（密钥保护）<br>  - Defender Credential Guard<br>  - Win 11 强制 TPM 2.0<br></code></pre></td></tr></table></figure><h2 id="服务器-TPM-的现状"><a href="#服务器-TPM-的现状" class="headerlink" title="服务器 TPM 的现状"></a>服务器 TPM 的现状</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><code class="hljs text">2026 年现状：     <br>  - 几乎所有数据中心服务器都带 TPM 2.0<br>  - 政府 / 金融 / 关基采购&quot;必带&quot;<br>  - 互联网厂商：     多数采购带 TPM，但实际启用率低（&lt; 20%）<br>  - 信创目录：     强制 TPM 2.0 或 TCM<br>  <br>为什么互联网启用率低：     <br>  1. 配置复杂<br>  2. 大规模运维难（每机 PCR 不同）<br>  3. 业务团队不熟<br>  4. 收益不明显<br></code></pre></td></tr></table></figure><h2 id="TPM-的几个老坑"><a href="#TPM-的几个老坑" class="headerlink" title="TPM 的几个老坑"></a>TPM 的几个老坑</h2><h3 id="坑-1：fTPM-bug-导致系统卡顿"><a href="#坑-1：fTPM-bug-导致系统卡顿" class="headerlink" title="坑 1：fTPM bug 导致系统卡顿"></a>坑 1：fTPM bug 导致系统卡顿</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><code class="hljs text">2022 年 AMD fTPM 在某些主板上偶发卡死<br>   → 鼠标 / 键盘卡顿几百毫秒<br>   → 桌面用户大量抱怨<br>   → AMD 后续 BIOS 修复<br><br>教训：     fTPM 性能不如 dTPM 稳定<br></code></pre></td></tr></table></figure><h3 id="坑-2：BIOS-升级清除-PCR"><a href="#坑-2：BIOS-升级清除-PCR" class="headerlink" title="坑 2：BIOS 升级清除 PCR"></a>坑 2：BIOS 升级清除 PCR</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs text">BIOS 升级 → CRTM 改变 → PCR 0 改变<br>   → LUKS 密封基于 PCR 0 → 解不开<br>   → 全盘加密的服务器锁死<br><br>防御：     <br>  - 升级前重新封装密钥<br>  - 用 TPM Recovery Key 备用<br>  - PCR 选择只用 7（Secure Boot 状态）而非 0<br></code></pre></td></tr></table></figure><h3 id="坑-3：vTPM-状态不持久"><a href="#坑-3：vTPM-状态不持久" class="headerlink" title="坑 3：vTPM 状态不持久"></a>坑 3：vTPM 状态不持久</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs text">KVM vTPM 默认存在内存：     <br>  - VM 重启状态丢失<br>  - 必须用 SWTPM 持久化<br>  <br>正确：     swtpm + libvirt 标准模式<br></code></pre></td></tr></table></figure><h3 id="坑-4：TPM-命令排队"><a href="#坑-4：TPM-命令排队" class="headerlink" title="坑 4：TPM 命令排队"></a>坑 4：TPM 命令排队</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs text">TPM 是慢芯片：     单核单队列<br>  → 多并发可能卡 100+ ms<br>  → 高并发应用不要频繁调 TPM<br><br>应用：     一次启动取出密钥后缓存到 kernel keyring<br></code></pre></td></tr></table></figure><h3 id="坑-5：TPM-与-Secure-Boot-混淆"><a href="#坑-5：TPM-与-Secure-Boot-混淆" class="headerlink" title="坑 5：TPM 与 Secure Boot 混淆"></a>坑 5：TPM 与 Secure Boot 混淆</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs text">TPM ≠ Secure Boot：     <br>  Secure Boot = UEFI 验签<br>  TPM = 度量记录<br><br>可以独立：     <br>  - 只 Secure Boot，无 TPM：能验签，但没有&quot;启动状态记录&quot;<br>  - 只 TPM，无 Secure Boot：度量记录但允许任何启动<br>  - 两个都开：完整方案<br></code></pre></td></tr></table></figure><h2 id="TCG-标准"><a href="#TCG-标准" class="headerlink" title="TCG 标准"></a>TCG 标准</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><code class="hljs text">TCG（Trusted Computing Group）：     <br>  TPM 标准制定者<br>  AMD / IBM / Intel / HP / Microsoft 等创立<br>  <br>  规范：     <br>    TPM 2.0 Library Spec<br>    TCG PC Client Profile<br>    Storage Spec（SED）<br>    DICE（Device Identifier Composition Engine）<br>    SPDM（Security Protocol and Data Model）<br>    <br>中国对应：     <br>  TCG 中国分会<br>  GB/T 29827-2013 系列国标<br></code></pre></td></tr></table></figure><h2 id="一些查询命令"><a href="#一些查询命令" class="headerlink" title="一些查询命令"></a>一些查询命令</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># TPM 设备</span><br><span class="hljs-built_in">ls</span> /dev/tpm*<br><span class="hljs-built_in">cat</span> /sys/class/tpm/tpm0/tpm_version_major<br><br><span class="hljs-comment"># TPM 设备字符</span><br>dmesg | grep -i tpm<br><br><span class="hljs-comment"># 启用 / 禁用（GRUB）</span><br>tpm_tis.driver_args=...<br><br><span class="hljs-comment"># tpm2-tools 安装</span><br>apt install tpm2-tools         <span class="hljs-comment"># Ubuntu</span><br>dnf install tpm2-tools         <span class="hljs-comment"># RHEL</span><br><br><span class="hljs-comment"># 看 measured boot 事件日志</span><br><span class="hljs-built_in">sudo</span> tpm2_eventlog /sys/kernel/security/tpm0/binary_bios_measurements<br><br><span class="hljs-comment"># 安装 swtpm（vTPM）</span><br>apt install swtpm swtpm-tools<br><br><span class="hljs-comment"># vTPM 给 KVM</span><br>qemu-system-x86_64 ... \<br>  -chardev socket,<span class="hljs-built_in">id</span>=chrtpm,path=/tmp/swtpm-sock \<br>  -tpmdev emulator,<span class="hljs-built_in">id</span>=tpm0,chardev=chrtpm \<br>  -device tpm-tis,tpmdev=tpm0<br></code></pre></td></tr></table></figure><h2 id="一些数字直觉"><a href="#一些数字直觉" class="headerlink" title="一些数字直觉"></a>一些数字直觉</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><code class="hljs text">TPM 2.0 性能：     <br>  生成 RSA 2048 密钥：     500-1000 ms<br>  RSA 签名：              50-100 ms<br>  PCR Extend：            1-5 ms<br>  Quote：                 50-150 ms<br>  RNG 32 字节：           5-10 ms<br><br>启动时间影响：     <br>  完整 measured boot：     +1-3 秒<br>  TPM unseal LUKS：        +200-500 ms<br>  <br>价格：     <br>  dTPM 芯片单颗：          $1-3 美元<br>  服务器主板支持：          通常含<br>  fTPM 启用：               免费<br></code></pre></td></tr></table></figure><h2 id="第八章-Roadmap"><a href="#第八章-Roadmap" class="headerlink" title="第八章 Roadmap"></a>第八章 Roadmap</h2><p>接下来会展开：</p><ul><li>Secure Boot &#x2F; Measured Boot &#x2F; IMA（怎么用 TPM）</li><li>TEE：SGX &#x2F; TDX &#x2F; SEV &#x2F; TrustZone</li><li>机密计算 Confidential VM&#x2F;Container</li><li>国产可信计算（海光 CSV &#x2F; 鲲鹏 &#x2F; TPCM）</li><li>选型与小结</li></ul><h2 id="小结"><a href="#小结" class="headerlink" title="小结"></a>小结</h2><ul><li>TPM 是可信计算的硬件根，提供度量、密封、远程证明能力</li><li>TPM 1.2 仅 SHA-1，已淘汰；TPM 2.0 多算法可扩展</li><li>TCM 是中国国密版本，TPCM 是”主动可信”扩展</li><li>PCR 是核心数据结构——用 Extend 操作记录哈希链</li><li>度量启动链从 CRTM 到应用层，PCR 0-10 各有约定</li><li>Quote 是远程证明，Seal 是状态绑定</li><li>LUKS + TPM、Win BitLocker 是常见的应用</li><li>数据中心服务器普遍配 TPM 2.0，但启用率有限</li></ul><p>下一篇讲 Secure Boot &#x2F; Measured Boot &#x2F; IMA——怎么把 TPM 用起来。</p>]]>
    </content>
    <id>http://localhost:4000/posts/4f3ad33e/</id>
    <link href="http://localhost:4000/posts/4f3ad33e/"/>
    <published>2026-03-01T13:30:00.000Z</published>
    <summary>TPM 是可信计算的&quot;硬件根&quot;——一颗独立小芯片，负责度量、密封、远程证明。本文讲清 TPM 1.2 / 2.0 演进、TCM 国密路线，以及 PCR 这个核心概念。</summary>
    <title>TPM / TCM 基础与可信启动链</title>
    <updated>2026-05-24T13:49:48.031Z</updated>
  </entry>
  <entry>
    <category term="07-操作系统" scheme="http://localhost:4000/categories/07-%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/"/>
    <category term="OS 选型" scheme="http://localhost:4000/tags/OS-%E9%80%89%E5%9E%8B/"/>
    <category term="第七章小结" scheme="http://localhost:4000/tags/%E7%AC%AC%E4%B8%83%E7%AB%A0%E5%B0%8F%E7%BB%93/"/>
    <content>
      <![CDATA[<p>第七章前面 6 篇分别讲了 Linux 发行版、虚拟化、容器&#x2F;K8s、内核内部、AI OS 适配、国产 OS。本篇收口。</p><!-- more --><h2 id="OS-选型的”四层决策”"><a href="#OS-选型的”四层决策”" class="headerlink" title="OS 选型的”四层决策”"></a>OS 选型的”四层决策”</h2><pre class="mermaid">graph TD  Q1[第 1 层: 业务类型?]  Q1 --> Q2[第 2 层: 虚拟化方案?]  Q2 --> Q3[第 3 层: 容器栈?]  Q3 --> Q4[第 4 层: 国产化要求?]  Q4 --> A[最终选型]</pre><h2 id="第-1-层：业务类型"><a href="#第-1-层：业务类型" class="headerlink" title="第 1 层：业务类型"></a>第 1 层：业务类型</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><code class="hljs text">传统单机应用：     RHEL / Ubuntu LTS / 麒麟 / 欧拉<br>云原生 / K8s：     Ubuntu / Rocky / 龙蜥 / Bottlerocket / Talos<br>数据库专用：       RHEL（Oracle 认证）/ Ubuntu / 龙蜥<br>AI 训练：         Ubuntu 22.04 + 内核 5.15+<br>HPC：             RHEL / Rocky / openEuler<br>边缘 / 嵌入式：     Yocto / Buildroot / Alpine<br>桌面 / VDI：       Windows / Ubuntu / 麒麟桌面 / UOS<br></code></pre></td></tr></table></figure><h2 id="第-2-层：虚拟化方案"><a href="#第-2-层：虚拟化方案" class="headerlink" title="第 2 层：虚拟化方案"></a>第 2 层：虚拟化方案</h2><table><thead><tr><th>场景</th><th>推荐</th></tr></thead><tbody><tr><td>公有云 IaaS</td><td>KVM + 自研管理面（参考 AWS Nitro &#x2F; 阿里神龙）</td></tr><tr><td>私有云</td><td>OpenStack + KVM 或国产替代（华为 &#x2F; 深信服 &#x2F; H3C）</td></tr><tr><td>VMware 替换</td><td>Proxmox VE &#x2F; OpenStack &#x2F; 国产虚拟化</td></tr><tr><td>桌面虚拟化</td><td>VMware Horizon &#x2F; Citrix &#x2F; 国产 VDI</td></tr><tr><td>AI 训练 VM</td><td>KVM + GPU 直通 + SR-IOV</td></tr><tr><td>容器优先</td><td>直接 K8s + containerd（无 VM 层）</td></tr></tbody></table><h2 id="第-3-层：容器栈"><a href="#第-3-层：容器栈" class="headerlink" title="第 3 层：容器栈"></a>第 3 层：容器栈</h2><pre class="mermaid">graph TD  Q1{规模和需求?}  Q1 -- "<10 节点" --> S1[Docker Compose / 单机 K8s]  Q1 -- "10-100 节点" --> S2[K8s + Rancher / KubeSphere]  Q1 -- "100+ 节点" --> S3[K8s + 自建 / 云厂家 K8s]  Q1 -- "AI 训练集群" --> S4[K8s + Volcano / KAI]  Q1 -- "Serverless" --> S5[Knative / Lambda / Fargate]</pre><h2 id="第-4-层：国产化要求"><a href="#第-4-层：国产化要求" class="headerlink" title="第 4 层：国产化要求"></a>第 4 层：国产化要求</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><code class="hljs text">强国产化（党政 / 央企）：     麒麟 V10 / openEuler / UOS<br>中等国产化（国央企互联网）：    龙蜥 / openEuler / 阿里 Alinux<br>弱国产化（互联网商业）：       Ubuntu LTS / Rocky / RHEL<br></code></pre></td></tr></table></figure><h2 id="几个典型场景的清单"><a href="#几个典型场景的清单" class="headerlink" title="几个典型场景的清单"></a>几个典型场景的清单</h2><h3 id="场景-1：传统企业-IT"><a href="#场景-1：传统企业-IT" class="headerlink" title="场景 1：传统企业 IT"></a>场景 1：传统企业 IT</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs text">OS：           RHEL 9（订阅）或 Rocky Linux 9（免费）<br>虚拟化：        VMware vSphere（已有）或 Proxmox VE（替代）<br>容器：         少量（基本用 VM）<br>管理：         vCenter / Ansible<br>预算：         订阅 + 服务约 ¥几百万 / 年<br></code></pre></td></tr></table></figure><h3 id="场景-2：互联网中型"><a href="#场景-2：互联网中型" class="headerlink" title="场景 2：互联网中型"></a>场景 2：互联网中型</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><code class="hljs text">宿主机 OS：     Ubuntu 22.04 LTS / 龙蜥 8<br>虚拟化：        KVM + libvirt + OpenStack（或自研）<br>容器：         containerd + K8s 1.30+<br>CNI：          Cilium 或 Calico<br>存储：         Ceph + 本地 NVMe<br>监控：         Prometheus + Grafana + Loki<br>预算：         开源为主，运维团队 + 商业支持<br></code></pre></td></tr></table></figure><h3 id="场景-3：AI-训练集群"><a href="#场景-3：AI-训练集群" class="headerlink" title="场景 3：AI 训练集群"></a>场景 3：AI 训练集群</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><code class="hljs text">OS：           Ubuntu 22.04 LTS（NVIDIA 官方支持最好）<br>内核：         6.x（GPU 驱动 + IB 模块）<br>容器：         containerd + K8s + nvidia-device-plugin<br>调度：         Volcano / KAI Scheduler / Run.ai<br>存储：         WekaFS / Lustre + 本地 NVMe<br>训练框架：      PyTorch + DeepSpeed / Megatron / FSDP<br>监控：         Prometheus + DCGM Exporter<br></code></pre></td></tr></table></figure><h3 id="场景-4：信创私有云"><a href="#场景-4：信创私有云" class="headerlink" title="场景 4：信创私有云"></a>场景 4：信创私有云</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><code class="hljs text">OS：           麒麟 V10 SP3 + openEuler 22.03 LTS<br>虚拟化：        华为 FusionCompute / 深信服 aSV / 新华三 UIS<br>容器：         iSulad + K8s（华为 CCE 衍生）<br>存储：         华为 OceanStor / 浪潮分布式<br>安全：         凝思安全 OS + 国密<br>管理：         国产 IaaS / PaaS 平台<br></code></pre></td></tr></table></figure><h3 id="场景-5：边缘-IoT"><a href="#场景-5：边缘-IoT" class="headerlink" title="场景 5：边缘 &#x2F; IoT"></a>场景 5：边缘 &#x2F; IoT</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><code class="hljs text">OS：           Alpine Linux（容器）/ Yocto（嵌入式）/ Talos<br>容器：         containerd + KubeEdge / K3s<br>更新：         OTA 不可变镜像<br>监控：         轻量化（Prometheus 缩减）<br></code></pre></td></tr></table></figure><h2 id="几个常见的”OS-坑”"><a href="#几个常见的”OS-坑”" class="headerlink" title="几个常见的”OS 坑”"></a>几个常见的”OS 坑”</h2><h3 id="坑-1：选-EOL-的-OS"><a href="#坑-1：选-EOL-的-OS" class="headerlink" title="坑 1：选 EOL 的 OS"></a>坑 1：选 EOL 的 OS</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs text">新部署上 CentOS 7（EOL 2024-06）：     1 年后无补丁<br>新部署上 RHEL 7：     2024-06 EOL<br>新部署上 Ubuntu 18.04：     已 EOL<br><br>正确：     选最新 LTS（RHEL 9 / Ubuntu 24.04 / Rocky 9）<br></code></pre></td></tr></table></figure><h3 id="坑-2：内核过旧不支持新硬件"><a href="#坑-2：内核过旧不支持新硬件" class="headerlink" title="坑 2：内核过旧不支持新硬件"></a>坑 2：内核过旧不支持新硬件</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><code class="hljs text">H100 GPU 需要 NVIDIA driver 535+：     <br>  RHEL 7 内核 3.10 → 装不上<br>  Ubuntu 18.04 内核 4.x → 部分功能不可<br>  <br>NVMe 5.0 SSD：     <br>  需要 5.x+ 内核<br>  <br>ConnectX-7 400G：     <br>  MOFED 25.x+，需要新内核<br></code></pre></td></tr></table></figure><h3 id="坑-3：systemd-不熟"><a href="#坑-3：systemd-不熟" class="headerlink" title="坑 3：systemd 不熟"></a>坑 3：systemd 不熟</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs text">开发用 supervisord 启服务，生产环境过时：     <br>  - 用 systemd unit<br>  - 资源限制 / 重启策略 / 日志都是 systemd<br>  <br>journalctl 不会用：     运维效率低<br></code></pre></td></tr></table></figure><h3 id="坑-4：忽视-NUMA"><a href="#坑-4：忽视-NUMA" class="headerlink" title="坑 4：忽视 NUMA"></a>坑 4：忽视 NUMA</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><code class="hljs text">8 GPU 服务器跨 NUMA 不绑定：     <br>  - DataLoader 性能损失 30%<br>  - Database 性能损失 20%<br>  - 网卡跨 socket 损失 30-50%<br><br>调优：     Topology Manager / numactl / taskset 三件套<br></code></pre></td></tr></table></figure><h3 id="坑-5：cgroup-v1-v2-混用"><a href="#坑-5：cgroup-v1-v2-混用" class="headerlink" title="坑 5：cgroup v1 &#x2F; v2 混用"></a>坑 5：cgroup v1 &#x2F; v2 混用</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><code class="hljs text">RHEL 8 / Ubuntu 22.04 默认 v2：     <br>  - K8s 1.25+ 需要 v2<br>  - 老的 Docker 可能不兼容<br>  <br>迁移：     <br>  - GRUB 加 systemd.unified_cgroup_hierarchy=1<br>  - Docker / containerd 升级<br></code></pre></td></tr></table></figure><h3 id="坑-6：默认-ulimit-太低"><a href="#坑-6：默认-ulimit-太低" class="headerlink" title="坑 6：默认 ulimit 太低"></a>坑 6：默认 ulimit 太低</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs text">默认 nofile 1024：     高并发立刻崩<br>默认 nproc：           容器多 worker 不够<br>默认 memlock：         RDMA / NCCL 报错<br><br>修复：     /etc/security/limits.conf 调大<br></code></pre></td></tr></table></figure><h3 id="坑-7：把所有应用塞到一台-OS"><a href="#坑-7：把所有应用塞到一台-OS" class="headerlink" title="坑 7：把所有应用塞到一台 OS"></a>坑 7：把所有应用塞到一台 OS</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs text">单台物理机 → 一个 OS → 跑很多应用：     <br>  - 资源争用<br>  - 升级困难<br>  - 故障爆炸半径大<br>  <br>正确：     <br>  - 物理机 → 一个 Hypervisor / 容器 host<br>  - 应用跑容器或 VM 里<br></code></pre></td></tr></table></figure><h2 id="一些性能直觉数字"><a href="#一些性能直觉数字" class="headerlink" title="一些性能直觉数字"></a>一些性能直觉数字</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br></pre></td><td class="code"><pre><code class="hljs text">启动时间：     <br>  RHEL 9 + systemd：     30 秒<br>  Ubuntu 22.04：         20 秒<br>  K8s Pod 启动（含调度）： 1-3 秒<br>  Firecracker μVM：       125 ms<br>  OCI 容器：             100-500 ms<br><br>资源占用：     <br>  RHEL 9 最小安装：       1.5 GB<br>  Alpine：               5-10 MB<br>  K8s 控制面（小集群）：    1-2 vCPU / 4 GB<br>  K8s 控制面（万节点）：    16+ vCPU / 64 GB<br><br>性能损失：     <br>  KVM 虚拟化：           &lt;2-5%<br>  KVM + virtio：         &lt;5%（IO）<br>  容器：                 &lt;1%<br>  KVM + SR-IOV：         &lt;5%<br>  Kata Container：        ~5%<br>  gVisor：               20-30%（用户态内核）<br></code></pre></td></tr></table></figure><h2 id="OS-升级的实战建议"><a href="#OS-升级的实战建议" class="headerlink" title="OS 升级的实战建议"></a>OS 升级的实战建议</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br></pre></td><td class="code"><pre><code class="hljs text">1. 升级前评估：     <br>   - 应用依赖（glibc / Python / Java 等）<br>   - 第三方驱动（NVIDIA / Mellanox）<br>   - 老的内核模块（kABI 兼容）<br>   <br>2. 测试环境先验证：     <br>   - 同 OS 同硬件克隆<br>   - 完整业务功能测试<br>   - 性能回归测试<br>   <br>3. 滚动升级：     <br>   - 不要全量升级<br>   - 一个机柜先升，观察 1 周<br>   - 然后下一批<br>   <br>4. 回滚预案：     <br>   - 保留旧镜像<br>   - 备份配置<br>   - 文档化升级步骤<br></code></pre></td></tr></table></figure><h2 id="第七章整体小结"><a href="#第七章整体小结" class="headerlink" title="第七章整体小结"></a>第七章整体小结</h2><p>回看第七章覆盖：</p><ol><li><strong>Linux 服务器 OS 演进</strong> — RHEL &#x2F; Debian &#x2F; SUSE 三大家族 + systemd</li><li><strong>虚拟化</strong> — KVM &#x2F; Xen &#x2F; Hyper-V + SR-IOV &#x2F; vGPU</li><li><strong>容器与 K8s</strong> — namespace + cgroup，K8s 调度模型</li><li><strong>内核内部</strong> — 调度器 &#x2F; 网络栈 &#x2F; 文件系统 &#x2F; 内存管理</li><li><strong>AI 时代 OS 适配</strong> — GPU 调度 &#x2F; NUMA &#x2F; 大模型训练</li><li><strong>国产服务器 OS</strong> — 欧拉 &#x2F; 麒麟 &#x2F; 龙蜥 &#x2F; 统信</li><li><strong>OS 选型与小结</strong>（本篇）</li></ol><p>几条贯穿全章的主线：</p><pre class="mermaid">graph LR  HW[硬件]  HV[Hypervisor / 容器引擎]  HOST[Host OS]  ORCH[K8s / 调度器]  APP[应用]    HW --> HOST  HOST --> HV --> ORCH --> APP</pre><p><strong>核心认知</strong>：</p><ul><li>Linux 是服务器市场绝对主流</li><li>systemd &#x2F; cgroup v2 &#x2F; eBPF &#x2F; io_uring 是近 10 年最重要的内核新特性</li><li>KVM + containerd + K8s 是事实标准 stack</li><li>AI 时代 OS 要管 GPU &#x2F; NUMA 拓扑 &#x2F; 大 IO</li><li>国产 OS（欧拉 + 麒麟 + 龙蜥）已能完整覆盖政企 + 互联网</li></ul><h2 id="OS-未来-2-3-年趋势"><a href="#OS-未来-2-3-年趋势" class="headerlink" title="OS 未来 2-3 年趋势"></a>OS 未来 2-3 年趋势</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><code class="hljs text">1. RHEL 10 引入（2025-2026）—— ARM64 第一公民<br>2. Linux 内核 6.x LTS 取代 5.15 LTS<br>3. EEVDF 完全取代 CFS<br>4. cgroup v2 全面普及<br>5. eBPF + Cilium 取代 iptables<br>6. io_uring 在数据库 / 存储成为默认<br>7. Confidential VM（机密计算）从研究走向生产<br>8. 不可变 OS（Talos / Bottlerocket / NixOS）增长<br>9. 国产 OS（openEuler / 龙蜥）海外影响力提升<br>10. AI 集群专用 OS 镜像逐步标准化<br></code></pre></td></tr></table></figure><h2 id="不可变-OS-的兴起"><a href="#不可变-OS-的兴起" class="headerlink" title="不可变 OS 的兴起"></a>不可变 OS 的兴起</h2><p>值得单独提一句：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><code class="hljs text">传统 OS：     可读写根文件系统，apt/dnf 装包<br>不可变 OS：     根文件系统只读，整体镜像更新<br><br>代表：     <br>  Container Optimized OS（GCP）<br>  Bottlerocket（AWS）<br>  Talos（K8s 专用）<br>  Flatcar Linux（前 CoreOS）<br>  NixOS（声明式）<br>  openEuler 镜像版（探索中）<br><br>优势：     <br>  - 故障状态可预测<br>  - 升级 = 替换镜像<br>  - 适合 K8s / 大规模车队管理<br></code></pre></td></tr></table></figure><h2 id="给读者的实战建议"><a href="#给读者的实战建议" class="headerlink" title="给读者的实战建议"></a>给读者的实战建议</h2><p>如果你在公司负责 OS 标准化：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><code class="hljs text">1. 选好 LTS 版本，不要追新（RHEL 9 / Ubuntu 24.04）<br>2. 标准化基础镜像（包 + 配置 + 监控 agent）<br>3. 内核参数 / limits 用 Ansible / Salt 推送<br>4. 定期 CVE 扫描和补丁<br>5. 容器化业务，VM 只跑基础设施<br>6. K8s 集群 &lt; 5000 节点，超就上联邦<br>7. 国产化按业务等级分层<br>8. AI 集群单独标准化（与传统业务隔离）<br>9. 监控 + 日志 + tracing 三件套不能省<br>10. 备份和灾难恢复演练 1 次 / 季度<br></code></pre></td></tr></table></figure><blockquote><p>待补充：你公司或项目内的 OS 选型决策。</p></blockquote><h2 id="第七章结束"><a href="#第七章结束" class="headerlink" title="第七章结束"></a>第七章结束</h2><p>下一章进入<strong>第八章 可信计算</strong>。会重点讲：</p><ul><li>TPM &#x2F; TCM 基础</li><li>Secure Boot &#x2F; Measured Boot &#x2F; IMA</li><li>TEE（Intel SGX &#x2F; TDX、AMD SEV &#x2F; SEV-SNP、ARM TrustZone &#x2F; CCA、海光 CSV）</li><li>机密计算（Confidential VM &#x2F; Confidential Container）</li><li>国产可信计算（TCM &#x2F; TPCM &#x2F; 海光 CSV &#x2F; 鲲鹏）</li><li>DICE &#x2F; SPDM &#x2F; Attestation</li></ul><p>Chapter 7 done.</p>]]>
    </content>
    <id>http://localhost:4000/posts/974693c6/</id>
    <link href="http://localhost:4000/posts/974693c6/"/>
    <published>2026-02-22T03:15:00.000Z</published>
    <summary>把第七章 6 篇连起来——按业务实际怎么选 OS、虚拟化、容器栈。本篇是第七章收口。</summary>
    <title>OS 选型实战与第七章小结</title>
    <updated>2026-05-24T13:49:48.031Z</updated>
  </entry>
  <entry>
    <category term="07-操作系统" scheme="http://localhost:4000/categories/07-%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/"/>
    <category term="信创" scheme="http://localhost:4000/tags/%E4%BF%A1%E5%88%9B/"/>
    <category term="openEuler" scheme="http://localhost:4000/tags/openEuler/"/>
    <category term="麒麟" scheme="http://localhost:4000/tags/%E9%BA%92%E9%BA%9F/"/>
    <category term="龙蜥" scheme="http://localhost:4000/tags/%E9%BE%99%E8%9C%A5/"/>
    <category term="统信" scheme="http://localhost:4000/tags/%E7%BB%9F%E4%BF%A1/"/>
    <content>
      <![CDATA[<p>CentOS 8 提前 EOL（2021）+ 信创需求 &#x3D; 国产服务器 OS 的爆发期。本文盘点主流国产 Linux 发行版及其差异。</p><!-- more --><h2 id="一张全景"><a href="#一张全景" class="headerlink" title="一张全景"></a>一张全景</h2><pre class="mermaid">graph TB  CN[国产服务器 OS]  CN --> EU[openEuler 系<br/>华为主导]  CN --> KY[麒麟系<br/>麒麟软件]  CN --> AN[龙蜥系<br/>阿里 + OpenAnolis]  CN --> UO[统信系<br/>统信软件 UOS]  CN --> DP[深度系<br/>Deepin]  CN --> OT[其他]    EU --> EU1[openEuler<br/>开源社区版]  EU --> EU2[EulerOS<br/>华为商业版]    KY --> KY1[银河麒麟<br/>桌面 + 服务器]  KY --> KY2[中标麒麟<br/>原中标软件]  KY --> KY3[开放麒麟 openKylin<br/>2023 开源社区]    AN --> AN1[Anolis OS<br/>开源社区版]  AN --> AN2[Alinux<br/>阿里云内部]  AN --> AN3[腾讯 OS / 龙蜥衍生]    UO --> UO1[UOS V20 / V21<br/>商业]  UO --> UO2[Deepin → 统信 Deepin]    DP --> DP1[Deepin OS<br/>桌面起家]    OT --> OT1[红旗 Linux<br/>历史]  OT --> OT2[中科方德]  OT --> OT3[凝思安全 OS]</pre><h2 id="openEuler（欧拉）"><a href="#openEuler（欧拉）" class="headerlink" title="openEuler（欧拉）"></a>openEuler（欧拉）</h2><p>华为 2019 年开源的 Linux 发行版：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br></pre></td><td class="code"><pre><code class="hljs text">背景：     <br>  - 起源于华为 EulerOS（华为内部 / 服务器）<br>  - 2019 年 12 月开源<br>  - 2021 年捐给开放原子开源基金会<br><br>特点：     <br>  - 内核基于 Linux 5.10（22.03 LTS）/ 6.6（24.03 LTS）<br>  - 多架构：x86_64 / ARM64 / RISC-V / LoongArch / Power<br>  - 鲲鹏 / 昇腾深度优化<br>  - 全栈虚拟化（StratoVirt）<br>  - 容器（iSulad）<br>  - openGauss 数据库适配<br><br>商业版：     <br>  EulerOS（华为）<br>  麒麟 V10（兼容欧拉）<br>  统信 UOS 部分版本<br>  绿盟 / 麒麟信安 / 中科方德等<br><br>22.03 LTS：     2022 年发布，长期支持<br>24.03 LTS：     2024 年发布<br></code></pre></td></tr></table></figure><h3 id="openEuler-的版本节奏"><a href="#openEuler-的版本节奏" class="headerlink" title="openEuler 的版本节奏"></a>openEuler 的版本节奏</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><code class="hljs text">22.03 LTS：     2022-03，5.10 内核，长期支持到 2026<br>22.03 SP1/2/3：  21-22 年继续 SP 更新<br>24.03 LTS：     2024-03，6.6 内核，长期支持到 2028+<br>26.03 LTS：     预计 2026-03<br><br>每 2 年一个 LTS，与 Ubuntu LTS 节奏类似<br></code></pre></td></tr></table></figure><h3 id="openEuler-的差异化"><a href="#openEuler-的差异化" class="headerlink" title="openEuler 的差异化"></a>openEuler 的差异化</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br></pre></td><td class="code"><pre><code class="hljs text">鲲鹏 / 昇腾原生：     <br>  - 内核优化（NUMA、调度）<br>  - 工具链：     毕昇编译器（BiSheng Compiler，基于 LLVM）<br>  - 与 ARM64 服务器 + 昇腾 GPU 紧密集成<br><br>iSulad：     <br>  - 华为开源的轻量级容器引擎<br>  - 启动比 Docker 快<br>  - 与 Kata 集成<br><br>A-Tune：     <br>  - 智能调优系统<br>  - 自动分析负载，推荐参数<br>  <br>secGear / occlum：     <br>  - 机密计算 SDK<br>  - SGX / TrustZone / 海光 CSV 适配<br></code></pre></td></tr></table></figure><h2 id="麒麟（Kylin）系"><a href="#麒麟（Kylin）系" class="headerlink" title="麒麟（Kylin）系"></a>麒麟（Kylin）系</h2><h3 id="银河麒麟（Kylin-V10）"><a href="#银河麒麟（Kylin-V10）" class="headerlink" title="银河麒麟（Kylin V10）"></a>银河麒麟（Kylin V10）</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><code class="hljs text">出品方：     麒麟软件（中国电科子公司，原天津麒麟 + 中标软件合并）<br>定位：       商业发行版，等保 / 政企信创主流<br>版本：       V10 SP1 / SP2 / SP3 / SP4 (2024)<br><br>特点：     <br>  - 基于 CentOS / Ubuntu 双线<br>  - 华为鲲鹏 / 飞腾 / 海光 / 兆芯 / 龙芯 / 申威 全适配<br>  - 国密算法支持（SM2/3/4/9）<br>  - 等保 2.0 三级<br>  - 与 GooseFS / GBase / 华为云 / 阿里云适配<br><br>商业模式：     卖订阅 + 服务<br>客户：       政府 / 国央企 / 银行 / 军方<br></code></pre></td></tr></table></figure><h3 id="中标麒麟"><a href="#中标麒麟" class="headerlink" title="中标麒麟"></a>中标麒麟</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><code class="hljs text">原中标软件出品，2019 年与天津麒麟合并：     <br>  - 中标麒麟 V7 仍在很多政府部门使用<br>  - 已合并到银河麒麟统一品牌<br></code></pre></td></tr></table></figure><h3 id="openKylin（开放麒麟）"><a href="#openKylin（开放麒麟）" class="headerlink" title="openKylin（开放麒麟）"></a>openKylin（开放麒麟）</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs text">2023 年 6 月发布的社区开源版：     <br>  - 麒麟软件主导<br>  - 完全开源<br>  - 桌面为主<br>  - 服务器版逐步建设<br></code></pre></td></tr></table></figure><h2 id="龙蜥（OpenAnolis）"><a href="#龙蜥（OpenAnolis）" class="headerlink" title="龙蜥（OpenAnolis）"></a>龙蜥（OpenAnolis）</h2><p>阿里云 2020 年发起的开源社区：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br></pre></td><td class="code"><pre><code class="hljs text">背景：     <br>  - CentOS 8 风波后阿里推出 Anolis OS<br>  - 邀请龙蜥社区成员<br>  - 主要由阿里云 / 龙芯 / 统信 / 浪潮 / 中兴等参与<br><br>版本：     <br>  - Anolis OS 7：     CentOS 7 兼容<br>  - Anolis OS 8：     RHEL 8 兼容<br>  - Anolis OS 23（2023）：     6.6 内核<br>  - 24+ ：     最新<br><br>特点：     <br>  - RHEL 兼容（迁移容易）<br>  - 龙蜥 Cloud Kernel 优化<br>  - 阿里云原生：     容器、K8s、OS 协同<br>  - 多 ISA：     x86_64 / ARM64 / 龙芯 LoongArch<br></code></pre></td></tr></table></figure><h3 id="阿里-Alinux"><a href="#阿里-Alinux" class="headerlink" title="阿里 Alinux"></a>阿里 Alinux</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><code class="hljs text">Alinux：     <br>  - 阿里云内部用版本<br>  - 基于 Anolis OS<br>  - 自家服务器 / ECS 默认<br></code></pre></td></tr></table></figure><h3 id="腾讯-OS（TencentOS-Server）"><a href="#腾讯-OS（TencentOS-Server）" class="headerlink" title="腾讯 OS（TencentOS Server）"></a>腾讯 OS（TencentOS Server）</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><code class="hljs text">腾讯系：     <br>  - 基于龙蜥 / RHEL<br>  - 腾讯云内部<br>  - 部分对外发布<br></code></pre></td></tr></table></figure><h2 id="统信-UOS"><a href="#统信-UOS" class="headerlink" title="统信 UOS"></a>统信 UOS</h2><p>统信软件 2019 年成立（中国电子集团子公司）：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><code class="hljs text">UOS：     <br>  - 桌面 + 服务器双产品线<br>  - 桌面：     UOS Desktop（基于 Deepin）<br>  - 服务器：    UOS Server V20 / V21<br>  - 多架构：     x86_64 / ARM64 / 龙芯 / 海光 / 飞腾 / 申威<br>  - 等保 / 国密支持<br><br>定位：     政企信创桌面 + 服务器<br>背景：     国资背景，央企渠道<br>对手：     麒麟（也是央企背景）<br></code></pre></td></tr></table></figure><h2 id="Deepin（深度）"><a href="#Deepin（深度）" class="headerlink" title="Deepin（深度）"></a>Deepin（深度）</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><code class="hljs text">深度社区：     2008 起，桌面 Linux<br>2019 年起被统信收购：     <br>  - Deepin 仍开源<br>  - 同时统信 UOS 商业版基于 Deepin<br>  - DDE（Deepin Desktop Environment）国际口碑好<br><br>服务器版：     主要桌面，服务器市场不强<br></code></pre></td></tr></table></figure><h2 id="其他国产-OS"><a href="#其他国产-OS" class="headerlink" title="其他国产 OS"></a>其他国产 OS</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><code class="hljs text">凝思安全 OS（ENISC）：     <br>  - 等保安全方向<br>  - 政府客户<br><br>中科方德：     <br>  - 中科院系<br>  - 龙芯适配优势<br><br>红旗 Linux：     <br>  - 历史品牌（2000 年代）<br>  - 多次易主<br>  - 现仍在卖<br>  <br>其他小众：     微步、欧拉派生等<br></code></pre></td></tr></table></figure><h2 id="国产-OS-的”两条路线”"><a href="#国产-OS-的”两条路线”" class="headerlink" title="国产 OS 的”两条路线”"></a>国产 OS 的”两条路线”</h2><pre class="mermaid">graph TB  RHEL[RHEL 兼容路线<br/>RPM]  RHEL --> R1[openEuler]  RHEL --> R2[麒麟 V10]  RHEL --> R3[龙蜥 OS]  RHEL --> R4[统信 UOS Server]    DEB[Debian 兼容路线<br/>DEB]  DEB --> D1[Deepin]  DEB --> D2[麒麟桌面]  DEB --> D3[UOS Desktop]</pre><p>服务器主流是 <strong>RHEL 路线</strong>——因为政企客户原本用 CentOS，迁移路径短。</p><h2 id="国产-OS-的”必备特性”"><a href="#国产-OS-的”必备特性”" class="headerlink" title="国产 OS 的”必备特性”"></a>国产 OS 的”必备特性”</h2><pre class="mermaid">graph TB  CN[国产 OS 必备]  CN --> ARCH[多架构支持]  CN --> SEC[国密算法]  CN --> COMP[兼容认证]  CN --> EQ[等保合规]  CN --> SUP[商业服务]    ARCH --> A1[x86_64<br/>海光 / 兆芯]  ARCH --> A2[ARM64<br/>鲲鹏 / 飞腾]  ARCH --> A3[LoongArch<br/>龙芯]  ARCH --> A4[SW64<br/>申威]  ARCH --> A5[RISC-V<br/>未来]    SEC --> S1[SM2 椭圆曲线]  SEC --> S2[SM3 哈希]  SEC --> S3[SM4 对称]  SEC --> S4[SM9 标识密码]</pre><p>国产 OS 都要支持：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs text">1. 至少 5-6 种 CPU 架构<br>2. 国密算法（SM2/3/4/9）<br>3. 等保 / GB 18030 / 中文显示<br>4. 信创目录 / CNAS 认证<br>5. 商业服务 / 7×24 支持<br></code></pre></td></tr></table></figure><h2 id="国产-OS-的兼容性"><a href="#国产-OS-的兼容性" class="headerlink" title="国产 OS 的兼容性"></a>国产 OS 的兼容性</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><code class="hljs text">应用兼容：     <br>  - 大多数 Linux 应用直接跑（同 RHEL/Debian 上游）<br>  - 国产数据库（GaussDB / OceanBase / TDSQL）原生<br>  - 国产中间件 / 中间层<br><br>驱动兼容：     <br>  - x86_64 NVIDIA：     可装驱动，但官方支持差<br>  - 鲲鹏 + 昇腾：     openEuler 最完整<br>  - 海光 DCU：     需要 ROCm 适配<br>  - 摩尔线程 / 寒武纪：     按厂家适配<br><br>包管理：     <br>  - DNF / YUM（RHEL 系）<br>  - APT（Debian 系）<br>  - 国产仓库（mirrors.huaweicloud.com / aliyun.com 等）<br></code></pre></td></tr></table></figure><h2 id="装机命令对比"><a href="#装机命令对比" class="headerlink" title="装机命令对比"></a>装机命令对比</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># openEuler / 麒麟 V10 / 龙蜥（RPM）</span><br>dnf install nginx<br>dnf update<br>dnf list installed<br><br><span class="hljs-comment"># UOS / Deepin（DEB 桌面）</span><br>apt install nginx<br><br><span class="hljs-comment"># 看版本</span><br><span class="hljs-built_in">cat</span> /etc/os-release        <span class="hljs-comment"># 通用</span><br><span class="hljs-built_in">cat</span> /etc/openEuler-release<br><span class="hljs-built_in">cat</span> /etc/kylin-release<br><span class="hljs-built_in">cat</span> /etc/anolis-release<br></code></pre></td></tr></table></figure><h2 id="国产-OS-选型实战"><a href="#国产-OS-选型实战" class="headerlink" title="国产 OS 选型实战"></a>国产 OS 选型实战</h2><pre class="mermaid">graph TD  Q1{业务场景}  Q1 -- "全栈华为生态" --> S1[openEuler / EulerOS]  Q1 -- "央国企政企" --> S2[银河麒麟 V10]  Q1 -- "云原生 / 互联网" --> S3[龙蜥 / 阿里 Alinux]  Q1 -- "桌面 + 服务器一体" --> S4[统信 UOS]  Q1 -- "等保 / 安全" --> S5[凝思 / 麒麟信安]</pre><table><thead><tr><th>场景</th><th>推荐</th><th>原因</th></tr></thead><tbody><tr><td>鲲鹏服务器 + 昇腾</td><td>openEuler</td><td>原生集成</td></tr><tr><td>党政机关、央国企</td><td>麒麟 V10</td><td>政府认可度最高</td></tr><tr><td>阿里云 &#x2F; 腾讯云 ECS</td><td>龙蜥 &#x2F; Alinux</td><td>云原生优化</td></tr><tr><td>飞腾 + 麒麟桌面统一</td><td>麒麟 &#x2F; UOS</td><td>全套国产</td></tr><tr><td>信创 + 数据库国产</td><td>麒麟 &#x2F; 欧拉</td><td>与 GaussDB 兼容</td></tr><tr><td>中小企业 + 节省成本</td><td>Rocky Linux 9（非国产） &#x2F; 龙蜥</td><td>免费稳定</td></tr></tbody></table><h2 id="国产-OS-的”老坑”"><a href="#国产-OS-的”老坑”" class="headerlink" title="国产 OS 的”老坑”"></a>国产 OS 的”老坑”</h2><h3 id="坑-1：版本标注不一致"><a href="#坑-1：版本标注不一致" class="headerlink" title="坑 1：版本标注不一致"></a>坑 1：版本标注不一致</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><code class="hljs text">&quot;麒麟 V10&quot; 实际可能是不同 SP / 不同上游：     <br>  Kylin V10 SP1：     基于 CentOS 7<br>  Kylin V10 SP2：     基于 CentOS 8 衍生<br>  Kylin V10 SP3：     基于 RHEL 9 衍生<br><br>→ 选包要明确 SP 版本<br></code></pre></td></tr></table></figure><h3 id="坑-2：硬件兼容性"><a href="#坑-2：硬件兼容性" class="headerlink" title="坑 2：硬件兼容性"></a>坑 2：硬件兼容性</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs text">NVIDIA GPU 驱动：     <br>  - openEuler / 麒麟较新版本基本 OK<br>  - 老版本可能要自己编译<br>  - 新型号（B200）官方滞后<br>  <br>国产 GPU 驱动：     <br>  - 国产 OS 适配相对完整（昇腾 → openEuler）<br>  - 但跨家组合（海光 + 麒麟）需要厂家联合验证<br></code></pre></td></tr></table></figure><h3 id="坑-3：第三方软件支持"><a href="#坑-3：第三方软件支持" class="headerlink" title="坑 3：第三方软件支持"></a>坑 3：第三方软件支持</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><code class="hljs text">商业软件（Oracle / SAP / Splunk 等）：     <br>  - 部分认证 RHEL / SLES 后才能跑<br>  - 国产 OS 上&quot;能跑但官方不支持&quot;是常态<br>  - 重要业务要求厂家明确支持<br></code></pre></td></tr></table></figure><h3 id="坑-4：内核与上游差异"><a href="#坑-4：内核与上游差异" class="headerlink" title="坑 4：内核与上游差异"></a>坑 4：内核与上游差异</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><code class="hljs text">国产 OS 自带补丁 / patch：     <br>  - 修复 CVE 时序与上游不一致<br>  - 某些性能补丁是定制的<br>  - 升级时要小心 ABI 兼容<br></code></pre></td></tr></table></figure><h3 id="坑-5：包仓库稳定性"><a href="#坑-5：包仓库稳定性" class="headerlink" title="坑 5：包仓库稳定性"></a>坑 5：包仓库稳定性</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><code class="hljs text">某些国产 OS 仓库不稳定：     <br>  - 镜像同步延迟<br>  - 包签名问题<br>  - 需要本地缓存仓库（apt-mirror / dnf-reposync）<br></code></pre></td></tr></table></figure><h2 id="国产-OS-的市场份额（估算）"><a href="#国产-OS-的市场份额（估算）" class="headerlink" title="国产 OS 的市场份额（估算）"></a>国产 OS 的市场份额（估算）</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br></pre></td><td class="code"><pre><code class="hljs text">2026 年估算（信创市场）：     <br>  银河麒麟：     30-40%<br>  openEuler 系（EulerOS / 麒麟欧拉版）：     30-40%<br>  龙蜥 / 阿里 Alinux：     10-15%<br>  统信 UOS：     10-15%<br>  其他：     5%<br>  <br>互联网市场：     <br>  仍以 CentOS 衍生（Rocky / Anolis）+ Ubuntu 为主<br>  阿里 / 腾讯：     主用龙蜥 / Alinux<br>  字节 / 百度 / 美团：     混合，部分自研<br><br>云市场：     <br>  阿里云 / 腾讯云：     龙蜥 / TencentOS 默认<br>  华为云：     openEuler / EulerOS 默认<br>  AWS / Azure 中国：     主要 Linux 发行版<br></code></pre></td></tr></table></figure><blockquote><p>待补充：2025-2026 国产 OS 实际市场份额数据。</p></blockquote><h2 id="与开源社区的关系"><a href="#与开源社区的关系" class="headerlink" title="与开源社区的关系"></a>与开源社区的关系</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br></pre></td><td class="code"><pre><code class="hljs text">openEuler：     <br>  - 完全开源，公开 git<br>  - 上游补丁回馈 kernel.org<br>  - 已是 Linux Foundation 重要贡献者<br><br>龙蜥：     <br>  - 完全开源，公开 git<br>  - 阿里云 / 腾讯主要 PR 提交者<br>  - &quot;Cloud Kernel&quot;是 Linux 内核明显贡献<br><br>麒麟：     <br>  - 部分开源（openKylin 社区）<br>  - 商业 V10 不公开 git<br>  - 内核修改与上游差异多<br><br>统信：     <br>  - Deepin 完全开源<br>  - UOS Server 部分开源<br><br>整体：     openEuler 和龙蜥的开源透明度最高<br></code></pre></td></tr></table></figure><h2 id="信创采购清单的-OS-选型"><a href="#信创采购清单的-OS-选型" class="headerlink" title="信创采购清单的 OS 选型"></a>信创采购清单的 OS 选型</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br></pre></td><td class="code"><pre><code class="hljs text">党政信创目录：     <br>  - 银河麒麟 V10<br>  - 统信 UOS<br>  - openKylin<br><br>央企采购：     <br>  - 麒麟 / 欧拉双轨<br>  - 部分企业用龙蜥<br><br>国企：     <br>  - 多家共存<br>  - 麒麟 + 欧拉占多数<br><br>军方 / 关基：     <br>  - 银河麒麟 + 凝思 / 麒麟信安<br>  - 等保 4 级要求<br></code></pre></td></tr></table></figure><blockquote><p>待补充：你公司或项目内的国产 OS 实际选型。</p></blockquote><h2 id="一些查询命令"><a href="#一些查询命令" class="headerlink" title="一些查询命令"></a>一些查询命令</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 看版本</span><br><span class="hljs-built_in">cat</span> /etc/os-release<br><br><span class="hljs-comment"># 麒麟特有</span><br><span class="hljs-built_in">cat</span> /etc/.kylin-release<br><span class="hljs-built_in">cat</span> /etc/kylin-build<br><br><span class="hljs-comment"># 欧拉特有  </span><br><span class="hljs-built_in">cat</span> /etc/openEuler-release<br><span class="hljs-built_in">cat</span> /etc/issue<br><br><span class="hljs-comment"># 龙蜥</span><br><span class="hljs-built_in">cat</span> /etc/anolis-release<br><br><span class="hljs-comment"># 统信</span><br><span class="hljs-built_in">cat</span> /etc/uos-release<br><br><span class="hljs-comment"># 内核 / 架构</span><br><span class="hljs-built_in">uname</span> -mr<br><br><span class="hljs-comment"># CPU</span><br><span class="hljs-built_in">cat</span> /proc/cpuinfo | grep <span class="hljs-string">&quot;model name&quot;</span> | <span class="hljs-built_in">head</span> -1<br><span class="hljs-comment"># 鲲鹏：HUAWEI Kunpeng 920</span><br><span class="hljs-comment"># 飞腾：FT-2000+/64</span><br><span class="hljs-comment"># 海光：Hygon C86 7185</span><br><span class="hljs-comment"># 龙芯：Loongson-3A5000</span><br><span class="hljs-comment"># 兆芯：ZHAOXIN KX-U6580</span><br><span class="hljs-comment"># 申威：sw_64</span><br></code></pre></td></tr></table></figure><h2 id="国产-OS-的几个特色工具"><a href="#国产-OS-的几个特色工具" class="headerlink" title="国产 OS 的几个特色工具"></a>国产 OS 的几个特色工具</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br></pre></td><td class="code"><pre><code class="hljs text">A-Tune（openEuler）：     <br>  - 智能调优<br>  - atune-adm define / set / list<br><br>iSulad（openEuler）：     <br>  - 轻量容器<br>  - 类似 containerd<br><br>KMI（Kylin Management Interface）：     <br>  - 麒麟管理工具<br>  - 类似 cockpit<br>  <br>龙蜥 SysAK：     <br>  - 系统运维工具集<br>  - 类似 BCC 工具的国产版<br><br>LoongArch 工具链：     <br>  - GCC / glibc 已上游<br>  - LLVM 在适配<br></code></pre></td></tr></table></figure><h2 id="国产-OS-的发展趋势"><a href="#国产-OS-的发展趋势" class="headerlink" title="国产 OS 的发展趋势"></a>国产 OS 的发展趋势</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><code class="hljs text">2024-2026 趋势：     <br>  1. openEuler 与麒麟 V10 路线持续融合（同源）<br>  2. 信创市场 OS 国产化率 &gt; 50%<br>  3. AI 适配成为新战场（昇腾 / 海光 DCU）<br>  4. RISC-V 支持成为差异化点<br>  5. 云原生 OS（轻量 + 不可变）开始出现<br>  6. 桌面国产化（UOS / 麒麟桌面）持续渗透<br><br>2027+ 看点：     <br>  1. RHEL 10 引入 ARM64 第一公民 → 影响国产 OS<br>  2. 龙芯 LoongArch 持续完善<br>  3. AI 加速器原生 OS 集成<br>  4. 与 Anduril / 国密 / 关基生态融合<br></code></pre></td></tr></table></figure><h2 id="小结"><a href="#小结" class="headerlink" title="小结"></a>小结</h2><ul><li>国产服务器 OS 主流四家：openEuler、麒麟 V10、龙蜥、统信</li><li>都基于 RHEL &#x2F; CentOS 上游，但各自有内核优化</li><li>openEuler 和龙蜥开源透明度最高</li><li>麒麟在政府 &#x2F; 央企认可度最高</li><li>信创市场国产 OS 已超 50%，互联网仍以 CentOS 衍生 + Ubuntu 为主</li><li>国产 GPU（昇腾、海光、寒武纪）与国产 OS 深度集成</li></ul><p>下一篇是第七章收口——OS 选型与第七章小结。</p>]]>
    </content>
    <id>http://localhost:4000/posts/7f383b8e/</id>
    <link href="http://localhost:4000/posts/7f383b8e/"/>
    <published>2026-02-15T15:25:00.000Z</published>
    <summary>CentOS Stream 风波 + 信创 = 国产服务器 OS 的爆发期。本文盘点 openEuler、麒麟、龙蜥、统信、深度等主流国产 Linux 发行版。</summary>
    <title>国产服务器 OS —— 欧拉、麒麟、龙蜥、统信</title>
    <updated>2026-05-24T13:49:48.031Z</updated>
  </entry>
  <entry>
    <category term="07-操作系统" scheme="http://localhost:4000/categories/07-%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/"/>
    <category term="GPU 调度" scheme="http://localhost:4000/tags/GPU-%E8%B0%83%E5%BA%A6/"/>
    <category term="vGPU" scheme="http://localhost:4000/tags/vGPU/"/>
    <category term="NPU" scheme="http://localhost:4000/tags/NPU/"/>
    <category term="AI 集群 OS" scheme="http://localhost:4000/tags/AI-%E9%9B%86%E7%BE%A4-OS/"/>
    <content>
      <![CDATA[<p>服务器 OS 过去 20 年都是为 CPU + 网卡 + 磁盘设计的。AI 时代加进来了 GPU、NPU、HBM、NVLink 这些新东西——OS 需要适配。本文从 GPU 调度讲到大模型训练 OS 优化。</p><!-- more --><h2 id="AI-时代-OS-的新挑战"><a href="#AI-时代-OS-的新挑战" class="headerlink" title="AI 时代 OS 的新挑战"></a>AI 时代 OS 的新挑战</h2><pre class="mermaid">graph TB  TRAD[传统服务器 OS]  TRAD --> T1[CPU 调度]  TRAD --> T2[内存管理]  TRAD --> T3[文件 / 网络 IO]    AI[AI 时代追加]  AI --> A1[GPU / NPU 调度]  AI --> A2[HBM 内存管理]  AI --> A3[GPUDirect / NVLink]  AI --> A4[NUMA + GPU 拓扑]  AI --> A5[大量 IO（数据集 / checkpoint）]  AI --> A6[超大进程地址空间]</pre><h2 id="GPU-设备文件"><a href="#GPU-设备文件" class="headerlink" title="GPU 设备文件"></a>GPU 设备文件</h2><p>NVIDIA GPU 在 Linux 下表现为字符设备：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-built_in">ls</span> -la /dev/nvidia*<br><span class="hljs-comment"># /dev/nvidia0</span><br><span class="hljs-comment"># /dev/nvidia1</span><br><span class="hljs-comment"># /dev/nvidiactl</span><br><span class="hljs-comment"># /dev/nvidia-uvm</span><br><span class="hljs-comment"># /dev/nvidia-uvm-tools</span><br><span class="hljs-comment"># /dev/nvidia-modeset</span><br><br><span class="hljs-comment"># 设备权限和容器：</span><br><span class="hljs-built_in">ls</span> /dev/dri/<br><span class="hljs-comment"># /dev/dri/card0          # DRM 设备</span><br><span class="hljs-comment"># /dev/dri/renderD128     # 渲染节点</span><br></code></pre></td></tr></table></figure><p>容器里要把这些设备 mount 进去——<strong><code>nvidia-container-toolkit</code></strong> 自动做这件事：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># Docker 用</span><br>docker run --gpus all nvidia/cuda:12.4-base nvidia-smi<br>docker run --gpus <span class="hljs-string">&#x27;&quot;device=0,1&quot;&#x27;</span> ...<br><br><span class="hljs-comment"># K8s 用 nvidia-device-plugin</span><br>kubectl describe node &lt;node&gt;<br><span class="hljs-comment"># Allocatable: nvidia.com/gpu: 8</span><br><br><span class="hljs-comment"># Pod 申请</span><br>resources:<br>  limits:<br>    nvidia.com/gpu: 1<br></code></pre></td></tr></table></figure><h2 id="GPU-资源在-K8s-里的模型"><a href="#GPU-资源在-K8s-里的模型" class="headerlink" title="GPU 资源在 K8s 里的模型"></a>GPU 资源在 K8s 里的模型</h2><pre class="mermaid">graph TB  PLUGIN[nvidia-device-plugin<br/>DaemonSet]  PLUGIN --> EXPOSE[暴露 nvidia.com/gpu 资源]  EXPOSE --> SCHED[K8s Scheduler<br/>按 GPU 数量调度]  SCHED --> POD[Pod 申请 GPU]  POD --> RUNTIME[nvidia-container-runtime<br/>映射设备]</pre><p>这个模型有几个<strong>根本问题</strong>：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><code class="hljs text">1. 整数粒度：     一个 Pod 只能要 1/2/4/8 个 GPU<br>   → 小模型推理浪费 GPU 资源<br><br>2. 单 GPU 不可分享：     <br>   → 一个 Pod 占整张卡<br>   <br>3. 没有拓扑感知：     <br>   → 8 GPU Pod 可能跨 NUMA<br>   → NCCL 性能受影响<br></code></pre></td></tr></table></figure><h2 id="GPU-资源细分：MIG-vGPU-Time-Slicing"><a href="#GPU-资源细分：MIG-vGPU-Time-Slicing" class="headerlink" title="GPU 资源细分：MIG &#x2F; vGPU &#x2F; Time-Slicing"></a>GPU 资源细分：MIG &#x2F; vGPU &#x2F; Time-Slicing</h2><p>第 7.2 已经讲过——这里讲 K8s 层适配：</p><pre class="mermaid">graph TB  GPU[GPU 资源细分]  GPU --> MIG[NVIDIA MIG<br/>硬件级]  GPU --> VGPU[NVIDIA vGPU<br/>软件许可]  GPU --> TS[Time-Slicing<br/>K8s 软件]  GPU --> MPS[CUDA MPS<br/>进程级]</pre><h3 id="MIG（A100-H100）"><a href="#MIG（A100-H100）" class="headerlink" title="MIG（A100&#x2F;H100）"></a>MIG（A100&#x2F;H100）</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 启用 MIG</span><br>nvidia-smi -i 0 -mig 1<br>nvidia-smi mig -cgi 9,9,9   <span class="hljs-comment"># 创建 3 个 1g.10gb</span><br><br><span class="hljs-comment"># K8s 看到</span><br>nvidia.com/mig-1g.10gb<br>nvidia.com/mig-2g.20gb<br>nvidia.com/mig-3g.40gb<br></code></pre></td></tr></table></figure><p>MIG 后每个实例独立显存、SM、L2 缓存——<strong>真正的硬件隔离</strong>。</p><h3 id="Time-Slicing"><a href="#Time-Slicing" class="headerlink" title="Time-Slicing"></a>Time-Slicing</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><code class="hljs text">nvidia-device-plugin 配置：<br>  sharing:<br>    timeSlicing:<br>      replicas: 4           # 每张 GPU 切成 4 份<br><br>K8s 看到：     8 GPU 节点 → 32 个 nvidia.com/gpu<br><br>适合：     推理 / 开发<br>不适合：    训练（互相抢，性能不可预测）<br></code></pre></td></tr></table></figure><h3 id="CUDA-MPS（Multi-Process-Service）"><a href="#CUDA-MPS（Multi-Process-Service）" class="headerlink" title="CUDA MPS（Multi-Process Service）"></a>CUDA MPS（Multi-Process Service）</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs text">MPS：     多个 CUDA 进程共享一张 GPU<br>启用：     nvidia-cuda-mps-control -d<br>应用：     HPC 多进程任务<br><br>K8s 集成：     部分插件支持<br></code></pre></td></tr></table></figure><h3 id="NVIDIA-GPU-Operator"><a href="#NVIDIA-GPU-Operator" class="headerlink" title="NVIDIA GPU Operator"></a>NVIDIA GPU Operator</h3><p>K8s 上 GPU 全栈管理：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><code class="hljs text">nvidia-gpu-operator 包含：     <br>  - Driver Container（容器化驱动）<br>  - Device Plugin<br>  - DCGM Exporter（监控）<br>  - GPU Feature Discovery（标签）<br>  - MIG Manager<br>  - Network Operator（GPUDirect）<br></code></pre></td></tr></table></figure><p>一键部署整个 GPU stack——<strong>但有性能开销和 license 复杂度</strong>。</p><h2 id="NUMA-aware-调度：GPU-拓扑"><a href="#NUMA-aware-调度：GPU-拓扑" class="headerlink" title="NUMA-aware 调度：GPU 拓扑"></a>NUMA-aware 调度：GPU 拓扑</h2><p>8 GPU 服务器 GPU ↔ CPU 的拓扑：</p><pre class="mermaid">graph TB  CPU0[CPU Socket 0<br/>NUMA 0] --- PCIe0[PCIe Switch 0]  CPU1[CPU Socket 1<br/>NUMA 1] --- PCIe1[PCIe Switch 1]    PCIe0 --- G0[GPU 0] & G1[GPU 1] & G2[GPU 2] & G3[GPU 3]  PCIe1 --- G4[GPU 4] & G5[GPU 5] & G6[GPU 6] & G7[GPU 7]    G0 ---|NVLink| G4  G1 ---|NVLink| G5  ...</pre><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 看 GPU NUMA 关联</span><br>nvidia-smi topo -m<br><br><span class="hljs-comment"># 输出矩阵：</span><br><span class="hljs-comment"># X = self</span><br><span class="hljs-comment"># NV1-18 = NVLink 链路数</span><br><span class="hljs-comment"># PXB = PCIe Switch</span><br><span class="hljs-comment"># PIX = PCIe Adjacent</span><br><span class="hljs-comment"># SYS = 跨 NUMA / 跨 CPU</span><br><span class="hljs-comment"># NODE = 同 NUMA</span><br></code></pre></td></tr></table></figure><p>调度的智慧：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><code class="hljs text">- DataLoader 进程绑到 GPU 同侧 NUMA 的 CPU 上<br>- 内存分配也要 NUMA-bind<br>- 否则 PCIe 跨 socket 性能崩 30-50%<br></code></pre></td></tr></table></figure><h2 id="CPU-pinning-for-AI"><a href="#CPU-pinning-for-AI" class="headerlink" title="CPU pinning for AI"></a>CPU pinning for AI</h2><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><code class="hljs python"><span class="hljs-comment"># PyTorch DataLoader</span><br><span class="hljs-keyword">import</span> os<br><span class="hljs-keyword">import</span> torch<br><br><span class="hljs-comment"># DataLoader workers 绑核</span><br>os.sched_setaffinity(<span class="hljs-number">0</span>, &#123;<span class="hljs-number">0</span>, <span class="hljs-number">1</span>, <span class="hljs-number">2</span>, <span class="hljs-number">3</span>, <span class="hljs-number">4</span>, <span class="hljs-number">5</span>, <span class="hljs-number">6</span>, <span class="hljs-number">7</span>&#125;)<br><br><span class="hljs-comment"># 也可以用 numactl</span><br><span class="hljs-comment"># numactl --cpunodebind=0 --membind=0 python train.py</span><br></code></pre></td></tr></table></figure><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 容器层面 NUMA 绑定</span><br>docker run --cpuset-cpus=0-15 --cpuset-mems=0 ...<br><br><span class="hljs-comment"># K8s 通过 Topology Manager</span><br>kubelet --topology-manager-policy=single-numa-node<br></code></pre></td></tr></table></figure><p>K8s 1.18+ 支持 <strong>Topology Manager</strong>——同时考虑 CPU + GPU + 网卡的 NUMA 亲和。</p><h2 id="GPUDirect-在-OS-层"><a href="#GPUDirect-在-OS-层" class="headerlink" title="GPUDirect 在 OS 层"></a>GPUDirect 在 OS 层</h2><p>GPUDirect RDMA 让网卡直接读写 GPU 显存——OS 要做的事：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><code class="hljs text">1. peer_mem 模块加载：     <br>   modprobe nvidia_peermem<br>   <br>2. GPU BAR 暴露给 PCIe peer-to-peer：     <br>   # nvidia-smi -q | grep -i bar<br>   <br>3. PCIe ACS 关闭：     <br>   # 否则 ACS 阻断 P2P<br>   setpci -s &lt;BDF&gt; ECAP_ACS+0x6.w=0:1f0<br><br>4. IOMMU 设置：     <br>   intel_iommu=on iommu=pt    # passthrough 模式<br></code></pre></td></tr></table></figure><h3 id="GPUDirect-Storage（GDS）"><a href="#GPUDirect-Storage（GDS）" class="headerlink" title="GPUDirect Storage（GDS）"></a>GPUDirect Storage（GDS）</h3><p>GPU 直接读 NVMe：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><code class="hljs text">GDS：     <br>  - cuFile API<br>  - 绕过 CPU 内存<br>  - 大数据集训练加速<br>  - PyTorch / NVIDIA DALI 支持<br><br>要求：     <br>  - NVIDIA MOFED 驱动<br>  - GPU + NVMe 在同一 PCIe Switch（理想）<br>  - 内核 5.x+<br></code></pre></td></tr></table></figure><h2 id="OS-对-HBM-的态度"><a href="#OS-对-HBM-的态度" class="headerlink" title="OS 对 HBM 的态度"></a>OS 对 HBM 的态度</h2><p>GPU 显存（HBM）是<strong>不归 Linux 内核管的</strong>：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><code class="hljs text">Linux 看到：     主机 DRAM<br>GPU 显存：       由 NVIDIA driver / CUDA Runtime 管<br>  - cudaMalloc<br>  - 不在 vmstat / free 里显示<br>  - nvidia-smi 看<br>  <br>Unified Memory（CUDA UM）：     <br>  - 假装 CPU/GPU 共用内存<br>  - 实际是 driver 在背后搬数据<br>  - 大模型训练用得少（性能不可控）<br></code></pre></td></tr></table></figure><p>CXL 时代会改变这个——<strong>未来 GPU 显存可能”挂到 CPU 主存空间”</strong>：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><code class="hljs text">CXL Type 3 远端内存设备：     <br>  - 暴露成普通 NUMA 节点<br>  - Linux 直接 mmap<br><br>CXL 上挂 HBM：     <br>  - 实验性，B200 后可能<br>  - 会改变 OS 对显存的认知<br></code></pre></td></tr></table></figure><h2 id="大文件-大内存：调优"><a href="#大文件-大内存：调优" class="headerlink" title="大文件 &#x2F; 大内存：调优"></a>大文件 &#x2F; 大内存：调优</h2><p>大模型训练对 OS 的特殊压力：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br></pre></td><td class="code"><pre><code class="hljs text">模型权重文件：     <br>  Llama 70B FP16 = 140 GB<br>  GPT-3 175B = 350 GB<br>  → 单文件超过 100 GB 是常态<br>  <br>   ext4 / XFS 都没问题，但读写要：<br>  - 大块 IO（≥ 1 MB）<br>  - O_DIRECT 跳过 page cache<br>  - 多线程并行<br><br>进程地址空间：     <br>  PyTorch 训练进程：     1-2 TB 虚拟内存<br>  Linux 默认 64 TB 上限够用<br>  <br>mmap 支持：     <br>  CUDA Runtime 用 mmap 管 page-locked memory<br>  vm.max_map_count 要调大：<br>  sysctl vm.max_map_count=1048576<br></code></pre></td></tr></table></figure><h2 id="训练专用的-K8s-调度"><a href="#训练专用的-K8s-调度" class="headerlink" title="训练专用的 K8s 调度"></a>训练专用的 K8s 调度</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><code class="hljs text">普通 K8s scheduler 缺陷：     <br>  - 不懂 gang scheduling（几十个 Pod 要&quot;全部启动 OR 不启动&quot;）<br>  - 不懂拓扑（同 Pod 的 GPU 应该 NVLink 互联）<br>  - 不懂训练队列优先级<br><br>AI 专用调度器：     <br>  Volcano（华为 + 社区）：     gang scheduling<br>  Yunikorn：                  Apache 的多租户<br>  KAI Scheduler（NVIDIA Run.ai）：    GPU 池化<br>  Kueue（K8s 官方）：          Job Queueing<br></code></pre></td></tr></table></figure><h3 id="Gang-Scheduling"><a href="#Gang-Scheduling" class="headerlink" title="Gang Scheduling"></a>Gang Scheduling</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><code class="hljs text">传统 K8s：     一次调一个 Pod<br>Gang：         一组 Pod 必须同时调度<br><br>应用：     <br>  - 分布式训练（128 个 worker 必须一起启）<br>  - MPI 作业<br>  - RAY / Dask 集群<br><br>不 gang scheduling 时：     <br>  - 部分 Pod 已启动，等其他<br>  - 占资源不释放<br>  - 集群死锁<br></code></pre></td></tr></table></figure><h2 id="训练相关的内核参数"><a href="#训练相关的内核参数" class="headerlink" title="训练相关的内核参数"></a>训练相关的内核参数</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 共享内存（PyTorch DataLoader 用）</span><br>sysctl kernel.shmmax=1099511627776   <span class="hljs-comment"># 1 TB</span><br><span class="hljs-built_in">echo</span> <span class="hljs-string">&quot;16G&quot;</span> &gt; /sys/fs/cgroup/&lt;group&gt;/shm.size<br><br><span class="hljs-comment"># 文件描述符</span><br><span class="hljs-built_in">ulimit</span> -n 1048576<br><span class="hljs-built_in">echo</span> <span class="hljs-string">&quot;* soft nofile 1048576&quot;</span> &gt;&gt; /etc/security/limits.conf<br><span class="hljs-built_in">echo</span> <span class="hljs-string">&quot;* hard nofile 1048576&quot;</span> &gt;&gt; /etc/security/limits.conf<br><br><span class="hljs-comment"># 进程数</span><br><span class="hljs-built_in">ulimit</span> -u unlimited<br><span class="hljs-built_in">echo</span> <span class="hljs-string">&quot;* soft nproc unlimited&quot;</span> &gt;&gt; /etc/security/limits.conf<br><br><span class="hljs-comment"># 内存锁定（GPUDirect 需要）</span><br><span class="hljs-built_in">ulimit</span> -l unlimited<br><span class="hljs-built_in">echo</span> <span class="hljs-string">&quot;* soft memlock unlimited&quot;</span> &gt;&gt; /etc/security/limits.conf<br><span class="hljs-built_in">echo</span> <span class="hljs-string">&quot;* hard memlock unlimited&quot;</span> &gt;&gt; /etc/security/limits.conf<br><br><span class="hljs-comment"># 大页</span><br>vm.nr_hugepages = 8192<br><br><span class="hljs-comment"># 网络（NCCL / IB）</span><br>net.core.rmem_max = 268435456<br>net.core.wmem_max = 268435456<br>net.core.netdev_max_backlog = 30000<br></code></pre></td></tr></table></figure><h2 id="NPU-调度：昇腾-寒武纪等"><a href="#NPU-调度：昇腾-寒武纪等" class="headerlink" title="NPU 调度：昇腾 &#x2F; 寒武纪等"></a>NPU 调度：昇腾 &#x2F; 寒武纪等</h2><p>国产 NPU 的 OS 适配：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br></pre></td><td class="code"><pre><code class="hljs text">华为昇腾（Ascend）：     <br>  - /dev/davinci0 ~ N<br>  - npu-smi 工具<br>  - K8s ascend-device-plugin<br>  - resources.limits: huawei.com/Ascend910<br><br>寒武纪（Cambricon）：     <br>  - /dev/cambricon_dev*<br>  - cnmon 工具<br>  - K8s cambricon-device-plugin<br>  - resources.limits: cambricon.com/mlu<br><br>摩尔线程：     <br>  - /dev/mtgpu*<br>  - mthreads-gmi<br>  - K8s mthreads-device-plugin<br><br>各家 device-plugin 仿照 NVIDIA 风格，但生态成熟度差异大。<br></code></pre></td></tr></table></figure><h2 id="checkpoint-断点续训"><a href="#checkpoint-断点续训" class="headerlink" title="checkpoint &#x2F; 断点续训"></a>checkpoint &#x2F; 断点续训</h2><p>大模型训练常见操作——<strong>对 OS IO 子系统的考验</strong>：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br></pre></td><td class="code"><pre><code class="hljs text">checkpoint 写入：     <br>  - 70B FP16 模型：     ~140 GB<br>  - 训练优化器状态：     280-400 GB<br>  - 激活值 / 元数据：     几十 GB<br>  - 总：     500 GB - 1 TB / checkpoint<br>  - 频率：     每 1-2 小时一次<br><br>要求：     <br>  - 高速文件系统：     Lustre / WekaFS / GPFS<br>  - 网络足够（万卡级用 InfiniBand 写）<br>  - 所有 GPU 同时写 → 集合 IO<br><br>故障恢复：     <br>  - 节点挂了 → 训练框架自动从最近 checkpoint 恢复<br>  - PyTorch FSDP / DeepSpeed 都有此能力<br>  - SLA：     一次故障 &lt; 30 分钟恢复<br></code></pre></td></tr></table></figure><h2 id="监控：DCGM-Prometheus"><a href="#监控：DCGM-Prometheus" class="headerlink" title="监控：DCGM &#x2F; Prometheus"></a>监控：DCGM &#x2F; Prometheus</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br></pre></td><td class="code"><pre><code class="hljs text">DCGM（Data Center GPU Manager）：     <br>  - NVIDIA 官方 GPU 监控<br>  - dcgm-exporter 暴露 Prometheus 格式<br>  - 关键指标：     <br>    GPU 利用率、显存、温度、功耗、ECC 错误<br>    <br>Prometheus + Grafana：     <br>  - dcgm-exporter<br>  - node-exporter<br>  - kube-state-metrics<br>  - 一图看全集群<br><br>DCGM 监控万卡集群：     <br>  - 每秒几万 metric<br>  - 异常自动告警<br>  - 故障节点自动隔离<br></code></pre></td></tr></table></figure><h2 id="容器与-GPU-的几个老坑"><a href="#容器与-GPU-的几个老坑" class="headerlink" title="容器与 GPU 的几个老坑"></a>容器与 GPU 的几个老坑</h2><h3 id="坑-1：容器里看不到-nvidia-smi"><a href="#坑-1：容器里看不到-nvidia-smi" class="headerlink" title="坑 1：容器里看不到 nvidia-smi"></a>坑 1：容器里看不到 nvidia-smi</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 没装 nvidia-container-toolkit</span><br>apt install nvidia-container-toolkit<br><span class="hljs-comment"># 或 RHEL：</span><br>dnf install nvidia-container-toolkit<br><br><span class="hljs-comment"># 重启 Docker</span><br>systemctl restart docker<br></code></pre></td></tr></table></figure><h3 id="坑-2：CUDA-版本不匹配"><a href="#坑-2：CUDA-版本不匹配" class="headerlink" title="坑 2：CUDA 版本不匹配"></a>坑 2：CUDA 版本不匹配</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs text">Host driver 版本必须 ≥ Container 内 CUDA 版本<br>查看：     nvidia-smi（看左上角 CUDA Version）<br><br>Host driver 535 → 兼容 CUDA 12.x<br>Host driver 470 → 仅兼容 CUDA 11.x<br></code></pre></td></tr></table></figure><h3 id="坑-3：MIG-实例不可见"><a href="#坑-3：MIG-实例不可见" class="headerlink" title="坑 3：MIG 实例不可见"></a>坑 3：MIG 实例不可见</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs text">MIG 启用后，容器要明确请求 MIG 实例：<br>  resources.limits:<br>    nvidia.com/mig-1g.10gb: 1<br>    <br>不能再用 nvidia.com/gpu: 1（除非禁 MIG）<br></code></pre></td></tr></table></figure><h3 id="坑-4：训练-Pod-OOM"><a href="#坑-4：训练-Pod-OOM" class="headerlink" title="坑 4：训练 Pod OOM"></a>坑 4：训练 Pod OOM</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><code class="hljs text">显存 OOM：     batch size / sequence length 太大<br>主机内存 OOM：     DataLoader workers 太多<br>SHM 不够：     /dev/shm 默认 64 MB，DataLoader 经常需要更大<br><br>K8s 调大 SHM：     <br>  spec:<br>    containers:<br>    - volumeMounts:<br>      - mountPath: /dev/shm<br>        name: dshm<br>    volumes:<br>    - name: dshm<br>      emptyDir:<br>        medium: Memory<br>        sizeLimit: 16Gi<br></code></pre></td></tr></table></figure><h3 id="坑-5：跨-NUMA-性能损失"><a href="#坑-5：跨-NUMA-性能损失" class="headerlink" title="坑 5：跨 NUMA 性能损失"></a>坑 5：跨 NUMA 性能损失</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs text">8 GPU Pod 没有 numa-aware 调度：     <br>  - 跨 socket PCIe 通信<br>  - DataLoader CPU 在另一个 NUMA<br>  - 实测性能损失 20-40%<br><br>解决：     <br>  - 启用 K8s Topology Manager<br>  - 训练框架显式 numactl<br></code></pre></td></tr></table></figure><h3 id="坑-6：NCCL-启动失败"><a href="#坑-6：NCCL-启动失败" class="headerlink" title="坑 6：NCCL 启动失败"></a>坑 6：NCCL 启动失败</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><code class="hljs text">症状：     &quot;NCCL WARN Failed to open socket&quot;<br>常见原因：     <br>  - SHM 太小<br>  - ulimit -l（memlock）太小<br>  - IB 设备不可见<br>  - PCIe ACS 没关<br>  - Container 没 IPC=host<br></code></pre></td></tr></table></figure><h3 id="坑-7：GPU-假性死机"><a href="#坑-7：GPU-假性死机" class="headerlink" title="坑 7：GPU 假性死机"></a>坑 7：GPU 假性死机</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs text">GPU &quot;stuck&quot; 但 nvidia-smi 还能查：     <br>  - dmesg | grep &quot;Xid&quot;  → 看 NVIDIA Xid 错误<br>  - Xid 13/31/63/79：通常硬件 / 散热问题<br>  - 重启 GPU：nvidia-smi --gpu-reset -i &lt;id&gt;<br>  - 持续：     更换 GPU<br></code></pre></td></tr></table></figure><h2 id="大模型训练时-OS-实战清单"><a href="#大模型训练时-OS-实战清单" class="headerlink" title="大模型训练时 OS 实战清单"></a>大模型训练时 OS 实战清单</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># /etc/sysctl.d/99-ai-training.conf</span><br>fs.file-max = 2097152<br>fs.aio-max-nr = 1048576<br>kernel.shmmax = 1099511627776<br>kernel.shmall = 268435456<br>vm.max_map_count = 1048576<br>vm.swappiness = 10<br>vm.dirty_ratio = 5<br>vm.dirty_background_ratio = 2<br>net.core.rmem_max = 268435456<br>net.core.wmem_max = 268435456<br>net.core.netdev_max_backlog = 30000<br><br><span class="hljs-comment"># /etc/security/limits.conf</span><br>* soft nofile 1048576<br>* hard nofile 1048576<br>* soft <span class="hljs-built_in">nproc</span> unlimited<br>* hard <span class="hljs-built_in">nproc</span> unlimited<br>* soft memlock unlimited<br>* hard memlock unlimited<br><br><span class="hljs-comment"># 启动参数（GRUB）</span><br>intel_iommu=on iommu=pt<br>default_hugepagesz=2M hugepagesz=2M hugepages=8192<br>nohz_full=8-31 isolcpus=8-31         <span class="hljs-comment"># 隔离训练用 CPU</span><br>nosoftlockup<br>mitigations=off                       <span class="hljs-comment"># 关 spectre 等（性能优先）</span><br></code></pre></td></tr></table></figure><h2 id="OS-在-AI-集群的角色变化"><a href="#OS-在-AI-集群的角色变化" class="headerlink" title="OS 在 AI 集群的角色变化"></a>OS 在 AI 集群的角色变化</h2><pre class="mermaid">graph TB  OLD[传统 OS]  OLD --> O1[管理 CPU/MEM/IO]    NEW[AI 集群 OS]  NEW --> N1[GPU 调度 + 拓扑]  NEW --> N2[NUMA + GPU 联合调度]  NEW --> N3[大文件 IO + checkpoint]  NEW --> N4[InfiniBand + RDMA]  NEW --> N5[BPF observability]  NEW --> N6[Container + K8s 集成]</pre><h2 id="一些数字直觉"><a href="#一些数字直觉" class="headerlink" title="一些数字直觉"></a>一些数字直觉</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br></pre></td><td class="code"><pre><code class="hljs text">nvidia-driver 升级：     <br>  - 大版本（535→555）：     需重启<br>  - 同版本小修：     有时 modprobe 即可<br><br>GPU &quot;ready&quot; 时间：     <br>  - 节点重启：     5-10 分钟（初始化）<br>  - 容器调度后启动：     5-30 秒<br><br>GPU 利用率监控：     <br>  - dcgm 1 秒采样<br>  - K8s prometheus 15 秒间隔<br>  - 8 GPU 节点：     生成 ~50 个 metric / 秒<br><br>万卡集群 OS 配置一致性：     <br>  - Ansible / Salt：     5-30 分钟<br>  - 配置漂移检测：     必备<br></code></pre></td></tr></table></figure><h2 id="国产-OS-的-AI-适配"><a href="#国产-OS-的-AI-适配" class="headerlink" title="国产 OS 的 AI 适配"></a>国产 OS 的 AI 适配</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><code class="hljs text">openEuler：     <br>  - 与昇腾深度集成<br>  - npu-smi、ascend-device-plugin 已包<br>  - &quot;openEuler AI 版&quot;<br><br>龙蜥（Anolis OS）：     <br>  - 与寒武纪 / 摩尔线程适配<br>  - SIG-AI 工作组<br><br>麒麟（Kylin）：     <br>  - 商用支持华为昇腾<br>  - 政企信创主流<br></code></pre></td></tr></table></figure><blockquote><p>待补充：国产 OS 在大模型训练集群的实际部署。</p></blockquote><h2 id="小结"><a href="#小结" class="headerlink" title="小结"></a>小结</h2><ul><li>AI 时代 OS 要管的多了：     GPU&#x2F;NPU 调度、NUMA + GPU 拓扑、大 IO</li><li>nvidia-device-plugin + GPU Operator 是 K8s 标配</li><li>MIG &#x2F; vGPU &#x2F; Time-Slicing 是 GPU 资源细分手段</li><li>Volcano &#x2F; KAI Scheduler 是训练专用调度器</li><li>GPUDirect &#x2F; GDS 让网卡 &#x2F; 存储直接访问 GPU 显存</li><li>大模型训练对 OS 内核参数（SHM &#x2F; memlock &#x2F; file-max）有特殊要求</li><li>国产 OS 已与昇腾 &#x2F; 寒武纪深度适配</li></ul><p>下一篇讲国产服务器 OS——欧拉、麒麟、龙蜥、统信、深度等。</p>]]>
    </content>
    <id>http://localhost:4000/posts/4562cc58/</id>
    <link href="http://localhost:4000/posts/4562cc58/"/>
    <published>2026-02-08T08:45:00.000Z</published>
    <summary>AI 训练让操作系统面对新的诉求——GPU 资源管理、NUMA-aware 调度、CPU/GPU 数据搬运。本文讲清当前 OS 在 AI 集群里要做的事。</summary>
    <title>AI 时代的 OS 适配 —— GPU 调度、NUMA 与大模型训练</title>
    <updated>2026-05-24T13:49:48.030Z</updated>
  </entry>
  <entry>
    <category term="07-操作系统" scheme="http://localhost:4000/categories/07-%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/"/>
    <category term="内核" scheme="http://localhost:4000/tags/%E5%86%85%E6%A0%B8/"/>
    <category term="调度器" scheme="http://localhost:4000/tags/%E8%B0%83%E5%BA%A6%E5%99%A8/"/>
    <category term="网络栈" scheme="http://localhost:4000/tags/%E7%BD%91%E7%BB%9C%E6%A0%88/"/>
    <category term="文件系统" scheme="http://localhost:4000/tags/%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F/"/>
    <content>
      <![CDATA[<p>服务器运维的”硬核”调优都落在内核子系统上——CPU 调度、网络协议栈、文件系统。本文按三大子系统展开。</p><!-- more --><h2 id="一张全景"><a href="#一张全景" class="headerlink" title="一张全景"></a>一张全景</h2><pre class="mermaid">graph TB  K[Linux Kernel]  K --> SCH[进程调度<br/>CFS / EEVDF / sched_ext]  K --> NET[网络栈<br/>TCP/IP / XDP / eBPF]  K --> FS[文件系统<br/>ext4 / XFS / Btrfs / ZFS]  K --> MM[内存管理<br/>NUMA / Page / Huge Page]  K --> IO[IO 子系统<br/>blk-mq / io_uring]  K --> SEC[安全<br/>SELinux / Seccomp / capabilities]</pre><h2 id="进程调度"><a href="#进程调度" class="headerlink" title="进程调度"></a>进程调度</h2><h3 id="CFS（Completely-Fair-Scheduler）"><a href="#CFS（Completely-Fair-Scheduler）" class="headerlink" title="CFS（Completely Fair Scheduler）"></a>CFS（Completely Fair Scheduler）</h3><p>Linux 默认调度器（2.6.23+，2007）：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs text">设计：     基于&quot;虚拟运行时间&quot;的红黑树<br>目标：     公平分配 CPU 时间<br>关键数据结构：     红黑树 / 任务的 vruntime<br><br>调度决策：<br>  - 选 vruntime 最小的任务运行<br>  - 周期性 tick 更新 vruntime<br>  - 抢占点检查<br></code></pre></td></tr></table></figure><p>CFS 的几个调优参数：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># /proc/sys/kernel/</span><br>sched_min_granularity_ns        <span class="hljs-comment"># 最小调度粒度，默认 750000 ns</span><br>sched_wakeup_granularity_ns     <span class="hljs-comment"># 唤醒抢占粒度，默认 1000000 ns</span><br>sched_migration_cost_ns         <span class="hljs-comment"># 迁移成本，默认 500000 ns</span><br>sched_latency_ns                <span class="hljs-comment"># 调度周期，默认 6000000 ns</span><br><br><span class="hljs-comment"># 调优</span><br>sysctl -w kernel.sched_migration_cost_ns=5000000   <span class="hljs-comment"># 不轻易迁核</span><br></code></pre></td></tr></table></figure><h3 id="EEVDF（2023-）"><a href="#EEVDF（2023-）" class="headerlink" title="EEVDF（2023+）"></a>EEVDF（2023+）</h3><p>Linux 6.6 默认替代 CFS：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs text">EEVDF（Earliest Eligible Virtual Deadline First）：<br>  - 借鉴 1995 年学术论文<br>  - 比 CFS 在低延迟场景表现更好<br>  - 适配现代多核多 NUMA 工作负载<br>  - 6.6 LTS 默认<br></code></pre></td></tr></table></figure><p>CFS vs EEVDF 是 Linux 调度器 16 年来最大变化。</p><h3 id="sched-ext（可插拔调度器）"><a href="#sched-ext（可插拔调度器）" class="headerlink" title="sched_ext（可插拔调度器）"></a>sched_ext（可插拔调度器）</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><code class="hljs text">sched_ext（6.12+）：<br>  - 用 BPF 实现自定义调度器<br>  - 不需要重新编译内核<br>  - 实验性，Meta 主推<br><br>应用：     <br>  - 数据库专用调度器<br>  - 游戏低延迟调度器<br>  - AI 训练调度器<br></code></pre></td></tr></table></figure><h3 id="实时调度"><a href="#实时调度" class="headerlink" title="实时调度"></a>实时调度</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><code class="hljs text">SCHED_NORMAL（默认）：     CFS<br>SCHED_FIFO：              先进先出实时<br>SCHED_RR：                轮转实时<br>SCHED_DEADLINE：          截止时间调度<br>SCHED_IDLE：              低优先级<br>SCHED_BATCH：             批处理任务<br></code></pre></td></tr></table></figure><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 设置实时优先级</span><br>chrt -f 99 ./mysql            <span class="hljs-comment"># FIFO 99</span><br>chrt -p &lt;pid&gt;                 <span class="hljs-comment"># 查看</span><br>chrt -p -f 50 &lt;pid&gt;           <span class="hljs-comment"># 改</span><br><br><span class="hljs-comment"># nice 调度</span><br><span class="hljs-built_in">nice</span> -n 10 ./batch_job<br>renice -n 5 -p &lt;pid&gt;<br></code></pre></td></tr></table></figure><h3 id="调度域和-NUMA"><a href="#调度域和-NUMA" class="headerlink" title="调度域和 NUMA"></a>调度域和 NUMA</h3><p>第二章已经讲过 NUMA——内核通过 <strong>scheduling domain</strong> 知道拓扑：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 看调度域</span><br><span class="hljs-built_in">cat</span> /proc/sys/kernel/sched_domain/cpu0/domain*/name<br><br><span class="hljs-comment"># NUMA 信息</span><br>numactl -H<br>numactl --cpunodebind=0 --membind=0 ./app<br></code></pre></td></tr></table></figure><p>CPU 亲和力工具：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs bash">taskset -c 0-7 ./app             <span class="hljs-comment"># 绑核 0-7</span><br>taskset -p -c 0-7 &lt;pid&gt;          <span class="hljs-comment"># 改进程绑定</span><br></code></pre></td></tr></table></figure><h2 id="网络协议栈"><a href="#网络协议栈" class="headerlink" title="网络协议栈"></a>网络协议栈</h2><pre class="mermaid">graph TB  APP[应用]  APP --> SOCKET[socket layer]  SOCKET --> TCP[TCP / UDP / SCTP]  TCP --> IP[IPv4 / IPv6]  IP --> NETF[netfilter / nftables]  NETF --> QDISC[Qdisc / Traffic Control]  QDISC --> NIC[NIC driver]  NIC --> HW[硬件网卡]    XDP[XDP] -.- NIC</pre><h3 id="TCP-拥塞控制"><a href="#TCP-拥塞控制" class="headerlink" title="TCP 拥塞控制"></a>TCP 拥塞控制</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs text">Linux 支持的拥塞控制算法：<br>  reno：     最早，已过时<br>  cubic：     Linux 默认（2007 起）<br>  bbr：      Google 出品（2016），延迟感知<br>  bbr2：     改进版<br>  bbr3：     最新<br>  dctcp：     数据中心专用<br>  westwood：     改进 reno<br></code></pre></td></tr></table></figure><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 看可用算法</span><br>sysctl net.ipv4.tcp_available_congestion_control<br><br><span class="hljs-comment"># 当前用</span><br>sysctl net.ipv4.tcp_congestion_control<br><br><span class="hljs-comment"># 改成 BBR</span><br>modprobe tcp_bbr<br>sysctl -w net.ipv4.tcp_congestion_control=bbr<br>sysctl -w net.core.default_qdisc=fq<br></code></pre></td></tr></table></figure><p>BBR 在长肥管道（LFN）上表现更好——视频流 &#x2F; 跨地域传输的标配。</p><h3 id="TCP-调优参数"><a href="#TCP-调优参数" class="headerlink" title="TCP 调优参数"></a>TCP 调优参数</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 缓冲区大小（10G+ 网卡建议调大）</span><br>sysctl -w net.core.rmem_max=134217728<br>sysctl -w net.core.wmem_max=134217728<br>sysctl -w net.ipv4.tcp_rmem=<span class="hljs-string">&quot;4096 87380 134217728&quot;</span><br>sysctl -w net.ipv4.tcp_wmem=<span class="hljs-string">&quot;4096 65536 134217728&quot;</span><br><br><span class="hljs-comment"># 连接队列</span><br>sysctl -w net.core.somaxconn=65535<br>sysctl -w net.ipv4.tcp_max_syn_backlog=65535<br><br><span class="hljs-comment"># TIME_WAIT 复用</span><br>sysctl -w net.ipv4.tcp_tw_reuse=1<br><br><span class="hljs-comment"># Fast Open</span><br>sysctl -w net.ipv4.tcp_fastopen=3<br><br><span class="hljs-comment"># 持久化</span><br><span class="hljs-built_in">echo</span> <span class="hljs-string">&quot;net.ipv4.tcp_congestion_control=bbr&quot;</span> &gt;&gt; /etc/sysctl.d/99-tuning.conf<br>sysctl --system<br></code></pre></td></tr></table></figure><h3 id="XDP：高速包处理"><a href="#XDP：高速包处理" class="headerlink" title="XDP：高速包处理"></a>XDP：高速包处理</h3><p>XDP（eXpress Data Path）让 BPF 程序在网卡驱动层就处理包——<strong>包没进网络栈就被处理</strong>：</p><pre class="mermaid">graph LR  NIC[网卡] --> XDP[XDP BPF]  XDP --> D1{决策}  D1 -- DROP --> X[丢弃]  D1 -- TX --> NIC  D1 -- REDIRECT --> NIC2[其他网卡]  D1 -- PASS --> NS[正常网络栈]</pre><p>性能：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><code class="hljs text">XDP_DROP（DDoS 防护）：     20+ Mpps / 核<br>XDP_TX（负载均衡）：        10-15 Mpps / 核<br>传统 iptables：             几百 Kpps / 核<br></code></pre></td></tr></table></figure><p>应用：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><code class="hljs text">- DDoS 防护（Cloudflare、Facebook）<br>- 负载均衡（Katran）<br>- 抓包（xdpdump）<br>- 加速容器网络（Cilium）<br></code></pre></td></tr></table></figure><h3 id="netfilter-nftables"><a href="#netfilter-nftables" class="headerlink" title="netfilter &#x2F; nftables"></a>netfilter &#x2F; nftables</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><code class="hljs text">iptables（传统）：<br>  - 规则线性匹配，N 条规则 O(N) 性能<br>  - 内核已不主推<br><br>nftables（现代）：<br>  - 哈希表匹配，性能 O(1)<br>  - 命令更简洁<br>  - RHEL 8+ / Ubuntu 20.04+ 默认<br>  - iptables 命令可作为 nftables 兼容层<br><br>iptables → nftables 迁移：<br>  iptables-translate &quot;iptables -A INPUT ...&quot;<br></code></pre></td></tr></table></figure><h3 id="IPVS"><a href="#IPVS" class="headerlink" title="IPVS"></a>IPVS</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs text">IPVS（IP Virtual Server）：<br>  - 内核 L4 负载均衡<br>  - 比 iptables 快很多<br>  - K8s kube-proxy 支持 IPVS 模式<br>  - LVS（Linux Virtual Server）项目核心<br></code></pre></td></tr></table></figure><h2 id="文件系统"><a href="#文件系统" class="headerlink" title="文件系统"></a>文件系统</h2><pre class="mermaid">graph TB  FS[Linux 文件系统]  FS --> LOCAL[本地]  FS --> NETWORK[网络]  FS --> SPECIAL[特殊]    LOCAL --> EXT[ext2/3/4]  LOCAL --> XFS[XFS]  LOCAL --> BTRFS[Btrfs]  LOCAL --> ZFS[ZFS]  LOCAL --> F2FS[F2FS]    NETWORK --> NFS[NFS]  NETWORK --> CIFS[CIFS/SMB]  NETWORK --> CEPHFS[CephFS]  NETWORK --> GLUSTER[GlusterFS]    SPECIAL --> PROC[/proc]  SPECIAL --> SYS[/sys]  SPECIAL --> TMPFS[tmpfs]  SPECIAL --> OVERLAY[OverlayFS<br/>容器用]</pre><h3 id="ext4"><a href="#ext4" class="headerlink" title="ext4"></a>ext4</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs text">ext4：     <br>  - Linux 默认（多数发行版）<br>  - 经久耐用<br>  - 单文件最大 16 TB<br>  - 单卷最大 1 EB<br>  - 不支持原生压缩 / 快照<br><br>仍是企业 Linux 服务器最常用的根文件系统。<br></code></pre></td></tr></table></figure><h3 id="XFS"><a href="#XFS" class="headerlink" title="XFS"></a>XFS</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><code class="hljs text">XFS：     <br>  - SGI 1993 年 IRIX 移植到 Linux<br>  - 大文件性能好<br>  - 默认延迟分配<br>  - 单卷最大 8 EB<br>  - RHEL 7+ 默认根文件系统<br>  - 不支持 shrink（缩容）<br><br>适用：     大文件场景，数据库，存储节点<br></code></pre></td></tr></table></figure><h3 id="Btrfs"><a href="#Btrfs" class="headerlink" title="Btrfs"></a>Btrfs</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><code class="hljs text">Btrfs：     <br>  - &quot;B-tree FS&quot;<br>  - 写时复制（COW）<br>  - 原生快照、子卷、压缩、RAID<br>  - 单卷最大 16 EB<br>  - SUSE 默认（openSUSE / SLES）<br><br>历史问题：     <br>  - 早期 RAID 5/6 不稳<br>  - 大量碎片场景性能差<br>  - Red Hat 已不再支持<br><br>适用：     SUSE 系，桌面，开发机<br></code></pre></td></tr></table></figure><h3 id="ZFS"><a href="#ZFS" class="headerlink" title="ZFS"></a>ZFS</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><code class="hljs text">ZFS：     <br>  - Sun 1995 起开发，开源<br>  - 写时复制 + 校验和 + 压缩 + 去重<br>  - 软件 RAID（RAIDZ）<br>  - 单池可达 256 ZiB<br>  - License 问题不能合入 Linux 内核<br>  - Ubuntu 通过 DKMS 模块支持<br>  - 数据完整性最强<br><br>适用：     存储节点、备份、文件服务器<br></code></pre></td></tr></table></figure><h3 id="NFS"><a href="#NFS" class="headerlink" title="NFS"></a>NFS</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><code class="hljs text">NFS（Network File System）：     <br>  - Sun 1984 起，跨平台<br>  - NFSv3：无状态，老但稳<br>  - NFSv4：有状态，加密<br>  - NFSv4.1 / pNFS：     并行 NFS<br>  - NFSv4.2：     新特性<br><br>调优：     <br>  - mount -o rsize=1048576,wsize=1048576,vers=4.2<br>  - 异步 / 同步选择<br>  - 端口 2049<br></code></pre></td></tr></table></figure><h3 id="CephFS-GlusterFS"><a href="#CephFS-GlusterFS" class="headerlink" title="CephFS &#x2F; GlusterFS"></a>CephFS &#x2F; GlusterFS</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs text">CephFS：     <br>  - Ceph 存储集群提供 POSIX 文件系统<br>  - 元数据服务器（MDS）<br>  - 客户端 ceph-fuse 或内核 cephfs<br><br>GlusterFS：     <br>  - Red Hat 主推，已下马<br>  - 不需要专门元数据服务器<br></code></pre></td></tr></table></figure><p>第四章已介绍。</p><h3 id="OverlayFS"><a href="#OverlayFS" class="headerlink" title="OverlayFS"></a>OverlayFS</h3><p>容器镜像分层的核心：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><code class="hljs text">OverlayFS：     <br>  - lowerdir：镜像层（只读）<br>  - upperdir：容器写入层<br>  - merged：合并视图<br><br>Docker / containerd 默认 storage driver<br></code></pre></td></tr></table></figure><h3 id="tmpfs"><a href="#tmpfs" class="headerlink" title="tmpfs"></a>tmpfs</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs text">tmpfs：     <br>  - 内存中的文件系统<br>  - 关机消失<br>  - /tmp / /run / /dev/shm 默认<br>  - 大小可指定（默认半内存）<br></code></pre></td></tr></table></figure><h2 id="内存管理"><a href="#内存管理" class="headerlink" title="内存管理"></a>内存管理</h2><pre class="mermaid">graph TB  MM[Memory Management]  MM --> PG[Page Allocator<br/>buddy system]  MM --> SLAB[SLAB / SLUB<br/>对象缓存]  MM --> VMA[VMA / mmap]  MM --> SWAP[Swap]  MM --> OOM[OOM Killer]  MM --> NUMA[NUMA Allocator]  MM --> THP[Transparent Huge Pages]</pre><h3 id="Huge-Pages"><a href="#Huge-Pages" class="headerlink" title="Huge Pages"></a>Huge Pages</h3><p>减少 TLB miss，对大内存应用很重要：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 看大页配置</span><br><span class="hljs-built_in">cat</span> /proc/meminfo | grep -i huge<br><br><span class="hljs-comment"># 静态大页 2 MB</span><br><span class="hljs-built_in">echo</span> 8192 &gt; /proc/sys/vm/nr_hugepages<br><span class="hljs-built_in">mkdir</span> /mnt/hugepages<br>mount -t hugetlbfs none /mnt/hugepages<br><br><span class="hljs-comment"># 1 GB 大页（启动参数）</span><br>GRUB_CMDLINE_LINUX=<span class="hljs-string">&quot;default_hugepagesz=1G hugepagesz=1G hugepages=64&quot;</span><br><br><span class="hljs-comment"># Transparent Huge Pages（动态）</span><br><span class="hljs-built_in">cat</span> /sys/kernel/mm/transparent_hugepage/enabled<br><span class="hljs-built_in">echo</span> madvise &gt; /sys/kernel/mm/transparent_hugepage/enabled<br><br><span class="hljs-comment"># THP 三选项：</span><br><span class="hljs-comment"># always：     自动用大页（数据库可能慢）</span><br><span class="hljs-comment"># madvise：     应用主动 madvise 才用（推荐）</span><br><span class="hljs-comment"># never：     禁用</span><br></code></pre></td></tr></table></figure><p>数据库（Oracle &#x2F; PostgreSQL &#x2F; MongoDB）建议关 THP 改静态大页。</p><h3 id="Swap"><a href="#Swap" class="headerlink" title="Swap"></a>Swap</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 看 swap</span><br>swapon -s<br>free -h<br><br><span class="hljs-comment"># swappiness（0-100，越高越爱用 swap）</span><br><span class="hljs-built_in">cat</span> /proc/sys/vm/swappiness            <span class="hljs-comment"># 默认 60</span><br>sysctl -w vm.swappiness=10             <span class="hljs-comment"># 服务器一般调小</span><br><br><span class="hljs-comment"># swap 文件</span><br>fallocate -l 16G /swapfile<br>mkswap /swapfile<br>swapon /swapfile<br><span class="hljs-built_in">echo</span> <span class="hljs-string">&quot;/swapfile none swap sw 0 0&quot;</span> &gt;&gt; /etc/fstab<br></code></pre></td></tr></table></figure><p>数据库 &#x2F; 大内存机器通常 swap &#x3D; 0 或很小——<strong>别让 swap 拖累性能</strong>。</p><h3 id="OOM-Killer"><a href="#OOM-Killer" class="headerlink" title="OOM Killer"></a>OOM Killer</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs text">内存耗尽时杀进程：<br>  - OOM Score 计算（/proc/&lt;pid&gt;/oom_score）<br>  - 优先杀大的、可恢复的<br>  - 重要进程 echo -1000 &gt; /proc/&lt;pid&gt;/oom_score_adj 不被杀<br><br>调整：     <br>  - vm.overcommit_memory = 0/1/2<br>  - vm.overcommit_ratio = 50（百分比）<br></code></pre></td></tr></table></figure><h2 id="IO-子系统"><a href="#IO-子系统" class="headerlink" title="IO 子系统"></a>IO 子系统</h2><pre class="mermaid">graph TB  APP[应用 read/write]  APP --> VFS[VFS 抽象层]  VFS --> FS[具体文件系统]  FS --> BIO[block IO 层]  BIO --> SCHED[IO 调度器]  SCHED --> DRV[块设备驱动]  DRV --> HW[硬件 SSD/HDD]</pre><h3 id="IO-调度器（blk-mq）"><a href="#IO-调度器（blk-mq）" class="headerlink" title="IO 调度器（blk-mq）"></a>IO 调度器（blk-mq）</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><code class="hljs text">现代 Linux blk-mq 多队列：<br>  none：     无调度，对 NVMe 默认<br>  mq-deadline：     deadline 改进<br>  bfq：     公平调度<br>  kyber：     低延迟<br><br>NVMe 用 none：     <br>  cat /sys/block/nvme0n1/queue/scheduler<br>  <br>  原因：硬件已经多队列，软件调度反而拖累<br></code></pre></td></tr></table></figure><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 改 IO 调度器</span><br><span class="hljs-built_in">echo</span> none &gt; /sys/block/nvme0n1/queue/scheduler<br><span class="hljs-built_in">echo</span> mq-deadline &gt; /sys/block/sda/queue/scheduler<br></code></pre></td></tr></table></figure><h3 id="io-uring"><a href="#io-uring" class="headerlink" title="io_uring"></a>io_uring</h3><p>7.1 已介绍——异步 IO 革命。配套 API：</p><figure class="highlight c"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs c">io_uring_queue_init();<br>io_uring_get_sqe();<br>io_uring_prep_read();<br>io_uring_submit();<br>io_uring_wait_cqe();<br></code></pre></td></tr></table></figure><p>应用：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><code class="hljs text">PostgreSQL 17+：     io_uring 后端<br>ScyllaDB：           原生 io_uring<br>Tokio（Rust 异步）：     io_uring 支持<br></code></pre></td></tr></table></figure><h2 id="安全子系统"><a href="#安全子系统" class="headerlink" title="安全子系统"></a>安全子系统</h2><h3 id="SELinux-AppArmor"><a href="#SELinux-AppArmor" class="headerlink" title="SELinux &#x2F; AppArmor"></a>SELinux &#x2F; AppArmor</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><code class="hljs text">SELinux（Red Hat）：     <br>  - 标签 / 类型强制<br>  - 默认严格<br>  - RHEL / Fedora 默认 enforcing<br><br>AppArmor（Ubuntu）：     <br>  - 路径基础<br>  - 比 SELinux 简单<br>  - Ubuntu / Debian 默认<br></code></pre></td></tr></table></figure><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># SELinux</span><br>getenforce<br>setenforce 0       <span class="hljs-comment"># 临时关</span><br>semanage / restorecon<br><br><span class="hljs-comment"># AppArmor</span><br>aa-status<br>aa-enforce / aa-complain<br></code></pre></td></tr></table></figure><h3 id="Seccomp"><a href="#Seccomp" class="headerlink" title="Seccomp"></a>Seccomp</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><code class="hljs text">Seccomp：     系统调用白名单<br>  - 进程限制只能调几个 syscall<br>  - 容器逃逸防护<br>  - Docker 默认 seccomp profile<br><br>应用：     <br>  - 容器（Docker / K8s）<br>  - 沙箱（Chromium、Firefox）<br>  - 不可信代码执行<br></code></pre></td></tr></table></figure><h3 id="capabilities"><a href="#capabilities" class="headerlink" title="capabilities"></a>capabilities</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs text">传统 root：     全权或全无权<br>capabilities：     细粒度<br>  CAP_NET_ADMIN：     管网络<br>  CAP_SYS_ADMIN：     管系统（万能）<br>  CAP_NET_BIND_SERVICE：     绑端口 &lt; 1024<br>  ...<br>  <br>容器默认 drop ALL，再 add 必需的几个。<br></code></pre></td></tr></table></figure><h2 id="内核参数总览"><a href="#内核参数总览" class="headerlink" title="内核参数总览"></a>内核参数总览</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 看所有 sysctl</span><br>sysctl -a<br><br><span class="hljs-comment"># 常用调优文件</span><br>/etc/sysctl.conf<br>/etc/sysctl.d/*.conf<br><br><span class="hljs-comment"># 临时改</span><br>sysctl -w net.core.somaxconn=65535<br><br><span class="hljs-comment"># 持久化</span><br><span class="hljs-built_in">echo</span> <span class="hljs-string">&quot;net.core.somaxconn=65535&quot;</span> &gt;&gt; /etc/sysctl.d/99-tuning.conf<br>sysctl --system<br></code></pre></td></tr></table></figure><h3 id="服务器一般调优起点"><a href="#服务器一般调优起点" class="headerlink" title="服务器一般调优起点"></a>服务器一般调优起点</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># /etc/sysctl.d/99-server.conf</span><br><br><span class="hljs-comment"># 网络</span><br>net.core.somaxconn = 65535<br>net.core.rmem_max = 134217728<br>net.core.wmem_max = 134217728<br>net.ipv4.tcp_congestion_control = bbr<br>net.core.default_qdisc = fq<br>net.ipv4.tcp_tw_reuse = 1<br>net.ipv4.tcp_fin_timeout = 30<br><br><span class="hljs-comment"># 内存</span><br>vm.swappiness = 10<br>vm.dirty_ratio = 10<br>vm.dirty_background_ratio = 5<br><br><span class="hljs-comment"># 文件</span><br>fs.file-max = 2097152<br>fs.nr_open = 1048576<br><br><span class="hljs-comment"># 进程</span><br>kernel.pid_max = 4194304<br></code></pre></td></tr></table></figure><h2 id="内核-BPF-工具"><a href="#内核-BPF-工具" class="headerlink" title="内核 BPF 工具"></a>内核 BPF 工具</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># bpftrace 一行命令</span><br>bpftrace -e <span class="hljs-string">&#x27;tracepoint:syscalls:sys_enter_open &#123; printf(&quot;%s\n&quot;, str(args-&gt;filename)); &#125;&#x27;</span><br><br><span class="hljs-comment"># 常见 BCC 工具</span><br>opensnoop      <span class="hljs-comment"># 看打开文件</span><br>execsnoop      <span class="hljs-comment"># 看进程执行</span><br>biolatency     <span class="hljs-comment"># 看 IO 延迟分布</span><br>tcpconnect     <span class="hljs-comment"># 看 TCP 连接</span><br>runqlat        <span class="hljs-comment"># 看运行队列延迟</span><br></code></pre></td></tr></table></figure><p>BPF 工具是排障神器——<strong>比 strace 快几十倍</strong>。</p><h2 id="一些查询命令"><a href="#一些查询命令" class="headerlink" title="一些查询命令"></a>一些查询命令</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># CPU</span><br>mpstat -P ALL 1<br>top / htop / btop<br>pidstat 1<br>perf top<br>perf <span class="hljs-built_in">stat</span> / perf record<br><br><span class="hljs-comment"># 内存</span><br>free -h<br>vmstat 1<br><span class="hljs-built_in">cat</span> /proc/meminfo<br>slabtop<br><br><span class="hljs-comment"># 网络</span><br>ss -s                        <span class="hljs-comment"># socket 总览</span><br>ss -tnp                      <span class="hljs-comment"># TCP 连接</span><br>iftop / nethogs              <span class="hljs-comment"># 流量</span><br>ethtool -S eth0              <span class="hljs-comment"># 网卡统计</span><br>tcpdump -i eth0 -w cap.pcap<br><br><span class="hljs-comment"># 磁盘</span><br>iostat -x 1<br>iotop<br>dstat                        <span class="hljs-comment"># 综合</span><br>fio                          <span class="hljs-comment"># 性能测试</span><br><br><span class="hljs-comment"># 内核日志</span><br>dmesg<br>journalctl -k                <span class="hljs-comment"># kernel logs</span><br>journalctl --since <span class="hljs-string">&quot;1 hour ago&quot;</span><br></code></pre></td></tr></table></figure><h2 id="内核调优的方法论"><a href="#内核调优的方法论" class="headerlink" title="内核调优的方法论"></a>内核调优的方法论</h2><pre class="mermaid">graph TD  M[Measure 测量]  M --> A[Analyze 分析瓶颈]  A --> H[Hypothesize 假设]  H --> C[Change 改一项]  C --> V[Verify 验证]  V --> M</pre><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><code class="hljs text">Brendan Gregg 的&quot;USE 方法&quot;：     <br>  Utilization：     利用率<br>  Saturation：     饱和度（队列、等待）<br>  Errors：     错误数<br><br>每次只改一项 → 测量对比 → 不要改&quot;一堆&quot;。<br></code></pre></td></tr></table></figure><h2 id="内核版本与新特性查询"><a href="#内核版本与新特性查询" class="headerlink" title="内核版本与新特性查询"></a>内核版本与新特性查询</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-built_in">uname</span> -r                              <span class="hljs-comment"># 内核版本</span><br><br><span class="hljs-comment"># 新特性查询（编译开关）</span><br>zcat /proc/config.gz | grep &lt;FEATURE&gt;<br><span class="hljs-comment"># 或</span><br><span class="hljs-built_in">cat</span> /boot/config-$(<span class="hljs-built_in">uname</span> -r) | grep &lt;FEATURE&gt;<br><br><span class="hljs-comment"># 模块管理</span><br>lsmod | grep &lt;module&gt;<br>modprobe &lt;module&gt;<br>modinfo &lt;module&gt;<br></code></pre></td></tr></table></figure><h2 id="一些数字直觉"><a href="#一些数字直觉" class="headerlink" title="一些数字直觉"></a>一些数字直觉</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br></pre></td><td class="code"><pre><code class="hljs text">syscall 开销：     <br>  read/write：    几十 ns<br>  socket：        几百 ns<br>  fork：          几十 μs<br>  exec：          几百 μs<br><br>内存访问：     <br>  L1 cache：       1 ns<br>  L2 cache：       5 ns<br>  L3 cache：       30 ns<br>  本地 DRAM：     100 ns<br>  远端 NUMA：     200 ns<br>  HBM：           ~50 ns<br><br>文件系统：     <br>  ext4 顺序读：    &gt;5 GB/s（NVMe）<br>  XFS 大文件：     &gt;10 GB/s<br>  本地 NVMe 4K 随机读：     500K-1M IOPS<br>  <br>网络：     <br>  本地 ping：      几十 μs<br>  同机房 ping：    &lt; 1 ms<br>  跨城 ping：      ~10-50 ms<br>  跨国 ping：      ~100-200 ms<br></code></pre></td></tr></table></figure><h2 id="小结"><a href="#小结" class="headerlink" title="小结"></a>小结</h2><ul><li>Linux 内核三大子系统：调度（CFS&#x2F;EEVDF）、网络（TCP&#x2F;IP&#x2F;XDP）、文件系统（ext4&#x2F;XFS&#x2F;Btrfs&#x2F;ZFS）</li><li>io_uring + eBPF 是近年内核最重要新特性</li><li>TCP BBR 是长肥管道的拥塞控制选择</li><li>nftables 已替代 iptables</li><li>THP 在数据库要谨慎用</li><li>BPF &#x2F; bpftrace 是排障神器</li><li>调优要”测量-假设-改一项-验证”循环</li></ul><p>下一篇讲 AI 时代 OS 适配——vGPU、NPU 调度、大模型训练 OS 优化。</p>]]>
    </content>
    <id>http://localhost:4000/posts/c679d850/</id>
    <link href="http://localhost:4000/posts/c679d850/"/>
    <published>2026-02-01T12:35:00.000Z</published>
    <summary>Linux 内核三大子系统：进程调度、网络协议栈、文件系统。本文按子系统讲清各自的演进、关键参数和调优要点。</summary>
    <title>内核内部 —— 调度器、网络栈、文件系统</title>
    <updated>2026-05-24T13:49:48.030Z</updated>
  </entry>
  <entry>
    <category term="07-操作系统" scheme="http://localhost:4000/categories/07-%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/"/>
    <category term="容器" scheme="http://localhost:4000/tags/%E5%AE%B9%E5%99%A8/"/>
    <category term="Docker" scheme="http://localhost:4000/tags/Docker/"/>
    <category term="containerd" scheme="http://localhost:4000/tags/containerd/"/>
    <category term="Kubernetes" scheme="http://localhost:4000/tags/Kubernetes/"/>
    <content>
      <![CDATA[<p>容器是 Linux 内核两个能力（namespace + cgroup）”打包”出来的产品——本质上是<strong>进程隔离</strong>而非虚拟化。本文从内核机制讲到 K8s 调度。</p><!-- more --><h2 id="容器的两个内核基础"><a href="#容器的两个内核基础" class="headerlink" title="容器的两个内核基础"></a>容器的两个内核基础</h2><pre class="mermaid">graph TB  KERNEL[Linux Kernel]  KERNEL --> NS[Namespace<br/>资源视图隔离]  KERNEL --> CG[Cgroup<br/>资源消耗限制]    NS --> N1[mnt：文件系统]  NS --> N2[pid：进程树]  NS --> N3[net：网络栈]  NS --> N4[uts：主机名]  NS --> N5[ipc：进程通信]  NS --> N6[user：用户/UID]  NS --> N7[cgroup：cgroup 视图]  NS --> N8[time：时间]    CG --> CG1[CPU]  CG --> CG2[内存]  CG --> CG3[IO]  CG --> CG4[PID 数]  CG --> CG5[device 访问]</pre><p>容器 &#x3D; 一组进程绑定到一组 namespace + cgroup。</p><h3 id="namespace：视图隔离"><a href="#namespace：视图隔离" class="headerlink" title="namespace：视图隔离"></a>namespace：视图隔离</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 查看进程的 namespace</span><br><span class="hljs-built_in">ls</span> -l /proc/$$/ns/<br><span class="hljs-comment"># net -&gt; net:[4026531956]</span><br><span class="hljs-comment"># pid -&gt; pid:[4026531836]</span><br><span class="hljs-comment"># ...</span><br><br><span class="hljs-comment"># 进入容器的 namespace</span><br>nsenter -t &lt;pid&gt; -n ip addr      <span class="hljs-comment"># 进入网络 ns 看 IP</span><br>nsenter -t &lt;pid&gt; -m              <span class="hljs-comment"># 进入挂载 ns</span><br><br><span class="hljs-comment"># 创建新 namespace 跑 shell</span><br>unshare --net --pid --fork bash<br></code></pre></td></tr></table></figure><p>每个 namespace 独立一份资源视图——容器内的 PID 1 是宿主机的 PID 12345。</p><h3 id="cgroup：资源限制"><a href="#cgroup：资源限制" class="headerlink" title="cgroup：资源限制"></a>cgroup：资源限制</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># cgroup v1（旧）</span><br><span class="hljs-built_in">ls</span> /sys/fs/cgroup/<br><br><span class="hljs-comment"># cgroup v2（新，RHEL 9 / Ubuntu 22.04+ 默认）</span><br>mount | grep cgroup2<br><br><span class="hljs-comment"># 看进程的 cgroup</span><br><span class="hljs-built_in">cat</span> /proc/&lt;pid&gt;/cgroup<br><br><span class="hljs-comment"># 限制 CPU</span><br><span class="hljs-built_in">echo</span> <span class="hljs-string">&quot;100000 100000&quot;</span> &gt; /sys/fs/cgroup/&lt;group&gt;/cpu.max  <span class="hljs-comment"># 1 核</span><br><br><span class="hljs-comment"># 限制内存</span><br><span class="hljs-built_in">echo</span> <span class="hljs-string">&quot;1G&quot;</span> &gt; /sys/fs/cgroup/&lt;group&gt;/memory.max<br></code></pre></td></tr></table></figure><h3 id="cgroup-v1-vs-v2"><a href="#cgroup-v1-vs-v2" class="headerlink" title="cgroup v1 vs v2"></a>cgroup v1 vs v2</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><code class="hljs text">cgroup v1（2007）：<br>  - 每个 controller 独立树<br>  - CPU / memory / blkio 各管各的<br>  - 复杂，难统一<br><br>cgroup v2（2016+，2022 默认）：<br>  - 统一树<br>  - controller 在节点上启用<br>  - 内核优化更多<br>  - K8s 1.25+ 默认 cgroup v2<br></code></pre></td></tr></table></figure><h2 id="OCI-标准：容器的”协议”"><a href="#OCI-标准：容器的”协议”" class="headerlink" title="OCI 标准：容器的”协议”"></a>OCI 标准：容器的”协议”</h2><p>容器市场曾经只有 Docker——后来 OCI（Open Container Initiative）标准化：</p><pre class="mermaid">graph TB  IMG[OCI Image Spec<br/>镜像格式标准]  RUN[OCI Runtime Spec<br/>运行时标准]  DIST[OCI Distribution Spec<br/>镜像仓库标准]    IMG --> R1[Docker / containerd 镜像]  IMG --> R2[Buildah 构建]    RUN --> R3[runc<br/>默认运行时]  RUN --> R4[crun<br/>C 实现]  RUN --> R5[kata-runtime<br/>VM 后端]  RUN --> R6[gVisor runsc<br/>用户态内核]</pre><p>任何符合 OCI 的工具链都可以互操作——这就是容器生态成功的关键。</p><h2 id="容器运行时的演进"><a href="#容器运行时的演进" class="headerlink" title="容器运行时的演进"></a>容器运行时的演进</h2><pre class="mermaid">graph LR  D[Docker<br/>2013] --> D2[Docker + libcontainer]  D2 --> CD[containerd<br/>2017]  CD --> CDV2[containerd 2.x<br/>K8s 默认]  D --> RUN[runc<br/>2015 拆出]  CRIO[CRI-O<br/>K8s 专用]</pre><h3 id="Docker"><a href="#Docker" class="headerlink" title="Docker"></a>Docker</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><code class="hljs text">Docker（2013）：     <br>  - 第一个让&quot;容器易用&quot;的工具<br>  - 镜像分层 / Dockerfile / 仓库<br>  - 早期是 daemon 单体<br><br>Docker 现状：<br>  - 桌面开发仍主流（Docker Desktop）<br>  - 服务器运行时已被 containerd 替代<br>  - K8s 1.24+ 不再原生支持 Docker<br></code></pre></td></tr></table></figure><h3 id="containerd"><a href="#containerd" class="headerlink" title="containerd"></a>containerd</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><code class="hljs text">containerd：<br>  - Docker 拆出的运行时层<br>  - K8s 默认运行时<br>  - 简洁、稳定、性能好<br>  - Apache 2.0 开源<br><br>工具：     <br>  ctr - containerd CLI<br>  nerdctl - 类似 docker CLI<br>  <br>配置文件：     /etc/containerd/config.toml<br></code></pre></td></tr></table></figure><h3 id="CRI-O"><a href="#CRI-O" class="headerlink" title="CRI-O"></a>CRI-O</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs text">CRI-O：     <br>  - Red Hat 主推<br>  - K8s CRI（Container Runtime Interface）专用<br>  - 最小化运行时<br>  - OpenShift 默认<br></code></pre></td></tr></table></figure><h3 id="runc-crun"><a href="#runc-crun" class="headerlink" title="runc &#x2F; crun"></a>runc &#x2F; crun</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs text">runc：     <br>  - Go 实现的 OCI 运行时<br>  - Docker / containerd 默认<br>  <br>crun：     <br>  - C 实现，启动快 50%<br>  - Red Hat 主推<br>  - Podman / CRI-O 推荐<br></code></pre></td></tr></table></figure><h2 id="Docker-containerd-实战"><a href="#Docker-containerd-实战" class="headerlink" title="Docker &#x2F; containerd 实战"></a>Docker &#x2F; containerd 实战</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 老版 Docker</span><br>docker run -d -p 80:80 nginx<br>docker ps<br>docker logs &lt;container&gt;<br>docker <span class="hljs-built_in">exec</span> -it &lt;container&gt; bash<br>docker images<br>docker pull nginx:alpine<br><br><span class="hljs-comment"># containerd（ctr）</span><br>ctr image pull docker.io/library/nginx:latest<br>ctr run -d docker.io/library/nginx:latest nginx-container<br><br><span class="hljs-comment"># nerdctl（更友好）</span><br>nerdctl run -d -p 80:80 nginx<br>nerdctl ps<br>nerdctl logs &lt;container&gt;<br><br><span class="hljs-comment"># Podman（无 daemon Docker 替代）</span><br>podman run -d -p 80:80 nginx<br>podman ps<br></code></pre></td></tr></table></figure><h2 id="镜像分层"><a href="#镜像分层" class="headerlink" title="镜像分层"></a>镜像分层</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs text">FROM ubuntu:22.04         # Layer 1<br>RUN apt update            # Layer 2<br>RUN apt install nginx -y  # Layer 3<br>COPY config /etc/nginx/   # Layer 4<br>CMD [&quot;nginx&quot;, &quot;-g&quot;, &quot;daemon off;&quot;]<br></code></pre></td></tr></table></figure><p>每个 Layer 是只读 tarball——多容器共享相同 Layer，节省磁盘。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 看镜像分层</span><br>docker image <span class="hljs-built_in">history</span> nginx:latest<br>docker inspect nginx:latest | jq .[0].RootFS<br></code></pre></td></tr></table></figure><p>镜像格式：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><code class="hljs text">OCI Image Format：<br>  config.json<br>  layer1.tar.gz<br>  layer2.tar.gz<br>  ...<br>  manifest.json<br><br>仓库：     <br>  Docker Hub（默认）<br>  GitHub Container Registry（ghcr.io）<br>  Quay.io<br>  自建：     Harbor / Nexus / Artifactory<br></code></pre></td></tr></table></figure><h2 id="容器网络"><a href="#容器网络" class="headerlink" title="容器网络"></a>容器网络</h2><pre class="mermaid">graph TB  NETMODES[容器网络模式]  NETMODES --> M1[bridge<br/>默认<br/>NAT]  NETMODES --> M2[host<br/>共享主机]  NETMODES --> M3[none<br/>无网络]  NETMODES --> M4[overlay<br/>跨主机]  NETMODES --> M5[macvlan<br/>每容器独立 MAC]  NETMODES --> M6[CNI<br/>K8s 用]</pre><h3 id="CNI（Container-Network-Interface）"><a href="#CNI（Container-Network-Interface）" class="headerlink" title="CNI（Container Network Interface）"></a>CNI（Container Network Interface）</h3><p>K8s 网络抽象，K8s 通过 CNI 调用网络插件：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><code class="hljs text">CNI plugin 主流：<br>  Flannel：     简单，VXLAN<br>  Calico：      BGP，性能好<br>  Cilium：      eBPF，最现代<br>  Weave：       端到端加密<br>  Multus：      多网卡 CNI 适配器<br><br>调用方式：<br>  K8s 创建 Pod → kubelet 调 CNI plugin<br>  → plugin 创建 veth pair / 配置 IP / 路由<br></code></pre></td></tr></table></figure><h3 id="Cilium：eBPF-based-CNI"><a href="#Cilium：eBPF-based-CNI" class="headerlink" title="Cilium：eBPF-based CNI"></a>Cilium：eBPF-based CNI</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><code class="hljs text">Cilium 是 2024-2026 年趋势：<br>  - 数据面用 eBPF（不用 iptables）<br>  - L3-L7 策略<br>  - 服务网格能力（Cilium Mesh）<br>  - 完全替代 kube-proxy<br>  - 性能：vs iptables / IPVS 快几倍<br></code></pre></td></tr></table></figure><h2 id="Kubernetes-架构"><a href="#Kubernetes-架构" class="headerlink" title="Kubernetes 架构"></a>Kubernetes 架构</h2><pre class="mermaid">graph TB  subgraph CP["控制面"]    APIS[API Server]    SCH[Scheduler]    CTRL[Controller Manager]    ETCD[etcd<br/>状态存储]    CCM[Cloud Controller]  end    subgraph WK["Worker Node × N"]    KUBELET[kubelet]    KP[kube-proxy / Cilium]    CRI[containerd]    CNI[CNI plugin]        KUBELET --> CRI    KUBELET --> CNI  end    APIS --> KUBELET  CTRL --> APIS  SCH --> APIS  ETCD --- APIS</pre><p>K8s 核心概念：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><code class="hljs text">Pod：       一组容器（共享 net + storage namespace）<br>Deployment：声明式管理 Pod 副本<br>Service：   负载均衡 + 服务发现<br>ConfigMap / Secret：配置和密钥<br>Namespace（K8s 概念，与内核不同）：     租户/项目隔离<br>PersistentVolume：     持久化存储<br>Ingress：     L7 路由<br>DaemonSet：     每节点一份<br>StatefulSet：     带状态副本<br>Job / CronJob：     一次性 / 定时任务<br><br>CRD：     扩展资源类型<br>Operator：     用 CRD + Controller 实现自动化运维<br></code></pre></td></tr></table></figure><h2 id="K8s-调度器"><a href="#K8s-调度器" class="headerlink" title="K8s 调度器"></a>K8s 调度器</h2><pre class="mermaid">graph TB  POD[新 Pod 创建]  POD --> SCH[Scheduler]  SCH --> F1[Filter<br/>过滤不能放的节点]  F1 --> F2[节点亲和 / 反亲和]  F1 --> F3[资源够不够]  F1 --> F4[Taint / Toleration]  F1 --> SC[Score<br/>剩余节点评分]  SC --> S1[资源平衡]  SC --> S2[镜像本地化]  SC --> S3[拓扑分布]  SC --> SEL[选最优节点]  SEL --> KUB[kubelet 启动 Pod]</pre><p>调度过程：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><code class="hljs text">1. 用户提交 Pod yaml → APIs Server<br>2. APIs 写 etcd<br>3. Scheduler 读到未绑定的 Pod<br>4. Filter 阶段：排除不合适的节点<br>5. Score 阶段：剩下节点打分<br>6. 选最高分节点，写绑定到 etcd<br>7. 该节点 kubelet 收到 → 启动容器<br></code></pre></td></tr></table></figure><p>调度策略：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs text">节点亲和（NodeAffinity）：     &quot;只在 GPU 节点跑&quot;<br>Pod 亲和（PodAffinity）：       &quot;和 X Pod 同节点&quot;<br>反亲和（AntiAffinity）：        &quot;和 X Pod 不同节点&quot;<br>Taint / Toleration：           &quot;节点专用，只接受能容忍的 Pod&quot;<br>Topology Spread：              &quot;Pod 均匀分布在多个 zone&quot;<br></code></pre></td></tr></table></figure><h2 id="kubelet-与-Node-Agent"><a href="#kubelet-与-Node-Agent" class="headerlink" title="kubelet 与 Node Agent"></a>kubelet 与 Node Agent</h2><p>每节点上跑 kubelet：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><code class="hljs text">kubelet 职责：<br>  - 接 APIs Server 的 Pod 创建/删除<br>  - 通过 CRI 调 containerd 启动容器<br>  - 通过 CNI 配置网络<br>  - 通过 CSI 挂载存储<br>  - 心跳上报节点状态<br>  - 健康检查（Liveness / Readiness）<br>  - 资源监控（CPU/MEM）上报<br><br>systemd 单元：     kubelet.service<br>日志：     journalctl -u kubelet<br></code></pre></td></tr></table></figure><h2 id="CSI：存储插件"><a href="#CSI：存储插件" class="headerlink" title="CSI：存储插件"></a>CSI：存储插件</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><code class="hljs text">CSI（Container Storage Interface）：<br>  - 把存储和 K8s 解耦<br>  - 各厂家实现自己 CSI driver<br>  - K8s 不需要硬编码各种存储<br><br>主流 CSI：<br>  AWS EBS / Azure Disk / GCP PD<br>  Ceph CSI（RBD / CephFS）<br>  NFS CSI<br>  local-path / Longhorn<br>  存储厂家：Pure / NetApp / 戴尔 / 华为 OceanStor<br></code></pre></td></tr></table></figure><h2 id="K8s-网络模型"><a href="#K8s-网络模型" class="headerlink" title="K8s 网络模型"></a>K8s 网络模型</h2><p>K8s 网络的 4 个要求：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><code class="hljs text">1. Pod 与 Pod 之间：不需要 NAT，直连<br>2. Pod 与 Node 之间：双向直连<br>3. Node 上有&quot;集群 IP&quot; → Pod IP 的路由<br>4. Service 提供稳定 VIP<br><br>实现方案：<br>  - Cilium：eBPF<br>  - Calico：BGP<br>  - Flannel：VXLAN / Host-GW<br>  - 各家云厂家自家网络<br></code></pre></td></tr></table></figure><h3 id="Service-与-kube-proxy"><a href="#Service-与-kube-proxy" class="headerlink" title="Service 与 kube-proxy"></a>Service 与 kube-proxy</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><code class="hljs text">ClusterIP（默认）：     集群内部 VIP<br>NodePort：              每节点开同一端口，对外<br>LoadBalancer：          云提供 LB（AWS ELB 等）<br>ExternalName：          DNS 别名<br><br>kube-proxy 实现：<br>  iptables 模式：       规则数随 Service 数线性增（性能差）<br>  IPVS 模式：           哈希表，性能好<br>  eBPF（Cilium）：      最高性能，规则数 O(1)<br></code></pre></td></tr></table></figure><h2 id="可观测：metrics、logs、tracing"><a href="#可观测：metrics、logs、tracing" class="headerlink" title="可观测：metrics、logs、tracing"></a>可观测：metrics、logs、tracing</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><code class="hljs text">Metrics：<br>  - Prometheus + Grafana（标准组合）<br>  - kube-state-metrics<br>  - cAdvisor（容器指标）<br>  - node-exporter（节点指标）<br><br>Logs：<br>  - Fluent Bit / Fluentd（采集）<br>  - Elasticsearch / Loki（存储）<br>  - Kibana / Grafana（查询）<br><br>Tracing：<br>  - OpenTelemetry（标准）<br>  - Jaeger / Tempo（后端）<br></code></pre></td></tr></table></figure><h2 id="K8s-在-AI-集群里的角色"><a href="#K8s-在-AI-集群里的角色" class="headerlink" title="K8s 在 AI 集群里的角色"></a>K8s 在 AI 集群里的角色</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><code class="hljs text">传统 K8s：     微服务编排<br>AI K8s：     <br>  - GPU 资源管理（nvidia-device-plugin）<br>  - 多 GPU Pod 调度<br>  - 大模型训练 Pod 间通信（NCCL）<br>  - PyTorchJob / MPIJob CRD（Kubeflow）<br>  - Volcano / KAI Scheduler（gang scheduling）<br><br>AI 集群专用 K8s 发行版：<br>  Run.ai（NVIDIA 收购）：    GPU 池化<br>  Kubeflow：               ML 平台<br>  Determined AI：           训练管理<br>  KubeRay：                Ray on K8s<br></code></pre></td></tr></table></figure><h2 id="容器镜像安全"><a href="#容器镜像安全" class="headerlink" title="容器镜像安全"></a>容器镜像安全</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><code class="hljs text">扫描镜像漏洞：<br>  Trivy：     最常用<br>  Clair：     CoreOS 出品<br>  Snyk：      商业<br>  Anchore：    商业<br><br>签名 / 验签：<br>  cosign：    Sigstore 出品<br>  Notary v2：    Docker 老的<br>  <br>SBOM（Software Bill of Materials）：     软件物料清单<br>  syft：     生成<br>  grype：    检测<br></code></pre></td></tr></table></figure><h2 id="容器的几个老坑"><a href="#容器的几个老坑" class="headerlink" title="容器的几个老坑"></a>容器的几个老坑</h2><h3 id="坑-1：忘记设资源限制"><a href="#坑-1：忘记设资源限制" class="headerlink" title="坑 1：忘记设资源限制"></a>坑 1：忘记设资源限制</h3><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs yaml"><span class="hljs-comment"># 没设 limits → Pod 把节点吃光</span><br><span class="hljs-attr">resources:</span><br>  <span class="hljs-attr">requests:</span><br>    <span class="hljs-attr">cpu:</span> <span class="hljs-string">100m</span><br>    <span class="hljs-attr">memory:</span> <span class="hljs-string">128Mi</span><br>  <span class="hljs-attr">limits:</span><br>    <span class="hljs-attr">cpu:</span> <span class="hljs-string">1000m</span><br>    <span class="hljs-attr">memory:</span> <span class="hljs-string">1Gi</span><br></code></pre></td></tr></table></figure><p>不设限制就是定时炸弹——某个 Pod 内存泄漏把整节点 OOM。</p><h3 id="坑-2：用-latest-tag"><a href="#坑-2：用-latest-tag" class="headerlink" title="坑 2：用 latest tag"></a>坑 2：用 latest tag</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><code class="hljs text">image: nginx:latest<br>  → 各节点拉的可能不同版本<br>  → 重启 Pod 后行为变了<br>  → 难追溯<br>  <br>正确：     image: nginx:1.26.2<br>更好：     image: nginx@sha256:xxx<br></code></pre></td></tr></table></figure><h3 id="坑-3：root-用户运行"><a href="#坑-3：root-用户运行" class="headerlink" title="坑 3：root 用户运行"></a>坑 3：root 用户运行</h3><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><code class="hljs yaml"><span class="hljs-attr">securityContext:</span><br>  <span class="hljs-attr">runAsNonRoot:</span> <span class="hljs-literal">true</span><br>  <span class="hljs-attr">runAsUser:</span> <span class="hljs-number">1000</span><br>  <span class="hljs-attr">readOnlyRootFilesystem:</span> <span class="hljs-literal">true</span><br>  <span class="hljs-attr">capabilities:</span><br>    <span class="hljs-attr">drop:</span> [<span class="hljs-string">&quot;ALL&quot;</span>]<br></code></pre></td></tr></table></figure><p>容器逃逸的第一道屏障——非 root + 只读文件系统。</p><h3 id="坑-4：默认-ServiceAccount-权限过大"><a href="#坑-4：默认-ServiceAccount-权限过大" class="headerlink" title="坑 4：默认 ServiceAccount 权限过大"></a>坑 4：默认 ServiceAccount 权限过大</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs text">默认 namespace 的 default ServiceAccount<br>   → 自动挂载 token<br>   → 容器内可以 kubectl 操作集群<br><br>正确：     <br>  - 用专用 ServiceAccount<br>  - 用 RBAC 限制<br>  - automountServiceAccountToken: false<br></code></pre></td></tr></table></figure><h3 id="坑-5：镜像太大"><a href="#坑-5：镜像太大" class="headerlink" title="坑 5：镜像太大"></a>坑 5：镜像太大</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><code class="hljs text">基础镜像选择：<br>  ubuntu:24.04：     ~80 MB<br>  debian:slim：     ~30 MB<br>  alpine：          ~5 MB<br>  distroless：     ~20 MB（Google 出品，无 shell）<br>  scratch：         0 MB（静态二进制）<br><br>镜像越小：<br>  - 拉取快<br>  - 攻击面小<br>  - 节省存储<br></code></pre></td></tr></table></figure><h3 id="坑-6：忽视健康检查"><a href="#坑-6：忽视健康检查" class="headerlink" title="坑 6：忽视健康检查"></a>坑 6：忽视健康检查</h3><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><code class="hljs yaml"><span class="hljs-attr">livenessProbe:</span><br>  <span class="hljs-attr">httpGet:</span> &#123; <span class="hljs-attr">path:</span> <span class="hljs-string">/healthz</span>, <span class="hljs-attr">port:</span> <span class="hljs-number">8080</span> &#125;<br>  <span class="hljs-attr">initialDelaySeconds:</span> <span class="hljs-number">30</span><br>  <span class="hljs-attr">periodSeconds:</span> <span class="hljs-number">10</span><br><span class="hljs-attr">readinessProbe:</span><br>  <span class="hljs-attr">httpGet:</span> &#123; <span class="hljs-attr">path:</span> <span class="hljs-string">/ready</span>, <span class="hljs-attr">port:</span> <span class="hljs-number">8080</span> &#125;<br></code></pre></td></tr></table></figure><p>无健康检查 &#x3D; 死了的容器还在收流量。</p><h3 id="坑-7：节点资源碎片"><a href="#坑-7：节点资源碎片" class="headerlink" title="坑 7：节点资源碎片"></a>坑 7：节点资源碎片</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs text">节点 64 核，已用 40 核分散在多个 Pod<br>新建 Pod 要 32 核 → 找不到节点（虽然总剩余 24 核分散）<br>   → 调度失败<br><br>解决：     <br>  - bin-packing 调度策略<br>  - HPA / VPA 弹性扩缩<br>  - 节点资源池规划<br></code></pre></td></tr></table></figure><h2 id="K8s-多集群和联邦"><a href="#K8s-多集群和联邦" class="headerlink" title="K8s 多集群和联邦"></a>K8s 多集群和联邦</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><code class="hljs text">单集群上限：~5000 节点（API Server 性能瓶颈）<br><br>多集群方案：<br>  Karmada（华为开源）：     联邦标准<br>  Cluster API：           K8s 风格管 K8s<br>  Rancher / OpenShift：     多集群管理面<br>  Submariner：             跨集群网络<br>  <br>应用：     <br>  - 跨地域容灾<br>  - 法规合规（数据不能跨境）<br>  - 资源池突破单集群上限<br></code></pre></td></tr></table></figure><h2 id="云原生-vs-传统"><a href="#云原生-vs-传统" class="headerlink" title="云原生 vs 传统"></a>云原生 vs 传统</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><code class="hljs text">云原生（Cloud Native）特征：<br>  - 容器化打包<br>  - 微服务架构<br>  - 声明式 API<br>  - 不可变基础设施<br>  - DevOps 流程<br>  - 12-Factor App<br><br>CNCF（Cloud Native Computing Foundation）：<br>  - K8s 主家<br>  - 200+ 项目<br>  - 全球云原生标准<br></code></pre></td></tr></table></figure><h2 id="一些查询命令"><a href="#一些查询命令" class="headerlink" title="一些查询命令"></a>一些查询命令</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 容器层面</span><br>docker ps / nerdctl ps / crictl ps<br>docker inspect &lt;container&gt;<br>docker logs -f &lt;container&gt;<br>docker <span class="hljs-built_in">exec</span> -it &lt;container&gt; sh<br><br><span class="hljs-comment"># K8s 层面</span><br>kubectl get nodes<br>kubectl get pods -A<br>kubectl describe pod &lt;name&gt;<br>kubectl logs &lt;pod&gt; -c &lt;container&gt; -f<br>kubectl <span class="hljs-built_in">exec</span> -it &lt;pod&gt; -- sh<br>kubectl top pods<br>kubectl top nodes<br><br><span class="hljs-comment"># debug</span><br>kubectl debug node/&lt;node-name&gt; -it --image=busybox<br>kubectl get events --sort-by=<span class="hljs-string">&#x27;.lastTimestamp&#x27;</span><br><br><span class="hljs-comment"># 配置</span><br>kubectl config get-contexts<br>kubectl config use-context &lt;ctx&gt;<br></code></pre></td></tr></table></figure><h2 id="一些数字直觉"><a href="#一些数字直觉" class="headerlink" title="一些数字直觉"></a>一些数字直觉</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><code class="hljs text">容器启动：     <br>  小镜像：    100-500 ms<br>  大镜像（首次拉）：    秒到分钟级<br>  <br>Pod 启动（含调度）：     <br>  普通业务：    1-3 秒<br>  GPU Pod：    5-10 秒（需要 device plugin）<br><br>K8s 集群规模：     <br>  推荐：    &lt; 5000 节点<br>  超大：    联邦 / 多集群<br><br>K8s 控制面消耗：     <br>  小集群：    1-2 vCPU + 4 GB<br>  万节点：    8-16 vCPU + 32-64 GB（etcd 重）<br></code></pre></td></tr></table></figure><h2 id="国产云原生"><a href="#国产云原生" class="headerlink" title="国产云原生"></a>国产云原生</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><code class="hljs text">阿里云 ACK：     深度定制 K8s<br>腾讯 TKE：       K8s + 自家增强<br>华为 CCE：       K8s + 容器服务<br>青云 KubeSphere：     国产 K8s 管理面（开源）<br>Rancher：       原 SUSE，被广泛用<br>KubeEdge：     边缘计算 K8s（华为开源）<br><br>国产容器引擎：<br>  iSulad（华为开源）：     轻量容器引擎<br>  PouchContainer（阿里开源）：    已停<br>  <br>国产容器仓库：     <br>  Harbor（VMware / CNCF）：     最广泛<br>  Quay：     Red Hat<br></code></pre></td></tr></table></figure><blockquote><p>待补充：国产 K8s 发行版的实际部署比例。</p></blockquote><h2 id="小结"><a href="#小结" class="headerlink" title="小结"></a>小结</h2><ul><li>容器 &#x3D; namespace（视图隔离） + cgroup（资源限制）</li><li>OCI 标准化让生态健康</li><li>containerd 已替代 Docker 成为 K8s 默认运行时</li><li>Cilium &#x2F; eBPF 是 K8s 网络的下一代</li><li>K8s 是云原生事实标准，调度器和 CRD 模型是核心</li><li>AI 集群有专用 K8s 发行版（Kubeflow &#x2F; Volcano &#x2F; Run.ai）</li><li>国产 K8s 发行版（阿里 ACK &#x2F; 腾讯 TKE &#x2F; 华为 CCE）已成熟</li></ul><p>下一篇讲内核内部——调度器、网络栈、文件系统。</p>]]>
    </content>
    <id>http://localhost:4000/posts/e349ca4b/</id>
    <link href="http://localhost:4000/posts/e349ca4b/"/>
    <published>2026-01-25T07:50:00.000Z</published>
    <summary>容器把&quot;OS 抽象&quot;做到极致——一个进程一组 namespace + cgroup 就是一个独立环境。本文讲容器的内核基础、Docker / containerd 演进、K8s 调度模型。</summary>
    <title>容器与 Kubernetes —— 比 VM 更轻的抽象</title>
    <updated>2026-05-24T13:49:48.030Z</updated>
  </entry>
  <entry>
    <category term="07-操作系统" scheme="http://localhost:4000/categories/07-%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/"/>
    <category term="虚拟化" scheme="http://localhost:4000/tags/%E8%99%9A%E6%8B%9F%E5%8C%96/"/>
    <category term="KVM" scheme="http://localhost:4000/tags/KVM/"/>
    <category term="Xen" scheme="http://localhost:4000/tags/Xen/"/>
    <category term="Hyper-V" scheme="http://localhost:4000/tags/Hyper-V/"/>
    <category term="SR-IOV" scheme="http://localhost:4000/tags/SR-IOV/"/>
    <content>
      <![CDATA[<p>虚拟化把一台物理机变成多台虚拟机，是云计算的根本基础。本文讲清虚拟化的演进、KVM &#x2F; Xen &#x2F; Hyper-V 三大方案、以及 SR-IOV &#x2F; vGPU 等”硬件辅助”技术。</p><!-- more --><h2 id="虚拟化的两种类型"><a href="#虚拟化的两种类型" class="headerlink" title="虚拟化的两种类型"></a>虚拟化的两种类型</h2><pre class="mermaid">graph TB  T1[Type 1 Hypervisor<br/>裸金属]  T1 --> T1A[VMware ESXi]  T1 --> T1B[Microsoft Hyper-V]  T1 --> T1C[Xen]  T1 --> T1D[KVM 也算<br/>跑在 Linux 内核里]    T2[Type 2 Hypervisor<br/>宿主机型]  T2 --> T2A[VMware Workstation]  T2 --> T2B[VirtualBox]  T2 --> T2C[QEMU 用户态]  T2 --> T2D[Parallels]</pre><p>数据中心<strong>只用 Type 1</strong>——直接跑在硬件上，性能最优。Type 2 是开发 &#x2F; 桌面用。</p><h2 id="CPU-虚拟化的硬件支持"><a href="#CPU-虚拟化的硬件支持" class="headerlink" title="CPU 虚拟化的硬件支持"></a>CPU 虚拟化的硬件支持</h2><p>CPU 虚拟化经历两个阶段：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><code class="hljs text">2005 之前：纯软件虚拟化（VMware 早期、Xen para-virt）<br>  - 二进制翻译 / 修改客户机 OS<br>  - 性能损失 30-50%<br>  <br>2005+：硬件辅助虚拟化<br>  - Intel VT-x（2005）<br>  - AMD-V（2006）<br>  - 性能损失 &lt; 5%<br>  - 客户机 OS 可不修改<br></code></pre></td></tr></table></figure><p>后续硬件持续增强：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs text">EPT / NPT：     第二级页表（地址翻译加速）<br>VPID：          TLB 标签（避免 vmexit 刷 TLB）<br>APICv：         中断虚拟化加速<br>VT-d / IOMMU：  IO 设备虚拟化（设备直通）<br>SR-IOV：        网卡 / GPU 单设备多虚机<br></code></pre></td></tr></table></figure><p>ARM 也有等价：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs text">ARM VHE（Virtualization Host Extensions）：     v8.1<br>ARM SMMU（System MMU）：                         IOMMU 等价<br></code></pre></td></tr></table></figure><h2 id="KVM：Linux-内核里的虚拟化"><a href="#KVM：Linux-内核里的虚拟化" class="headerlink" title="KVM：Linux 内核里的虚拟化"></a>KVM：Linux 内核里的虚拟化</h2><p>KVM（Kernel-based Virtual Machine）是 Linux 2.6.20（2007）合入的内核虚拟化模块：</p><pre class="mermaid">graph TB  HW[硬件 CPU + VT-x/EPT]  KVM[KVM 内核模块]  HW --> KVM    QEMU[QEMU 用户态]  KVM --- QEMU    GUEST1[VM 1 GuestOS]  GUEST2[VM 2 GuestOS]    QEMU --> GUEST1  QEMU --> GUEST2</pre><p>KVM 架构特点：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs text">- KVM 模块负责 CPU/内存虚拟化<br>- QEMU 负责设备模拟（磁盘 / 网卡 / 显卡）<br>- 每个 VM 是一个 QEMU 进程<br>- VM 内 vCPU 是一个 Linux 线程<br>- Linux 调度器调度 vCPU<br></code></pre></td></tr></table></figure><h3 id="KVM-QEMU-的实战"><a href="#KVM-QEMU-的实战" class="headerlink" title="KVM + QEMU 的实战"></a>KVM + QEMU 的实战</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 装包（Ubuntu / RHEL）</span><br>apt install qemu-kvm libvirt-daemon-system virt-manager<br>dnf install qemu-kvm libvirt virt-manager<br><br><span class="hljs-comment"># 启动 libvirtd</span><br>systemctl <span class="hljs-built_in">enable</span> --now libvirtd<br><br><span class="hljs-comment"># virsh 命令</span><br>virsh list                       <span class="hljs-comment"># 看运行中 VM</span><br>virsh list --all                <span class="hljs-comment"># 看所有 VM</span><br>virsh start &lt;vm&gt;                <span class="hljs-comment"># 启动</span><br>virsh shutdown &lt;vm&gt;             <span class="hljs-comment"># 优雅关机</span><br>virsh destroy &lt;vm&gt;              <span class="hljs-comment"># 强制关闭</span><br>virsh dominfo &lt;vm&gt;              <span class="hljs-comment"># VM 信息</span><br><br><span class="hljs-comment"># virt-install 创建 VM</span><br>virt-install --name=vm1 \<br>  --vcpus=4 --memory=8192 \<br>  --disk size=50 \<br>  --cdrom=ubuntu.iso \<br>  --os-variant=ubuntu24.04 \<br>  --network bridge=br0 \<br>  --graphics vnc<br><br><span class="hljs-comment"># 直接 QEMU 命令行（不通过 libvirt）</span><br>qemu-system-x86_64 -enable-kvm \<br>  -smp 4 -m 8G \<br>  -hda disk.qcow2 \<br>  -netdev user,<span class="hljs-built_in">id</span>=net0 -device virtio-net,netdev=net0<br></code></pre></td></tr></table></figure><h3 id="KVM-的性能优化"><a href="#KVM-的性能优化" class="headerlink" title="KVM 的性能优化"></a>KVM 的性能优化</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># CPU pinning（绑核）</span><br>virsh vcpupin vm1 0 4-7        <span class="hljs-comment"># vCPU 0 绑到物理 4-7</span><br><br><span class="hljs-comment"># NUMA 配置</span><br>virsh edit vm1<br><span class="hljs-comment"># &lt;cpu mode=&#x27;host-passthrough&#x27;&gt;</span><br><span class="hljs-comment">#   &lt;numa&gt;...&lt;/numa&gt;</span><br><span class="hljs-comment"># &lt;/cpu&gt;</span><br><br><span class="hljs-comment"># 大页内存</span><br><span class="hljs-built_in">echo</span> 8192 &gt; /proc/sys/vm/nr_hugepages    <span class="hljs-comment"># 16 GB 大页</span><br><br><span class="hljs-comment"># 关闭 KSM（多 VM 共享内存对延迟敏感场景关）</span><br><span class="hljs-built_in">echo</span> 0 &gt; /sys/kernel/mm/ksm/run<br></code></pre></td></tr></table></figure><h3 id="virtio：半虚拟化设备"><a href="#virtio：半虚拟化设备" class="headerlink" title="virtio：半虚拟化设备"></a>virtio：半虚拟化设备</h3><p>KVM 默认用 <strong>virtio</strong>——一组半虚拟化设备规范：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><code class="hljs text">virtio-net：     网卡<br>virtio-blk：     块设备<br>virtio-scsi：    SCSI 控制器<br>virtio-balloon： 内存膨胀（VM 间动态分配）<br>virtio-fs：      文件系统共享<br>virtio-gpu：     GPU<br>virtio-rng：     随机数生成器<br></code></pre></td></tr></table></figure><p>virtio 性能比模拟硬件（e1000、IDE）快 10-100 倍。</p><h2 id="Xen"><a href="#Xen" class="headerlink" title="Xen"></a>Xen</h2><p>Xen 是 2003 年剑桥大学的研究项目，2007 年 Citrix 商业化：</p><pre class="mermaid">graph TB  HW[硬件]  XEN[Xen Hypervisor<br/>裸金属]  HW --> XEN    DOM0[Dom0<br/>特权 Linux<br/>控制 + 设备驱动]  DOMU1[DomU 1<br/>客户 OS]  DOMU2[DomU 2]    XEN --- DOM0  XEN --- DOMU1  XEN --- DOMU2</pre><p>Xen 的核心概念：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs text">Dom0：     特权域，跑 Linux，提供设备驱动给其他 VM<br>DomU：     非特权域，普通 VM<br>PV：       Para-virtualization（半虚拟化），客户 OS 修改过<br>HVM：      Hardware Virtual Machine（全虚拟化）<br>PVH：      混合，HVM + PV 优点<br></code></pre></td></tr></table></figure><h3 id="Xen-的兴衰"><a href="#Xen-的兴衰" class="headerlink" title="Xen 的兴衰"></a>Xen 的兴衰</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><code class="hljs text">2007-2015：Xen 是云鼻祖<br>  - AWS EC2 早期全 Xen<br>  - Citrix XenServer 企业市场<br>  - 阿里云 / 腾讯云早期也用 Xen<br>  <br>2015+：KVM 全面崛起<br>  - AWS Nitro 弃 Xen 转 KVM 衍生<br>  - 开源社区聚焦 KVM<br>  - Xen 主要剩 Citrix 商业产品<br><br>2023+：基本边缘化<br>  - 仍有少数嵌入式 / 安全场景<br>  - Xen 项目改名 Xen Hypervisor，Linux Foundation 下<br></code></pre></td></tr></table></figure><p>Xen 已不是数据中心主流——除非有历史包袱，新建系统不上 Xen。</p><h2 id="VMware-ESXi"><a href="#VMware-ESXi" class="headerlink" title="VMware ESXi"></a>VMware ESXi</h2><p>VMware 是 1998 年成立的虚拟化老厂，<strong>ESXi</strong> 是其裸金属 Hypervisor：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><code class="hljs text">ESXi：     裸金属 Hypervisor<br>vSphere：  ESXi + vCenter（管理面）<br>NSX：      网络虚拟化<br>vSAN：     存储虚拟化<br><br>商业模式：高端商业，单 socket 订阅 license<br><br>2023：Broadcom 收购 VMware（$610 亿）<br>   - 大幅涨价 + 转订阅制<br>   - 中小客户大量逃离<br>   - 国产 / 开源替代加速<br></code></pre></td></tr></table></figure><p>VMware 当前问题：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><code class="hljs text">1. Broadcom 收购后涨价 200-300%<br>2. 永久 license 取消，全转订阅<br>3. 中小企业开始迁出（Proxmox / OpenStack / 国产）<br>4. 国产虚拟化（深信服、新华三 H3C UIS、华为 FusionCompute）替代加速<br></code></pre></td></tr></table></figure><blockquote><p>待补充：VMware 客户流失数据 &#x2F; 国产替代迁移规模。</p></blockquote><h2 id="Microsoft-Hyper-V"><a href="#Microsoft-Hyper-V" class="headerlink" title="Microsoft Hyper-V"></a>Microsoft Hyper-V</h2><p>Microsoft 自家 Hypervisor：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><code class="hljs text">Windows Server Hyper-V：     企业级<br>Azure Hypervisor：           云上变体<br>Hyper-V Server：             免费独立版（已停）<br><br>特点：     <br>  - Windows / Linux VM 都支持<br>  - 与 Windows Server 集成<br>  - Azure 云的基础<br><br>市场：    主要是 Microsoft 客户和 Azure 云<br></code></pre></td></tr></table></figure><h2 id="OpenStack：开源云的”操作系统”"><a href="#OpenStack：开源云的”操作系统”" class="headerlink" title="OpenStack：开源云的”操作系统”"></a>OpenStack：开源云的”操作系统”</h2><p>OpenStack 不是 Hypervisor 而是云管理平台：</p><pre class="mermaid">graph TB  CLI[CLI / Web UI]  CLI --> NOVA[Nova<br/>计算 / VM 管理]  CLI --> NEUTRON[Neutron<br/>网络]  CLI --> CINDER[Cinder<br/>块存储]  CLI --> SWIFT[Swift<br/>对象存储]  CLI --> KEYSTONE[Keystone<br/>身份]  CLI --> GLANCE[Glance<br/>镜像]  CLI --> HEAT[Heat<br/>编排]    NOVA --> KVM[KVM / Xen / Hyper-V]  NEUTRON --> OVS[Open vSwitch / OVN]</pre><p>OpenStack 在中国被广泛使用：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><code class="hljs text">华为 FusionCloud / 华为云：    OpenStack 衍生<br>H3C UIS：                    OpenStack 衍生<br>深信服超融合：                  OpenStack 衍生<br>ZStack：                     国产 OpenStack 替代<br><br>公有云 / 私有云的&quot;标准&quot;开源平台<br></code></pre></td></tr></table></figure><h2 id="SR-IOV：硬件虚拟化的”作弊”"><a href="#SR-IOV：硬件虚拟化的”作弊”" class="headerlink" title="SR-IOV：硬件虚拟化的”作弊”"></a>SR-IOV：硬件虚拟化的”作弊”</h2><p>SR-IOV（Single Root I&#x2F;O Virtualization）让一个 PCIe 设备<strong>自己变成”多个虚拟设备”</strong>：</p><pre class="mermaid">graph TB  PHY[物理网卡<br/>PF Physical Function]  PHY --> V1[VF 1<br/>Virtual Function]  PHY --> V2[VF 2]  PHY --> V3[VF 3]  PHY --> VN[VF N<br/>最多 256]    V1 -.- VM1[VM 1]  V2 -.- VM2[VM 2]  V3 -.- VM3[VM 3]</pre><p>每个 VF 在 VM 看来就是独立网卡——<strong>绕过 Hypervisor 的软件交换机，直接 DMA</strong>。</p><p>性能对比：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs text">virtio-net：                 几 GB/s<br>SR-IOV VF 直通：             ~95% 物理性能<br></code></pre></td></tr></table></figure><p>应用：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><code class="hljs text">- 云裸金属：    每个 VM 一个 VF<br>- 5G 网元：    极致延迟<br>- HPC：        类似裸金属<br>- AI 训练 VM： GPU 也要 SR-IOV<br></code></pre></td></tr></table></figure><h2 id="VFIO-与设备直通"><a href="#VFIO-与设备直通" class="headerlink" title="VFIO 与设备直通"></a>VFIO 与设备直通</h2><p>VFIO（Virtual Function I&#x2F;O）是 Linux 把 PCIe 设备暴露给用户态的框架：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><code class="hljs text">应用：     <br>  - GPU 直通：把整张 H100 给一个 VM<br>  - 网卡直通：SR-IOV VF 直通<br>  - 加密卡 / FPGA 直通<br><br>要求：<br>  - IOMMU 启用（intel_iommu=on / amd_iommu=on）<br>  - vfio-pci 驱动绑定<br>  - PCIe ACS 支持（避免 DMA 攻击）<br></code></pre></td></tr></table></figure><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 启用 IOMMU（GRUB 启动参数）</span><br>intel_iommu=on iommu=pt<br><br><span class="hljs-comment"># 看 IOMMU group</span><br><span class="hljs-built_in">ls</span> /sys/kernel/iommu_groups/<br><br><span class="hljs-comment"># 绑定 vfio-pci</span><br><span class="hljs-built_in">echo</span> 10de 2330 &gt; /sys/bus/pci/drivers/vfio-pci/new_id<br><br><span class="hljs-comment"># QEMU 命令行直通</span><br>qemu-system-x86_64 -device vfio-pci,host=01:00.0<br></code></pre></td></tr></table></figure><h2 id="vGPU：GPU-虚拟化"><a href="#vGPU：GPU-虚拟化" class="headerlink" title="vGPU：GPU 虚拟化"></a>vGPU：GPU 虚拟化</h2><p>NVIDIA vGPU 让一颗 GPU 多 VM 共享：</p><pre class="mermaid">graph TB  GPU[NVIDIA GPU<br/>例如 A100]  GPU --> M1[MIG 实例 1]  GPU --> M2[MIG 实例 2]  GPU --> M3[MIG 实例 3]  GPU --> M7[MIG 实例 7]    M1 -.- V1[VM 1]  M2 -.- V2[VM 2]</pre><p>NVIDIA vGPU 两种模式：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><code class="hljs text">Time-slicing（vGPU 软件）：<br>  - 多 VM 时间片轮转用 GPU<br>  - 软件许可（需要 NVIDIA Grid 订阅）<br>  - 适合显卡虚拟化（VDI）<br><br>MIG（Multi-Instance GPU，A100/H100）：<br>  - 硬件分割<br>  - 每个 MIG 实例独立 SM、L2、显存<br>  - QoS 严格隔离<br>  - 适合 AI 推理 / 多租户<br></code></pre></td></tr></table></figure><p>A100 &#x2F; H100 MIG 配置：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><code class="hljs text">A100 80GB 可分：<br>  7× 1g.10gb（最小）<br>  3× 2g.20gb<br>  2× 3g.40gb<br>  1× 7g.80gb（不分）<br><br>H100 80GB 类似 A100<br></code></pre></td></tr></table></figure><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 启用 MIG</span><br>nvidia-smi -i 0 -mig 1<br><br><span class="hljs-comment"># 看 MIG 实例</span><br>nvidia-smi mig -lgi<br>nvidia-smi mig -lci<br><br><span class="hljs-comment"># 创建 MIG</span><br>nvidia-smi mig -cgi 9,9,9,9,9,9,9   <span class="hljs-comment"># 7 个 1g.10gb</span><br>nvidia-smi mig -cci<br><br><span class="hljs-comment"># 删除</span><br>nvidia-smi mig -dci<br>nvidia-smi mig -dgi<br></code></pre></td></tr></table></figure><h2 id="容器-vs-虚拟机"><a href="#容器-vs-虚拟机" class="headerlink" title="容器 vs 虚拟机"></a>容器 vs 虚拟机</h2><pre class="mermaid">graph TB  subgraph VM["虚拟机栈"]    direction TB    V1[App]    V2[Guest OS]    V3[Hypervisor]    V4[Host OS]    V5[硬件]    V1 --> V2 --> V3 --> V4 --> V5  end    subgraph CN["容器栈"]    direction TB    C1[App]    C2[容器运行时]    C3[Host OS]    C4[硬件]    C1 --> C2 --> C3 --> C4  end</pre><table><thead><tr><th>维度</th><th>VM</th><th>容器</th></tr></thead><tbody><tr><td>隔离</td><td>强（硬件级）</td><td>弱（namespace + cgroup）</td></tr><tr><td>启动</td><td>30s-1min</td><td>秒级</td></tr><tr><td>内存占用</td><td>GB 级 &#x2F; VM</td><td>MB 级 &#x2F; 容器</td></tr><tr><td>性能</td><td>&lt;5% loss</td><td>&lt;1% loss</td></tr><tr><td>安全</td><td>内核漏洞不易跨</td><td>内核共享，漏洞共担</td></tr><tr><td>用途</td><td>多租户 &#x2F; 强隔离</td><td>微服务 &#x2F; DevOps</td></tr></tbody></table><p>容器后续单独一篇展开。</p><h2 id="微虚拟化-Firecracker-Kata-Containers"><a href="#微虚拟化-Firecracker-Kata-Containers" class="headerlink" title="微虚拟化 &#x2F; Firecracker &#x2F; Kata Containers"></a>微虚拟化 &#x2F; Firecracker &#x2F; Kata Containers</h2><p>容器的安全性弱——业界发明了”轻量虚拟化”：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><code class="hljs text">Firecracker（AWS）：<br>  - 微 VM，启动 125 ms，内存 5 MB<br>  - AWS Lambda / Fargate 用<br>  - Rust 实现，攻击面小<br><br>Kata Containers：<br>  - &quot;VM 包容器&quot;<br>  - 看起来是容器，实际是 VM<br>  - 安全 + 兼容容器生态<br>  - QEMU / Cloud Hypervisor 后端<br><br>Cloud Hypervisor（Intel/AMD/Microsoft）：<br>  - Rust 实现的轻量 Hypervisor<br>  - 替代 QEMU 在某些场景<br></code></pre></td></tr></table></figure><p>这些”微虚拟化”是 serverless &#x2F; 多租户 K8s 的关键。</p><h2 id="嵌套虚拟化"><a href="#嵌套虚拟化" class="headerlink" title="嵌套虚拟化"></a>嵌套虚拟化</h2><p>VM 里跑 VM：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><code class="hljs text">启用嵌套：<br>  modprobe kvm_intel nested=1<br>  或 GRUB: kvm-intel.nested=1<br><br>应用：<br>  - 云上跑 K8s 节点 + VM 测试<br>  - CI 跑虚拟化测试<br>  - 套娃训练环境<br><br>性能：     损失 5-10% / 层<br></code></pre></td></tr></table></figure><h2 id="Live-Migration（在线迁移）"><a href="#Live-Migration（在线迁移）" class="headerlink" title="Live Migration（在线迁移）"></a>Live Migration（在线迁移）</h2><p>VM 迁移到另一台物理机不停机：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><code class="hljs text">原理：<br>  1. 标记内存脏页<br>  2. 在线复制内存到目标<br>  3. 反复迭代脏页<br>  4. 暂停 source，复制最后脏页 + 寄存器<br>  5. 启动 destination<br>  <br>  停机时间：     50-500 ms（看内存大小和带宽）<br><br>要求：<br>  - 网络共享存储或镜像迁移<br>  - 网络带宽足够（10G+）<br>  - CPU 能力相近（或开 host-passthrough 关）<br></code></pre></td></tr></table></figure><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># KVM Live Migration</span><br>virsh migrate --live vm1 qemu+ssh://target-host/system<br></code></pre></td></tr></table></figure><p>VM Live Migration 在云上是常态——升级宿主机时，把 VM 平滑迁走，租户感知微小。</p><h2 id="虚拟化的几个老坑"><a href="#虚拟化的几个老坑" class="headerlink" title="虚拟化的几个老坑"></a>虚拟化的几个老坑</h2><h3 id="坑-1：忘记开-VT-x-VT-d"><a href="#坑-1：忘记开-VT-x-VT-d" class="headerlink" title="坑 1：忘记开 VT-x &#x2F; VT-d"></a>坑 1：忘记开 VT-x &#x2F; VT-d</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 看 CPU 是否支持</span><br>egrep <span class="hljs-string">&quot;vmx|svm&quot;</span> /proc/cpuinfo<br><br><span class="hljs-comment"># 看 KVM 是否启用</span><br><span class="hljs-built_in">ls</span> /dev/kvm                    <span class="hljs-comment"># 应该存在</span><br>lsmod | grep kvm<br><br><span class="hljs-comment"># IOMMU 状态</span><br>dmesg | grep -E <span class="hljs-string">&quot;DMAR|IOMMU&quot;</span><br></code></pre></td></tr></table></figure><p>很多服务器 BIOS 默认不开 VT-d——必须 BIOS 启用。</p><h3 id="坑-2：CPU-“host”-vs-“host-model”"><a href="#坑-2：CPU-“host”-vs-“host-model”" class="headerlink" title="坑 2：CPU “host” vs “host-model”"></a>坑 2：CPU “host” vs “host-model”</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><code class="hljs text">host-passthrough：  完全暴露物理 CPU 特性，性能最好但 Live Migration 受限<br>host-model：        暴露相近 CPU 模型，可迁移<br>custom：            指定通用模型（&quot;qemu64&quot;），性能损失但兼容性最好<br></code></pre></td></tr></table></figure><p>云厂家一般用 host-model 折中。</p><h3 id="坑-3：内存-ballooning-调过头"><a href="#坑-3：内存-ballooning-调过头" class="headerlink" title="坑 3：内存 ballooning 调过头"></a>坑 3：内存 ballooning 调过头</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs text">balloon 让 Hypervisor 在 VM 间动态调内存<br>但调过头：VM 突然 OOM<br>建议：<br>  - 业务 VM 关闭 balloon<br>  - 给定固定内存<br></code></pre></td></tr></table></figure><h3 id="坑-4：KSM-误用"><a href="#坑-4：KSM-误用" class="headerlink" title="坑 4：KSM 误用"></a>坑 4：KSM 误用</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><code class="hljs text">KSM（Kernel Same-page Merging）：<br>  - 多 VM 共享相同内存页<br>  - 节省内存<br>  - 但增加 CPU 开销 + 侧信道风险<br><br>延迟敏感场景关：    echo 0 &gt; /sys/kernel/mm/ksm/run<br></code></pre></td></tr></table></figure><h3 id="坑-5：Live-Migration-失败"><a href="#坑-5：Live-Migration-失败" class="headerlink" title="坑 5：Live Migration 失败"></a>坑 5：Live Migration 失败</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs text">常见原因：<br>  1. CPU 模型不匹配 → host-model 不一致<br>  2. 网络配置不一致 → bridge 名不同<br>  3. 共享存储不可达 → 镜像不在 NFS / Ceph 上<br>  4. 安全策略阻断 → SELinux / AppArmor<br></code></pre></td></tr></table></figure><h2 id="虚拟化的国产化"><a href="#虚拟化的国产化" class="headerlink" title="虚拟化的国产化"></a>虚拟化的国产化</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs text">华为 FusionCompute：    KVM 衍生 + 自家管理<br>深信服 aSV：           KVM 衍生<br>新华三 H3C CAS / UIS：   KVM 衍生 + OpenStack<br>浪潮 InCloud：          KVM 衍生<br>ZStack：               国产 OpenStack 替代<br>青云 QingCloud：       自研<br><br>VMware 替代浪潮：       Broadcom 收购后加速<br></code></pre></td></tr></table></figure><blockquote><p>待补充：国产虚拟化产品 2025-2026 在政企的实际部署比例。</p></blockquote><h2 id="虚拟化与云"><a href="#虚拟化与云" class="headerlink" title="虚拟化与云"></a>虚拟化与云</h2><pre class="mermaid">graph TB  PUB[公有云<br/>AWS/Azure/GCP/阿里/腾讯]  PUB --> NITRO[AWS Nitro<br/>KVM 衍生 + DPU 卸载]  PUB --> AZURE_HV[Azure Hypervisor<br/>Hyper-V 衍生]  PUB --> ALI[阿里神龙<br/>KVM + DPU]    PRIV[私有云]  PRIV --> VMW[VMware vSphere<br/>已被 Broadcom]  PRIV --> OS[OpenStack 系]  PRIV --> CN_OS[国产虚拟化]</pre><p>公有云 Hypervisor 都是 <strong>“KVM 深度定制 + DPU 卸载”</strong> 的路线。</p><h2 id="一些数字直觉"><a href="#一些数字直觉" class="headerlink" title="一些数字直觉"></a>一些数字直觉</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><code class="hljs text">KVM VM 启动：              30s - 1min<br>Firecracker μVM 启动：     125 ms<br>Kata Container 启动：     ~1 sec<br><br>KVM CPU 性能损失：         &lt;2%<br>KVM IO 性能损失（virtio）：5-15%<br>SR-IOV 网卡：             ~95% 性能<br>GPU 直通：                100% 性能<br>NVIDIA MIG：              资源严格隔离<br><br>VMware vSphere license：  $5K-15K / socket（Broadcom 后）<br>KVM + libvirt：           免费<br>华为 FusionCompute：      ¥几万 / 节点<br></code></pre></td></tr></table></figure><h2 id="小结"><a href="#小结" class="headerlink" title="小结"></a>小结</h2><ul><li>虚拟化分 Type 1（裸金属）和 Type 2（宿主机），数据中心只用 Type 1</li><li>KVM 是 Linux 内核虚拟化，QEMU 提供设备模拟</li><li>Xen 已边缘化，VMware 被 Broadcom 收购后涨价加速国产化</li><li>SR-IOV 让一个网卡变多 VF，VFIO 让设备直通到 VM</li><li>NVIDIA MIG 是 A100&#x2F;H100 硬件级 GPU 虚拟化</li><li>Firecracker &#x2F; Kata 是”轻量虚拟化”，serverless 主流</li><li>Live Migration 是云的核心能力</li></ul><p>下一篇讲容器与 K8s——比 VM 更轻、规模更大的”OS 层抽象”。</p>]]>
    </content>
    <id>http://localhost:4000/posts/e0ece8f/</id>
    <link href="http://localhost:4000/posts/e0ece8f/"/>
    <published>2026-01-18T14:25:00.000Z</published>
    <summary>虚拟化把一台物理服务器变成多台虚拟机，是云计算的基石。本文讲清 KVM / Xen / Hyper-V 三大主流方案、SR-IOV / vGPU 直通，以及现代虚拟化的演进。</summary>
    <title>虚拟化 —— KVM、Xen、Hyper-V 与 SR-IOV</title>
    <updated>2026-05-24T13:49:48.030Z</updated>
  </entry>
  <entry>
    <category term="07-操作系统" scheme="http://localhost:4000/categories/07-%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/"/>
    <category term="Linux" scheme="http://localhost:4000/tags/Linux/"/>
    <category term="RHEL" scheme="http://localhost:4000/tags/RHEL/"/>
    <category term="Ubuntu" scheme="http://localhost:4000/tags/Ubuntu/"/>
    <category term="发行版" scheme="http://localhost:4000/tags/%E5%8F%91%E8%A1%8C%E7%89%88/"/>
    <content>
      <![CDATA[<p>第七章讲操作系统。Linux 是服务器市场绝对主流——但”哪个发行版”、”用什么内核”、”哪种包管理器”这些选择会决定运维成本。本文按家族梳理。</p><!-- more --><h2 id="一张全景"><a href="#一张全景" class="headerlink" title="一张全景"></a>一张全景</h2><pre class="mermaid">graph TB  K[Linux Kernel<br/>内核 / kernel.org]  K --> RH[RHEL 系<br/>RPM]  K --> DB[Debian 系<br/>DEB]  K --> SU[SUSE 系<br/>RPM]  K --> SP[特殊<br/>NixOS / Gentoo / Arch]    RH --> RHEL[RHEL]  RH --> CENTOS[CentOS<br/>已转 Stream]  RH --> ROCKY[Rocky Linux]  RH --> ALMA[AlmaLinux]  RH --> FEDORA[Fedora]  RH --> ORACLE[Oracle Linux]    DB --> DEBIAN[Debian]  DB --> UBUNTU[Ubuntu Server]  DB --> KALI[Kali]    SU --> SLES[SLES]  SU --> OPENSUSE[openSUSE Leap/Tumbleweed]    RH -.- CN[国产基于 RPM]  DB -.- CN  CN --> EULER[openEuler]  CN --> KYLIN[麒麟]  CN --> ANOLIS[龙蜥 OpenAnolis]  CN --> UOS[统信 UOS]</pre><h2 id="三大主流家族"><a href="#三大主流家族" class="headerlink" title="三大主流家族"></a>三大主流家族</h2><h3 id="Red-Hat-系（RPM）"><a href="#Red-Hat-系（RPM）" class="headerlink" title="Red Hat 系（RPM）"></a>Red Hat 系（RPM）</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><code class="hljs text">RHEL（Red Hat Enterprise Linux）：     付费，企业级<br>CentOS：                               原 RHEL 重编译，2021 年转 Stream（即&quot;上游版&quot;）<br>Rocky Linux：                          CentOS 关闭后社区接力，RHEL 兼容<br>AlmaLinux：                            另一支社区 RHEL 兼容<br>Oracle Linux：                          Oracle 维护的 RHEL 兼容<br>Fedora                               Red Hat 上游，新特性试验<br></code></pre></td></tr></table></figure><p><strong>CentOS Stream 风波（2020）</strong> 是 Linux 服务器界的大事件：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs text">2020 年 12 月：Red Hat 宣布 CentOS 8 提前 EOL<br>              CentOS 8 → CentOS Stream（变为 RHEL 上游）<br>影响：        几亿 CentOS 用户必须迁移<br>受益：        Rocky Linux、AlmaLinux 一夜走红<br>              国产 OS 路线（欧拉、龙蜥）加速<br></code></pre></td></tr></table></figure><h3 id="Debian-系（DEB）"><a href="#Debian-系（DEB）" class="headerlink" title="Debian 系（DEB）"></a>Debian 系（DEB）</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><code class="hljs text">Debian：       社区维护，稳定保守<br>Ubuntu：       Canonical 商业发行，每 2 年 LTS（4-6 月发版）<br>              22.04 LTS / 24.04 LTS / 26.04 LTS（即将）<br></code></pre></td></tr></table></figure><p>Ubuntu LTS 是云市场最广泛——AWS &#x2F; GCP &#x2F; Azure 上 Ubuntu 占比都很高。</p><h3 id="SUSE-系（RPM）"><a href="#SUSE-系（RPM）" class="headerlink" title="SUSE 系（RPM）"></a>SUSE 系（RPM）</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><code class="hljs text">SLES（SUSE Linux Enterprise Server）：付费企业级<br>openSUSE Leap：                       社区版<br>openSUSE Tumbleweed：                 滚动更新<br></code></pre></td></tr></table></figure><p>SUSE 在欧洲企业、SAP 系统上份额高。中国市场较少。</p><h2 id="RHEL-的版本节奏"><a href="#RHEL-的版本节奏" class="headerlink" title="RHEL 的版本节奏"></a>RHEL 的版本节奏</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><code class="hljs text">RHEL 6（2010-2020）：    服务器经典<br>RHEL 7（2014-2024）：    引入 systemd，是变化最大的一代<br>RHEL 8（2019-2029）：    UBI 容器、模块化 AppStream<br>RHEL 9（2022-2032）：    OpenSSL 3、cgroup v2 默认<br>RHEL 10（2025-2035）：   预计、ARM 架构第一公民<br><br>每代主要支持 10 年（5 年 full + 5 年 extended）<br></code></pre></td></tr></table></figure><p><strong>RHEL 8&#x2F;9 是当前服务器市场的主流</strong>——大多数企业上 RHEL 8 或 RHEL 9。</p><h2 id="Ubuntu-Server-的版本节奏"><a href="#Ubuntu-Server-的版本节奏" class="headerlink" title="Ubuntu Server 的版本节奏"></a>Ubuntu Server 的版本节奏</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><code class="hljs text">Ubuntu 18.04 LTS（2018-2028）：旧但还在用<br>Ubuntu 20.04 LTS（2020-2030）：当前主力之一<br>Ubuntu 22.04 LTS（2022-2032）：当前主力<br>Ubuntu 24.04 LTS（2024-2034）：最新 LTS<br>Ubuntu 26.04 LTS（2026-2036）：将在 2026 年 4 月发布<br><br>非 LTS 半年一发，9 月支持<br></code></pre></td></tr></table></figure><p>LTS 是数据中心标配——10 年支持是企业刚需。</p><h2 id="systemd：Linux-服务器的”分水岭”"><a href="#systemd：Linux-服务器的”分水岭”" class="headerlink" title="systemd：Linux 服务器的”分水岭”"></a>systemd：Linux 服务器的”分水岭”</h2><p>2014 年 RHEL 7 &#x2F; Debian 8 &#x2F; Ubuntu 14.04 都默认换成 <strong>systemd</strong>——这是 Linux 历史上最有争议的变化：</p><pre class="mermaid">graph TB  OLD[传统 SysVinit + Upstart]  OLD --> S1[/etc/init.d/ + 串行启动]    NEW[systemd]  NEW --> N1[unit 文件 + 并行启动]  NEW --> N2[整合：网络/日志/挂载/cron]  NEW --> N3[依赖关系图]  NEW --> N4[journald 二进制日志]</pre><p>systemd 集中管理：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><code class="hljs text">原来分散的功能被 systemd 接管：<br>  init → systemd<br>  cron → systemd-timer<br>  syslog → journald<br>  network → networkd（可选）<br>  resolv.conf → resolved<br>  mount → mount unit<br>  inetd → socket activation<br>  <br>争议：<br>  - &quot;Unix 哲学&quot;违反（一个工具只做一件事）<br>  - 复杂度大<br>  - 大型软件吸引大型 bug<br></code></pre></td></tr></table></figure><h3 id="systemd-的实战命令"><a href="#systemd-的实战命令" class="headerlink" title="systemd 的实战命令"></a>systemd 的实战命令</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 服务管理</span><br>systemctl start/stop/restart nginx<br>systemctl <span class="hljs-built_in">enable</span>/disable nginx<br>systemctl status nginx<br><br><span class="hljs-comment"># 看日志</span><br>journalctl -u nginx<br>journalctl -f          <span class="hljs-comment"># 跟踪模式</span><br>journalctl --since <span class="hljs-string">&quot;1 hour ago&quot;</span><br>journalctl -p err      <span class="hljs-comment"># 仅错误</span><br><br><span class="hljs-comment"># 单元配置</span><br>systemctl <span class="hljs-built_in">cat</span> nginx.service<br>systemctl edit nginx.service      <span class="hljs-comment"># 临时覆盖</span><br>systemctl daemon-reload<br><br><span class="hljs-comment"># 启动分析</span><br>systemd-analyze<br>systemd-analyze blame             <span class="hljs-comment"># 看启动慢的服务</span><br>systemd-analyze critical-chain    <span class="hljs-comment"># 关键启动链</span><br><br><span class="hljs-comment"># 资源限制</span><br>systemctl set-property nginx MemoryLimit=2G<br>systemctl set-property nginx CPUQuota=200%<br></code></pre></td></tr></table></figure><p>systemd 的资源限制其实就是 cgroup——它在自动管理 cgroup。</p><h2 id="包管理器对比"><a href="#包管理器对比" class="headerlink" title="包管理器对比"></a>包管理器对比</h2><pre class="mermaid">graph TB  RPM[RPM 系]  RPM --> YUM[yum<br/>RHEL 7]  RPM --> DNF[dnf<br/>RHEL 8+]  RPM --> ZYPPER[zypper<br/>SUSE]    DEB[DEB 系]  DEB --> APT[apt<br/>Debian/Ubuntu]    OTHER[其他]  OTHER --> PACMAN[pacman<br/>Arch]  OTHER --> NIX[nix<br/>NixOS]  OTHER --> SNAP[snap / flatpak<br/>跨发行版]</pre><table><thead><tr><th>包管理器</th><th>命令例</th><th>配置文件</th></tr></thead><tbody><tr><td>dnf &#x2F; yum</td><td><code>dnf install nginx</code></td><td><code>/etc/yum.repos.d/</code></td></tr><tr><td>apt</td><td><code>apt install nginx</code></td><td><code>/etc/apt/sources.list</code></td></tr><tr><td>zypper</td><td><code>zypper install nginx</code></td><td><code>/etc/zypp/repos.d/</code></td></tr><tr><td>pacman</td><td><code>pacman -S nginx</code></td><td><code>/etc/pacman.conf</code></td></tr></tbody></table><h2 id="内核版本与发行版"><a href="#内核版本与发行版" class="headerlink" title="内核版本与发行版"></a>内核版本与发行版</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><code class="hljs text">LTS 内核版本（kernel.org）：<br>  4.19（2018）：   仍在维护<br>  5.4（2019）：    EOL 2025<br>  5.10（2020）：   EOL 2026<br>  5.15（2021）：   EOL 2026<br>  6.1（2022）：    EOL 2026<br>  6.6（2023）：    EOL 2026<br>  6.12（2024）：   EOL 2027<br><br>每个发行版选一个 LTS 内核长期维护：<br>  RHEL 9：       基于 5.14<br>  Ubuntu 22.04：5.15<br>  Ubuntu 24.04：6.8<br>  Debian 12：    6.1<br>  SLES 15 SP6：  6.4<br></code></pre></td></tr></table></figure><p>数据中心服务器多年不会换内核——选好 LTS 后稳定运行 5-10 年。</p><h2 id="内核新特性的”上游-→-发行版”路径"><a href="#内核新特性的”上游-→-发行版”路径" class="headerlink" title="内核新特性的”上游 → 发行版”路径"></a>内核新特性的”上游 → 发行版”路径</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><code class="hljs text">2017：BPF 抓包 / XDP 高速包处理（5.x）<br>2018：cgroup v2（4.20，2019 默认 RHEL 8）<br>2019：io_uring 异步 IO（5.1）<br>2020：BPF CO-RE，eBPF 程序通用<br>2021：folios（VM 子系统重构）<br>2022：BPF for tracing 大量工具（bpftrace）<br>2023：folio 完成 + multi-gen LRU<br>2024：sched_ext（可插拔调度器）<br>2025：NUMA / memory tiering 改进 / CXL<br></code></pre></td></tr></table></figure><p>这些特性按发行版”渐进引入”——RHEL 9 才开始默认 cgroup v2，是 2019 上游引入后 3 年。</p><h2 id="io-uring：异步-IO-革命"><a href="#io-uring：异步-IO-革命" class="headerlink" title="io_uring：异步 IO 革命"></a>io_uring：异步 IO 革命</h2><p>io_uring（5.1+，2019）是 Linux 几年最重要的 IO 子系统升级：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><code class="hljs text">传统 IO：     read() / write() / epoll<br>   每次系统调用过 kernel 切换上下文<br>   高并发吃 CPU<br><br>io_uring：   提交队列 + 完成队列<br>   多个请求批量提交，批量完成<br>   内核轮询模式可零系统调用<br>   性能 5-10× 传统<br>   <br>应用：<br>  - PostgreSQL（17+）<br>  - MySQL<br>  - Redis（部分）<br>  - QEMU<br>  - rusoto / Tokio<br></code></pre></td></tr></table></figure><p>io_uring 是数据库 &#x2F; 存储 &#x2F; 高并发服务的”未来 IO”。</p><h2 id="eBPF：内核可编程"><a href="#eBPF：内核可编程" class="headerlink" title="eBPF：内核可编程"></a>eBPF：内核可编程</h2><p>eBPF（extended BPF）是 2014+ Linux 内核最深刻的扩展：</p><pre class="mermaid">graph TB  USER[用户程序<br/>C / Rust / Go]  USER --> BPF[BPF Verifier<br/>安全检查]  BPF --> JIT[JIT 编译]  JIT --> KERNEL[内核中执行<br/>挂钩点]  KERNEL --> H1[网络包处理]  KERNEL --> H2[系统调用追踪]  KERNEL --> H3[安全策略]  KERNEL --> H4[性能分析]</pre><p>应用：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><code class="hljs text">Cilium：       BPF-based K8s CNI<br>bpftrace：    动态 tracing 工具<br>Falco：        BPF 安全审计<br>Pixie：        BPF 可观测平台<br>Katran：       BPF 负载均衡（Facebook）<br>Calico：       BPF 数据面<br></code></pre></td></tr></table></figure><p>BPF 让数据中心运维 &#x2F; 排障 &#x2F; 安全能力大幅提升——<strong>比传统 ftrace &#x2F; strace 快 10-100 倍</strong>。</p><h2 id="服务器-OS-的几个”老坑”"><a href="#服务器-OS-的几个”老坑”" class="headerlink" title="服务器 OS 的几个”老坑”"></a>服务器 OS 的几个”老坑”</h2><h3 id="坑-1：选错-EL-版本"><a href="#坑-1：选错-EL-版本" class="headerlink" title="坑 1：选错 EL 版本"></a>坑 1：选错 EL 版本</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><code class="hljs text">RHEL 7：     2024 年 6 月 EOL<br>RHEL 8：     2029 年 EOL<br>RHEL 9：     2032 年 EOL<br><br>新部署上 RHEL 7 就是 1 年内 EOL ——非常糟<br>新部署应该 RHEL 9 / Ubuntu 24.04 起步<br></code></pre></td></tr></table></figure><h3 id="坑-2：CentOS-8-仍在跑"><a href="#坑-2：CentOS-8-仍在跑" class="headerlink" title="坑 2：CentOS 8 仍在跑"></a>坑 2：CentOS 8 仍在跑</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><code class="hljs text">CentOS 8 已 EOL（2021 年）<br>但很多企业仍在用——补丁 / 安全洞危险<br>迁移路径：<br>  CentOS 8 → Rocky Linux 8 / AlmaLinux 8（最容易）<br>  CentOS 8 → RHEL 8（付费）<br>  CentOS 8 → openEuler / 龙蜥（国产）<br></code></pre></td></tr></table></figure><h3 id="坑-3：systemd-资源限制忘记设"><a href="#坑-3：systemd-资源限制忘记设" class="headerlink" title="坑 3：systemd 资源限制忘记设"></a>坑 3：systemd 资源限制忘记设</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><code class="hljs text">默认 systemd 单元没有资源限制<br>进程内存泄漏 → 把整机吃光 → OOM 全杀<br><br>补救：<br>  systemctl set-property myapp MemoryLimit=4G<br>  写入 .service 文件中持久化<br></code></pre></td></tr></table></figure><h3 id="坑-4：journald-日志爆盘"><a href="#坑-4：journald-日志爆盘" class="headerlink" title="坑 4：journald 日志爆盘"></a>坑 4：journald 日志爆盘</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs text">journald 默认无限保留 → 磁盘满<br>配置 /etc/systemd/journald.conf:<br>  SystemMaxUse=2G<br>  RuntimeMaxUse=1G<br>  MaxRetentionSec=1month<br></code></pre></td></tr></table></figure><h3 id="坑-5：NetworkManager-与-networkd-冲突"><a href="#坑-5：NetworkManager-与-networkd-冲突" class="headerlink" title="坑 5：NetworkManager 与 networkd 冲突"></a>坑 5：NetworkManager 与 networkd 冲突</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><code class="hljs text">RHEL 默认 NetworkManager<br>Ubuntu Server 默认 networkd<br>两个都开：互相覆盖配置 → 网络抖动<br></code></pre></td></tr></table></figure><h3 id="坑-6：firewalld-vs-nftables"><a href="#坑-6：firewalld-vs-nftables" class="headerlink" title="坑 6：firewalld vs nftables"></a>坑 6：firewalld vs nftables</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><code class="hljs text">RHEL 8+ 默认 firewalld（nftables 后端）<br>直接 iptables 命令在 RHEL 8+ 上是模拟层<br>建议：    <br>  - 用 firewalld 命令（系统层）<br>  - 或直接 nftables（更现代）<br>  - 不要混用<br></code></pre></td></tr></table></figure><h3 id="坑-7：内核升级踩坑"><a href="#坑-7：内核升级踩坑" class="headerlink" title="坑 7：内核升级踩坑"></a>坑 7：内核升级踩坑</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><code class="hljs text">RHEL minor 升级（9.2 → 9.3）：通常 OK<br>RHEL major 升级（9 → 10）：     重新装更安全<br>内核单独升级（不是发行版）：<br>  - 5.14 → 6.x：驱动可能缺<br>  - GPU / 存储驱动必须验证<br>  - 第三方模块（kABI）不一定兼容<br></code></pre></td></tr></table></figure><h2 id="服务器-OS-的几个”硬核”特性"><a href="#服务器-OS-的几个”硬核”特性" class="headerlink" title="服务器 OS 的几个”硬核”特性"></a>服务器 OS 的几个”硬核”特性</h2><h3 id="Live-Patching（在线打补丁）"><a href="#Live-Patching（在线打补丁）" class="headerlink" title="Live Patching（在线打补丁）"></a>Live Patching（在线打补丁）</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><code class="hljs text">kpatch（RHEL）/ livepatch（Ubuntu）：<br>  - 内核安全补丁不重启即生效<br>  - 主要打 CVE 漏洞<br>  - 临时方案，下次重启永久打<br></code></pre></td></tr></table></figure><h3 id="kdump（内核崩溃转储）"><a href="#kdump（内核崩溃转储）" class="headerlink" title="kdump（内核崩溃转储）"></a>kdump（内核崩溃转储）</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><code class="hljs text">内核崩溃时把内存 dump 到文件：<br>  - 第二个 kernel 接管<br>  - dump 到 /var/crash/<br>  - 用 crash 工具分析<br><br>配置：     /etc/kdump.conf<br>启用：     systemctl enable --now kdump<br></code></pre></td></tr></table></figure><h3 id="tuned（性能调优）"><a href="#tuned（性能调优）" class="headerlink" title="tuned（性能调优）"></a>tuned（性能调优）</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><code class="hljs text">tuned-adm list           # 看可用 profile<br>tuned-adm profile latency-performance     # 低延迟<br>tuned-adm profile throughput-performance  # 高吞吐<br>tuned-adm profile virtual-host            # 虚拟化宿主<br></code></pre></td></tr></table></figure><p>每个 profile 自动调 CPU 调度、内核参数、IRQ。</p><h2 id="服务器-OS-选型实战"><a href="#服务器-OS-选型实战" class="headerlink" title="服务器 OS 选型实战"></a>服务器 OS 选型实战</h2><pre class="mermaid">graph TD  Q1{业务场景?}  Q1 -- "传统企业 + 商业支持" --> S1[RHEL 9 + 订阅]  Q1 -- "云原生 / K8s" --> S2[Ubuntu 22.04/24.04 LTS]  Q1 -- "自管 + 免费" --> S3[Rocky Linux 9 / AlmaLinux 9]  Q1 -- "SAP / 欧洲企业" --> S4[SLES 15]  Q1 -- "国产化要求" --> S5[openEuler / 麒麟 / 龙蜥]  Q1 -- "AI 训练集群" --> S6[Ubuntu 22.04 + 内核 5.15+]</pre><h2 id="一些查询命令"><a href="#一些查询命令" class="headerlink" title="一些查询命令"></a>一些查询命令</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 看发行版</span><br><span class="hljs-built_in">cat</span> /etc/os-release<br>hostnamectl<br><br><span class="hljs-comment"># 看内核</span><br><span class="hljs-built_in">uname</span> -r<br><span class="hljs-built_in">uname</span> -a<br><br><span class="hljs-comment"># 看包管理器</span><br>dnf list installed<br>apt list --installed<br><br><span class="hljs-comment"># 看 systemd 单元</span><br>systemctl list-units --<span class="hljs-built_in">type</span>=service<br>systemctl list-timers<br><br><span class="hljs-comment"># 内核参数</span><br>sysctl -a | grep &lt;param&gt;<br><span class="hljs-built_in">cat</span> /proc/cmdline                  <span class="hljs-comment"># 启动参数</span><br><br><span class="hljs-comment"># 看启动时间</span><br>systemd-analyze<br>systemd-analyze blame | <span class="hljs-built_in">head</span> -10<br></code></pre></td></tr></table></figure><h2 id="一些数字直觉"><a href="#一些数字直觉" class="headerlink" title="一些数字直觉"></a>一些数字直觉</h2><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs text">RHEL 9 全新安装：    ~1.5 GB 磁盘 / 系统启动 &lt; 30 秒<br>Ubuntu 22.04 LTS：   ~1.2 GB<br>最小 Alpine Linux：  ~5 MB（容器用）<br><br>RHEL 订阅：         $349/年 起（标准）<br>SLES 订阅：         $1499/年 起（标准）<br>openEuler：         免费 + 商业服务（华为）<br>龙蜥：              免费 + 商业服务（阿里、统信等）<br></code></pre></td></tr></table></figure><h2 id="第七章-Roadmap"><a href="#第七章-Roadmap" class="headerlink" title="第七章 Roadmap"></a>第七章 Roadmap</h2><p>接下来会展开：</p><ul><li>虚拟化（KVM &#x2F; Xen &#x2F; Hyper-V）</li><li>容器化（Docker &#x2F; containerd &#x2F; K8s）</li><li>内核内部（调度 &#x2F; 网络栈 &#x2F; FS）</li><li>AI 时代 OS 适配（vGPU &#x2F; NPU 调度）</li><li>国产服务器 OS（欧拉 &#x2F; 麒麟 &#x2F; 龙蜥 &#x2F; 统信）</li></ul><h2 id="小结"><a href="#小结" class="headerlink" title="小结"></a>小结</h2><ul><li>Linux 是服务器市场绝对主流，三大家族 RHEL &#x2F; Debian &#x2F; SUSE</li><li>CentOS 8 风波改变格局，Rocky &#x2F; AlmaLinux 接力</li><li>systemd 是 2014 后服务器 OS 的”分水岭”</li><li>io_uring + eBPF 是近年内核最重要的两个新特性</li><li>RHEL 订阅 vs 免费衍生 vs 国产 OS 是当前选型核心问题</li></ul><p>下一篇讲虚拟化——KVM、Xen、Hyper-V，以及 SR-IOV &#x2F; vGPU。</p>]]>
    </content>
    <id>http://localhost:4000/posts/a05ce19a/</id>
    <link href="http://localhost:4000/posts/a05ce19a/"/>
    <published>2026-01-11T13:10:00.000Z</published>
    <summary>Linux 是数据中心服务器的事实标准。本文按家族讲清主流发行版（RHEL / Debian / SUSE）以及它们各自的演进，及 systemd 引入的根本变化。</summary>
    <title>Linux 服务器 OS 演进 —— 从 RHEL 到现代发行版</title>
    <updated>2026-05-24T13:49:48.030Z</updated>
  </entry>
</feed>
