Docker - Portainer

Ben2013

Benutzer
Mitglied seit
01. Nov 2021
Beiträge
114
Punkte für Reaktionen
11
Punkte
18
DMS: 7.0
NAS: 1621+mit AMD CPU

Hallo,

in Docker laufen zwei Container, die beanspruchen immer sehr viel CPU-Performance. Dadurch wird das ganze System sehr langsam.

Im Portainer kann u.a. die Nutzung der CPUs eingeschränkt werden. Standardmäßig werden i mmer alle CPUs zugewiesen.

Wenn die Anzahl limitiert wird auf z.B. 2 CPUs wird folgender Fehler angezeigt:

Failure
NanoCPUs can not be set, as your kernel does not support CPU CFS scheduler or the cgroup is not mounted

Mit der Fehlermeldung kann ich nicht viel anfangen.

Kann mir jemand mitteilen, ob und wie die Anzahl der zugewiesenen CPUs noch limitiert werden kann?

Bei den Host-Systemen handelt es sich um Linux-basiserte Systeme.
 

Ben2013

Benutzer
Mitglied seit
01. Nov 2021
Beiträge
114
Punkte für Reaktionen
11
Punkte
18
Da in Docker scheinbar keine CPUs eingeschränkt werden können, wurde das System kurzerhand auf Proxmox in eine VM installiert.
Hier kann die Anzahl der CPUs leicht zugewiesen werden.
 

Ulfhednir

Benutzer
Sehr erfahren
Mitglied seit
26. Aug 2013
Beiträge
3.475
Punkte für Reaktionen
1.087
Punkte
194

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.519
Punkte für Reaktionen
404
Punkte
103
Docker selbst hat Stellschrauben dafür... es kann sie nur nicht auf der Syno nutzen, weil dem Syno-Kernel entsprechende Funktionalität fehlt.

Auf dem Syno-Kernel funktioniert nur "cpu_shares", das eine relative Verteilung der CPU-Ressoucen über alle Container erlaubt. Die Einheit ist wurscht, wichtig ist nur die Relation der Werte zueinander.. Sinnvoll für Gewichtung der CPU-Nutzung; ungeignet zum generellen Einschränken der CPU-Nutzung.

Der normale Weg wäre "cpus", der aber dank des Syno-Kernels leider auch nicht funktioniert.
 
  • Like
Reaktionen: Ulfhednir

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.519
Punkte für Reaktionen
404
Punkte
103
Nachdem ich das geschrieben habe, ist mir aufgefallen das man das gar nicht so pauschal sagen kann.
Ich habe die Tests mit DSM6.2.4 auf einem 3.10er Kernel durchgeführt.

Es kann durchaus sein, das moderne Kernel und auch größere Modelle evtl. andere Kernel-Module mitbringen.

Jeder kann es bei sich selbst relativ einfach testen;
Code:
sudo docker run -ti --rm --cpus=0.5 ubuntu

Sobald diese Fehler-Meldung kommt, fehlen dem Kernel dafür notwendige Funktionen:
docker: Error response from daemon: NanoCPUs can not be set, as your kernel does not support CPU CFS scheduler or the cgroup is not mounted.
See 'docker run --help'.
 

Ben2013

Benutzer
Mitglied seit
01. Nov 2021
Beiträge
114
Punkte für Reaktionen
11
Punkte
18
Das betreffende System nimmt nach einer kurzen Zeit immer alle CPUs für systeminterne Vorgänge in Beschlag.

Bei Proxmox sind von Anfang der VM an nur 2 CPUs zur Verfügung gestellt worden. Die Grenze wird auch eingehalten.
Dennoch werden in der VM auch nach längerer Zeit nicht alle beiden CPUs voll ausgelastet.

Demnach muss irgend etwas am NAS-System vom Standard abweichen, weshalb die Auslastung im Host-System auf 100% steigen lässt.
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.519
Punkte für Reaktionen
404
Punkte
103
Demnach muss irgend etwas am NAS-System vom Standard abweichen
Der war gut :D Was weicht den bitte NICHT von Standard ab bei Synology ? Ihr Kernel und ihr Docker sind verbastelt.
Keine der Änderungen die Synology da durchgeführt hat, würden vom jeweiligen Upstream-Projekt als Änderung akzeptiert worden.

Hat der Proxmox-Host auch so eine bescheidene CPU wie das NAS? Synology ist ja nun nicht bekannt dafür Hochleistungsprozessoren in die Büchsen einzubauen :D
 

Ulfhednir

Benutzer
Sehr erfahren
Mitglied seit
26. Aug 2013
Beiträge
3.475
Punkte für Reaktionen
1.087
Punkte
194
Sobald diese Fehler-Meldung kommt, fehlen dem Kernel dafür notwendige Funktionen:
Ich habe ja ein aktuelleres Modell mit aktuellem DSM. Trotzdem selbige Meldung.


@Ben2013 mal rein interessenhalber: Was sind das für Container die du laufen lässt?
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.519
Punkte für Reaktionen
404
Punkte
103
Wenn es der UM250 mit der Ryzen Embedded V1605B ist, dann ist der Sprung von der Ryzen Embedded V1500B aus dem DS1621+ mit 4588 Passmark Punkten auf 6822 Passmark Punkte tatsächlich nicht groß. Sollte es eins der X400-Modelle mit dem AMD Ryzen 7 PRO 4750G sein, dann würde sich das durchaus erklären lassen. Die hat mit 8+HT doppelt so viele Kerne wie die V1xxB Prozessoren und mit einem Passmark von 20573 Punkten auch "dezent" mehr Leistung - das würde ich durchaus Hochleistungs-CPU nennen.
 

Ben2013

Benutzer
Mitglied seit
01. Nov 2021
Beiträge
114
Punkte für Reaktionen
11
Punkte
18
mal rein interessenhalber: Was sind das für Container die du laufen lässt?
Beim Container handelt es sich u ecoDMS.

Solange noch keine oder wenige Dateien vorhanden sind, die im DMS verwaltet werden, läuft alles reibungslos. Irgendwann tritt eine Situation auf, bei der die Gesamt-CPU-Last auf fast 100% steigt und fast nichts mehr funktioniert. Die RAM Auslastung ist nahezu unverändert im Mittelfeld. Der Containe krallt sich dann über mehrere Stunden hinweg die ganze CPU-Leistung, bis irgendwann der Container gestoppt wird.

Wie ich schon geschrieben habe, tritt das Phänomen bei Proxmox (ecoDMS läuft in einer VM) bislang nicht auf, obwohl hier schon weit mehr an Dateien verwaltet werden.

Zwischenzeitlich hatte ich auch schon den Gedanken gehabt, eine VM auf dem NAS mit Ubuntu laufen zu lassen. Dieser Gedanke wurde allerdings schnell wieder verworfen, da der zugeteilte RAM Speicher scheinbar unabhängig von der tatsächlichen Belegung durch den Host immer komplett belegt wird. Die freien RAM-Kapazitäten stehen im NAS nicht zur Verfügung. Das ist auch bei Windows-Hostsystemen zu beobachten, obwohl im Host-System ein Balloon-Agent läuft.
 


 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat