summaryrefslogtreecommitdiff
path: root/src/core/cgroup.c
Commit message (Collapse)AuthorAge
* Remove src/basic/special.h, as all defines in there are systemd-only.Sven Eden2017-03-14
|
* [Patch 2/3] Add cgroups initialization and handlingSven Eden2017-03-14
| | | | | Add a highly reduced src/core/cgroup.[hc] to enable elogind to setup cgroups for proper usage.
* Remove src/coreAndy Wingo2015-04-19
|
* Compiling.Andy Wingo2015-04-08
|
* core: expose consumed CPU time per unitLennart Poettering2015-03-02
| | | | | | This adds support for showing the accumulated consumed CPU time per-unit in the "systemctl status" output. The property is also readable via the bus.
* core/cgroup: fix embarrassing typoZbigniew Jędrzejewski-Szmek2015-01-31
| | | | https://github.com/docker/docker/issues/10280
* treewide: fix multiple typosTorstein Husebø2015-01-26
|
* cgroup: fix typoDaniel Mack2015-01-19
|
* cgroup: memory limits on / are not supportedZbigniew Jędrzejewski-Szmek2015-01-05
|
* cgroup: fix error messageZbigniew Jędrzejewski-Szmek2015-01-05
| | | | systemd[1]: Failed to set memory.limit_in_bytes on : Invalid argument
* cgroup: downgrade log messages when we cannot write to cgroup trees that are ↵Lennart Poettering2015-01-05
| | | | mounted read-only
* scope: make attachment of initial PIDs a bit more robustLennart Poettering2014-12-10
|
* core: don't migrate PIDs for units that may contain subcgroups, do this only ↵Lennart Poettering2014-12-10
| | | | | | | for leaf units Otherwise a slice or delegation unit might move PIDs around ignoring the fact that it is attached to a subcgroup.
* core: rename unit_destroy_cgroup() to unit_destroy_cgroup_if_empty() since ↵Lennart Poettering2014-12-09
| | | | it's not quite as destructive as it sounds nowadays
* cgroup: Handle error when destroying cgroupRoss Lagerwall2014-12-09
| | | | | | | | | If a cgroup fails to be destroyed (most likely because there are still processes running as part of a service after the main pid exits), don't free and remove the cgroup unit from the manager. This fixes a regression introduced by the cgroup rework in v205 where systemd would forget about processes still running after the unit becomes inactive. (This can happen when the main pid exits and KillMode=process or none).
* treewide: another round of simplificationsMichal Schmidt2014-11-28
| | | | | Using the same scripts as in f647962d64e "treewide: yet more log_*_errno + return simplifications".
* treewide: use log_*_errno whenever %m is in the format stringMichal Schmidt2014-11-28
| | | | | | | | | | | If the format string contains %m, clearly errno must have a meaningful value, so we might as well use log_*_errno to have ERRNO= logged. Using: find . -name '*.[ch]' | xargs sed -r -i -e \ 's/log_(debug|info|notice|warning|error|emergency)\((".*%m.*")/log_\1_errno(errno, \2/' Plus some whitespace, linewrap, and indent adjustments.
* treewide: more log_*_errno + return simplificationsMichal Schmidt2014-11-28
|
* treewide: no need to negate errno for log_*_errno()Michal Schmidt2014-11-28
| | | | It corrrectly handles both positive and negative errno values.
* treewide: auto-convert the simple cases to log_*_errno()Michal Schmidt2014-11-28
| | | | | | | | | | | | | As a followup to 086891e5c1 "log: add an "error" parameter to all low-level logging calls and intrdouce log_error_errno() as log calls that take error numbers", use sed to convert the simple cases to use the new macros: find . -name '*.[ch]' | xargs sed -r -i -e \ 's/log_(debug|info|notice|warning|error|emergency)\("(.*)%s"(.*), strerror\(-([a-zA-Z_]+)\)\);/log_\1_errno(-\4, "\2%m"\3);/' Multi-line log_*() invocations are not covered. And we also should add log_unit_*_errno().
* core: introduce new Delegate=yes/no property controlling creation of cgroup ↵Lennart Poettering2014-11-05
| | | | | | | | | | | | | | | | | | | | | | | | subhierarchies For priviliged units this resource control property ensures that the processes have all controllers systemd manages enabled. For unpriviliged services (those with User= set) this ensures that access rights to the service cgroup is granted to the user in question, to create further subgroups. Note that this only applies to the name=systemd hierarchy though, as access to other controllers is not safe for unpriviliged processes. Delegate=yes should be set for container scopes where a systemd instance inside the container shall manage the hierarchies below its own cgroup and have access to all controllers. Delegate=yes should also be set for user@.service, so that systemd --user can run, controlling its own cgroup tree. This commit changes machined, systemd-nspawn@.service and user@.service to set this boolean, in order to ensure that container management will just work, and the user systemd instance can run fine.
* Do not format USEC_INFINITY as NULLZbigniew Jędrzejewski-Szmek2014-09-29
| | | | | | | | | | | systemctl would print 'CPUQuotaPerSecUSec=(null)' for no limit. This does not look right. Since USEC_INFINITY is one of the valid values, format_timespan() could return NULL, and we should wrap every use of it in strna() or similar. But most callers didn't do that, and it seems more robust to return a string ("infinity") that makes sense most of the time, even if in some places the result will not be grammatically correct.
* core: split up "starting" manager state into "initializing" and "starting"Lennart Poettering2014-08-22
| | | | | | | | We'll stay in "initializing" until basic.target has reached, at which point we will enter "starting". This is preparation so that we can change the startip timeout to only apply to the first phase of startup, not the full procedure.
* cgroup: only generate warnings if actually writing to cgroup attributes failedLennart Poettering2014-08-15
|
* cgroup: downgrade log messages about non-existant cgroup attributes to LOG_DEBUGLennart Poettering2014-08-15
|
* time-util: add and use USEC/NSEC_INFINIYKay Sievers2014-07-29
|
* test-engine: fix access to unit load pathZbigniew Jędrzejewski-Szmek2014-07-20
| | | | | | | | Also add a bit of debugging output to help diagnose problems, add missing units, and simplify cppflags. Move test-engine to normal tests from manual tests, it should now work without destroying the system.
* cgroups: simplify CPUQuota= logicLennart Poettering2014-05-22
| | | | | | | | | Only accept cpu quota values in percentages, get rid of period definition. It's not clear whether the CFS period controllable per-cgroup even has a future in the kernel, hence let's simplify all this, hardcode the period to 100ms and only accept percentage based quota values.
* cgroups: always propagate controller membership to siblings, for all controllersLennart Poettering2014-05-22
| | | | | This is the behaviour the kernel cgroup rework exposes for all controllers, hence let's do this already now for all cases.
* cgroup: rework startup logicLennart Poettering2014-05-22
| | | | | Introduce a (unsigned long) -1 as "unset" state for cpu shares/block io weights, and keep the startup unit set around all the time.
* core: add startup resource control optionWaLyong Cho2014-05-22
| | | | | | | | | | | Similar to CPUShares= and BlockIOWeight= respectively. However only assign the specified weight during startup. Each control group attribute is re-assigned as weight by CPUShares=weight and BlockIOWeight=weight after startup. If not CPUShares= or BlockIOWeight= be specified, then the attribute is re-assigned to each default attribute value. (default cpu.shares=1024, blkio.weight=1000) If only CPUShares=weight or BlockIOWeight=weight be specified, then that implies StartupCPUShares=weight and StartupBlockIOWeight=weight.
* core: check the right variable for failed open()Łukasz Stelmach2014-05-08
|
* core: require cgroups filesystem to be availableKay Sievers2014-05-05
| | | | | We should no longer pretend that we can run in any sensible way without the kernel supporting us with cgroups functionality.
* core: expose CFS CPU time quota as high-level unit propertiesLennart Poettering2014-04-25
|
* core: make sure we can combine DevicePolicy=closed with PrivateDevices=yesLennart Poettering2014-03-19
| | | | | if PrivateDevices=yes is used we need to make sure we can still create /dev/null and so on.
* util: replace close_nointr_nofail() by a more useful safe_close()Lennart Poettering2014-03-18
| | | | | | | | | | | | | | | safe_close() automatically becomes a NOP when a negative fd is passed, and returns -1 unconditionally. This makes it easy to write lines like this: fd = safe_close(fd); Which will close an fd if it is open, and reset the fd variable correctly. By making use of this new scheme we can drop a > 200 lines of code that was required to test for non-negative fds or to reset the closed fd variable afterwards.
* core: support globbing matches in DeviceAllow= when checking for device groupsLennart Poettering2014-03-11
|
* cgroup: certain cgroup attributes are not available in the root cgroup, ↵Lennart Poettering2014-02-24
| | | | hence don't bother
* cgroup: Extend DeviceAllow= syntax to whitelist groups of devices, not just ↵Lennart Poettering2014-02-22
| | | | particular devices nodes
* update TODOLennart Poettering2014-02-19
|
* doc: update punctuationJan Engelhardt2014-02-17
| | | | Resolve spotted issues related to missing or extraneous commas, dashes.
* core: find the closest parent slice that has a specfic cgroup controller ↵Lennart Poettering2014-02-17
| | | | enabled when enabling/disabling cgroup controllers for units
* core: rework cgroup mask propagationLennart Poettering2014-02-17
| | | | | | | Previously a cgroup setting down tree would result in cgroup membership additions being propagated up the tree and to the siblings, however a unit could never lose cgroup memberships again. With this change we'll make sure that both cgroup additions and removals propagate properly.
* cgroups: Cache controller masks and optimize queues.David Strauss2013-11-22
|
* systemd: fix memory leak in cgroup codeZbigniew Jędrzejewski-Szmek2013-11-09
| | | | If the unit already was in the hashmap, path would be leaked.
* Comment spelling fixes.David Strauss2013-11-06
|
* cgroup: run PID 1 in the root cgroupLennart Poettering2013-11-06
| | | | | | | | | | | This way cleaning up the cgroup tree on shutdown is a lot easier since we are in the root dir. Also PID 1 was previously artificially placed in system.slice, even though our rule actually was not to have processes in slices. The root slice otoh is magic anyway, so having PID 1 in there sounds less surprising. Of course, this means that PID is scheduled against the three top-level slices.
* list: make our list macros a bit easier to use by not requring type spec on ↵Lennart Poettering2013-10-14
| | | | | | | each invocation We can determine the list entry type via the typeof() gcc construct, and so we should to make the macros much shorter to use.
* cgroup: if we do a cgroup operation then do something on all supported ↵Lennart Poettering2013-09-25
| | | | | | | | | | | | | controllers Previously we did operations like attach, trim or migrate only on the controllers that were enabled for a specific unit. With this changes we will now do them for all supproted controllers, and fall back to all possible prefix paths if the specified paths do not exist. This fixes issues if a controller is being disabled for a unit where it was previously enabled, and makes sure that all processes stay as "far down" the tree as groups exist.
* cgroup: always enable memory.use_hierarchy= for all cgroups in the memory ↵Lennart Poettering2013-09-23
| | | | | | | | hierarchy The non-hierarchial mode contradicts the whole idea of a cgroup tree so let's not support this. In the future the kernel will only support the hierarchial logic anyway.