mirror of
https://github.com/systemd/systemd
synced 2024-09-06 16:56:43 +00:00
Merge pull request #17438 from anitazha/systoomd_quick
Additional fix ups from #17417
This commit is contained in:
commit
c37a43d2dd
|
@ -318,6 +318,14 @@ layout: default
|
|||
unlink("/foo/bar/baz");
|
||||
```
|
||||
|
||||
When returning from a `void` function, you may also want to shorten the error
|
||||
path boilerplate by returning a function invocation cast to `(void)` like so:
|
||||
|
||||
```c
|
||||
if (condition_not_met)
|
||||
return (void) log_tests_skipped("Cannot run ...");
|
||||
```
|
||||
|
||||
Don't cast function calls to `(void)` that return no error
|
||||
conditions. Specifically, the various `xyz_unref()` calls that return a
|
||||
`NULL` object shouldn't be cast to `(void)`, since not using the return value
|
||||
|
|
9
test/units/testsuite-56-testbloat.service
Normal file
9
test/units/testsuite-56-testbloat.service
Normal file
|
@ -0,0 +1,9 @@
|
|||
[Unit]
|
||||
Description=Create a lot of memory pressure
|
||||
|
||||
[Service]
|
||||
# A very small memory.high will cause the script (trying to use a lot of memory)
|
||||
# to throttle and be put under heavy pressure
|
||||
MemoryHigh=2M
|
||||
Slice=testsuite-56-workload.slice
|
||||
ExecStart=/usr/lib/systemd/tests/testdata/units/testsuite-56-slowgrowth.sh
|
6
test/units/testsuite-56-testchill.service
Normal file
6
test/units/testsuite-56-testchill.service
Normal file
|
@ -0,0 +1,6 @@
|
|||
[Unit]
|
||||
Description=No memory pressure
|
||||
|
||||
[Service]
|
||||
Slice=testsuite-56-workload.slice
|
||||
ExecStart=sleep infinity
|
10
test/units/testsuite-56-workload.slice
Normal file
10
test/units/testsuite-56-workload.slice
Normal file
|
@ -0,0 +1,10 @@
|
|||
[Unit]
|
||||
Description=Test slice for memory pressure kills
|
||||
|
||||
[Slice]
|
||||
CPUAccounting=true
|
||||
MemoryAccounting=true
|
||||
IOAccounting=true
|
||||
TasksAccounting=true
|
||||
ManagedOOMMemoryPressure=kill
|
||||
ManagedOOMMemoryPressureLimitPercent=50%
|
|
@ -14,54 +14,26 @@ if [[ "$cgroup_type" != *"cgroup2"* ]] && [[ "$cgroup_type" != *"0x63677270"* ]]
|
|||
fi
|
||||
[[ -e /skipped ]] && exit 0 || true
|
||||
|
||||
cat > /etc/systemd/system/testworkload.slice <<EOF
|
||||
[Slice]
|
||||
CPUAccounting=true
|
||||
MemoryAccounting=true
|
||||
IOAccounting=true
|
||||
TasksAccounting=true
|
||||
ManagedOOMMemoryPressure=kill
|
||||
ManagedOOMMemoryPressureLimitPercent=50%
|
||||
EOF
|
||||
|
||||
# Create a lot of memory pressure by setting memory.high to a very small value
|
||||
cat > /etc/systemd/system/testbloat.service <<EOF
|
||||
[Service]
|
||||
MemoryHigh=2M
|
||||
Slice=testworkload.slice
|
||||
ExecStart=/usr/lib/systemd/tests/testdata/units/testsuite-56-slowgrowth.sh
|
||||
EOF
|
||||
|
||||
# This generates no memory pressure
|
||||
cat > /etc/systemd/system/testchill.service <<EOF
|
||||
[Service]
|
||||
MemoryHigh=2M
|
||||
Slice=testworkload.slice
|
||||
ExecStart=sleep infinity
|
||||
EOF
|
||||
|
||||
systemctl daemon-reload
|
||||
|
||||
systemctl start testbloat.service
|
||||
systemctl start testchill.service
|
||||
systemctl start testsuite-56-testbloat.service
|
||||
systemctl start testsuite-56-testchill.service
|
||||
|
||||
# Verify systemd-oomd is monitoring the expected units
|
||||
oomctl | grep "/testworkload.slice"
|
||||
oomctl | grep "/testsuite-56-workload.slice"
|
||||
oomctl | grep "50%"
|
||||
|
||||
# systemd-oomd watches for elevated pressure for 30 seconds before acting.
|
||||
# It can take time to build up pressure so either wait 5 minutes or for the service to fail.
|
||||
timeout=$(date -ud "5 minutes" +%s)
|
||||
while [[ $(date -u +%s) -le $timeout ]]; do
|
||||
if ! systemctl status testbloat.service; then
|
||||
if ! systemctl status testsuite-56-testbloat.service; then
|
||||
break
|
||||
fi
|
||||
sleep 15
|
||||
done
|
||||
|
||||
# testbloat should be killed and testchill should be fine
|
||||
if systemctl status testbloat.service; then exit 42; fi
|
||||
if ! systemctl status testchill.service; then exit 24; fi
|
||||
if systemctl status testsuite-56-testbloat.service; then exit 42; fi
|
||||
if ! systemctl status testsuite-56-testchill.service; then exit 24; fi
|
||||
|
||||
systemd-analyze log-level info
|
||||
|
||||
|
|
Loading…
Reference in a new issue