亚马逊AWS官方博客

基于 AWS Graviton2 Arm 架构处理器的 Amazon EC2 C6g 实例为转码工作负载带来更高的性价比

背景介绍

AWS 与2020年6月11日全新推出了两个基于 AWS Graviton 2 处理器的新实例系列:C6g 和 R6g,在之前已发布的 M6g 基础之上,对于客户在 AWS 上构建基于 Arm 的原生应用程序,拥有了更加丰富的选择,同时为在 Amazon EC2 中运行的工作负载提供了出色的性价比。 所有基于 AWS Graviton2 的实例都建立在 AWS Nitro 系统之上,该系统是 AWS 设计的硬件和软件的集合,实现了多租户隔离,专用网络和快速的本地存储。 这些实例提供高达19 Gbps 的 Amazon Elastic Block Store(EBS) 带宽和高达25 Gbps 的网络带宽。 M 系列实例是旨在解决各种通用工作负载的实例类型,例如应用程序服务器,游戏服务器,中型数据库,缓存集群, Web 应用等。C 系列实例非常适合计算密集型工作负载,例如高性能计算 (HPC),批处理,广告平台,视频编码,游戏,科学建模,分布式数据分析和基于 CPU 的机器学习推理等。R 系列实例非常适合内存密集型工作负载,例如开源数据库,内存中的缓存或实时大数据分析等。

实例大小 vCPU 内存 (GiB) 网络带宽 (Gbps) EBS带宽 (Mbps)
M6g / R6g / C6g M6g / R6g / C6g
medium 1 4/ 8 / 2 Up to 10 Up to 4,750
large 2 8 / 16 / 4 Up to 10 Up to 4,750
xlarge 4 16 / 32 / 8 Up to 10 Up to 4,750
2xlarge 8 32 / 64 / 16 Up to 10 Up to 4,750
4xlarge 16 64 / 128 / 32 Up to 10 4,750
8xlarge 32 128 / 256 / 64 12 9,000
12xlarge 48 192/ 384 / 96 20 13,500
16xlarge 64 256 / 512 / 128 25 19,000
metal 64 256 / 512 / 128 25 19,000

为了展示 Amazon EC2 C6g 实例为转码工作负载所带来的更好的性价比,我们使用 FFmpeg 最新版本(4.3)对 C5 以及 C6g 实例的转码性能做了详细的对比测试。

AWS Graviton 系列处理器简介

AWS Graviton 2处理器基于64位 Arm Neoverse 内核打造,由 AWS 设计的定制芯片提供支持,该芯片使用先进的7纳米制造技术构建。Graviton 2处理器的内核具备64 KB L1高速缓存和1 MB L2高速缓存,包括双 SIMD 单元,与第一代 Graviton 处理器相比,浮点性能提高了1倍,性能提升 7 倍、计算内核数量增加 4 倍,缓存增加 2 倍,内存速度提升 5 倍。 这不仅针对高性能计算工作负载,还支持 int8 / fp16数字格式,以加快机器学习推理工作负载。 每个 vCPU 都是一个物理核心,非同步多线程技术(SMT),同时每个物理内核通往内存和其他物理内核的路径都是相同的,因此也避免了 NUMA 问题的出现。 有8个 DDR4内存通道以3200 MT / s 的速度运行,可提供超过200 GB / s 的峰值内存带宽。与基于 x86 架构的 M5,C5 和 R5 系列的 Amazon EC2 实例相比相比,基于 Graviton 2 处理器的实例类型可提供高达40%的性价比优势。

AWS Graviton 第一代 AWS Graviton 第二代
ISA ARM V8 ARM V8.2
微架构 Cortex-A72 Neoverse N1
核心数 4 * 4 64
线程数 16 64
主频 2.3 GHz 2.5 GHz
L1i Cache 48 KB * 16 64 KB * 64
L1d Cache 32 KB * 16 64 KB * 64
L2 Cache 2 MB * 4 1 MB * 16
L3 Cache 32 MB 共享
BogoMIPS 166.66 243.75
工艺 26纳米 7纳米
支持指令集 8个 17个

