HammerDB-PGSQL¶
TL;DR: This workload uses HammerDB to measure PostgreSQL performance. The workload supports multiple postgres instances with
numactlmanagement. By default, each HammerDB or postgres instance is bound to 4 physical cores (can be changed withSERVER_CORES_PIand `
Source: workload/HammerDB-PGSQL/README.md
Note: The Workload Services Framework is a benchmarking framework and is not intended to be used for the deployment of workloads in production environments. It is recommended that users consider any adjustments which may be necessary for the deployment of these workloads in a production environment including those necessary for implementing software best practices for workload scalability and security.
Introduction¶
This workload uses HammerDB to measure PostgreSQL performance. The workload supports multiple postgres instances with numactl management. By default, each HammerDB or postgres instance is bound to 4 physical cores (can be changed with SERVER_CORES_PI and CLIENT_CORES_PI). Users need to calculate the number of instance according to the number of cores on SUT. By default, there is only one instance.
There are two scenarios provided:
- Single node: only supports 2 socket SUTs. Server instances are bound to socket 0 and client instances are bound to socket 1. Users must use
-DTERRAFORM_OPTIONS="--compose"in cmake or specify--options="--compose"in ctest. - 2 nodes: supports either 1 socket or 2 socket SUTs. Users must use
-DTERRAFORM_OPTIONS="--docker"in cmake or specify--options="--docker"in ctest. And also specify--set RUN_SINGLE_NODE=falsein ctest. if not, the workload will use default single-node settings and fails.
Testcases¶
The HammerDB-PGSQL workload organizes the following test cases:
hammerdb-pgsql_hugepage_on: This test case runs with hugepage on.hammerdb-pgsql_hugepage_off: This test case runs with hugepage off.-
hammerdb-pgsql_hugepage_off_pkm- This test case runs with hugepage off. -
hammerdb-pgsql_hugepage_gated- This test case runs with minimized demands & time.
Configurations¶
The HammerDB-PGSQL workload can be configured with the following parameters:
DB_INSTANCE: Specify the number of postgres/HammerDB instances to be deployed.RUN_SINGLE_NODE:trueby default. Iftrue, both postgres/HammerDB instances will be deploy on same node; iffalse, postgres/HammerDB instances will be deploy on 2 different nodes.CLIENT_CORES_PI: Refer to cores used by per client instance. By default it's 4.SERVER_CORES_PI: Refer to cores used by per server instance. By default it's 4.CLIENT_SOCKET_BIND_NODE: If use0, client instance starts binding from socket 0; If use1, client instance starts binding from socket 1; Only valid in 2 nodes scenario.SERVER_SOCKET_BIND_NODE: If use0, server instance starts binding from socket 0; If use1, server instance starts binding from socket 1; Only valid in 2 nodes scenario.ENABLE_MOUNT_DIR: Specify whether to enable volume mount or not. Iftrue, data dir of postgres will be mounted to the/mnt/disk{n}dir on host machine.MULTI_DISK_NUM: Specify the number of local disks to be mounted with.TPCC_NUM_WAREHOUSES: Specify the number of warehouses to be created.TPCC_MINUTES_OF_RAMPUP: Specify the number of minutes to ramp up before test.TPCC_MINUTES_OF_DURATION: Specify the number of minutes to test.TPCC_VU_NUMBER: Specify the number of virtual users.TPCC_VU_THREADS: Specify the number of threads of a virtual user.
Evaluation¶
Run workload testcase as follows:
- single node
- 2 nodes
Test Config Example¶
- test-config-1socket-2nodes.yaml an example to specify test socket in 2 node scenario.
./ctest.sh -R _hugepage_off$ --config path_to/test-config-1socket-2node.yaml --options="--docker" -V
KPI¶
The following KPI is defined:
Total NOPM: New orders per minute in total.Average NOPM: New orders per minute in average.
Performance BKM¶
The HammerDB-PGSQL workload can run on single node with docker-compose and 2 nodes with docker. A two-socket system is required for single node.
Index Info¶
- Name:
HammerDB-PGSQL - Category:
DataServices - Platform:
GNR,SRF,SPR,ICX,EMR - keywords:
POSTGRES,HammerDB - Permission: