We added a configuration file for wtperf a while ago, yet the application still accepts a number of command line options.
I think it is cleaner to keep configuration options as consistent as possible. That helps with usability and also for being able to reproduce runs with minimal additional context information.
Following is a table with an outline of the existing command line options, and whether I think they should be kept:
|L||Use a large default configuration||No|
|M||Use a medium default configuration||No|
|S||Use a small default configuration||No|
|C||<string> additional connection configuration||No|
|H||<mount> configure Helium volume mount point||No|
|h||<string> Wired Tiger home must exist, default WT_TEST||Maybe|
|O||<file> file contains options as listed below||Yes|
|o||option=val[,option=val,...] set options listed below||Maybe|
|T||<string> additional table configuration||No|
Many of the command line configuration options give the benefit of being able to rapidly test different configurations by altering the command line rather than the configuration file. The disadvantages of allowing this are:
- Creates confusion in regards to order of includes when options are being passed to WiredTiger
- Makes it more difficult to reproduce runs in other locations. Ideally the configuration file would capture the entire state required to reproduce a run
- Creates confusion in regards to how to use WiredTiger. Need to look in multiple locations when attempting to find how to configure something.
Further.. There is a complexity added to the current configuration parsing implementation because an open WiredTiger connection is required to use the configuration parsing code. The constraint of having an open connection is artificial - I recommend removing it before proceeding with any other changes.