WULT-START(1)
π START(1) β wult start π
okay bestie, welcome to the wult start page β this is the main character of the whole wult situation, no cap. The manual name is START, and this is the wult start command. Let's get into it π«Ά
β¨ SYNOPSIS β¨
usage: wult start [-h] [-q] [-d] [-H HOSTNAME] [-U USERNAME] [-K
PRIVKEY] [-T TIMEOUT] [-c COUNT] [--time-limit LIMIT] [--exclude
EXCLUDE] [--include INCLUDE] [--keep-filtered] [-o OUTDIR] [--reportid
REPORTID] [--stats STATS] [--stats-intervals STATS_INTERVALS]
[--list-stats] [-l LDIST] [--cpu CPU] [--tsc-cal-time TSC_CAL_TIME]
[--keep-raw-data] [--no-unload] [--report] [--force] [--freq-noise
FREQ_NOISE] [--freq-noise-sleep FREQ_NOISE_SLEEP] devid
πΈ DESCRIPTION πΈ
Start measuring and recording C-state latency. That's literally the whole vibe β you run this, it does the latency measurements, and it writes everything down for you. Obsessed. π
π ARGUMENTS π
devidβ the ID of the device you're using to measure the latency, bestie. For example, it can be a PCI address of the Intel I210 device, or"tdt"for the TSC deadline timer block of the CPU. Not sure which devices you even have?? Run thescancommand to get supported devices. Slay. β¨
π§ that's the end of part 1 β more parts are coming, don't go anywhere π
π OPTIONS 'wult start' π
okay bestie, buckle up, this is the part where we go through EVERY single flag. yes, all of them. no skipping. π«Ά
-hβ shows you this very help message and then dips out. that's it, that's the flag. β¨-qβ be quiet. π€« like, no chatter.-dβ print debugging info. for when you're nosy (affectionately). π-H HOSTNAME,--host HOSTNAMEβ the name of the host you want the command to run on. π-U USERNAME,--username USERNAMEβ the username you'll log into the remote host with over SSH. the default user name isroot. π-K PRIVKEY,--priv-key PRIVKEYβ path to the private SSH key used to log into the remote host. by default the key is automatically found from standard paths like~/.ssh. πβ¨-T TIMEOUT,--timeout TIMEOUTβ SSH connect timeout, in seconds. default is 8. β±οΈ-c COUNT,--datapoints COUNTβ how many datapoints the test result should include. default is 1000000. heads up though: unless you use the--start-overoption, the pre-existing datapoints are taken into account. "For example, if the test result already has 6000 datapoints and memory." π--time-limit LIMITβ the measurement time limit, aka how long the SUT should be measured for. the default unit is minute, but you can use the following handy specifiers as well:d- days,h- hours,m- minutes,s-seconds. so like1h25mwould be 1 hour and 25 minutes, or10m5swould be 10 minutes and 5 seconds. the value0means "no time limit", and that is the default. and if you use this option along with the--datapointsoption, then measurements will stop as when either the time limit is reached, or the required amount of datapoints is collected. β³--exclude EXCLUDEβ datapoints to exclude: removes all the datapoints satisfying the expressionEXCLUDE. here's an example expression:(WakeLatency < 10000) | (PC6% < 1). this filter expression will remove all datapoints withWakeLatencysmaller than 10000 nanoseconds or package C6 residency smaller than 1%. you can use any metrics in the expression. π«β¨--include INCLUDEβ datapoints to include: removes all datapoints except the ones satisfying the expressionINCLUDE. in other words, this option is the inverse of--exclude. meaning--include expris the same as--exclude "not (expr)". π--keep-filteredβ if the--exclude/--includeoptions are used, then the datapoints not matching the selector or matching the filter are discarded. that's the default behavior, and this option changes it. if--keep-filteredhas been specified, then all datapoints are saved in result. here's an example: suppose you want to collect 100000 datapoints where PC6 residency is greater than 0. in that case you can use these options:-c 100000 --exclude="PC6% == 0". the result will contain 100000 datapoints, all of them with non-zero PC6 residency. but what if you don't want to simply discard the other datapoints, because they're also interesting? well, add the--keep-filteredoption. the result will contain, say, 150000 datapoints, 100000 of which will have non-zero PC6 residency. π§π-o OUTDIR,--outdir OUTDIRβ path to the directory where the results get stored. π--reportid REPORTIDβ any string that can serve as an identifier of this run. by default the report ID is the current date, prefixed with the remote host name in case the-Hoption was used:[hostname-]YYYYMMDD. for example,"20150323"is a report ID for a run made on March 23, 2015. the allowed characters are: ACSII alphanumeric,-,.,,,_,~, and:. π·οΈ--stats STATSβ comma-separated list of statistics to collect. the statistics are collected in parallel with measuring C-state latency, and they're stored in the the"stats"sub-directory of the output directory. by default, onlyturbostat, sysinfostatistics are collected. useallto collect all possible statistics. use--stats=""or--stats="none"to disable statistics collection. if you know exactly what statistics you need, specify the comma-separated list of statistics to collect β for example, useturbostat,acpowerif you need only turbostat and AC power meter statistics. you can also specify the statistics you do not want collected by pre-pending the!symbol: for example,all,!turbostatwould mean collect all the statistics supported by the SUT, except forturbostat. use the--list-statsoption to get more information about available statistics. π--stats-intervals STATS_INTERVALSβ the intervals for statistics. statistics collection is based on doing periodic snapshots of data. for example, by default theacpowerstatistics collector reads SUT power consumption for the last second every second, andturbostatdefault interval is 5 seconds. useacpower:5,turbostat:10to increase the intervals to 5 and 10 seconds correspondingly. use the--list-statsto get the default interval values. β²οΈ--list-statsβ prints information about the statisticswultcan collect, and exits. π¨οΈβ¨-l LDIST,--ldist LDISTβ this tool works by scheduling a delayed event, then sleeping and waiting for it to happen. this step is referred to as a "measurement cycle" and it's usually repeated many times. the launch distance defines how far in the future the delayed event is scheduled. by default this tool randomly selects launch distance within a range. the default range is[0,4ms], but you can override it with this option. specify a comma-separated range (e.g--ldist 10,5000), or a single value if you want the launch distance to be precisely that value all the time. the default unit is microseconds, but you can use the following specifiers as well:ms- milliseconds,us- microseconds,ns- nanoseconds. for example,--ldist 10us,5mswould be a[10,5000]microseconds range. too small values may cause failures or prevent the SUT from reaching deep C-states. if the range starts with0, the minimum possible launch distance value allowed by the delayed event source will be used. the optimal launch distance range is system-specific. π--cpu CPUβ the logical CPU number to measure, default is CPU 0. π§--tsc-cal-time TSC_CAL_TIMEβ wult receives raw datapoints from the driver, then processes them, and then saves the processed datapoint in thedatapoints.csvfile. the processing involves converting TSC cycles to microseconds, so wult needs the SUT's TSC rate. TSC rate is calculated from the datapoints, which come with TSC counters and timestamps, so TSC rate can be calculated as "delta TSC / delta timestamp". in other words, wult needs two datapoints to calculate TSC rate. however, the datapoints have to be far enough apart, and this option defines the distance between the datapoints (in seconds). the default distance is 10 seconds, which means that wult will keep collecting and buffering datapoints for 10s without processing them (because processing requires TSC rate to be known). after 10s, wult will start processing all the buffered datapoints, and then the newly collected datapoints. generally, longer TSC calculation time translates to better accuracy. β°π¬--keep-raw-dataβ wult receives raw datapoints from the driver, then processes them, and then saves the processed datapoint in thedatapoints.csvfile. in order to keep the CSV file smaller, wult keeps only the essential information, and drops the rest β for example, raw timestamps are dropped. with this option, however, wult saves all the raw data to the CSV file, along with the processed data. πΎ--no-unloadβ this option exists for debugging and troubleshooting purposes. please, do not use for other reasons. if wult loads kernel modules, they get unloaded after the measurements are done. but with this option wult will not unload the modules. π--reportβ generate an HTML report for collected results (same as callingreportcommand with default arguments). πβ¨--forceβ by default a network card is not accepted as a measurement device if it is used by a Linux network interface and the interface is in an active state, such as "up". use--forceto disable this safety mechanism.
use it with caution. β οΈ
--freq-noise FREQ_NOISEβ add frequency scaling noise to the measured system. this runs a background process that repeatedly modifies CPU or uncore frequencies for given domains. the reason for doing this is because frequency scaling is generally an expensive operation and is known to impact system latency.FREQ_NOISEis specified asTYPE:ID:MIN:MAX, where: TYPE should becpuoruncore, and specifies whether CPU or uncore frequency should be modified; ID is either CPU number or uncore domain ID to modify the frequency for (e.g.cpu:12:...would target CPU12); MIN is the minimum CPU/uncore frequency value; MAX is the maximum CPU/uncore frequency value. for example, to add frequency scaling noise for CPU0, add-- freq-noise cpu:0:min:max. to add uncore frequency noise for uncore domain 0, add--freq-noise uncore:0:min:max. the parameter can be added multiple times to specify multiple frequency noise domains. ππ₯--freq-noise-sleep FREQ_NOISE_SLEEPβ sleep between frequency noise operations. this time is added between every frequency scaling operation executed by thefreq-noisefeature. the default time unit is microseconds, but it's possible to use time specifiers as well,ms- milliseconds,us- microseconds,ns- nanoseconds. default sleep time is50ms. π΄π€
and that's the whole page bestie, you made it ππ this one's from 2024-03-08, and yeah, it's the START() page β slay, periodt. go measure something. ππ¦
π¦ where this page comes from
- fedora 43: wult 1.12.48-2.fc43 Β· BSD-3-Clause AND GPL-2.0-only
- fedora 44: wult 1.12.48-2.fc44 Β· BSD-3-Clause AND GPL-2.0-only
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms