> For the complete documentation index, see [llms.txt](https://docs.verge.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.verge.io/knowledge-base/zh/system-administration/cpu-overprovisioning-guide.md).

# CPU 超配与资源规划

## 概述

CPU 超额预配（也称为超分配）允许你分配给工作负载的虚拟 CPU 核心数超过实际可用的物理核心数。本指南解释 VergeOS 如何处理 CPU 资源、超额预配的影响，以及容量规划的最佳实践。

## VergeOS CPU 分配方式

### 虚拟核心与物理核心

当你为 VM 分配 vCPU 时，你是在分配 **虚拟核心** 这些核心会被调度到物理 CPU 核心上。VergeOS 不会为 VM 独占预留物理核心，而是通过时间片轮转来共享物理资源。

**要点：**

* 默认情况下，vCPU 不会绑定到物理核心
* 来自不同 VM 的多个 vCPU 可以共享同一个物理核心
* 虚拟机管理程序调度器负责 CPU 时间分配

### “每台机器最大核心数”设置

此集群设置控制单个工作负载（VM、租户节点或 NAS 服务）可分配的 CPU 核心最大数量。

**位置：** 基础设施 > 集群 > \[集群名称] > 编辑

{% hint style="warning" %}
**关键限制**

* 此值应 **绝不要超过** 你最小节点上的物理核心总数
* 在大多数情况下，请将其保持在 **单个 CPU 插槽内** 以获得最佳 NUMA 性能
* 更改后超过此限制的 VM **无法迁移** 直到减少核心数
  {% endhint %}

## CPU 超额预配比例

### 什么是超额预配比例？

总已分配 vCPU 与总物理核心数之比：

```
超额预配比例 = 总已分配 vCPU / 总物理核心数
```

**示例：** 一个 2 节点集群，每个节点 32 核心（共 64 核），运行总计 96 个 vCPU 的 VM，其超额预配比例为 1.5:1。

### 按工作负载类型推荐的比例

| 工作负载类型    | 比例        | 说明          |
| --------- | --------- | ----------- |
| 轻量/办公负载   | 4:1 到 6:1 | 桌面 VM、文件服务器 |
| 混合通用型     | 2:1 到 4:1 | 典型企业混合负载    |
| 数据库/应用服务器 | 1:1 到 2:1 | 对性能敏感       |
| 高性能计算     | 1:1 或更低   | CPU 密集型负载   |

{% hint style="success" %}
**从保守开始**

从较低比例开始，并根据监控结果逐步提高。增加容量总比从性能不佳中恢复更容易。
{% endhint %}

## 性能影响

### 何时超额预配效果良好

* **突发型负载：** 偶尔出现 CPU 峰值，但大部分时间处于空闲的 VM
* **时间分布不同：** 在不同时间达到峰值的工作负载
* **I/O 密集型应用：** 等待磁盘或网络的时间多于等待 CPU 的 VM

### 何时超额预配会带来问题

* **CPU 密集型负载：** 持续使用 100% CPU 的应用
* **对延迟敏感的应用：** 实时系统、VoIP、交易系统
* **同时需求：** 所有 VM 都在同一时间需要 CPU

### 过度超额预配的迹象

1. **CPU 就绪时间高：** VM 正在等待可用的物理 CPU
2. **性能不稳定：** 应用有时表现良好，有时表现很差
3. **客户机操作系统显示高 CPU：** 但虚拟机管理程序显示的利用率较低

## 容量规划

### 计算可用 CPU 容量

对于具有 N+1 冗余的集群：

```
可用核心数 =（节点数 - 1）× 每节点核心数
可用 vCPU = 可用核心数 × 目标超额预配比例
```

**示例：** 4 节点集群，每个节点 32 核心，目标比例 2:1

* 可用： (4-1) × 32 = 96 核心
* 可用 vCPU：96 × 2 = 192 个 vCPU

### 迁移注意事项

当某个节点故障或进入维护时：

* 所有 VM 都必须能容纳在剩余节点上
* 每个 VM 都必须符合“每台机器最大核心数”设置
* 如果没有单个节点能够承载，拥有大量 vCPU 的 VM 可能会被卡住

{% hint style="warning" %}
**迁移就绪性**

如果某个 VM 有 64 个 vCPU，而你的节点只有 32 个核心，那么该 VM **无法迁移** 在维护或故障事件期间。请将 VM 核心数保持在单节点容量范围内。
{% endhint %}

## 最佳实践

### 一般指南

1. **在分配之前先监控：** 在增加容量前，先了解实际的 CPU 使用模式
2. **合理设置 VM 规模：** 先使用较少的 vCPU，再根据需要增加
3. **预留余量：** 保留 20-30% 的容量用于突发和故障转移
4. **谨慎使用 CPU 限制：** 它们会阻止 VM 使用可用的空闲资源

### 集群设计

1. **保持节点大小一致：** 让容量规划更简单
2. **按 N+1 规划：** 始终假定会有一个节点不可用
3. **记录假设：** 记录你的超额预配目标及其原因

### VM 配置

1. **将 vCPU 与工作负载匹配：** 更多的 vCPU 并不总是意味着更好的性能
2. **考虑 NUMA：** 对于大型 VM，请将 vCPU 限制在 NUMA 节点边界内
3. **测试性能：** 使用真实负载进行基准测试

## 监控 CPU 健康状况

### 需要关注的关键指标

| 度量值        | 健康范围     | 超出时的处理措施   |
| ---------- | -------- | ---------- |
| 集群 CPU 利用率 | 平均 < 70% | 增加节点或减少 VM |
| 节点 CPU 利用率 | 持续 < 80% | 检查 VM 分布   |
| 单个 VM CPU  | 因工作负载而异  | 调整规模或进行调查  |

### 使用 VergeOS 仪表板

1. 导航到 **基础架构** > **集群**
2. 查看 CPU 利用率图表
3. 点击单个节点查看每节点指标
4. 在每个 VM 的仪表板下查看 VM CPU 统计信息

有关集群监控的更多详细信息，请参阅 [集群概览](/run-the-platform/system-administration/clusters-overview.md).

## 常见问题

### 我可以为单个 VM 分配比物理核心更多的 vCPU 吗？

可以，但很少有好处。某个节点上 vCPU 多于物理核心数的 VM 可能会经历调度延迟，因为虚拟机管理程序需要等待足够多的核心同时可用。

### VergeOS 支持 CPU 绑定吗？

VergeOS 不支持 CPU 绑定（亲和性）。在底层，VergeOS 使用 Linux Completely Fair Scheduler（CFS）进行 CPU 调度。每个 vCPU 都映射为一个 Linux 进程/线程，所有 vCPU 线程共享同一个 CFS 运行队列。调度器使用全局公平性逻辑来决定哪个进程获得 CPU 时间以及获取顺序。

这种设计可确保资源的最佳利用，并在热迁移和故障切换时保持 VM 的可移动性。当你超额订阅 CPU 资源时，你是在与其他 VM 和租户共享这组物理核心。

### 这会如何影响软件许可？

某些软件（如 Oracle、SQL Server）是按物理核心或插槽授权的。VergeOS 的动态调度意味着你无法对 CPU 资源进行“硬性分区”。请咨询软件供应商的虚拟化许可政策——许多厂商提供按 vCPU 或按 VM 授权的模型，更适合现代虚拟机管理程序。

### 那 NUMA 呢？

对于拥有大量 vCPU 的 VM，VergeOS 会在可能的情况下尽量将内存和 CPU 分配保持在同一个 NUMA 节点内。为了获得最佳 NUMA 性能，请将 VM 的 vCPU 数量保持在单个插槽核心数以内或以下。

## 相关主题

* [集群概览](/run-the-platform/system-administration/clusters-overview.md) - 了解集群架构
* [集群配置选项](/run-the-platform/system-administration/cluster-settings.md) - 解释所有集群设置
* [虚拟机最佳实践](/run-the-platform/virtual-machines/vm-best-practices.md) - VM 配置建议
* [创建虚拟机](/run-the-platform/virtual-machines/creating-vms.md) - VM 创建指南
* [实时迁移](/run-the-platform/virtual-machines/live-migrations.md) - 在节点之间移动 VM


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.verge.io/knowledge-base/zh/system-administration/cpu-overprovisioning-guide.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
