summaryrefslogtreecommitdiffstats
path: root/man/systemd.resource-control.xml (follow)
Commit message (Collapse)AuthorAgeFilesLines
* core: firewall integration with ControlGroupNFTSet=Topi Miettinen2022-06-081-0/+29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | New directive `ControlGroupNFTSet=` provides a method for integrating services into firewall rules with NFT sets. Example: ``` table inet filter { ... set timesyncd { type cgroupsv2 } chain ntp_output { socket cgroupv2 != @timesyncd counter drop accept } ... } ``` /etc/systemd/system/systemd-timesyncd.service.d/override.conf ``` [Service] ControlGroupNFTSet=inet:filter:timesyncd ``` ``` $ sudo nft list set inet filter timesyncd table inet filter { set timesyncd { type cgroupsv2 elements = { "system.slice/systemd-timesyncd.service" } } } ```
* tree-wide: streamline wiki linksBenjamin Franzke2022-05-211-1/+1
| | | | | | | | * Avoid traling slash as most links are defined without. * Always use https:// protocol and www. subdomain Allows for easier tree-wide linkvalidation for our migration to systemd.io.
* man: beef up the description of systemd-oomd.serviceZbigniew Jędrzejewski-Szmek2022-04-281-15/+15
| | | | | | | | | | | | The gist of the description is moved from systemd.resource-control to systemd-oomd man page. Cross-references to OOMPolicy, memory.oom.group, oomctl, ManagedOOMSwap and ManagedOOMMemoryPressure are added in all places. The descriptions are also more down-to-earth: instead of talking about "taking action" let's just say "kill". We *might* add configuration for different actions in the future, but we're not there yet, so let's just describe what we do now.
* man: how to unset CPUQuota=Sho Iizuka2021-12-131-1/+2
| | | | This description will help users who are trying to reset the already configured CPUQuota= by trying incorrect ways such as CPUQuota=0 or CPUQUota=infinity.
* Merge pull request #20768 from pdmorrow/shutdown_cgroup_ctrlLennart Poettering2021-09-271-19/+19
|\ | | | | cgroups: apply StartupAllowedCPUs= and StartupAllowedMemoryNodes= during shutdown
| * man: Startup* updates for systemd.resource-controlPeter Morrow2021-09-241-19/+19
| | | | | | | | | | All Startup*= directives now also apply to the shutdown phase as well as boot phase.
* | man: cross-reference DeviceAllow= and PrivateDevices=Zbigniew Jędrzejewski-Szmek2021-09-271-0/+5
|/ | | | | | | | | They are somewhat similar, but not easy to discover, esp. considering that they are described in different pages. For PrivateDevices=, split out the first paragraph that gives the high-level overview. (The giant second paragraph could also use some heavy editing to break it up into more digestible chunks, alas.)
* docs: update docs with StartupAllowedCPUs and StartupAllowedMemoryNodes detailsPeter Morrow2021-09-151-5/+18
| | | | Signed-off-by: Peter Morrow <pemorrow@linux.microsoft.com>
* tree-wide: fix typoYu Watanabe2021-08-221-1/+1
|
* man: add RestrictNetworkInterfaces= documentationMauricio Vásquez2021-08-181-0/+46
| | | | Signed-off-by: Mauricio Vásquez <mauricio@kinvolk.io>
* man: document ip proto in SocketBind{Allow|Deny}=Julia Kartseva2021-06-301-11/+32
|
* man: explicit say for priority/weight values whether more is more or lessLennart Poettering2021-05-261-14/+16
| | | | Fixes: #17523
* socket-bind: use lowercase "ipv4"/"ipv6" spellingLennart Poettering2021-05-111-3/+3
| | | | | | | | | | | | | | | In most of our codebase when we referenced "ipv4" and "ipv6" on the right-hand-side of an assignment, we lowercases it (on the left-hand-side we used CamelCase, and thus "IPv4" and "IPv6"). In particular all across the networkd codebase the various "per-protocol booleans" use the lower-case spelling. Hence, let's use lower-case for SocketBindAllow=/SocketBindDeny= too, just make sure things feel like they belong together better. (This work is not included in any released version, hence let's fix this now, before any fixes in this area would be API breakage) Follow-up for #17655
* man: add SocketBind{Allow|Deny}= documentationJulia Kartseva2021-04-271-0/+70
|
* man: add BPFProgram= documentationJulia Kartseva2021-04-101-0/+52
|
* man: remove details of ManagedOOMPreference implementationZbigniew Jędrzejewski-Szmek2021-02-251-15/+11
|
* man: advertise shared drop-ins moreZbigniew Jędrzejewski-Szmek2021-02-251-0/+19
| | | | | | | systemd.unit(5) is a wall of text. And this particular feature can be very useful in the context of resource control. Let's avertise this cool feature a bit more. Fixes #17900.
* man: use markup more in description of ManagedOOMPreference=Zbigniew Jędrzejewski-Szmek2021-02-251-21/+24
| | | | Follow-up for d8a4d64bc37ad21381f584b6c25792995584c7a2.
* man: document ManagedOOMPreference=Anita Zhang2021-02-121-0/+32
|
* oom: rework *MemoryPressureLimit= properties to have 1/10000 precisionAnita Zhang2021-02-031-1/+1
| | | | | | | Requested in https://github.com/systemd/systemd/pull/15206#discussion_r505506657, preserve the full granularity for memory pressure limits (permyriad) instead of capping out at percent.
* man: fix small issue in AllowedMemoryNodes descriptionPavel Hrdina2021-01-301-1/+1
| | | | It should not mention "CPU" but "NUMA nodes".
* man: various typos and other small issuesZbigniew Jędrzejewski-Szmek2021-01-291-4/+5
| | | | Fixes #18397.
* license: LGPL-2.1+ -> LGPL-2.1-or-laterYu Watanabe2020-11-091-1/+1
|
* man: document systemd-oomd and related itemsAnita Zhang2020-10-091-0/+44
|
* man: fix xml tagsLennart Poettering2020-08-201-1/+1
|
* man: Improve MemoryMin=/MemoryLow= descriptionBenjamin Berg2020-08-191-34/+23
| | | | | | | | | The description didn't really explain how the distribution mechanism works exactly and the relationship of leaf and slice units. Update the documentation and also explicitly explain the expected behaviour as it is created by the memory_recursiveprot cgroup2 mount option.
* tree-wide: avoid some loaded termsLennart Poettering2020-06-251-9/+9
| | | | | | | | | | | | | | | | | | | | | | | | https://tools.ietf.org/html/draft-knodel-terminology-02 https://lwn.net/Articles/823224/ This gets rid of most but not occasions of these loaded terms: 1. scsi_id and friends are something that is supposed to be removed from our tree (see #7594) 2. The test suite defines an API used by the ubuntu CI. We can remove this too later, but this needs to be done in sync with the ubuntu CI. 3. In some cases the terms are part of APIs we call or where we expose concepts the kernel names the way it names them. (In particular all remaining uses of the word "slave" in our codebase are like this, it's used by the POSIX PTY layer, by the network subsystem, the mount API and the block device subsystem). Getting rid of the term in these contexts would mean doing some major fixes of the kernel ABI first. Regarding the replacements: when whitelist/blacklist is used as noun we replace with with allow list/deny list, and when used as verb with allow-list/deny-list.
* man: s/PROGRAMM/PROGRAM/Lennart Poettering2020-06-231-2/+2
|
* man: reword description of IPAddressDeny/Allow a bitZbigniew Jędrzejewski-Szmek2020-05-261-19/+20
|
* man: update list of supported controllersAnita Zhang2020-03-051-6/+5
|
* man: document the limits of the block device discovery for IO cgroup optionsLennart Poettering2020-01-171-0/+14
| | | | Fixes: #14271
* man: link to specific sections of cgroups-v2 documentZbigniew Jędrzejewski-Szmek2020-01-091-11/+12
| | | | | | The document is rather huge, and a specific link is easier to consume. The form is a bit strange because troff puts the symlink at the bottom, keyed by title, so we need to use the same link target in all places.
* doc: link to html versions of cgroup docsZbigniew Jędrzejewski-Szmek2020-01-091-39/+35
| | | | Also stop linking to some (obsolete) v1 documentation.
* man: stop recommending modprobe -abq in ExecStartPre=Lennart Poettering2020-01-071-3/+8
|
* man: fix a few bogus entries in directives indexZbigniew Jędrzejewski-Szmek2019-11-211-5/+6
| | | | | | When wrong element types are used, directives are sometimes placed in the wrong section. Also, strip part of text starting with "'", which is used in a few places and which is displayed improperly in the index.
* cgroup: docs: memory.high doc fixupsChris Down2019-09-301-2/+2
| | | | | The docs just tautologically call this the "high limit". Just call it throttling as we do in cgroup-v2.rst.
* cgroup: docs: Mention unbounded protection for memory.{low,min}Chris Down2019-09-301-2/+6
| | | | | I got asked why Memory{Low,Min} don't allow "infinity". They do, but the docs don't say that like they already do for Memory{High,Max}.
* cgroup: introduce support for cgroup v2 CPUSET controllerPavel Hrdina2019-09-241-0/+30
| | | | | | | | | | | | | | Introduce support for configuring cpus and mems for processes using cgroup v2 CPUSET controller. This allows users to limit which cpus and memory NUMA nodes can be used by processes to better utilize system resources. The cgroup v2 interfaces to control it are cpuset.cpus and cpuset.mems where the requested configuration is written. However, it doesn't mean that the requested configuration will be actually used as parent cgroup may limit the cpus or mems as well. In order to reflect the real configuration cgroup v2 provides read-only files cpuset.cpus.effective and cpuset.mems.effective which are exported to users as well.
* man: reword DeviceAllow= documentationLennart Poettering2019-07-311-31/+26
| | | | | | | | Don't claim we'd use cgroup.deny much. It's just a way to remove stuff from device lists, which is nothing we allow users to explicitly configure. Also, extend documentation when wildcards may be used, and when not.
* man: document the modprobe hack for DeviceAllow=Lennart Poettering2019-07-231-0/+12
|
* bpf-firewall: custom BPF programs through IP(Ingress|Egress)FilterPath=Kai Lüke2019-06-251-0/+33
| | | | | | | Takes a single /sys/fs/bpf/pinned_prog string as argument, but may be specified multiple times. An empty assignment resets all previous filters. Closes https://github.com/systemd/systemd/issues/10227
* cgroup: Polish hierarchically aware protection docs a bitChris Down2019-05-081-2/+6
| | | | | | | I missed adding a section in `systemd.resource-control` about DefaultMemoryMin in #12332. Also, add a NEWS entry going over the general concept.
* cgroup: Implement default propagation of MemoryLow with DefaultMemoryLowChris Down2019-04-121-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In cgroup v2 we have protection tunables -- currently MemoryLow and MemoryMin (there will be more in future for other resources, too). The design of these protection tunables requires not only intermediate cgroups to propagate protections, but also the units at the leaf of that resource's operation to accept it (by setting MemoryLow or MemoryMin). This makes sense from an low-level API design perspective, but it's a good idea to also have a higher-level abstraction that can, by default, propagate these resources to children recursively. In this patch, this happens by having descendants set memory.low to N if their ancestor has DefaultMemoryLow=N -- assuming they don't set a separate MemoryLow value. Any affected unit can opt out of this propagation by manually setting `MemoryLow` to some value in its unit configuration. A unit can also stop further propagation by setting `DefaultMemoryLow=` with no argument. This removes further propagation in the subtree, but has no effect on the unit itself (for that, use `MemoryLow=0`). Our use case in production is simplifying the configuration of machines which heavily rely on memory protection tunables, but currently require tweaking a huge number of unit files to make that a reality. This directive makes that significantly less fragile, and decreases the risk of misconfiguration. After this patch is merged, I will implement DefaultMemoryMin= using the same principles.
* man: clarify which addresses are affected by IPAddressAllow=/IPAddressDeny=Lennart Poettering2019-03-291-14/+18
| | | | | For ingress traffic it's the source address of IP packets we check, for egress traffic it's the destination address. Mention that.
* man: use same header for all filesZbigniew Jędrzejewski-Szmek2019-03-141-2/+2
| | | | | | | The "include" files had type "book" for some raeason. I don't think this is meaningful. Let's just use the same everywhere. $ perl -i -0pe 's^..DOCTYPE (book|refentry) PUBLIC "-//OASIS//DTD DocBook XML V4.[25]//EN"\s+"http^<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"\n "http^gms' man/*.xml
* man: standarize on one-line license headerZbigniew Jędrzejewski-Szmek2019-03-141-4/+1
| | | | | | No need to waste space, and uniformity is good. $ perl -i -0pe 's|\n+<!--\s*SPDX-License-Identifier: LGPL-2.1..\s*-->|\n<!-- SPDX-License-Identifier: LGPL-2.1+ -->|gms' man/*.xml
* core: add CPUQuotaPeriodSec=Filipe Brandenburger2019-02-141-0/+19
| | | | | | | | | | | | | | | This new setting allows configuration of CFS period on the CPU cgroup, instead of using a hardcoded default of 100ms. Tested: - Legacy cgroup + Unified cgroup - systemctl set-property - systemctl show - Confirmed that the cgroup settings (such as cpu.cfs_period_ns) were set appropriately, including updating the CPU quota (cpu.cfs_quota_ns) when CPUQuotaPeriodSec= is updated. - Checked that clamping works properly when either period or (quota * period) are below the resolution of 1ms, or if period is above the max of 1s.
* man: add referecne to systemd-system.confYu Watanabe2019-02-011-0/+1
|
* cgroup: Add DisableControllers= directive to disable controller in subtreeChris Down2018-12-031-0/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Some controllers (like the CPU controller) have a performance cost that is non-trivial on certain workloads. While this can be mitigated and improved to an extent, there will for some controllers always be some overheads associated with the benefits gained from the controller. Inside Facebook, the fix applied has been to disable the CPU controller forcibly with `cgroup_disable=cpu` on the kernel command line. This presents a problem: to disable or reenable the controller, a reboot is required, but this is quite cumbersome and slow to do for many thousands of machines, especially machines where disabling/enabling a stateful service on a machine is a matter of several minutes. Currently systemd provides some configuration knobs for these in the form of `[Default]CPUAccounting`, `[Default]MemoryAccounting`, and the like. The limitation of these is that Default*Accounting is overrideable by individual services, of which any one could decide to reenable a controller within the hierarchy at any point just by using a controller feature implicitly (eg. `CPUWeight`), even if the use of that CPU feature could just be opportunistic. Since many services are provided by the distribution, or by upstream teams at a particular organisation, it's not a sustainable solution to simply try to find and remove offending directives from these units. This commit presents a more direct solution -- a DisableControllers= directive that forcibly disallows a controller from being enabled within a subtree.
* man: link Delegate= documentation up with the markdown docsLennart Poettering2018-11-261-0/+3
|