测试机型成本对比

以本次测试机型为例,在 AWS us-ease-1 (N. Virginia) 区域,相同配置的 C6g 实例比 C5 实例价格低20%:

实例大小 >配置 C5 按需实例价格 $/小时 C6g 按需实例价格 $/小时
4xlarge 16 core 32 GB 0.68 0.544

测试环境

测试系统以及环境信息

机型 C5.4xlarge C6g.4xlarge
CPU Intel Xeon Platinum 8000 AWS Graviton 2
主频 3.4 GHz 2.5 GHz
微架构 Skylake Neoverse N1
配置 16 Core 64 GB 16 Core 64 GB
OS Debian 10 Debian 10
内核版本 Linux version 4.19.0-9-amd64 Linux version 4.19.0-9-arm64
GCC gcc (Debian 8.3.0-6) 8.3.0 gcc (Debian 8.3.0-6) 8.3.0
测试软件版本 FFmpeg 4.3 FFmpeg 4.3

测试环境搭建(Amazon EC2 C6g)

安装编译依赖工具包

 

sudo apt-get -y update && \
sudo DEBIAN_FRONTEND=noninteractive apt-get upgrade -yq && \
sudo apt-get -y install cmake && \
sudo apt-get -y install pkg-config && \
sudo apt-get install software-properties-common && \
sudo apt-get install git -y && \
sudo apt-get install gcc-arm* -y && \
sudo apt-get install aarch64* -y

 

同步,编译并安装 libx264

 

wget https://download.videolan.org/x264/snapshots/x264-snapshot-20191217-2245.tar.bz2 && \
tar jxvf x264-snapshot-20191217-2245.tar.bz2 && \
cd x264-snapshot-20191217-2245 && \
mkdir build && \
cd build && \
../configure --enable-static --enable-shared \
--host=aarch64-linux --extra-cflags="-march=native" && \
make && \
sudo make install

 

同步,编译并安装 FFmpeg

 

git clone https://github.com/FFmpeg/ffmpeg.git && \
cd ffmpeg && \
mkdir build && \
cd build && \
../configure --cross-prefix=aarch64-linux-gnu- \
    --enable-cross-compile --target-os=linux \
    --arch=aarch64 --prefix=/usr/local/ffmpeg \
    --enable-gpl --enable-ffmpeg --enable-libx264 \
    --enable-nonfree --enable-swscale --enable-pthreads \
    --disable-armv5te --disable-armv6 --disable-armv6t2  \
    --extra-cflags="-I/usr/local/include -march=native" \
    --extra-ldflags=-L/usr/local/lib  --extra-libs=-ldl  --enable-pic && \
make && \
sudo make install && \
export PATH="/usr/local/ffmpeg/bin:$PATH"

 

添加 libx264 路径

 

vim /etc/ld.so.conf

 

在配置文件中增加如下内容来添加 FFmpeg 库路径

 

/usr/local/ffmpeg/lib

 

保存退出后,运行以下命令使配置生效

 

ldconfig

测试环境搭建(Amazon EC2 C5)

安装编译依赖工具包

 

sudo apt-get -y update && \
sudo DEBIAN_FRONTEND=noninteractive apt-get upgrade -yq && \
sudo apt-get -y install \
  autoconf \
  automake \
  build-essential \
  cmake \
  git-core \
  libass-dev \
  libfreetype6-dev \
  libsdl2-dev \
  libtool \
  libva-dev \
  libvdpau-dev \
  libvorbis-dev \
  libxcb1-dev \
  libxcb-shm0-dev \
  libxcb-xfixes0-dev \
  pkg-config \
  texinfo \
  wget \
  zlib1g-dev

 

安装 FFmpeg 库

 

sudo apt-get install nasm -y && \
sudo apt-get install yasm -y && \
sudo apt-get install libx264-dev -y && \
sudo apt-get install libnuma-dev -y && \
sudo apt-get install libvpx-dev -y && \
sudo apt-get install libfdk-aac-dev -y && \
sudo apt-get install libmp3lame-dev -y && \
sudo apt-get install libopus-dev -y

 

