| PolyDocs: Client Options |
|---|
| Web Polygraph |
Documentation has been synchronized with Poly 2.1.0.
usage: polyclt [--option] ... options:
help list of options version package version info host_type package build environment information verb_lvl <int> console verbosity level dump <list> dump request/replies/errors headers/bodies to console prn_reqs <bool> dump request headers to console prn_reps <bool> dump reply headers to console prn_errs <bool> dump detailed message info for every xaction error notify <addr> send notifications to a [remote] monitoring program label <str> run label fd_limit <int> decrease default fd limit config <file> configuration file name cfg_dirs <list> directories to search for cfg files console <file> redirect console output log <file> detailed binary log file log_size <size> binary log size limit stats_cycle <time> statistics cycle length linger_tout <time> linger on socket close nagle <bool> use Nagle alg xact_think <time> pause on xaction start pconn_use_lmt <int> number of requests on a single connection goal <int> total completions file_scan <poll|select> system call to use for scanning ready files fake_hosts <list> use given addresses, do not lookup real interfaces idle_tout <list> exit after inactivity timeout rng_seed <int> general purpose seed unique_world <bool> use URL set that is unique across runs origin <addr> origin host proxy <addr> proxy host abs_urls <bool> generate absolute urls ports <port_range> use explicit port binding conn_pool <int> [initial] connection pool capacity conn_pool_dyn <bool> dynamically adjust the size of a conn pool launch_win <time> interval to start all robots cool_phase <time> minimal cool-off phase duration robots <int> number of robots req_rate <rate> robot request rate maximize_req_rate <bool> adjust req_rate run-time to find maximum ign_bad_cont_tags <bool> ignore bad content tags ign_false_hits <bool> ignore false hits prn_false_misses <bool> dump rep headers of false misses do_ios <bool> do socket ios world_type <str> part of a URL world_id <str> part of a URL world_urls <file> file with URLs unique_urls <int> append unique suffix (counter) to URLs recur <ratio> recurrence (prob of revisiting a URL) order <int> request order rep_cachable <ratio> portion of cachable replies dhr <ratio> document hit ratio pop_model <model> popularity model tmp_loc <distr> distances distr for temporal locality tmp_loc_delta <int> fuzziness of temporal locality choices tmp_loc_depth <int> max depth of tmp locality plan prefilled_cnt <int> number of already cached oids
| Name: | --verb_lvl |
|---|---|
| Type: | integer |
| Default: | 0 |
Verb_lvlspecifies how much info will be printed to the console. Normally, level zero will have only a couple of lines per run. Level one will allow for interval and phase stats to be printed. A negative level will disable any output.Most errors are reported with level zero.
Regardless of
verb_lvlsetting, all console messages are duplicated in the log.
| Name: | --dump |
|---|---|
| Type: | list of strings |
| Default: | no default |
| Version: | 2.2.0 and up |
The
--dumpoption controls what messages and what parts of messages should be printed on the console. Possible message types are: req[uest], rep[ly], and err[or]. Possible message parts are hdr (for ``header'') and body. Dumping of message bodies is not supported at the time of writing.For example, to dump all request headers, one may use:
polysrv --dump req-hdrTo dump the headers of all requests and the headers of erroneous messages, use:polyclt --dump req-hdr,err-hdrFinally, to dump everything about errors, consider:polyclt --dump errand to dump all headers, use:polyclt --dump hdrNote that sometimes Polygraph does not have the required data at the time of dump. Polygraph will try to at least provide some meta information about the message then.
If a message part matches both negative (error) and positive (reply or request) type masks, the part may be printed twice.
This option obsoletes --prn_reqs, --prn_reps and --prn_errs options.
| Name: | --prn_reqs |
|---|---|
| Type: | boolean |
| Default: | no |
When
prn_reqsis set, Poly will print the request line and HTTP headers of each request. The requests are dumped to standard output.Note that the output will not be logged.
This mode is very useful both for debugging benchmarking setup and for understanding Poly traffic model.
| Name: | --prn_reps |
|---|---|
| Type: | boolean |
| Default: | no |
When
prn_repsis set, Poly will print the status line and HTTP headers of each reply. See --prn_reqs option for details.
| Name: | --prn_errs |
|---|---|
| Type: | boolean |
| Default: | no |
| Version: | 2.1.0 only |
When
prn_errsis set, Polygraph will attempt to dump the status/request line and HTTP headers of each message that led to a xactions error. For some errors, a part of a message content is also printed. See --prn_reqs option for details.
| Name: | --notify |
|---|---|
| Type: | host:port |
| Default: | no default |
| Version: | 1.3.1 and up |
The notify option instructs Poly to send status messages to a daemon on the specified host. The messages are small (about 100 bytes) and are sent using UDP protocol ensuring negligible overhead. The messages are emitted every 20 seconds.
Polygraph distribution comes with a listening daemon (udp2tcpd) and an interactive monitoring program (polymon).
Monitoring capabilities are very handy if you want to watch your experiments closely, but do not want to create extra load on the poly-machines. Polymon is also very helpful in maintaining several independent experiments.
| Name: | --label |
|---|---|
| Type: | string |
| Default: | no default |
| Version: | 1.3.1 and up |
The label option allows you to assign a string label to a run. The label gets logged (as any other option value) and is also included into notification messages (see --notify). The latter is useful if you running several experiments and want polymon to distinguish them by a short ``name''.
Note that notification messages truncate labels to 15 characters, and polymon usually displays 6 first characters.
| Name: | --fd_limit |
|---|---|
| Type: | int |
| Default: | no default |
| Version: | 1.0p4 and up |
Polygraph determines the maximum level of available file descriptors using
getrlimit(RLIMIT_NOFILE)system call. It then attempts to set the current level to that maximum using thesetrlimit(RLIMIT_NOFILE)system call. The return value of the latter (actually about 97% of it) is then used as a Polygraph internal FD limit.Polygraph will not attempt to create more TCP sockets than its internal limit. However, some OSes are known to be unhappy when a process is close to the limit. In a non-production benchmarking environment, there may be also a competition for file descriptors with other processes. The
fd_limitoption can be used to lower the internal limit even further.Polygraph will quit if it reaches its internal FD limit. In most cases, the log (if enabled using the
--logoption) will be flushed/saved before program termination.One cannot raise the FD limit using the
fd_limitoption! The original limit is reported by the operating system and must be changed first. Different OSes will require different techniques for raising the file descriptor limits. Some well-known hacks can be found elsewhere.Finally, note that two Polygraph header files (
src/include/config.handsrc/xstd/include/xstd.hare #definingFD_SETSIZEto be 4096. If you intend to use more file descriptors, you probably should increase that value.FD_SETSIZEis a system ``constant'' that is used forselect(2)related calls on some OSes.
| Name: | --config |
|---|---|
| Type: | filename |
| Default: | no default |
| Version: | 2.0 and up |
The --config option specifies configuration file for polygraph clients and/or servers. See Polygraph Language documentation for details on how to write a configuration file.
Root configuration file as well as #include files are searched for using the --cfg_dirs option.
| Name: | --cfg_dirs |
|---|---|
| Type: | comma-separated list of directory names |
| Default: | ``./'' or current directory |
| Version: | 2.0 and up |
The --config option specifies the list of directories that are searched for root configuration file as well as #include files. See --config option for how to specify a root configuration file. See Polygraph Language documentation for details on #include statements and how to write a configuration file.
| Name: | --console |
|---|---|
| Type: | filename |
| Default: | standard output (``-'') |
Consoleoption allows you to redirect console output into a file. The file must be reachable from the current directory.
| Name: | --log |
|---|---|
| Type: | filename |
| Default: | no default |
This option enables preserving detailed stats in a log file.
| Name: | --log_size |
|---|---|
| Type: | size |
| Default: | 10MB |
All log content is kept in memory until the end of a run. This option allows you to specify the maximum log buffer size to hold that info. When logging module runs out of buffer space, it stops logging completely.
Logging must be enabled with the
--logoption first. If no--logoption was specified, a small 10KB log is kept in memory and is discarded at the end of a run.Polygraph versions 1.0p5 and earlier will exit when run out of log buffer space. These versions are using memory resident log buffer regardless of the
--logoption presence.
| Name: | --stats_cycle |
|---|---|
| Type: | time |
| Default: | 5sec |
| Version: | 2.1.0 and up |
Stats_cycle specifies the duration of Interval stats cycle. Shorter cycles give more precise statistics but result in larger binary logs.
| Name: | --linger_tout |
|---|---|
| Type: | time |
| Default: | no default |
| Version: | discontinued in 2.0 |
Linger_toutis an equivalent of theSO_LINGERsocket option. Omitting the option or specifying a specialnonevalue results in the default TCP behavior. In Poly releases after 1.0p0, setting timeout to zero is equivalent to setting SO_LINGER to "disabled" (see below).SO_LINGER controls the action taken when unsent messages are queued on socket and a close(2) is performed. If SO_LINGER is set, the system will block the process on the close(2) attempt until it is able to transmit the data or until it decides it is unable to deliver the information within the specified timeout. If SO_LINGER is set to "disabled" and a close(2) is issued, the system will process the close in a manner that allows the process to continue as quickly as possible.
| Name: | --nagle |
|---|---|
| Type: | boolean |
| Default: | true |
| Version: | discontinued in 2.0 |
Nagleis an equivalent of theTCP_NODELAYprotocol option. See Unix Socket FAQ for more info.
| Name: | --xact_think |
|---|---|
| Type: | TimeDistribution |
| Default: | no default |
| Version: | discontinued in 2.0 |
Xact_thinkspecifies the ``think time'' for each transaction.On the server side, a transaction will sleep right after a connection is accepted and before reading the request.
On the client side, a transaction will sleep right before opening a connection and sending a request.
| Name: | --pconn_use_lmt |
|---|---|
| Type: | NumDistribution |
| Default: | no default |
| Version: | 1.1p0 and up; discontinued in 2.0 |
When first created, an HTTP connection is assigned the number of transactions it should be used for. That number is drawn from the distribution specified using the
pconn_use_lmtoption. A usage limit of 2 transactions or more implies a persistent connection (if the other side cooperates).
Pconn_use_lmtmakes sense on both server and client sides. By default, all connections are used only once.Poly-client or poly-server will close a connection if either the other side has sent ``Connection: close'' header or the connection usage limit has been reached. ``Proxy-Connection:'' headers are also honored. Polygraph indicates its intention to keep or close a connection by sending the appropriate Connection:'' header with every request.
Note: The Nagle algorithm may need to be turned off using the
--nagleoption. Otherwise, TCP ack packets are delayed for about 200msec resulting in 5req/sec throughput for a single TCP connection.
| Name: | --goal |
|---|---|
| Type: | Goal |
| Default: | no default |
| Version: | discontinued in 2.0 |
Use the
goaloption to specify the termination conditions for an experiment. A termination condition can be experiment duration, number of successful transactions, or number of errors. At least one condition must be specified. Conditions are ORed together.The order of conditions is flexible. The following simple heuristics are used to guess the actual order:
- first number if any is ``number of successful transactions''
- second number if any is ``number of errors''
- time if any is ``experiment duration''
Conditions are separated with a column (
:). For example:polyclt --goal -1:1hour:1000 ...would mean to stop an experiment in 1 hour or after 1000 errors. The number of successful transactions is unlimited.Note that goal settings are also used to determine the termination condition for experiment phases.
Poly does not yet support termination based on number of xaction errors.
| Name: | --file_scan |
|---|---|
| Type: | poll | select |
| Default: | poll if supported; select otherwise |
| Version: | 1.3.0 and up |
Most Unix operating systems have at least two system calls to detect ``ready'' file descriptors: poll(2) and select(2). The --file_scan option allows you to control which method to use. See manual pages for your OS for details about these system calls.
File scanning method may affect performance of Polygraph under heavy loads or when working with large number of file descriptors. The effect is probably limited to how fast Polygraph can scan all ready files. The ``best'' system call to use depends on the OS and the load on Polygraph. We suspect that performance differences are marginal in many general cases. Experiment if you want to double check your environment.
If you are still using Polygraph 1.x, and your OS does not support poll(2) system call, you have to add -DLACK_POLL to the DEFINES variable in src/xstd/Makefile. Otherwise, Polygraph will not compile. Recent versions of Polygraph do not have this problem. Also, Polygraph 1.x uses select(2) by default.
| Name: | fake_hosts |
|---|---|
| Type: | comma-separated list of IPs |
| Default: | no default |
| Version: | 2.0 and up |
Polygraph configuration file binds robots and servers to specific IP addresses. Normally, polyclt and polysrv scan the list of network interfaces available on the host to determine which robots and servers to start. However, the default scan relies on semi-portable system calls and might not work correctly.
To disable the network interface scan, use the --fake_hosts option. The specified list of IP addresses will be used instead of the one obtained from the operating system.
| Name: | --idle_tout |
|---|---|
| Type: | time |
| Default: | infinity |
By default, Polygraph will stop simulation when all phases reach their goals. Sometimes a phase has a goal that cannot be reached. Sometimes network or other external conditions stall all pending transactions. In these and similar situations it is often desirable to stop the simulation even if not all phases are completed.
The --idle_tout option is used to specify a finite time the server should wait for some network activity. If no network activity happens within the specified time, Polygraph will stop the simulation with an ``inactivity timeout'' message.For Polygraph prior to version 2.0, the inactivity timeout could be specified on server side only.
| Name: | --rng_seed |
|---|---|
| Type: | integer |
| Default: | 1 |
Rng_seedis used to initialize all random number generators. By varying the seed, one can test how susceptive to random noise the simulation is.
| Name: | --unique_world |
|---|---|
| Type: | boolean |
| Default: | false |
If set to true,
unique_worldinstructs Polygraph use only the random generator seed when generating URLs. By default, Polygraph will use other random factors such as time and process ID to make sure that the URLs do not repeat from one test to another. Use this option if you are trying to preserve the set of URLs across several (similarly configured) runs or across several (similarly configured) polysrv processes of the same test.
Unique_worldis essentially a hack that you should avoid unless you know what you are doing. The option's name is unfortunate. It used to be calledrepeat, but that was even more confusing.
| Name: | --origin |
|---|---|
| Type: | NetAddress |
| Default: | 127.0.0.1:8080 |
| Version: | discontinued in 2.0 |
The
originaddress is used to connect directly to the origin server when no--proxyoption is given. The absence of the--proxyoption implies direct connection and causes generation of ``relative'' URLs (i.e., URLs without an http://host:port prefix).The
originaddress is always copied to theHost:HTTP header.If the port value is 80, it is not included in URLs, but is included in
Host:headers.In Poly 1.0, the host part of an address is not interpreted. Earlier versions of Polygraph used the
--proxyoption to determine the actual destination of a request. See also--abs_urlsoption for generating ``relative'' URLs in Poly 1.0.
| Name: | --proxy |
|---|---|
| Type: | NetAddress |
| Default: | no default (127.0.0.1:8080 in Poly 1.0) |
If
--proxyoption is given, Polygraph assumes proxied connection and generates absolute URLs (i.e., URLs with am http://host:port prefix). The requests are sent to the specified proxy address. See also--originoption.The host part of the address must be an IP address; FQDNs are not yet supported.
In Poly 1.0, all requests are sent to the address specified in the
proxyoption. To send requests directly to Polyclient, use Polyclient's address. See also--abs_urlsoption for generating ``relative'' URLs in Poly 1.0.
| Name: | --abs_urls |
|---|---|
| Type: | boolean |
| Default: | yes |
| Version: | prior to 1.1 |
This option is obsolete, see
--originoption. The old description is left below for users of Poly 1.0.By default, Polygraph client will generate absolute URLs. Relative URLs (i.e., URLs without the
http://host:portpart) are useful for testing transparent proxies.The affect of specifying relative URLs (
--abs_urls no) can be illustrated by the following example:http://host:port/whatever --- absolute URL /http:/host:port/whatever --- relative URLDisabling absolute URLs have no effect on HTTP headers.
| Name: | --ports |
|---|---|
| Type: | port range |
| Default: | use ephemeral ports |
The
portsoption instructs Polygraph to explicitlybind(2)a socket to a specific port before making aconnect(2)request. The actual port is selected from the specified range, using LRU approach. If thebind(2)call fails, the port is marked as ``used'' and is never tried again unless there are no ``good'' ports left. Poly keeps a map of the ports it is currently using to avoid binding to the same port twice.In version prior to 2.0, a special value of `
ephemeral' instructs Polygraph to leave binding to the operating system. The latter is the default behavior.The default port range used by OSes for ephemeral ports is often rather small. Thus, an application is likely to run out of available ports if request rate is high and explicit binding is not used.
To reduce the number of run-time conflicts, Polygraph versions starting 1.3.0 pre-scan the given port range to find invalid ports. The scan may add a couple of seconds to polyclt start time.
| Name: | --conn_pool |
|---|---|
| Type: | integer |
| Default: | no default |
| Version: | discontinued in 2.0 |
The
conn_pooloption activates the Connection Pool. The value of the option is the [initial] size of the pool. See also the--conn_pool_dynoption.
| Name: | --conn_pool_dyn |
|---|---|
| Type: | boolean |
| Default: | no |
| Version: | discontinued in 2.0 |
The
conn_pool_dynoption allows the Connection Pool to grow and shrink on-demand.
| Name: | --launch_win |
|---|---|
| Type: | time |
| Default: | 0 |
| Version: | discontinued in 2.0 |
All Robots are started within the specified ``launch window''. The actual starts are uniformly distributed in
[0, launch_win)interval.When the number of robots is large, starting them at the same time may cause staggering behavior with many transactions effectively ``synchronized''. Specify an appropriate non-zero
launch_winto avoid that.
| Name: | --cool_phase |
|---|---|
| Type: | Time |
| Default: | none |
| Version: | discontinued in 2.0 |
The
cool_phaseoption specifies the duration of a cool-off phase.Cool-off phase is usually very short or nonexistent. However, there are cases when it is required to continue to generate traffic some time after the measurement phase. For example, a presence of a cool-off phase helps when several clients are executed concurrently and one want to guarantee that all measurement phases will stop before any of the clients quits.
| Name: | --robots |
|---|---|
| Type: | integer |
| Default: | no default |
| Version: | discontinued in 2.0 |
The
robotsoption specifies the number of concurrent Robots to simulate.
| Name: | --req_rate |
|---|---|
| Type: | Rate |
| Default: | no default |
| Version: | discontinued in 2.0 |
The
req_rateoption tells Polyclient to emit HTTP requests at a constant rate. Each Robot will submit requests at a given rate without waiting for responses from the server.The workload is modeled using Poisson streams. In other words, requests inter-submission times are distributed exponentially.
This option is currently mutually exclusive with the
--xact_thinkoption.
| Name: | --maximize_req_rate |
|---|---|
| Type: | bool |
| Default: | do not |
| Version: | 1.3.0 and up |
| Version: | discontinued in 2.0 |
The maximize_req_rate option enables ``maximum request rate'' searching mode. The option must be used together with the --req_rate option which specifies initial rate. The search is done by incrementing or decrementing actual request rate depending on the reply rate. Verbose level of 4 or higher will display some run-time information about the algorithm at decision points.
Support for this mode is rudimental, and more work is needed.
| Name: | --ign_bad_cont_tags |
|---|---|
| Type: | boolean |
| Default: | no |
The --ign_bad_cont_tags option tells robots to ignore bad content tags that they may find inside response bodies. Polygraph uses semi-custom markup tags to identify embedded opjects (similar to <img> tags in HTML). When the content contains tags that confuse Polygraph (e.g., realistic content simulation is enabled on the server side), you might want to use this option.
| Name: | --ign_false_hits |
|---|---|
| Type: | boolean |
| Default: | yes (`no' prior to 2.0) |
Polygraph knows what objects it has requested during current test. If Poly detects a hit on an object that was requested only once (the current request), it complains about a ``false hit''and registers a transaction error.
However, there are situations when false hits are not really ``false''.
For example, consider situation when objects from previous runs are to be requested again. In such cases, since Poly does not keep any state info between tests, it is likely to complain about false hits. If set, the
ign_false_hitsoption will prevent Polygraph from noticing false hits.Another example is when two requests for a previously unseen object are submitted very close to each other. If a proxy or poly-server reorders the replies, Polygraph will think that the first reply is a false hit. Because of this, you may want to disable false hit detection after you have verified that your setup is working correctly.
| Name: | --prn_false_misses |
|---|---|
| Type: | boolean |
| Default: | no |
Polygraph knows what objects it has requested during current test. If Poly detects a miss on an object that was requested before, it detects a ``false miss''. False misses are not errors, but an indication that a proxy did not cache an object when it had a chance to do it or purged a cached object.
If set, the
prn_false_missesoption instructs Polyclt to dump Object Id and reply headers of false misses. The latter is often very helpful for debugging a proxy or workload.
| Name: | --do_ios |
|---|---|
| Type: | boolean |
| Default: | yes |
| Version: | discontinued in 2.0 |
Setting
do_iosto ``no'', will disable most I/O operations on sockets. The latter may be useful in conjunction with the--prn_reqsoption to get a request stream dump without a running server.Support for this option is experimental.
| Name: | --world_type |
|---|---|
| Type: | string |
| Default: | Polygraph |
The
world_typeoption can be used to modify theworld_typepart of generated URLs.
| Name: | --world_id |
|---|---|
| Type: | string |
| Default: | a unique id |
World_idspecifies theworld_idpart of generated URLs.A special value of `
unique' can be used to instruct Poly to generate a unique string (which is also the default behavior).World Ids are often used to prevent (or ensure) overlapping of the requested URLs between runs.
| Name: | --world_cap |
|---|---|
| Type: | integer |
| Default: | 2147483647 or 2^31-1 |
| Versions: | 1.0p2 and earlier |
World_capspecifies the number of unique Objects in the simulated World.
| Name: | --world_urls |
|---|---|
| Type: | string |
| Default: | no default |
The
world_urlsoption instructs Poly to read the set of URLs (actually URL paths to be precise from the specified file. All URLs are read and stored in memory before the first request is generated.The file format is as follows:
- one URL per line
- empty lines and lines that start with `
#' are ignored- URLs must start with a slash (`
/')To form a complete URL, pre-loaded URL paths are appended right after the ``host:port'' part of a URL.
World Capacity is not affected by this option! Pre-loaded URLs (say, N of them) correspond to first N Object Ids. If URLs with higher Object Ids are needed, they are auto-generated.
| Name: | --unique_urls |
|---|---|
| Type: | integer |
| Default: | no default |
A positive
unique_urlsvalue instructs Polyclient to append a unique suffix to all generated URLs. The suffix is simply a ``counter'' that starts at the offset specified byUnique_urls. Hence, uniqueness is not guaranteed across Polyclient executions.This option is handy for generating miss-only workloads. An offset is usually set to 1, unless you want to resume an interrupted experiment from a certain point.
| Name: | --recur |
|---|---|
| Type: | ratio |
| Default: | no default |
| Versions: | 2.0.0 only |
Note: Starting Polygraph version 2.1.0, recurrence is specified on per-robot basis using PGL.
Recurrence ratio specifies the probability that a URL is revisited by a Robot. Assuming ideal proxy scenario, revisit to a URL results in a ``hit'' iff the corresponding object is cachable.
Note that robots do not know cachability status of the objects they request which makes it impossible to specify Document Hit Ratio as a stand-alone parameter. However, if cachable objects have the same popularity as uncachable ones, DHR can be computed as recurrence ratio divided by cachability ratio. Thus, you can select recurrence to give you a desired hit ratio.
Recurrence ratio is a part of the popularity model. That model is undergoing significant renovation at the time of writing.
| Name: | --order |
|---|---|
| Type: | integer |
| Default: | no default |
| Versions: | suspended in 1.0p4 |
When a positive
orderis specified, Polyclient will pre-generate all Object Ids using some default order and then permutate the generated set. Thus, one is guaranteed that the same set of Object Ids will be used for all experiments that differ only inordersettings.This option is handy for simulating a hit-only workload: All ``passes'' are done with a
--unique_urlsoption and different values of--orderoption. The first ``pass'' will have all misses. Consecutive passes will have high hit ratios.The value of 1 is likely to correspond to the order of Object Ids when
--orderis not specified. However, this behavior may change in the future.
| Name: | --rep_cachable |
|---|---|
| Type: | Ratio |
| Default: | 0 |
| Versions: | 1.0p4 and up; discontinued in 2.0 |
The
rep_cachableoption specifies the portion of cachable replies (not unique Object Ids!) as seen on the client side.A cachable reply will include
Cache-Control: public,max-age=31536000 Expires: a date about one year from ``now''while an uncachable reply will have
Cache-Control: private,no-cache Pragma: no-cacheCachability is determined at random. However, the objects (identified by their Object Ids), preserve their status across accesses. In other words, ``once [un]cachable, always [un]cachable''. The status may be preserved across experiments as long as the value of the
rep_cachableoption and other traffic parameters stay the same, but we are not positive.The
rep_cachableoption was moved from Polyserver to Polyclient in 1.0p4.
| Name: | --dhr |
|---|---|
| Type: | Ratio |
| Default: | 0 |
| Versions: | 1.0p4 and up; discontinued in 2.0.0 (see --recur instead) |
The
dhrdetermines document (object) hit ratio. Hit Ratio Model keeps he ratio stable regardless of other traffic conditions if at all possible.The ratio is calculated as if an ideal proxy is in use. Hence, the request stream (in terms of hit ratio) does not depend on the actual proxy under test.
A proxy may decide not to cache some of the cachable replies, and it may delete old cachable replies. These and perhaps other proxy actions may lead to a smaller measured hit ratio compared to the offered ratio.
| Name: | --pop_model |
|---|---|
| Type: | PopModel |
| Default: | zipf |
| Versions: | 1.0p4 and up |
Pop_modelselects the Object Popularity Model to use and allows to specify model parameters if any.
| Name: | --tmp_loc |
|---|---|
| Type: | Distribution |
| Default: | no default |
| Versions: | 1.0p4 and up |
The
tmp_locoption specifies an inter-request distance distribution to use with the Temporal Reference Locality Model. If a specialnonedistribution is specified, the Temporal Locality Model is disabled and has no effect on traffic generation.A number of research studies suggested that using lognormal distribution for inter-request distances is appropriate for Web traffic.
Note that inter-request distances are measured in requests, not time units. Thus, no scale factor should be specified for distribution parameters.
| Name: | --tmp_loc_delta |
|---|---|
| Type: | Integer |
| Default: | 1 |
| Versions: | 1.0p4 and up |
The Temporal Reference Locality Model selects one or more candidate slots for the next request to an Object Id. The selected slots are centered around the slot chosen by the locality distribution (see
--tmp_loc). Thetmp_loc_deltaoption specifies how many slots to the left and right of the chosen position are to be included in the selection.For example, a
tmp_loc_deltavalue of 0 means that a selection will include only one slot (the chosen one). Atmp_loc_deltavalue of 1 will include 3 slots (including the chosen one) into a selection.
Tmp_loc_deltavalue is also used to select the best Object Id to request next among the first2*Tmp_loc_deltaslots.To disable temporal locality module, do not use negative
tmp_loc_deltas, usenonefor--tmp_loc_deltainstead.
| Name: | --tmp_loc_depth |
|---|---|
| Type: | Integer |
| Default: | 500000 |
| Versions: | 1.0p4 and up |
To support Temporal Reference Locality, Polyclt keeps a schedule or plan of Object Ids to be requested. The
tmp_loc_depthoption can be used to explicitly specify the plan ``capacity'' or ``depth''.As a rule of thumb,
tmp_loc_depthshould be close to the maximum request distance Temporal Locality Model can generate.
| Name: | --prefilled_cnt |
|---|---|
| Type: | Integer |
| Default: | no default |
| Versions: | none (yet) |
Advise Poly that the first
prefilled_cntcachable objects where already requested and should be cached by the proxy.Polygraph will use the specified Ids to generate hits. It will also warm-up the Temporal Locality plan (with the specified Ids) if the latter is enabled.
Note that Polyclt process may ``pause'' for a second or two to warm-up its plan before issuing the first request.
$Id: cltopts.sml,v 1.17 1999/10/12 19:20:33 rousskov Exp $