

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 选择 Amazon EC2 实例并为您的架构预留 CPU 内核
<a name="agent-instance-selection"></a>

## 支持的 Amazon EC2 实例类型
<a name="supported-ec2-instance-types"></a>

 由于计算密集型的数据传输工作流程， AWS Ground Station 代理需要专用 CPU 内核才能运行。我们支持以下实例类型。请参阅 [CPU 核心规划](#cpu-core-planning)，确定最适用您的用例的实例类型。



- **c5**
  - **实例类型:** c5.12xlarge / **默认 v CPUs:** 48 / **默认 CPU 核心数:** 24 / **最大 digiF 聚合带宽 () MHz:** 180
  - **实例类型:** c5.18xlarge / **默认 v CPUs:** 72 / **默认 CPU 核心数:** 36 / **最大 digiF 聚合带宽 () MHz:** 380
  - **实例类型:** c5.24xlarge / **默认 v CPUs:** 96 / **默认 CPU 核心数:** 48 / **最大 digiF 聚合带宽 () MHz:** 380

- **c5n**
  - **实例类型:** c5n.18xlarge / **默认 v CPUs:** 72 / **默认 CPU 核心数:** 36 / **最大 digiF 聚合带宽 () MHz:** 400
  - **实例类型:** c5n.metal / **默认 v CPUs:** 72 / **默认 CPU 核心数:** 36 / **最大 digiF 聚合带宽 () MHz:** 400

- **c6i**
  - **实例类型:** c6i.24xlarge / **默认 v CPUs:** 96 / **默认 CPU 核心数:** 48 / **最大 digiF 聚合带宽 () MHz:** 400
  - **实例类型:** c6i.32xlarge / **默认 v CPUs:** 128 / **默认 CPU 核心数:** 64 / **最大 digiF 聚合带宽 () MHz:** 400

- **c7i**
  - **实例类型:** c7i.12xlarge / **默认 v CPUs:** 48 / **默认 CPU 核心数:** 24 / **最大 digiF 聚合带宽 () MHz:** 280
  - **实例类型:** c7i.24xlarge / **默认 v CPUs:** 96 / **默认 CPU 核心数:** 48 / **最大 digiF 聚合带宽 () MHz:** 400

- **p3dn**
  - **实例类型:** p3dn.24xlarge
  - **默认 v CPUs:** 96
  - **默认 CPU 核心数:** 48
  - **最大 digiF 聚合带宽 () MHz:** 400

- **g4dn**
  - **实例类型:** g4dn.12xlarge / **默认 v CPUs:** 48 / **默认 CPU 核心数:** 24 / **最大 digiF 聚合带宽 () MHz:** 400
  - **实例类型:** g4dn.16xlarge / **默认 v CPUs:** 64 / **默认 CPU 核心数:** 32 / **最大 digiF 聚合带宽 () MHz:** 400
  - **实例类型:** g4dn.metal / **默认 v CPUs:** 96 / **默认 CPU 核心数:** 48 / **最大 digiF 聚合带宽 () MHz:** 400

- **p4d**
  - **实例类型:** p4d.24xlarge
  - **默认 v CPUs:** 96
  - **默认 CPU 核心数:** 48
  - **最大 digiF 聚合带宽 () MHz:** 400

- **m5**
  - **实例类型:** m5.8xlarge / **默认 v CPUs:** 32 / **默认 CPU 核心数:** 16 / **最大 digiF 聚合带宽 () MHz:** 100
  - **实例类型:** m5.12xlarge / **默认 v CPUs:** 48 / **默认 CPU 核心数:** 24 / **最大 digiF 聚合带宽 () MHz:** 180
  - **实例类型:** m5.24xlarge / **默认 v CPUs:** 96 / **默认 CPU 核心数:** 48 / **最大 digiF 聚合带宽 () MHz:** 380

- **m6i**
  - **实例类型:** m6i.32xlarge
  - **默认 v CPUs:** 128
  - **默认 CPU 核心数:** 64
  - **最大 digiF 聚合带宽 () MHz:** 400

- **r5**
  - **实例类型:** r5.24xlarge / **默认 v CPUs:** 96 / **默认 CPU 核心数:** 48 / **最大 digiF 聚合带宽 () MHz:** 380
  - **实例类型:** r5.metal / **默认 v CPUs:** 96 / **默认 CPU 核心数:** 48 / **最大 digiF 聚合带宽 () MHz:** 380

- **r5n**
  - **实例类型:** r5n.24xlarge / **默认 v CPUs:** 96 / **默认 CPU 核心数:** 48 / **最大 digiF 聚合带宽 () MHz:** 400
  - **实例类型:** r5n.metal / **默认 v CPUs:** 96 / **默认 CPU 核心数:** 48 / **最大 digiF 聚合带宽 () MHz:** 400

- **r6i**
  - **实例类型:** r6i.32xlarge
  - **默认 v CPUs:** 128
  - **默认 CPU 核心数:** 64
  - **最大 digiF 聚合带宽 () MHz:** 400



**注意**  
“最大 digiF 聚合带宽” 列显示每种实例类型的所有 digiF 数据流支持的最大聚合带宽。这些限制是由分配给给定实例类型的 EC2 网络容量造成的。这些值代表保守的估计值，应在规划 digiF 配置时使用。实际带宽可能因系统负载和其他因素而异。

## CPU 核心规划
<a name="cpu-core-planning"></a>

 AWS Ground Station 代理需要专用的处理器内核，这些内核共享每个数据流的三级缓存。该座席旨在利用超线程 (HT) CPU 对，并要求为其使用预留 HT 对。超线程对是包含在单个内核中的一对虚拟 ( CPUs vCPU)。下表提供了数据流数据速率与为代理为单个数据流保留的所需内核数量的映射。这些表假设 Cascade Lake 或更高版本， CPUs 并且对任何支持的实例类型都有效。如果您的带宽介于表中的条目之间，请选择第二高的带宽。

 AWS Ground Station 根据数据流的带宽，使用两种不同的交付策略：
+ **窄带-带**宽等于 40 及以下。 MHz 
+ **宽带-带**宽高于 40。 MHz

 这些策略有不同的核心要求。值得注意的是，在同等甚至更高的带宽下，窄带数据流可能需要比宽带数据流更多的内核。策略是根据配置的 AntennaDownlink 带宽自动选择的。

**重要**  
 每个数据流都需要一组专用的内核。如果您有多个数据流，请使用相应的表（窄带或宽带）独立查找每个数据流的核心要求并求和。不要在数据流之间共享内核。代理需要一个额外的预留内核用于管理和协调，因此所需的内核总数将是每个数据流所需的内核加上**一个额外内核 (2 v CPUs**) 的总和。

**窄带内核要求 (≤40) MHz**


| AntennaDownlink 带宽 (MHz) | 预期 VITA-49.2 digiF 数据速率 (MB/s) | 内核数（HT CPU 对） | vCPU 总数 | 
| --- | --- | --- | --- | 
| ≤25 | ≤500 | 3 | 6 | 
| 30 | 600 | 4 | 8 | 
| 35 | 700 | 4 | 8 | 
| 40 | 800 | 4 | 8 | 

**宽带内核要求 (> MHz 40)**


| AntennaDownlink 带宽 (MHz) | 预期 VITA-49.2 digiF 数据速率 (MB/s) | 内核数（HT CPU 对） | vCPU 总数 | 
| --- | --- | --- | --- | 
| 50 | 1000 | 3 | 6 | 
| 100 | 2000 | 4 | 8 | 
| 150 | 3000 | 5 | 10 | 
| 200 | 4000 | 6 | 12 | 
| 250 | 5000 | 6 | 12 | 
| 300 | 6000 | 7 | 14 | 
| 350 | 7000 | 8 | 16 | 
| 400 | 8000 | 9 | 18 | 

## 收集架构信息
<a name="agent-cpu-planning-architecture"></a>

 `lscpu`提供了有关您的系统架构的信息。基本输出显示哪个 vCPUs （标记为 “CPU”）属于哪个 NUMA 节点（以及每个 NUMA 节点共享一个 L3 缓存）。下面，我们将检查一个`c5.24xlarge`实例，以收集配置 AWS Ground Station 代理所需的信息。这包括有用的信息，比如 v 的数量CPUs、内核和 vCPU-to-node关联。

```
> lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 96
On-line CPU(s) list: 0-95
Thread(s) per core: 2             <------
Core(s) per socket: 24
Socket(s): 2
NUMA node(s): 2
Vendor ID: GenuineIntel
CPU family: 6
Model: 85
Model name: Intel(R) Xeon(R) Platinum 8275CL CPU @ 3.00GHz
Stepping: 7
CPU MHz: 3601.704
BogoMIPS: 6000.01
Hypervisor vendor: KVM
Virtualization type: full
L1d cache: 32K
L1i cache: 32K
L2 cache: 1024K
L3 cache: 36608K
NUMA node0 CPU(s): 0-23,48-71     <------
NUMA node1 CPU(s): 24-47,72-95    <------
```

 专用于 AWS Ground Station 代理的内核应包括每个分配的内核CPUs 的两个 v。数据流的所有内核都必须存在于同一 NUMA 节点上。该`lscpu`命令的`-p`选项为我们提供了配置代理所需的核心与 CPU 的关联。相关字段是 CPU（也就是我们所说的 vCPU）、Core 和 L3（表示该内核共享哪个 L3 缓存）。请注意，在大多数英特尔处理器上，NUMA 节点等于三级缓存。

 考虑以下`lscpu -p`输出子集 a`c5.24xlarge`（为清楚起见，进行了缩写和格式化）。

```
CPU,Core,Socket,Node,,L1d,L1i,L2,L3
0   0    0      0     0   0   0  0
1   1    0      0     1   1   1  0
2   2    0      0     2   2   2  0
3   3    0      0     3   3   3  0
...
16  0    0      0     0   0   0  0
17  1    0      0     1   1   1  0
18  2    0      0     2   2   2  0
19  3    0      0     3   3   3  0
```

 从输出中我们可以看出，酷睿 0 包含 v CPUs 0 和 16，酷睿 1 包含 v CPUs 1 和 17，酷睿 2 包含 v CPUs 2 和 18。换句话说，超线程对是：0 和 16、1 和 17、2 和 18。

## CPU 分配示例
<a name="agent-cpu-planning-example"></a>

 例如，我们将在 350 处使用双极性宽带下行链路的`c5.24xlarge`实例。MHz从下表中[CPU 核心规划](#cpu-core-planning)我们知道，350 MHz 下行链路需要 8 个内核 (16 vCPUs) 才能实现单个数据流。这意味着，这种使用两个数据流的双极性设置总共需要 16 个内核 (32 vCPUs) 外加一个内核 (2 vCPUs) 作为代理。

 我们知道`c5.24xlarge`包含`NUMA node0 CPU(s): 0-23,48-71`和的`lscpu`输出`NUMA node1 CPU(s): 24-47,72-95`。由于 NUMA node0 的数量超出了我们的需求，因此我们只会从内核中进行分配：0-23 和 48-71。

 首先，我们将为共享三级缓存或 NUMA 节点的每个数据流选择 8 个内核。然后，我们将在`lscpu -p`输出中查找相应的 vCPUs （标记为 “CPU”）[附录：c5.24xlarge 的`lscpu -p`输出（完整）](#agent-cpu-planning-appendix-lscpu-full)。核心选择过程的示例可能如下所示：
+ 为操作系统保留内核 0-1。
+ 流程 1：选择映射到 v 2-9 和 50-57 的内核 CPUs 2-9。
+ 流程 2：选择映射到 v 10-17 和 58-65 的内核 CPUs 10-17。
+ 代理核心：选择对应到 v 18 和 66 的核心 CPUs 18。

 这会导致 v CPUs 2-18 和 50-66，因此要提供给代理的列表是。`[2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66]`您应确保自己的进程未按 CPUs 中所述在这些服务器上运行[与 AWS Ground Station 代理一起运行服务和进程](best-practices.md#avoiding-contested-cores)。

 请注意，本示例中选择的特定内核有些是任意的。只要满足所有内核共享每个数据流的三级缓存的要求，它们就可以正常工作。

## 附录：c5.24xlarge 的`lscpu -p`输出（完整）
<a name="agent-cpu-planning-appendix-lscpu-full"></a>

```
> lscpu -p
# The following is the parsable format, which can be fed to other
# programs. Each different item in every column has an unique ID
# starting from zero.
# CPU,Core,Socket,Node,,L1d,L1i,L2,L3
0,0,0,0,,0,0,0,0
1,1,0,0,,1,1,1,0
2,2,0,0,,2,2,2,0
3,3,0,0,,3,3,3,0
4,4,0,0,,4,4,4,0
5,5,0,0,,5,5,5,0
6,6,0,0,,6,6,6,0
7,7,0,0,,7,7,7,0
8,8,0,0,,8,8,8,0
9,9,0,0,,9,9,9,0
10,10,0,0,,10,10,10,0
11,11,0,0,,11,11,11,0
12,12,0,0,,12,12,12,0
13,13,0,0,,13,13,13,0
14,14,0,0,,14,14,14,0
15,15,0,0,,15,15,15,0
16,16,0,0,,16,16,16,0
17,17,0,0,,17,17,17,0
18,18,0,0,,18,18,18,0
19,19,0,0,,19,19,19,0
20,20,0,0,,20,20,20,0
21,21,0,0,,21,21,21,0
22,22,0,0,,22,22,22,0
23,23,0,0,,23,23,23,0
24,24,1,1,,24,24,24,1
25,25,1,1,,25,25,25,1
26,26,1,1,,26,26,26,1
27,27,1,1,,27,27,27,1
28,28,1,1,,28,28,28,1
29,29,1,1,,29,29,29,1
30,30,1,1,,30,30,30,1
31,31,1,1,,31,31,31,1
32,32,1,1,,32,32,32,1
33,33,1,1,,33,33,33,1
34,34,1,1,,34,34,34,1
35,35,1,1,,35,35,35,1
36,36,1,1,,36,36,36,1
37,37,1,1,,37,37,37,1
38,38,1,1,,38,38,38,1
39,39,1,1,,39,39,39,1
40,40,1,1,,40,40,40,1
41,41,1,1,,41,41,41,1
42,42,1,1,,42,42,42,1
43,43,1,1,,43,43,43,1
44,44,1,1,,44,44,44,1
45,45,1,1,,45,45,45,1
46,46,1,1,,46,46,46,1
47,47,1,1,,47,47,47,1
48,0,0,0,,0,0,0,0
49,1,0,0,,1,1,1,0
50,2,0,0,,2,2,2,0
51,3,0,0,,3,3,3,0
52,4,0,0,,4,4,4,0
53,5,0,0,,5,5,5,0
54,6,0,0,,6,6,6,0
55,7,0,0,,7,7,7,0
56,8,0,0,,8,8,8,0
57,9,0,0,,9,9,9,0
58,10,0,0,,10,10,10,0
59,11,0,0,,11,11,11,0
60,12,0,0,,12,12,12,0
61,13,0,0,,13,13,13,0
62,14,0,0,,14,14,14,0
63,15,0,0,,15,15,15,0
64,16,0,0,,16,16,16,0
65,17,0,0,,17,17,17,0
66,18,0,0,,18,18,18,0
67,19,0,0,,19,19,19,0
68,20,0,0,,20,20,20,0
69,21,0,0,,21,21,21,0
70,22,0,0,,22,22,22,0
71,23,0,0,,23,23,23,0
72,24,1,1,,24,24,24,1
73,25,1,1,,25,25,25,1
74,26,1,1,,26,26,26,1
75,27,1,1,,27,27,27,1
76,28,1,1,,28,28,28,1
77,29,1,1,,29,29,29,1
78,30,1,1,,30,30,30,1
79,31,1,1,,31,31,31,1
80,32,1,1,,32,32,32,1
81,33,1,1,,33,33,33,1
82,34,1,1,,34,34,34,1
83,35,1,1,,35,35,35,1
84,36,1,1,,36,36,36,1
85,37,1,1,,37,37,37,1
86,38,1,1,,38,38,38,1
87,39,1,1,,39,39,39,1
88,40,1,1,,40,40,40,1
89,41,1,1,,41,41,41,1
90,42,1,1,,42,42,42,1
91,43,1,1,,43,43,43,1
92,44,1,1,,44,44,44,1
93,45,1,1,,45,45,45,1
94,46,1,1,,46,46,46,1
95,47,1,1,,47,47,47,1
```