同步,编译并安装 FFmpeg

 

git clone https://github.com/FFmpeg/ffmpeg.git && \
mkdir -p ~/ffmpeg_build ~/bin
cd ~/ffmpeg && \
PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure \
  --prefix="$HOME/ffmpeg_build" \
  --pkg-config-flags="--static" \
  --extra-cflags="-I$HOME/ffmpeg_build/include" \
  --extra-ldflags="-L$HOME/ffmpeg_build/lib" \
  --extra-libs="-lpthread -lm" \
  --bindir="$HOME/bin" \
  --enable-gpl \
  --enable-libfreetype \
  --enable-libx264 \
  --enable-version3 \
  --enable-nonfree && \
PATH="$HOME/bin:$PATH" make && \
sudo make install

测试方法

本次测试选取了 5 个公开的视频序列进行转码测试,每个视频序列有不同的场景特征。源视频序列均为 h.264编码的1080p视频,帧率为24f,码率为16Mbps,测试过程会分别转码为不同规格的输出视频,同时转码5路,尽量压满 CPU 的情况下,测试 FFmpeg 平均转码倍速(转码倍速越高,代表转码性能越强),转码输出 VMAF 视频质量分数(VMAF 分数越高,转码输出质量越好),以及转码输出文件大小(转码输出文件越小,压缩率越高)。

Codec 分辨率 帧率 码率
输出1 h.264 1920×1080 24f 4000Kbps
输出2 h.264 1280×720 24f 2500kbps
输出3 h.264 960×480 24f 900Kbps

转码测试使用两种不同的 profile,分别是质量优先 (High Quality) 和速度优先 (Low Latency),具体参数如下:

质量优先 (High Quality):

 

ffmpeg -i <INPUT> -c:v libx264 -c:a copy -preset medium -b:v <BITRATE> -bufsize <BITRATE*2> -vf scale=<W:H> -profile:v high -tune psnr -threads <vCPU*2> -vsync 0 <OUTPUT>

 

速度优先 (Low Latency):

 

ffmpeg -i <INPUT> -c:v libx264 -c:a copy -preset fast -b:v <BITRATE> -bufsize <BITRATE/FRATE> -vf scale=<W:H>  -profile:v high -g 999999 -x264opts no-sliced-threads:nal-hrd=cbr -tune psnr -threads <vCPU*2> -vsync 0 <OUTPUT>

测试结果

测试结果对比

在图表中,不同颜色柱状图代表不同机型的转码倍速值,左侧纵轴为不同的转码源文件以及不同的转码 profile,质量优先 (High Quality) 和速度优先 (Low Latency):


1080p 转码能力(倍速)对比

720p 转码能力(倍速)对比

480p 转码能力(倍速)对比

VMAF 质量分数对比

转码压缩率对比

测试结果详细数据

crowd-run-1080p-24f-16Mbps High Quality 1920*1080-24f-4Mbps 1280*720-24f-2.5Mbps 800*480-24f-0.9Mbps
c5.4x c6g.4x c5.4x c6g.4x c5.4x c6g.4x
转码 1 路 CPU利用率 88% 88% 85% 81% 69% 60%
转码倍速 3.09 3.21 5.37 5.18 8.57 7.15
转码 5 路 CPU利用率 99% 99% 98% 98% 96% 97%
转码倍速 0.64 0.7 1.14 1.21 2.05 2.19
VMAF质量分数 76.31 76.36 63.05 62.86 34.2 33.74
转码能力(路数*倍速) 3.2 3.5 5.7 6.05 10.25 10.95
文件大小(MB) 73.8 74 43.9 43.6 15.6 15.3

 

crowd-run-1080p-24f-16Mbps Low Latency 1920*1080-24f-4Mbps 1280*720-24f-2.5Mbps 800*480-24f-0.9Mbps
c5.4x c6g.4x c5.4x c6g.4x c5.4x c6g.4x
转码 1 路 CPU利用率 87% 87% 83% 77% 67% 57%
转码倍速 3.51 3.58 5.96 5.52 8.96 7.23
转码 5 路 CPU利用率 98% 98% 97% 98% 96% 97%
转码倍速 0.72 0.78 1.26 1.34 2.2 2.33
VMAF质量分数 75.36 75.44 62.5 62.11 33.96 33.44
转码能力(路数*倍速) 3.6 3.9 6.3 6.7 11 11.65
文件大小(MB) 76.3 76.3 47.7 47.7 17.2 17.2

 

