iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more
In Asif Naeem’s Part 1 benchmark, hybrid key exchange with X25519MLKEM768 and classical X25519 produced the same mean and p95 TLS handshake latency at the reported resolution: 2 ms and 4 ms. The p99 figures differed, with a median of 8 ms for the hybrid arm against 5 ms for X25519, but individual hybrid trials ranged from 5 ms to 39 ms. With only three trials per arm, that tail gap cannot be treated as a established difference. These results come from one narrow setup: fresh TLS 1.3 handshakes at a fixed 300 requests per second, run on small AWS Graviton3 instances, published on 2026-09-28.
What was tested
The benchmark compared fresh TLS 1.3 handshakes using two key-exchange groups. Both the server and the load generator ran on AWS EC2 c7g.large spot instances, which use the Graviton3 ARM processor family. Both instances sat in the same subnet and availability zone in us-east-1, so cross-zone network latency would not dominate the measurement.
- Server: nginx built from source against OpenSSL 3.5.0 on Ubuntu 24.04.
- Load generator: Gatling 3.15.1 running on JDK 21, with a BoringSSL-based TLS client. The client instance has two vCPUs.
- Cipher suites offered: TLS_AES_256_GCM_SHA384 and TLS_CHACHA20_POLY1305_SHA256.
- Server certificate: self-signed ECDSA P-256.
- Response: a 3-byte body.
- Session resumption: disabled, so every handshake was a full, fresh handshake.
- Load and trials: 300 requests per second, three five-minute trials per arm, with the first 30 seconds of each trial excluded as warm-up.
The $0.04/hour in the title is the instance price the benchmark was built around. Spot prices change by region and over time, so treat that figure as a point-in-time price rather than a fixed rate.
The Tool Desk
Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →Results at 300 requests per second
The table shows the median of the three trials for each arm. Latencies are integers in milliseconds, because Gatling reported at that resolution.
#1 Best Overall
- Massive 8-Bay Storage for Demanding Workloads: Engineered for high-capacity needs, this chassis supports eight 3.5-inch HDDs, providing terabytes of space for NAS, media servers, and data archives
- Seamless Compatibility with Standard ATX Motherboards: Built to accommodate standard ATX motherboards, offering flexibility and cost savings for your server build without the need for proprietary components
- High-Speed Data Transfers with Front Panel USB-C: Features a front-panel USB 3.2 Gen Type-C port for ultra-fast data transfers, simplifying backups and connectivity with modern peripherals
- Efficient Cooling System with PWM Fans: Equipped with three 80mm PWM fans that provide optimal airflow and temperature control to keep your server components running reliably
- Professional 2U Rackmount Design: Compact 2U form factor fits standard server racks and supports 2U/CRPS power supply units for efficient space utilization in data centers and server rooms
| Metric | X25519 | X25519MLKEM768 | Reading at this resolution |
|---|---|---|---|
| Mean | 2 ms | 2 ms | Same at displayed precision |
| p50 | 1 ms | 2 ms | 1 ms displayed difference |
| p95 | 4 ms | 4 ms | Same at displayed precision |
| p99 | 5 ms | 8 ms | 3 ms displayed difference; individual trials vary widely |
| Maximum | 14 ms | 41 ms | Hybrid arm included a high outlier |
The individual p99 results were 4, 5 and 5 ms for X25519, and 5, 8 and 39 ms for X25519MLKEM768. The write-up does not pair these values by trial, so the spread should be read per arm rather than trial by trial.
The 39 ms p99 trial accounts for the hybrid arm’s high maximum. The author suggests a spot-instance CPU-steal event or a JVM garbage-collection pause as possible causes, but did not isolate either one. Neither explanation is confirmed.
Why the 1000 requests-per-second attempt does not count
The first attempt offered 1000 requests per second. Mean latencies rose above one second and p99 values reached around six seconds in both arms. The author traced this to CPU saturation on the two-vCPU load generator: request queues built up on the client side and hid the cryptographic comparison. No conclusion about either algorithm’s speed should be drawn from that run.
Free tools Windows power users keep installed
One-click scans. No signup required.
Rank #2
- Advanced KVM Solution: Sipeed NanoKVM Pro features second screen capability and LED strip integration for enhanced system monitoring
- 4K HDMI Output: Supports high-resolution display up to 4K for enhanced visual experience and crystal-clear remote viewing
- Remote Server Control: Enables IP-KVM access for homelab and NAS management from anywhere with internet connectivity
- PoE Powered: Simplifies setup with power-over-Ethernet support for NanoKVM Pro, eliminating the need for separate power adapters
- WiFi6 and GbE Connectivity: Ensures fast and stable network performance with dual connectivity options for flexible deployment
The author’s lesson is direct: “benchmark your load generator before you trust its numbers.” Check client CPU utilization at the target rate before reading server-side latency as cryptographic cost.
What the certificate choice leaves out
The server used an ECDSA P-256 certificate because Gatling’s BoringSSL-based client did not advertise ML-DSA-65 in its supported signature algorithms. Part 1 therefore measures the cost of the hybrid key exchange against X25519 under a classical certificate. It does not measure the cost of a post-quantum certificate chain. Anyone planning ML-DSA certificates needs a separate measurement.
What the numbers can and cannot support
- Resolution: integer milliseconds can hide sub-millisecond differences in either direction.
- Sample size: three trials per arm is enough to show that the p99 tail is unstable, not enough to estimate it precisely.
- Load: one fixed rate of 300 requests per second. Behavior at other concurrency levels is untested in Part 1.
- Handshake state: fresh handshakes only, with resumption disabled.
- Payload: a 3-byte response, so the test says nothing about larger payloads.
- Hardware: one ARM instance family. No x86 or AMD comparison was run.
Taken together, the result is a small, controlled measurement from one configuration. It is not a service-level guarantee for production traffic or for other servers.
Rank #3
- Advanced KVM Solution: Sipeed NanoKVM Pro features second screen capability and LED strip integration for enhanced system monitoring
- 4K HDMI Output: Supports high-resolution display up to 4K for enhanced visual experience and crystal-clear remote viewing
- Remote Server Control: Enables IP-KVM access for homelab and NAS management from anywhere with internet connectivity
- PoE Powered: Simplifies setup with power-over-Ethernet support for NanoKVM Pro, eliminating the need for separate power adapters
- WiFi6 and GbE Connectivity: Ensures fast and stable network performance with dual connectivity options for flexible deployment
Reproducing the run
The Part 1 write-up describes the project repository, Terraform configuration, AWS configuration and the Gatling scenario script used for the run. The author estimates the work takes roughly 50 minutes and costs under $0.30, based on experience. Another line in the write-up puts the cost below one dollar. Actual cost depends on region, spot pricing and how long the instances run, so budget from current prices rather than either estimate.
Do these 3 things before closing this tab:
1Scan for outdated or missing drivers - takes under a minute2Repair Windows errors before they cause bigger problems3Fix the driver behind crashes, sound loss and screen glitchesBefore you read your own results, check these items:
- Confirm the load generator’s CPU stays well below saturation at the target request rate.
- Record whether each handshake is fresh or resumed, and whether connections are reused.
- Note the certificate type and chain size, since they are a separate cost.
- Report percentiles with their trial counts, and avoid reading a single p99 as a stable value.
The October 5 follow-up
On 2026-10-05 the same author published a separate set of experiments that changed the test conditions. Those runs used pooled connections and session resumption. At p95, the fresh classical arm measured 4 ms, the fresh hybrid arm 5 ms, and both resumed arms 1 ms. Resumed tests with payloads up to 100 KB showed identical displayed p95 values. The author notes the same limits as Part 1: integer-millisecond reporting and three trials per arm restrict fine-grained interpretation.
These follow-up results do not replace the Part 1 findings. They show that handshake state and connection reuse can change what the measurement looks like, which is why the Part 1 conditions need to be stated with any figure taken from it.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

