Home > Storage > PowerFlex > White Papers > Dell APEX Block Storage for AWS: Deploying PostgreSQL on Dell PowerFlex > PostgreSQL performance tests
This section describes the tests that were performed to validate the PostgreSQL database performance on AWS with the two-layer PowerFlex system deployment using the pgbench as the benchmarking tool.
The following use-cases have been tested:
Before the tests, pgbench is used to load some data into each database.
# pgbench -U postgres -i -s 20000 mydb1
# pgbench -U postgres -i -s 20000 mydb2
For the database load, a scale factor of 20,000 is used to generate 300 GB of data as follows:
Figure 7. PostgreSQL database
Pgbench uses the -S option for running a SELECT query, or a read-only workload. The number of clients and threads are variables that can be changed based on the type of EC2 instance that is used for compute node. The following example shows the pgbench parameters that were used to run each of the PostgreSQL databases:
# pgbench -U postgres -c 265 -j 65 -T 6000 -S mydb1 -p 5436
The following figure shows the test results. The test demonstrated the ability of the system to support 1,257,060 IOPS (1.25 million IOPS) while maintaining a sub millisecond read latency in this test environment.
Figure 8. Performance graph read-only workload on AWS
The following figure shows the results of PostgreSQL read-only workload from the PowerFlex dashboard.
Figure 9. PowerFlex dashboard during read-only workload
Note: Benchmark results depend on the workload type, AWS Instance type, placement of instances in a multi-AZ configuration, specific application requirements, and system design implementation. All performance data in this report was obtained in a rigorously controlled environment. Relative system performance results obtained in other operating environments might vary.
Pgbench uses the -S -N option for running 50 percent read and 50 percent write workload. The test runs 50 percent of UPDATE, and 50 percent SELECT only queries on the database. The number of clients and threads are the variables that can be changed based on available underlying resources. The following example shows the pgbench parameters that were used to run each of the PostgreSQL databases:
# pgbench -U postgres -c 180 -j 60 -T 1200 -N -S mydb1 -p 5436
# pgbench -U postgres -c 180 -j 60 -T 1200 -N -S mydb2 -p 5438
For this test two postgres instances are running at port 5436 and port 5438. Each instance is running with 180 client connections and 60 threads. The following figure shows the test results for a mixed workload. The test demonstrated the ability of the system to support 610,550 IOPS (610 K IOPS) while maintaining a sub millisecond read latency in this test environment.
Figure 10. Performance graph mixed workload on AWS