life-1080p-24f-16Mbps High Quality 1920*1080-24f-4Mbps 1280*720-24f-2.5Mbps 800*480-24f-0.9Mbps
c5.4x c6g.4x c5.4x c6g.4x c5.4x c6g.4x
转码 1 路 CPU利用率 82% 82% 78% 69% 58% 50%
转码倍速 3.75 3.84 6.34 5.55 9.17 7.2
转码 5 路 CPU利用率 99% 99% 98% 98% 97% 96%
转码倍速 0.81 0.89 1.4 1.51 2.49 2.62
VMAF质量分数 94.18 94.22 87.11 87 66.83 66.81
转码能力(路数*倍速) 4.05 4.45 7 7.55 12.45 13.1
文件大小(MB) 72.2 72.4 45.6 45.1 15.8 15.7

 

life-1080p-24f-16Mbps Low Latency 1920*1080-24f-4Mbps 1280*720-24f-2.5Mbps 800*480-24f-0.9Mbps
c5.4x c6g.4x c5.4x c6g.4x c5.4x c6g.4x
转码 1 路 CPU利用率 81% 82% 76% 64% 55% 46%
转码倍速 4.28 4.35 7.04 5.75 9.57 7.2
转码 5 路 CPU利用率 99% 99% 98% 97% 97% 96%
转码倍速 0.93 1.01 1.59 1.69 2.71 2.84
VMAF质量分数 93.8 93.8 86.44 86.42 65.78 65.65
转码能力(路数*倍速) 4.65 5.05 7.95 8.45 13.55 14.2
文件大小(MB) 78.7 78.7 49.2 49.2 17.7 17.7

 

old-town-1080p-24f-16Mbps High Quality 1920*1080-24f-4Mbps 1280*720-24f-2.5Mbps 800*480-24f-0.9Mbps
c5.4x c6g.4x c5.4x c6g.4x c5.4x c6g.4x
转码 1 路 CPU利用率 83% 83% 80% 71% 62% 55%
转码倍速 3.59 3.66 6.1 5.38 8.9 7.21
转码 5 路 CPU利用率 99% 99% 97% 98% 97% 96%
转码倍速 0.78 0.85 1.34 1.43 2.3 2.4
VMAF质量分数 94.28 94.29 88.04 88.03 70.72 70.71
转码能力(路数*倍速) 3.9 4.25 6.7 7.15 11.5 12
文件大小(MB) 53.2 53.2 34.1 34 12.8 12.7

 

old-town-1080p-24f-16Mbps Low Latency 1920*1080-24f-4Mbps 1280*720-24f-2.5Mbps 800*480-24f-0.9Mbps
c5.4x c6g.4x c5.4x c6g.4x c5.4x c6g.4x
转码 1 路 CPU利用率 83% 83% 78% 67% 61% 52%
转码倍速 4.09 4.15 6.72 5.61 9.42 7.29
转码 5 路 CPU利用率 99% 99% 97% 98% 97% 96%
转码倍速 0.88 0.96 1.49 1.58 2.5 2.59
VMAF质量分数 94.03 94.04 87.86 87.86 70.4 70.4
转码能力(路数*倍速) 4.4 4.8 7.45 7.9 12.5 12.95
g4dn.2x/c5.4x(16c32g) 4.98 6.52 3.64
文件大小(MB) 76.3 76.3 47.7 47.7 17.2 17.2

 

