mirror of
https://github.com/nextcloud/all-in-one.git
synced 2026-09-20 18:20:23 +00:00
feat: add cpu_shares to mastercontainer and sibling containers
Weight CPU shares so the mastercontainer and core containers stay responsive under heavy load from optional containers. Signed-off-by: Simon L. <szaimen@e.mail.de> Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
c2616be933
commit
d579eacbd5
@@ -33,6 +33,7 @@ docker run \
|
||||
--rm \
|
||||
--name nextcloud-aio-mastercontainer \
|
||||
--oom-score-adj -500 \
|
||||
--cpu-shares 2048 \
|
||||
--volume nextcloud_aio_mastercontainer:/mnt/docker-aio-config \
|
||||
--volume /var/run/docker.sock:/var/run/docker.sock \
|
||||
ghcr.io/nextcloud-releases/all-in-one:latest
|
||||
|
||||
@@ -148,6 +148,11 @@
|
||||
"shm_size": {
|
||||
"type": "integer"
|
||||
},
|
||||
"cpu_shares": {
|
||||
"type": "integer",
|
||||
"minimum": 512,
|
||||
"maximum": 2048
|
||||
},
|
||||
"secrets": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
|
||||
+38
-19
@@ -83,7 +83,8 @@
|
||||
"cap_drop": [
|
||||
"NET_RAW"
|
||||
],
|
||||
"oom_score_adj": -100
|
||||
"oom_score_adj": -100,
|
||||
"cpu_shares": 1024
|
||||
},
|
||||
{
|
||||
"container_name": "nextcloud-aio-database",
|
||||
@@ -141,7 +142,8 @@
|
||||
"cap_drop": [
|
||||
"NET_RAW"
|
||||
],
|
||||
"oom_score_adj": -300
|
||||
"oom_score_adj": -300,
|
||||
"cpu_shares": 1024
|
||||
},
|
||||
{
|
||||
"container_name": "nextcloud-aio-nextcloud",
|
||||
@@ -287,7 +289,8 @@
|
||||
"cap_drop": [
|
||||
"NET_RAW"
|
||||
],
|
||||
"oom_score_adj": -100
|
||||
"oom_score_adj": -100,
|
||||
"cpu_shares": 1024
|
||||
},
|
||||
{
|
||||
"container_name": "nextcloud-aio-notify-push",
|
||||
@@ -329,7 +332,8 @@
|
||||
"cap_drop": [
|
||||
"NET_RAW"
|
||||
],
|
||||
"oom_score_adj": 100
|
||||
"oom_score_adj": 100,
|
||||
"cpu_shares": 1024
|
||||
},
|
||||
{
|
||||
"container_name": "nextcloud-aio-redis",
|
||||
@@ -373,7 +377,8 @@
|
||||
"cap_drop": [
|
||||
"NET_RAW"
|
||||
],
|
||||
"oom_score_adj": -300
|
||||
"oom_score_adj": -300,
|
||||
"cpu_shares": 1024
|
||||
},
|
||||
{
|
||||
"container_name": "nextcloud-aio-collabora",
|
||||
@@ -424,7 +429,8 @@
|
||||
"cap_drop": [
|
||||
"NET_RAW"
|
||||
],
|
||||
"oom_score_adj": 300
|
||||
"oom_score_adj": 300,
|
||||
"cpu_shares": 512
|
||||
},
|
||||
{
|
||||
"container_name": "nextcloud-aio-talk",
|
||||
@@ -495,7 +501,8 @@
|
||||
"cap_drop": [
|
||||
"NET_RAW"
|
||||
],
|
||||
"oom_score_adj": 300
|
||||
"oom_score_adj": 300,
|
||||
"cpu_shares": 512
|
||||
},
|
||||
{
|
||||
"container_name": "nextcloud-aio-talk-recording",
|
||||
@@ -550,7 +557,8 @@
|
||||
"cap_drop": [
|
||||
"NET_RAW"
|
||||
],
|
||||
"oom_score_adj": 300
|
||||
"oom_score_adj": 300,
|
||||
"cpu_shares": 512
|
||||
},
|
||||
{
|
||||
"container_name": "nextcloud-aio-borgbackup",
|
||||
@@ -622,7 +630,8 @@
|
||||
"/tmp",
|
||||
"/nextcloud_aio_volumes"
|
||||
],
|
||||
"oom_score_adj": -300
|
||||
"oom_score_adj": -300,
|
||||
"cpu_shares": 1024
|
||||
},
|
||||
{
|
||||
"container_name": "nextcloud-aio-watchtower",
|
||||
@@ -646,7 +655,8 @@
|
||||
"cap_drop": [
|
||||
"NET_RAW"
|
||||
],
|
||||
"oom_score_adj": -300
|
||||
"oom_score_adj": -300,
|
||||
"cpu_shares": 1024
|
||||
},
|
||||
{
|
||||
"container_name": "nextcloud-aio-domaincheck",
|
||||
@@ -680,7 +690,8 @@
|
||||
"cap_drop": [
|
||||
"NET_RAW"
|
||||
],
|
||||
"oom_score_adj": 300
|
||||
"oom_score_adj": 300,
|
||||
"cpu_shares": 512
|
||||
},
|
||||
{
|
||||
"container_name": "nextcloud-aio-clamav",
|
||||
@@ -726,7 +737,8 @@
|
||||
"cap_drop": [
|
||||
"NET_RAW"
|
||||
],
|
||||
"oom_score_adj": 300
|
||||
"oom_score_adj": 300,
|
||||
"cpu_shares": 512
|
||||
},
|
||||
{
|
||||
"container_name": "nextcloud-aio-onlyoffice",
|
||||
@@ -771,7 +783,8 @@
|
||||
"cap_drop": [
|
||||
"NET_RAW"
|
||||
],
|
||||
"oom_score_adj": 300
|
||||
"oom_score_adj": 300,
|
||||
"cpu_shares": 512
|
||||
},
|
||||
{
|
||||
"container_name": "nextcloud-aio-eurooffice",
|
||||
@@ -821,7 +834,8 @@
|
||||
"cap_drop": [
|
||||
"NET_RAW"
|
||||
],
|
||||
"oom_score_adj": 300
|
||||
"oom_score_adj": 300,
|
||||
"cpu_shares": 512
|
||||
},
|
||||
{
|
||||
"container_name": "nextcloud-aio-imaginary",
|
||||
@@ -864,7 +878,8 @@
|
||||
"secrets": [
|
||||
"IMAGINARY_SECRET"
|
||||
],
|
||||
"oom_score_adj": 300
|
||||
"oom_score_adj": 300,
|
||||
"cpu_shares": 512
|
||||
},
|
||||
{
|
||||
"container_name": "nextcloud-aio-fulltextsearch",
|
||||
@@ -919,7 +934,8 @@
|
||||
"cap_drop": [
|
||||
"NET_RAW"
|
||||
],
|
||||
"oom_score_adj": 300
|
||||
"oom_score_adj": 300,
|
||||
"cpu_shares": 512
|
||||
},
|
||||
{
|
||||
"container_name": "nextcloud-aio-docker-socket-proxy",
|
||||
@@ -947,7 +963,8 @@
|
||||
"cap_drop": [
|
||||
"NET_RAW"
|
||||
],
|
||||
"oom_score_adj": 100
|
||||
"oom_score_adj": 100,
|
||||
"cpu_shares": 1024
|
||||
},
|
||||
{
|
||||
"container_name": "nextcloud-aio-harp",
|
||||
@@ -1000,7 +1017,8 @@
|
||||
"profiles": [
|
||||
"harp"
|
||||
],
|
||||
"oom_score_adj": 100
|
||||
"oom_score_adj": 100,
|
||||
"cpu_shares": 1024
|
||||
},
|
||||
{
|
||||
"container_name": "nextcloud-aio-whiteboard",
|
||||
@@ -1047,7 +1065,8 @@
|
||||
"cap_drop": [
|
||||
"NET_RAW"
|
||||
],
|
||||
"oom_score_adj": 300
|
||||
"oom_score_adj": 300,
|
||||
"cpu_shares": 512
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -30,6 +30,7 @@ readonly class Container {
|
||||
/** @var string[] */
|
||||
public array $sysctls,
|
||||
public int $shmSize,
|
||||
public int $cpuShares,
|
||||
public bool $apparmorUnconfined,
|
||||
/** @var string[] */
|
||||
public array $backupVolumes,
|
||||
|
||||
@@ -318,6 +318,11 @@ readonly class ContainerDefinitionFetcher {
|
||||
$shmSize = $entry['shm_size'];
|
||||
}
|
||||
|
||||
$cpuShares = 512;
|
||||
if (isset($entry['cpu_shares'])) {
|
||||
$cpuShares = $entry['cpu_shares'];
|
||||
}
|
||||
|
||||
$apparmorUnconfined = false;
|
||||
if (isset($entry['apparmor_unconfined'])) {
|
||||
$apparmorUnconfined = $entry['apparmor_unconfined'];
|
||||
@@ -382,6 +387,7 @@ readonly class ContainerDefinitionFetcher {
|
||||
$capAdd,
|
||||
$sysctls,
|
||||
$shmSize,
|
||||
$cpuShares,
|
||||
$apparmorUnconfined,
|
||||
$backupVolumes,
|
||||
$nextcloudExecCommands,
|
||||
|
||||
@@ -394,6 +394,11 @@ readonly class DockerActionManager {
|
||||
$requestBody['HostConfig']['ShmSize'] = $shmSize;
|
||||
}
|
||||
|
||||
$cpuShares = $container->cpuShares;
|
||||
if ($cpuShares > 0) {
|
||||
$requestBody['HostConfig']['CpuShares'] = $cpuShares;
|
||||
}
|
||||
|
||||
$tmpfs = [];
|
||||
foreach ($container->tmpfs as $tmp) {
|
||||
$mode = "";
|
||||
|
||||
Reference in New Issue
Block a user