我想提高我的 Amazon Elastic Compute Cloud(Amazon EC2)Linux 实例的性能。
解决方法
使用 HVM AMI
要提高性能,请使用硬件虚拟机(HVM)亚马逊机器映像(AMI)。HVM AMI 允许使用较新的实例类和 Amazon EC2 功能,例如增强联网。有关详细信息,请参阅 Linux AMI 虚拟化类型。
启用增强联网
如果实例类型支持增强联网,则可以使用此功能来提高 CPU 性能,而无需任何额外成本。增强联网使用单根 I/O 虚拟化(SR-IOV)来提供比传统虚拟化网络接口更高的 I/O 性能和更低的 CPU 利用率。有关支持的实例类型和说明,请参阅 Linux 上的增强联网和 Windows 上的增强联网。要启用增强联网,实例必须使用 HVM AMI。此外,必须在 Amazon Virtual Private Cloud(Amazon VPC)中启动实例。**注意:**最佳做法是使用弹性网络适配器(ENA)的更新版本或 Intel 82599 虚拟功能(VF)接口驱动程序。
使用 NVMe 卷
对于存储,使用非易失性内存快速(NVMe)实例存储卷来提高性能。根据内核版本和实例类型,NVMe 卷的性能可能会因工作负载而异。有关详细信息,请参阅 Amazon EBS and NVMe 和 SSD 实例存储卷。
**注意:**要对某些工作负载使用 Kyber I/O 调度器,请确保 Amazon EC2 Linux 实例运行内核 4.12 或更高版本。
使用 HugePages
HugePages 可提高处理大量内存访问的工作负载的性能。有关详细信息,请参阅 kernel.org 网站上的 HugePages 文档。有关高性能计算(HPC)工作负载的最佳实践,请参阅 High performance computing lens。
使用最新内核版本和实例类型
最好使用最新的内核版本和实例类型。如果使用 M3、C3 或其他较旧的实例类型,请迁移到较新的实例类型(如 M7)以提高性能。此外,请使用适用于操作系统(OS)的最新可用内核版本。有关详细信息,请参阅 Amazon EC2 实例类型。
使用巨型帧
尽可能避免使用小数据包。如果工作负载支持使用具有巨型帧的较大数据包,则使用此配置。有关详细信息,请参阅 EC2 实例的网络最大传输单位(MTU)。
使用 DPDK
要将网络移出内核并进入用户空间,请使用数据面板开发工具包(DPDK)软件。DPDK 可能需要包含 DPDK 支持的软件更新。有关详细信息,请参阅 DPDK 网站。
启用 PCID
如果在实例的操作系统上启用了内核页表隔离(KPTI),则还要启用进程上下文标识符(PCID)功能。若要使用此功能,请验证内核和实例类型是否都支持 PCID。
扩展实例
增加实例的大小或增加实例的数量。
使用计时器
时间戳计数器(TSC)计时器通常是大多数实例可用的性能最好的计时器。如果使用 xen 计时器,那么当您切换到 TSC 计时器时,可能会看到性能有所提高。如果使用的是带有 jiffies 计时器的较旧操作系统,请转到支持 xen 的操作系统,或者最好是支持 TSC 的操作系统。
**注意:**较旧的实例类型(如 M1 或 M2)提供了一个模拟 TSC 计时器。为了获得更好的计时器性能,请迁移到较新的实例类型(如 M7)。
相关信息
Amazon EC2 的最佳实践