JAEHOON KIM <[email protected]> writes: > On 3/25/2026 9:04 AM, Markus Armbruster wrote: >> Jaehoon Kim <[email protected]> writes: >> >>> Introduce a configurable poll-weight parameter for adaptive polling >>> in IOThread. This parameter replaces the hardcoded POLL_WEIGHT_SHIFT >>> constant, allowing runtime control over how much the most recent >>> event interval affects the next polling duration calculation. >>> >>> The poll-weight parameter uses a shift value where larger values >>> decrease the weight of the current interval, enabling more gradual >>> adjustments. When set to 0, a default value of 3 is used (meaning >>> the current interval contributes approximately 1/8 to the weighted >>> average). >>> >>> This patch also removes the hardcoded default values for poll-grow >>> and poll-shrink parameters from the grow_polling_time() and >>> shrink_polling_time() functions, as these defaults are now properly >>> initialized in iothread.c during IOThread creation. >>> >>> Signed-off-by: Jaehoon Kim <[email protected]>
[...] >>> diff --git a/qapi/qom.json b/qapi/qom.json >>> index c653248f85..feb80b6cfe 100644 >>> --- a/qapi/qom.json >>> +++ b/qapi/qom.json >>> @@ -606,6 +606,11 @@ >>> # algorithm detects it is spending too long polling without >>> # encountering events. 0 selects a default behaviour (default: 0) >>> # >>> +# @poll-weight: the weight factor for adaptive polling. >>> +# Determines how much the current event interval contributes to >>> +# the next polling time calculation. Valid values are 1 or >>> +# greater. If set to 0, the default value of 3 is used. >> >> The commit message hints what the valid values mean, the doc comment >> doesn't even that. Do users need to know? >> >> Code [*] below uses it like time >> poll_weight, where @time is int64_t. >> poll_weight > 63 is undefined behavior, which is a no-no. Please reject >> such values. poll_weight == 64 results in zero. Is that useful? >> >> Missing: (default: 0) (since 11.1) > > I agree. I will update the doc comment to give users a practical hint, > for example like this: > > # @poll-weight: the weight factor for adaptive polling. > # Determines how much the most recent event interval affects > # the next polling duration calculation. > # If set to 0, the system default value of 3 is used. > # Typical values: 1 (high weight on recent interval), > # 2-4 (moderate weight on recent interval). > # (default: 0) (since 11.1) Better, thanks! > I will also a check in the code so that values exceeding the maximum > allowed will revert to the system default. Don't silently "correct" invalid input, reject it! [...]
