A profile for the platform on which a given performance test is to be run must define the hardware and any relevant software details.
Here is a template to help ensure that a profile contains enough information:
Parameter | Possible values | Notes |
---|---|---|
Clustered? | Yes, No | If "Yes", provide complete configuration for clustered operation (or refer to a pre-existing example). Consider that several examples are available in the source code itself. |
Platform type | Physical, Virtual | Is the platform a virtual or physical machine? If virtual, what virtualization technology is used (VMWare, VirtualBox, etc.)? |
Processing hardware | The most important value here is probably number of cores (per node, if applicable). This is assumed not to vary amongst nodes in a cluster. | |
Operating system | What OS is running on the platform (Mac, Windows, Unix, distribution, version, flavor, 32 or 64 bit, etc.)? | |
Memory | This is the Java heap configuration, specified as the JVM flags to use. This is assumed not to vary among nodes in a cluster. | |
Allocated storage | How much storage is allocated per node, or if shared, total storage available in a cluster | |
Persistence I/O | Throughput | Is a certain level of throughput to disk an important part of the test? |
Network I/O | This is particularly important for clustered operation. |
Testing Recommendations
- Exclude your data and cache directories from backups while testing, to prevent inadvertent network and disk IO contention. Pause any external disk syncing processes, too (Dropbox, Google Drive, Box, Copy, iCloud, etc.)
- Run benchtool on a separate host, to prevent client memory and CPU usage from affecting server performance.