summaryrefslogtreecommitdiff
path: root/src/core/cgroup.c
Commit message (Collapse)AuthorAge
* 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.
* cgroup: get rid of MemorySoftLimit=Lennart Poettering2013-09-17
| | | | | | | The cgroup attribute memory.soft_limit_in_bytes is unlikely to stay around in the kernel for good, so let's not expose it for now. We can readd something like it later when the kernel guys decided on a final API for this.
* cgroup: add missing equals for BlockIOWeightGao feng2013-09-16
|
* core/cgroup: first print then freeLukas Nykryn2013-09-13
|
* cgroup: fix incorrectly setting memory cgroupGao feng2013-09-13
| | | | | | | If the memory_limit of unit is -1, we should write "-1" to the file memory.limit_in_bytes. not the (unit64_t) -1. otherwise the memory.limit_in_bytes will be set to zero.
* cgroup: correct the log informationGao feng2013-09-13
| | | | it should be memory.soft_limit_in_bytes.
* cgroup: add the missing setting of variable's valueGao feng2013-09-13
| | | | | set the value of variable "r" to the return value of cg_set_attribute.
* Do not realloc strings, which are already in the hashmap as keysHarald Hoyer2013-08-28
| | | | | | This prevents corruption of the hashmap, because we would free() the keys in the hashmap, if the unit is already in there, with the same cgroup path.
* Revert "cgroup.c: check return value of unit_realize_cgroup_now()"Harald Hoyer2013-08-28
| | | | This reverts commit 1f11a0cdfe397cc404d61ee679fc12f58c0a885b.
* cgroup.c: check return value of unit_realize_cgroup_now()Harald Hoyer2013-08-23
| | | | do not recurse further, if unit_realize_cgroup_now() failed
* cgroup: split out per-device BlockIOWeight= setting into BlockIODeviceWeight=Lennart Poettering2013-07-11
| | | | | This way we can nicely map the configuration directive to properties and back, without requiring two different signatures for the same property.
* cgroup: don't ever try to destroy the cgroup of the root sliceLennart Poettering2013-07-11
| | | | | The root slice is after all the root cgroup, so don't attempt to delete it.
* cgroup: don't move systemd into systems.slice when running as --user instanceLennart Poettering2013-07-11
|
* cgroup: downgrade error message when we cannot remove a cgroup to debugLennart Poettering2013-07-10
| | | | | | Some units set KillMode=none to survive the initrd→rootfs transition. We cannot remove their cgroups, but that shouldn't really be considered an issue, so let's downgrade the error message.
* core: don't consider a unit's cgroup empty if only a subcgroup runs emptyLennart Poettering2013-07-02
|
* cgroup: implicitly add units to GC queue when their cgroups run emptyLennart Poettering2013-07-01
|