After some analysis I believe the very high default value of
LogDebugHistory (99999) is to blame for this (attaching massif report
from the test case).

With a high number of jobs it's very easy to get hunderds-thousands of messages 
in LogDebugHistory which in turn will lead to enormous memory consumption, e.g.
40000 jobs * 2000 lines * (16 bytes for cupsd_joblog_t structure + 50-60 chars 
per message on average) - 5.66 GB.

After setting LogDebugHistory to 0 the memory consumption never exceeded
300 MB in my tests under the same heavy load. That's a very significant
difference.

The possible workarounds:
1. Decrease LogDebugHistory to a low value (even to 0, upstream it's set to 200 
by default).
2. Change LogLevel to debug (it will slow down cupsd operation significantly, 
but at the price of lower memory consumption as the LogDebugHistory is unused).
3. Make sure jobs are cleaned periodically by setting e.g. PreserveJobHistory 
300.

I am wondering what was the rationale behind increasing LogDebugHistory
to such a high value.

** Attachment added: "massif.out.xz"
   
https://bugs.launchpad.net/ubuntu/+source/cups/+bug/1831021/+attachment/5267574/+files/massif.out.xz

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to cups in Ubuntu.
https://bugs.launchpad.net/bugs/1831021

Title:
  Extremely high memory consumption under heavy workload

Status in cups package in Ubuntu:
  New

Bug description:
  Under heavy workload conditions cups can reach irrationally high
  memory consumption very quickly (tens of GBs).

  Test case:
  1. Set MaxJobs to 40000 in cupsd.conf.
  2. sudo apt install cups-pdf
  3. Fill the queue with jobs:
  while [ 1 ]; lp -d PDF /usr/share/cups/data/default.pdf; done
  4. Cancel all jobs
  cancel -a PDF
  5. Restart cups.
  6. Start filling the queue again (as in step 3).

  Expected result:
  Jobs are processed and memory consumption is proportional to the number of 
jobs.

  Actual result:
  After step 5 or at latest step 6 memory consumption starts to increase 
exponentially - from ~150-200 MB to 8+GB. Without foreseeing this it's very 
easy to get cups killed by OOM killer.

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/cups/+bug/1831021/+subscriptions

-- 
Mailing list: https://launchpad.net/~touch-packages
Post to     : touch-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~touch-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to