如何改进我的 Amazon EC2 Linux 实例的 CPU 性能?

上次更新时间:2019 年 10 月 8 日

我想提高我的 Amazon Elastic Compute Cloud (Amazon EC2) Linux 实例的性能。有哪些方法可以做到这一点?

解决方法

要提高您的 Amazon EC2 Linux 实例的性能,请尝试以下建议方法:

硬件虚拟机 (HVM) Amazon 系统映像 (AMI)

我们建议使用 HVM AMI 来提高性能。HVM AMI 还会提供较新的实例类别(例如,M5、M4 和 R4)和 Amazon EC2 功能(例如增强联网)。有关更多信息,请参阅 Linux AMI 虚拟化类型

增强联网

为了提高性能,您可以在支持的实例类型中使用增强联网功能,且无需支付额外费用。增强联网功能使用单根 I/O 虚拟化 (SR-IOV),这是一种设备虚拟化方法,相比传统虚拟化网络接口,这种方法能够提高 I/O 性能并降低 CPU 使用率。有关支持的实例类型和说明,请参阅 Linux 上的增强联网Windows 上的增强联网

要启用增强联网功能,实例必须使用 HVM AMI 并在 Amazon Virtual Private Cloud (Amazon VPC) 中启动。

注意:最佳实践是使用更新版本的 Elastic Network Adapter (ENA) 或 Intel 82599 虚拟功能 (VF) 接口驱动程序。

非易失性存储标准 (NVMe) 卷

对于存储,使用 NVMe 实例存储卷有助于提升性能。根据您的内核版本和实例类型,NVMe 卷性能的提高情况可能会因工作负载而异。有关更多信息,请参阅 Amazon EBS 和 NVMe 以及 SSD 实例存储卷

注意:要对某些工作负载使用 Kyber I/O 计划程序,请确保您的 Amazon EC2 Linux 实例运行的是内核 4.12 或更高版本。

HugePages

HugePages 可以提高执行大量内存访问的工作负载的性能。有关更多信息,请参阅 kernel.org 网站上的 HugePages 文档。有关高性能计算 (HPC) 工作负载的最佳实践,请参阅高性能计算透视

最新内核版本和实例类型

强烈建议使用最新的内核版本和实例类型来提高性能。如果您使用的是 M3、C3 或其他旧版实例类型,请考虑迁移到 M4 或类似的实例类型,以及使用操作系统可用的最新内核版本。有关更多信息,请参阅 Amazon EC2 实例类型

巨型帧

尽可能避免使用小数据包。如果您的工作负载支持此功能,请使用大数据包和巨型帧。有关更多信息,请参阅 EC2 实例的网络最大传输单位 (MTU)

数据层面开发工具包 (DPDK)

您可能会发现使用基于 DPDK 的软件版本将网络移动到内核外并进入用户空间所带来的性能优势。使用 DPDK 可能需要包含 DPDK 支持的软件更新。有关更多信息,请参阅 DPDK 网站

进程上下文标识符 (PCID)

如果已在实例的操作系统上启用内核页表隔离 (KPTI),则启用 PCID 也可以提高 CPU 性能。您必须验证内核和实例类型是否都支持 PCID。

扩展实例

要提高性能,请考虑增加实例大小,或增加实例数。

计时器

tsc 计时器通常是可用于大多数实例的效果最佳的计时器。如果您使用的是 xen 计时器,通过迁移到 tsc 计时器,您可能会发现性能得到提高。如果您使用的是采用 jiffies 计时器的旧版操作系统,请考虑迁移到最好支持 tsc 计时器(或至少支持 xen 计时器)的操作系统。

注意:旧版实例类型(如 M1 或 M2)可提供模拟 tsc 计时器。请考虑迁移到较新的实例类型以获得更好的 tsc 计时器性能。


这篇文章对您有帮助吗?

我们可以改进什么?


需要更多帮助吗?