Performance and Tuning Options
Some of these options increase the risk of DDC/CI communication failures, requiring retries.
Option: --sleep-multiplier
The DDC/CI specification dictates that the host computer wait 40-200 ms (depending on operation) between sending a command to the monitor and reading the response. Typically ddcutil spends approximately 90% of its elapsed time sleeping. Many monitors respond properly with much shorter waits. On the other hand, there are monitors that require longer waits to avoid DDC/CI errors. Option --sleep-multiplier applies a multiplication factor to the DDC/CI specified sleep times. The multiplication factor is a floating point number. For example,
--sleep-multiplier .5
causes 40 ms waits to become 20 ms, and
--sleep-multiplier 4
causes 40 ms waits to beome 160 ms.
Note that ddcutil may automatically increase wait times when peforming retries. Option --sleep-multiplier applies to the inital wait time.
Option --sleep-multiplier can significantly speed up ddcutil execution - some monitors have been seen to operate properly with a sleep-multiplier as low as .1,
Option: --async
Enable parallel inspection if 3 or more monitors. See detect command.
Option: --noverify
Skip checking that a monitor has properly processed a DDC Set VCP Feature request packet. For details, see setvcp command.
Option: --maxtries
I2C is an inherently unreliable protocol, requiring retry management.
There are 3 kinds of operations in which retry is possible:
- Write-only operation. A request packet is written to the monitor with no subsequent read.
Used only to set a VCP feature value, and to execute command scs (Save Current Settings). - Write-read operation. A request packet is written to the monitor, followed by a reading a response packet. Most DDC protocol operations are of this type.
- Multi-part operation. This is a "meta" operation, consisting of multiple write-read or write-only operations. Used to query monitor capabilities, and for querying and setting Table type VCP features.
By default, the maximum number of tries for each operation type is:
- write-only operation: 4
- write-read operation: 10
- multi-part operation: 8
(Note that the number of retries is 1 less than the number of tries.)
Option --maxtries adjusts the maximum try counts. Its argument consists of 3 comma-separated values. The following example sets the maximum try counts to 3 for write-only operations, 6 for write-read operations, and 9 for multi-part operations.
--maxtries(3,6,9)
A value of "0" or "." leaves the corresponding try count unchanged. The following example changes only the maximum write-read try count:
--maxtries(0,7,.)
The higest value to which a maximum try count can be set, is 15.
Options: --enable-capabilities-cache, --disable-capabilities-cache
capabilities is the most expensive ddcutil command in elapsed time. It is also the most prone to failure on marginal I2C host/monitor connections, due the large number of I2C request/response operations involved.
The capabilities string is constant for any given monitor model. Therefore it makes sense to cache the value.
Capabilities string caching is controlled by options --enable-capabilities-cache and --disable-capabilities-cache. The default is --enable-capabilities-cache. Option --disable-capabilities-cache may be needed for certain edge cases.
The strings are saved in file ddcutil/capabilities within the XDG_CACHE_HOME directory. Normally this is $HOME/.cache/ddcutil/capabilities. This file can safely be erased if the stored capabilities string should become corrupted in some way.
Additional Peformance Related Options
Additional performance related options exist but are experimental. See the Release Notes.