Apache httpd is one of the most popular web servers, which is a software program that usually runs in the background, as a process. It plays the role of a server in a client-server model using the HTTP or HTTPS network protocols.
In this blog, we compare the Apache httpd throughput on two Alibaba Cloud Elastic Compute Service (ECS) instances. These instances are ECS g8y (powered by Yitian 710 processors based on Armv9 architecture) and g7 (powered by 3rd Generation Intel Xeon Scalable processors). Our findings demonstrate that httpd deployments on g8y instances can achieve up to 40% performance advantage over g7 instances. The following sections cover the details of our testing methodology and results.
For benchmark setup, there is one instance as load generator and one instance under test. We use wrk as the benchmark tool to generate the load and collect throughput to compare the performance between g8y and g7 instances.
The following table shows the configuration of the tested instances:
The software versions and test parameters are as following:
httpd default Multi-Processing Module (MPM) is event. It is designed to allow more requests to be served simultaneously by passing off some processing work to the listener threads. This action frees up the worker threads to serve new requests.
The following table shows the configuration of httpd that were tested:
To achieve better performance, we set CPU affinity for httpd processes and threads as in the following diagram.
The benchmark tool (wrk) runs on a single g8y.4xlarge instance. Each test creates 32 threads which send the request through the configured 1000 keep-alive HTTP/HTTPS connections, with a 30 second duration. The following tables show wrk version and test cases:
The throughput results are the average of 10 consecutive tests after one warmup test. Running httpd with logging disabled on g8y.2xlarge instances compared to g7.2xlarge instances we observe a 39.6% performance uplift for HTTP persistent connections and a 26.7% performance uplift for HTTPS persistent connections.
The following table shows throughput comparison (logging disabled) between g8y.2xlarge and g7.2xlarge.
Table 1: Throughput results (logging disabled) on g8y and g7
Figure 1. Throughput (logging disabled) performance gains for g8y vs. g7
To effectively manage a web server, httpd provides logging capabilities to get feedback about the activity and performance of the server and any problems that may be occurring. To achieve better performance when logging is enabled, we set the parameter “BufferedLogs On”. This parameter is used to buffer log entries in memory before writing to disk. Running httpd with logging enabled on g8y.2xlarge instances compared to g7.2xlarge instances we observe a 40.0% performance uplift for HTTP persistent connections and a 27.1% performance uplift for HTTPS persistent connections.
The following table shows throughput comparison (logging enabled) between g8y.2xlarge and g7.2xlarge.
Table 2: Throughput results (logging enabled) on g8y and g7
Figure 2. Throughput (logging enabled) performance gains for g8y vs. g7
By deploying Apache httpd on Yitian 710-based instances compared to deploying on 3rd generation Xeon Scalable processor-based instances, we see several benefits:
Please visit this page for details on how to migrate existing applications to Yitian 710 based instances. For any queries related to your software workloads running on Arm platforms, feel free to reach out to us at sw-ecosystem@arm.com.
[CTAToken URL = "https://www.arm.com/solutions/infrastructure/cloud-computing" target="_blank" text="More Cloud Workloads on Arm" class ="green"]