Hi
How to get (programatically, c++) the current usage of memory, under the limit of vsz_limit ?
https://doc.dovecot.org/2.3/configuration_manual/service_configuration/#serv...
Thank you
Hi
What is the link between getrlimit (linux posix) , the vsz_limit parameter nd " MemAvailable" from /proc/meminfo ?
Is tehre a way to see how much of the allocated memory (vsz ?) the process is using in dovecot ?
Does that vsz limit take into account the direct malloc ?
Thankyou
On 2024-10-08 00:20, Aki Tuomi via dovecot wrote:
dovecot mailing list -- dovecot@dovecot.org To unsubscribe send an email to dovecot-leave@dovecot.org
dovecot mailing list -- dovecot@dovecot.org To unsubscribe send an email to dovecot-leave@dovecot.org
Hi
What is the link between getrlimit (linux posix) , the vsz_limit parameter nd " MemAvailable" from /proc/meminfo ?
Is there a way to see how much of the allocated memory (vsz ?) the process is using in dovecot ?
Does that vsz limit take into account the direct malloc ?
For the master_service_get_process_limit(), does this refer to the master process or the service itself ?
If the .conf is as follows, where to get the process_limit value ?
service indexer-worker { vsz_limit = 2G process_limit = 2 }
Thank you
On 2024-10-08 00:20, Aki Tuomi via dovecot wrote:
dovecot mailing list -- dovecot@dovecot.org To unsubscribe send an email to dovecot-leave@dovecot.org
dovecot mailing list -- dovecot@dovecot.org To unsubscribe send an email to dovecot-leave@dovecot.org
You need to include master-service.h to get master_service_get_process_limit, which returns how many processes of this type can be created before reaching the limit.
vsz_limit includes mmap and malloc allocations. dovecot uses setrlimit() to enforce the memory limit, so getrusage() should give you the relevant value.
Aki
Ok. I tested with 16de26fc328d188801092bfbedba43255cc7859f and having diff --git a/src/indexer/indexer-worker.c b/src/indexer/indexer-worker.c index d3e7d9d53a..ab94459d27 100644 --- a/src/indexer/indexer-worker.c +++ b/src/indexer/indexer-worker.c @@ -64,6 +64,8 @@ int main(int argc, char *argv[]) restrict_access_allow_coredumps(TRUE); master_service_init_finish(master_service); + i_debug("limit = %d", master_service_get_process_limit(master_service)); + master_service_run(master_service, client_connected); master_connections_destroy(); with configuration doveconf -n service/indexer-worker service indexer-worker { name = indexer-worker process_limit = 2 } then I did :~# socat stdio unix-connect:/run/dovecot/indexer-worker VERSION indexer-worker-master 1 0 <ctrl+c> and got Oct 18 18:39:02 master: Info: Dovecot v0.0.0-33339+56d557e0bc (16de26fc32) starting up for imap, pop3, lmtp (core dumps disabled) Oct 18 18:39:20 indexer-worker(722178): Debug: limit = 2 Oct 18 18:39:23 master: Warning: Killed with signal 2 (by pid=0 uid=0 code=kernel) So it seems to work? Aki
Hi Not really. 1 - On the process limit, it seems saying the maximum number of connections to the worker, not really the total number of threads running 2 - On the memory size, samie logic difference : getrlimit seems saying the memory size limit set for hte current process, not the remaining memory available inside that limit On Fri, 2024-10-18 at 18:40 +0300, Aki Tuomi via dovecot wrote:
participants (2)
-
Aki Tuomi
-
Joan Moreau