Eneperf contains the following optional settings.

Setting

Description

-v

Verbose mode. Print query URLs as they are requested.

--gzip

Add Accept-encoding: gzip to the HTTP request header.

--header <header_file_path>

Specify path of file containing HTTP header text, one header field per line. This setting, if used, overrides headers from the log file (which you can also specify).

--help

Print the help usage and exit.

--list

Treat the <log> parameter as the name of a file containing the names of a sequence of request logs, rather than directly naming a single request log. As a result, Eneperf iterates over the sequence of logs.

Each line in the <log> names a request log file to be replayed against Eneperf in sequence, during each iteration.

--msec-between-updates

If you use this setting with --updates-log, it specifies the minimum time interval between sending partial update requests, in milliseconds. Before sending a new update request, Eneperf waits for a free connection (after the specified time interval expires).

This setting must not be used together with --list, --seek, --seekrepeat, --prelude,--postlude, and --throttle.

Note

The --msec-between-updates setting is optional. If you use only the --updates-log setting, Eneperf processes updates one after another. Eneperf waits for the current update to finish and immediately sends another update. It does not wait for any period of time between sending individual updates to the Dgraph.

--nreq <n>

Stop after n requests.

--nodnscache

Disable caching of DNS hostname lookups. By default, Eneperf caches these lookups to improve performance.

--pidcheck <pid>

On a connection error, check the specified Dgraph process to see if it is running. If the process is not running, terminate Eneperf.

--prelude <log_file_path>

Specify a <log_file_path> of the file with URLs to replay before those of the <log> parameter, for each iteration.

Use this flag together with the --list flag to avoid repetition of requests in the several log files named in the <log> parameter.

--postlude <log_file_path>

Specify a <log_file_path> of the file with URLs to replay after those of the <log> parameter, for each iteration.

Use this flag together with the --list flag to avoid repetition of requests in the several log files named in the <log> parameter.

--progress

Display the percentage of the query log file processed.

Note

If you run Eneperf in the two-stream mode for testing updates performance, it displays the progress only for the regular queries log, not for the updates log.

--quitonerror

Terminate the Eneperf process if it encounters a fatal HTTP connection error. By default, errors are ignored and do not stop the Eneperf run.

--rcvbuf <size_bytes>

Override the default TCP receive buffer size, set with the SO_RCVBUF socket option.

--record <rec_file_prefix>

Record a log of all HTTP responses. Recorded data is placed in output files with the prefix <rec_file_prefix>. Data files are given the suffixes .dat1, .dat2, and so on. An index file with the suffix .idx is also produced.

--record_hdr

In --record mode, record HTTP header information along with page content.

--record_ord

In --record mode, ensure that log entries are recorded in the same order that they are listed in the <log> file, even if they are processed out of order.

--record_roll <max_KB>

Set the maximum number of KB per recording file. Default is 1024 KB.

--reqstats

Maintain and report per-request timing statistics.

Note

This option produces accurate results only if you specify <num connections> as 1.

--reqtimeout

Places a limit on the time for any individual request. Default is 600 seconds.

--runtime <max_runtime>

Place a limit on the run time for Eneperf. Eneperf exits after <max_runtime> minutes. Minutes are the default unit.

--seek <n>

Skip a specified number of requests in the specified log file and start with log entry n. For example, in a log containing 100 requests, if you run Eneperf with --seek 50, it issues 50 requests from 50 to 100.

--seekrepeat

Use in conjunction with --seek. Start each iteration with the log entry specified by --seek. --seekrepeat has an impact only if the number of iterations specified is greater than one. If it is so, when Eneperf reaches the end of the log file, --seekrepeat indicates that it should start the next iteration from the log entry specified as a value to --seek (50 in the example above).

The behavior without --seekrepeat and with --seek specified is to seek only on the first iteration and restart from the beginning of the file on subsequent iterations.

--sleeponerror <secs>

Sleep for a specified number of seconds before sending any new requests after a connection error occurs.

--stats <num_reqs>

Print statistics after the specified <num reqs> are processed (sent and received).

--throttle <max_req/sec>

Place an approximate limit on the number of requests per second that Eneperf generates.

--updates-log

Specifying the updates log allows running Eneperf in a two-stream mode with two logs: regular query request logs and update request logs. In this mode, Eneperf sends update requests from the updates log at regular intervals while sending queries from the query log.

This setting can be used either together with the --msec-between-updates setting, or without it:

This setting must not be used together with --list, --seek, --seekrepeat, --prelude,--postlude, and --throttle.

Before running Eneperf in the two-stream mode, you need to create a separate log that contains only partial update requests. You should create such a log with several partial update requests pointing to a single update file using the admin?op=update&updatefile=filename command.

--version

Add the version of Eneperf that is used for this iteration.

The version information is always displayed at the beginning of Eneperf output, as follows: Eneperf version <number>.

--warn <max_req_threshold>

Print a warning message for any requests that take longer than the specified threshold time limit to return (useful for finding the “slow” requests in a log file). The threshold time limit is specified in milliseconds.

By default, Eneperf drives load as fast as the MDEX Engine can handle it. However, there is a setting, --throttle, that allows you to place an approximate limit on the number of queries per second sent to the MDEX Engine. That means you can drive load at a rate you select.

The --throttle setting is useful when you want to approximate a special case. For example, imagine you expect high-traffic load during the holiday season. You want to calculate maximum load, while maintaining a comfortable margin of error for the MDEX Engine by running it at 80% utilization.

You might prepare an estimate by multiplying the maximum load by 0.8. Alternatively, you could use --throttle to try different numbers of queries per second and to capture the CPU performance on the MDEX Engine machine, using a tool such as vmstat on Solaris. You could then calculate the average CPU utilization from these numbers, or plot a chart of utilization over time in Microsoft Excel.

The mapping of the --throttle setting to queries per second is not exact. Eneperf uses a simple method to calculate the waiting times to insert between queries. You get a real number of operations per second but it might be significantly lower than you want or expect. The --throttle setting to Eneperf can generate performance results that exceed the maximum throughput of the MDEX Engine and still result in throughput results for the MDEX Engine that are less than its maximum. Experiment with this setting to identify the best strategy for your situation.


Copyright © Legal Notices