Akamai Capacity Report
Terminology
For clarity and consistency throughout this report, the following definitions apply:
- CPU: Software-based video encoding utilizing x264 (H.264 codec) and x265 (H.265 codec).
- GPU: Hardware-accelerated video encoding utilizing NVENC (NVIDIA Encoder) utilizing H.264 codec and H.265 codec.
- VPU: Hardware-accelerated processing utilizing Quadra (NETINT Encoder) utilizing H.264 codec and H.265 codec.
Note: The terms “CPU,” “GPU,” and “VPU” may be used interchangeably with “x264/x265,” “NVENC,” and “Quadra,” respectively.
Objective
To provide capacity numbers with different conditions.
YUV to H.264/H.265 with different resolutions
The number of video streams supported by the Akamai Virtual server (NETINT Quadra T1U x2 Small) for H.264 and H.265, using 1080P, 720P, and 540P files at 25 fps and a bitrate of 3.5 Mbps.
Video Streams
Test Configurations
Configuration | Description |
---|---|
Server | NETINT Quadra T1U x2 Small |
Frame size | 1080p, 720p, 540p (YUV input) |
Frame rate | 25 fps |
Bitrate | 3.5 Mbps |
Interval | 2 seconds |
Codecs | - H.264 (h264_ni_quadra_enc) - H.265 (h265_ni_quadra_enc) |
Command
fmpeg -y -vsync 0 -s {resolution} -r {fps} -i {input} -c:v {codec}_ni_quadra_enc \
-xcoder-params level=0:frameRate={fps}:RcEnable=1:vbvBufferSize=2000:bitrate=3500000:intraPeriod={interval}:gopPresetIdx=-1:entropyCodingMode=1:lookaheadDepth=16:cuLevelRCEnable=0:rdoLevel=1:EnableRdoQuant=1 \
-vframes {frames} {output}
Results
The below table indicates the number of video streams the server can handle simultaneously while maintaining 25 fps.
Resolution | H.264 | H.265 |
---|---|---|
1080p | 40 | 50 |
720p | 85 | 95 |
540p | 135 | 140 |
Throughput Capacity
Test Configurations
Configuration | Description |
---|---|
Server | NETINT Quadra T1U x2 Small |
Frame size | 1080p (YUV input) |
Frame rate | 25 fps |
Bitrate | 3.5 Mbps |
Interval | 2 seconds |
Codecs | - H.264 (h264_ni_quadra_enc) - H.265 (h265_ni_quadra_enc) |
Command
fmpeg -y -vsync 0 -s {resolution} -r {fps} -i {input} -c:v {codec}_ni_quadra_enc \
-xcoder-params level=0:frameRate={fps}:RcEnable=1:vbvBufferSize=2000:bitrate=3500000:intraPeriod={interval}:gopPresetIdx=-1:entropyCodingMode=1:lookaheadDepth=16:cuLevelRCEnable=0:rdoLevel=1:EnableRdoQuant=1 \
-vframes {frames} {output}
Results
The maximum fps achieved when processing 8, 10, 16 or 32 encoding sessions.
Encoding Sessions | H.264 | H.265 |
---|---|---|
8 | 111 | 140 |
10 | 90 | 111 |
16 | 57 | 71 |
32 | 29 | 36 |
Throughput Capacity with Dedicated CPU Plans
Dedicated 16GB (8 Cores)
The server has 8 CPU Cores, 16GB RAM and comes with 320GB of Storage
Test Configurations
Configuration | Description |
---|---|
Frame size | 1080p (YUV input) |
Frame rate | 25 fps |
Bitrate | 3.5 Mbps |
Interval | 2 seconds |
Codecs | - H.264 (libx264) - H.265 (libx265) |
Command
x264 --aq-mode 0 --no-scenecut --bframes 3 --b-adapt 0 --rc-lookahead 16 \
--input-depth {input_depth} --output-depth {output_depth} \
--input-res {resolution} --fps {fps} --bitrate {bitrate} --vbv-bufsize {2*bitrate} \
--keyint {interval} --min-keyint {interval} --preset {preset} --frames {total frames} \
-o {output} {input}
x265 --aq-mode 0 --no-scenecut --bframes 3 --b-adapt 0 --rc-lookahead 16 \
--input-depth {input_depth} --output-depth {output_depth} \
--input-res {resolution} --fps {fps} --bitrate {bitrate} \
--vbv-bufsize {2*bitrate} --keyint {interval} --min-keyint {interval} \
--preset {preset} --frames {total frames} \
-o {output} {input}
Results
The below table is the framerate that was achieved on with each encoding session.
Encoding Sessions | H.264 | H.265 |
---|---|---|
1 | 60 | 1 |
4 | 15 | < 1 (0.4) |
Dedicated 64GB (32 Cores)
The server has 32 CPU Cores, 64GB RAM and comes with 1280GB of Storage
Test Configurations
Configuration | Description |
---|---|
Frame size | 1080p (YUV input) |
Frame rate | 25 fps |
Bitrate | 3.5 Mbps |
Interval | 2 seconds |
Codecs | - H.264 (libx264) - H.265 (libx265) |
Command
x264 --aq-mode 0 --no-scenecut --bframes 3 --b-adapt 0 --rc-lookahead 16 \
--input-depth {input_depth} --output-depth {output_depth} \
--input-res {resolution} --fps {fps} --bitrate {bitrate} --vbv-bufsize {2*bitrate} \
--keyint {interval} --min-keyint {interval} --preset {preset} --frames {total frames} \
-o {output} {input}
x265 --aq-mode 0 --no-scenecut --bframes 3 --b-adapt 0 --rc-lookahead 16 \
--input-depth {input_depth} --output-depth {output_depth} \
--input-res {resolution} --fps {fps} --bitrate {bitrate} \
--vbv-bufsize {2*bitrate} --keyint {interval} --min-keyint {interval} \
--preset {preset} --frames {total frames} \
-o {output} {input}
Results
The below table is the framerate that was achieved on with each encoding session.
Encoding Sessions | H.264 | H.265 |
---|---|---|
1 | 150 | 12 |
4 | 61 | 8 |
8 | 31 | 4 |
10 | 25 | 3 |