[pdm-devel] [PATCH proxmox-datacenter-manager v2 00/28] metric collection improvements (concurrency, config, API, CLI)

Thomas Lamprecht t.lamprecht at proxmox.com
Sun Mar 16 22:45:20 CET 2025


On 14/03/2025 15:10, Lukas Wagner wrote:
> On  2025-02-14 14:06, Lukas Wagner wrote:
>> ## To reviewers / open questions:
>> - Please review the defaults I've chosen for the settings, especially
>>   the ones for the default metric collection interval (10 minutes) as
>>   well as max-concurrency (10).
>>   I also kindly ask to double-check the naming of the properties.
>>   See "pdm-api-types: add CollectionSettings type" for details
>>
>> - Please review path and params for new API endpoints (anything public
>>   facing that is hard to change later)
>>
>> - I've chosen a section-config config now, even though we only have a
>>   single section for now. This was done for future-proofing reasons,
>>   maybe we want to add support for different setting 'groups' or
>>   something, e.g. to have different settings for distinct sets of
>>   remotes. Does this make sense?
>>   Or should I just stick to a simple config for now? (At moments like
>>   these I wish for TOML configs where we could be a bit more flexible...)
>>
>> 	collection-settings: default
>> 	    max-concurrency 10
>> 	    collection-interval 180
>> 	    min-interval-offset 0
>> 	    max-interval-offset 20
>> 	    min-connection-delay 10
>> 	    max-connection-delay 100
>>
> 
> Currently thinking about generalizing the `max-concurrency` setting into something global
> that affects all 'background' polling operations (resource cache/task cache refreshes/
> metric fetching).

The usefulness of such a thing depends a bit on what we want to
limit (amount of total requests to a target remote?), and why (reducing
network traffic, load on target node, load on PDM, ...?)

> 
> For actually controlling the concurrency we could maybe have a globally available
> semaphore (potential deadlock potential in some cases).
> Alternatively, we could think about having a 'background request queue' and
> a 'background request scheduler', which does the actual requests on behalf of
> the other tasks.

semaphores sound nice but IMO often aren't, especially as they lack
introspection, I'm sure that's better in rust than in C, but  a dedicated
queueing mechanism _might_ be nicer, especially as one can then also
use more useful approaches to queue/schedule things. And, e.g., once our
target APIs support something nice as QUIC we could even batch requests
to a single target (remote) together.

> 
> I'll give this a bit more thoughts in the next days/weeks, so maybe don't merge
> this in the meanwhile.
> 

ack.




More information about the pdm-devel mailing list