park-joy-1080p-24f-16Mbps High Quality 1920*1080-24f-4Mbps 1280*720-24f-2.5Mbps 800*480-24f-0.9Mbps
c5.4x c6g.4x c5.4x c6g.4x c5.4x c6g.4x
转码 1 路 CPU利用率 83% 83% 81% 75% 64% 56%
转码倍速 3.5 3.53 6.03 5.51 8.94 7.23
转码 5 路 CPU利用率 99% 99% 97% 97% 97% 97%
转码倍速 0.75 0.81 1.3 1.38 2.3 2.39
VMAF质量分数 68.28 68.34 58.22 58.21 34.28 34.26
转码能力(路数*倍速) 3.75 4.05 6.5 6.9 11.5 11.95
文件大小(MB) 56.1 56.2 34.2 34.1 12.5 12.5

 

park-joy-1080p-24f-16Mbps Low Latency 1920*1080-24f-4Mbps 1280*720-24f-2.5Mbps 800*480-24f-0.9Mbps
c5.4x c6g.4x c5.4x c6g.4x c5.4x c6g.4x
转码 1 路 CPU利用率 83% 83% 80% 73% 62% 53%
转码倍速 3.79 3.81 6.46 5.69 9.29 7.3
转码 5 路 CPU利用率 98% 99% 98% 97% 97% 95%
转码倍速 0.8 0.87 1.42 1.48 2.44 2.5
VMAF质量分数 68.65 68.78 58.67 58.75 34.38 34.4
转码能力(路数*倍速) 4 4.35 7.1 7.4 12.2 12.5
文件大小(MB) 76.3 76.3 47.7 47.7 17.2 17.2

 

sunflower-1080p-24f-16Mbps High Quality 1920*1080-24f-4Mbps 1280*720-24f-2.5Mbps 800*480-24f-0.9Mbps
c5.4x c6g.4x c5.4x c6g.4x c5.4x c6g.4x
转码 1 路 CPU利用率 86% 85% 83% 78% 66% 57%
转码倍速 3.26 3.33 5.7 5.38 8.93 7.27
转码 5 路 CPU利用率 99% 99% 98% 98% 97% 96%
转码倍速 0.68 0.74 1.22 1.31 2.24 2.34
VMAF质量分数 98.81 98.84 97.95 97.96 88.78 88.6
转码能力(路数*倍速) 3.4 3.7 6.1 6.55 11.2 11.7
文件大小(MB) 66.4 67.1 41.6 41.4 13.7 13.5

 

sunflower-1080p-24f-16Mbps Low Latency 1920*1080-24f-4Mbps 1280*720-24f-2.5Mbps 800*480-24f-0.9Mbps
c5.4x c6g.4x c5.4x c6g.4x c5.4x c6g.4x
转码 1 路 CPU利用率 85% 85% 81% 71% 61% 52%
转码倍速 3.7 3.77 6.46 5.72 9.35 7.28
转码 5 路 CPU利用率 99% 99% 98% 97% 97% 97%
转码倍速 0.78 0.85 1.4 1.48 2.46 2.6
VMAF质量分数 98.63 98.66 97.63 97.58 87.96 87.87
转码能力(路数*倍速) 3.9 4.25 7 7.4 12.3 13
文件大小(MB) 76.3 76.3 47.7 47.7 17.2 17.2

测试结论

测试结果表明,在与 Amazon EC2 C5 实例的对比测试中,C6g 展示了对于转码工作负载更高的性价比,结论如下:

  • 在不同转码场景和分辨率输出测试中,多路转码在 CPU 满载的情况下,C6g 比 C5 实例整体转码性能提升了5%~10%,转码输出分辨率越高,性能提升越明显
  • 考虑到 C6g 比 C5 机型价格便宜20%,对于转码的工作负载,C6g 比 C5 实例的性价比提升了30%~35%
  • C6g 与 C5 实例转码输出结果的视频质量以及文件大小几乎相同
  • FFmpeg 新版本(4.3及以上)针对 Arm 架构 CPU 做了优化,相对老版本提高了单路转码 CPU 占用率

 

本篇作者

李智雪

AWS 解决方案架构师,AWS的云计算方案架构的咨询和设计,同时致力于AWS云服务在互联网行业以及媒体行业应用和推广。加入AWS之前曾就职于微软、爱立信等公司,有十余年媒体行业以及解决方案架构师从业经验。