Is it possible to set a default for MemoryMax?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi there,

 

First off, forgive me if this is documented or discussed somewhere already. I couldn’t find any reference to it in the man pages or in the mailing list archives, and I’m relatively new to this community so I could easily be missing something.

 

Context that can be skipped if you only care about the technical part of the question:

We’re building a customized linux environment using systemd as the init system, and we’ve found that some of the daemons that we’re including in said environment aren’t particularly good citizens in regards to their resource consumption (admittedly most of those are the ones that have been written in house). As a result, while we try to track down and fix those bugs, we would like to limit the memory that processes are allowed to consume by default (with actual values in the .service files overriding that default). While we understand that this is the sort of thing that’s probably best set individually per-daemon based on an understanding of how the daemon should behave, it would at least give us a starting point and would mean that a leaky process would be the one that crashed (when it hit the memory limit), rather than taking down the whole system or the OOM killer selecting a different process that’s working correctly but still happens to be using more memory at the time.

 

We’ve been trying to encourage our developers to use memory accounting and MemoryMax, since we’re given to understand that’s applied to the entire cgroup’s memory usage for a given daemon’s slice. The documentation, however, doesn’t seem to indicate that a default value for any of the memory variables can be set in the system.conf file, and some quick experimental testing seems to indicate that’s truly the case. There does seem to be support for setting the memory resource limit (limitas), but my understanding is that wouldn’t apply to subprocesses that are spawned off by the parent daemon - they’d inherit the resource limit, but get their own instance of it (and I’m actually still trying to figure out if it would apply to threads, given the way I’m given to understand Linux treats threads. For memory, it would probably still cap things, since they’re all in the same address space, but I’m unclear if that would be true of the other limits that can be applied).

 

Am I missing something and this is possible to set? Or is it something that’s come up and been rejected for some reason? Or has it come up and not been important relative to other development priorities? Or has it simply never come up because we’re the first ones to want to do something so foolish?

 

Any insight that you could provide would be greatly appreciated! Thanks.

-Sean McKay

_______________________________________________
systemd-devel mailing list
systemd-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/systemd-devel

[Index of Archives]     [LARTC]     [Bugtraq]     [Yosemite Forum]     [Photo]

  Powered by Linux