Do you want to find out the service/process's own vsz_limit or another service's vsz_limit? Own vsz_limit would be easiest to get with getrlimit(RLIMIT_AS) as Aki said. If you want another service's vsz_limit that's not easily possible, because those settings just aren't sent to anything except the master process. struct service_settings in general isn't accessible to anything except the master process. The only alternative would be to ask service/indexer/vsz_limit setting either via doveconf or by connecting to the "config" socket. master_service_settings_read() could be used to do these. However, that's likely overly complicated for whatever you're planning.

On 21. Nov 2021, at 14.27, Joan Moreau <jom@grosjo.net> wrote:

ok but this does not consider the vsz_limit of the service (indexer in my case)

only the "default_vzs_limit" is given



On 2021-11-21 13:14, Aki Tuomi wrote:

Dovecot master process uses setrlimit to enforce the limit, so you should be able to get it with RLIMIT_AS or RLIMIT_DATA, iirc it depends a bit on os which is used.

I dont think service->vsz_limit is available on the service itself.

Aki


On 21 November 2021 12.20.16 UTC, Joan Moreau <jom@grosjo.net> wrote:

In the dovecot source, I see "service->vsz_limit" giving the answer

How to reach the "service" object from within a plugin ?


On 2021-11-21 12:15, Joan Moreau wrote:

Hi

This does not really work

Putting

service indexer-worker {
        vsz_limit = 1G
}

Getrlimit returns "-1"


Is there a proper function giving the actual  process size (memory used) and limit (vsz_limit, either process of default_vsz_limit, as applicable) ?


On 2021-11-21 07:09, Aki Tuomi wrote:

You could try getrlimit RLIMIT_AS.

Aki

On 20 November 2021 17.22.17 UTC, Joan Moreau <jom@grosjo.net> wrote:

Hello


How to get, programatically (C/C++), the value of teh dovecot.conf file of vsz_limit and default_vsz_limit ?

Thank you