Ich habe einen Linuxserver, der zu ca. 10% ausgelastet ist. Mein Gedanke war, die 90% zu nutzen, um ein Maschinenlernmodell ohne CUDA zu trainieren. Das Ziel ist, daß sich der ML-Thread immer an den Rest anpaßt, gibt es etwa nichts zu tun, bekommt er alle Ressourcen. Gibt es viel zu tun, entsprechend wenig. Dh, der ML-Thread steht dem anderen unter und muß sich immer anpassen, sodaß alle anderen Threads ohne Performanceeinbußen funktionieren. Das Problem ist auch, daß ich eine Batch-size einstellen muß. Stelle ich diese optimal für geringen Speicherverbrauch der anderen Dienste ein und entzieht der Server Ressourcen, sollte ich einen OOM bekommen, den ich vermeiden will. Wie könnte ich das unter Linux erreichen?
:
Bearbeitet durch User
Und gegen den OOM-Killer gibt es "oom_score_adj".
Zum limitieren könntest du (zusätzlich zu nice&ionice) noch cgroups verwenden, entweder von Hand per "cgcreate ..." oder z.B. per systemd-run
1 | systemd-run -p MemoryMax=5G .... |
dabei kannst du auch die verfügbare CPU-Leistung weiter reduzieren oder
IO-Limits festlegen, und auch das OOM-Verhalten feintunen...
>> man systemd.resource-control
Ist der Server Virtualisiert? Sprich läuft darauf ein lxc oder proxmox etc?! Da ist sowas super easy und immer voneinander getrennt. Ich habe zum Beispiel einen Renderserver mit Grid GPUs über Proxmox in einer VM laufen, dieser muss sich hinter den restlichen lxc Containern anstellen und deren Resourcen bei Bedarf frei halten. Damit lassen sich auch wunderbar ganze Prioritätskaskaden einstellen. Ansonsten, wie bereits erwähnt: nice
Εrnst B. schrieb: > Zum limitieren könntest du (zusätzlich zu nice&ionice) noch > cgroups > verwenden, entweder von Hand per "cgcreate ..." oder z.B. per > systemd-run systemd-run -p MemoryMax=5G .... > > dabei kannst du auch die verfügbare CPU-Leistung weiter reduzieren oder > IO-Limits festlegen, und auch das OOM-Verhalten feintunen... >>> man systemd.resource-control Ich suche ein System, das selbst automatisch regelt. Ich will daher nicht MemoryMax=5G verwenden. Was ich suche ist vom Prinzip her vergleichbar mit einer Auslagerungsdatei, die von Windows verwaltet wird, wird mehr Ram benötigt, wird eben mehr ausgelagert, etc.. Oder einer garbage collection in java. Nur daß es hier eben nicht um RAM geht - wobei das einem OOM vorgreifen könnte - sondern um CPU-Leistung, RAM(im anderen Sinne), Cache etc. Mit anderen Worten, ich will dem Programm lediglich mitteilen, daß der ML-Thread die anderen nicht beeinflussen darf, und dann soll es eigenständig agieren. Ich will weder maximale CPU-Zeit angeben noch maximalen RAM. Daher scheiden VM etc. aus, da ich diesen normalerweise immer Specs im Voraus zuweisen muß und diese es sich nicht dynamisch holen oder gar geben. Außerdem sind mir VMs schlecht in Erinnerung, weil sie immer ausgesprochen langsam waren, die Virtualisierung massig Performance gekostet hat.
:
Bearbeitet durch User
Smart U. schrieb: > Ich suche ein System, das selbst automatisch regelt. Das macht Linux mit nice&ionice schon. Aber: Smart U. schrieb: > wird mehr Ram > benötigt, wird eben mehr ausgelagert das willst du vermutlich nicht. Wenn dein Background-Idle-Task viel RAM will, wird Speicher der wichtigen "10% Tasks" ausgelagert. Wenn die dann wieder was zu tun haben, z.B. weil ein Request reinkommt, müssen die wieder aus dem Swap geladen werden, was langsam ist und deren Reaktionszeit stark negativ beeinflusst. Wenn du wirklich verhindern willst, dass dein KI-Training den Rest beeinflusst, musst du dafür sorgen, dass es dem Rest des Systems nie wichtigen Arbeitsspeicher wegnimmt. Entweder durch sinnvolle Batch-Sizes oder durch harte Limits oder Beides.
Smart U. schrieb: > Außerdem sind mir VMs schlecht in Erinnerung, weil sie immer > ausgesprochen langsam waren, die Virtualisierung massig Performance > gekostet hat. Ich mache das schon eine Weile und in unseren Serverräumen stehen mittlerweile neben anderer Infrastruktur nur noch Virtualisierungshosts. Und das begann vor 2 Jahrzehnten.
Auslastung von Hardware durch Hintergrundarbeit verlangsamt den Vordergrund, trotz aller Priorisierung.Beispielsweise weil die Taktrate sinkt.
(prx) A. K. schrieb: > Auslastung von Hardware durch Hintergrundarbeit verlangsamt den > Vordergrund, trotz aller Priorisierung.Beispielsweise weil die Taktrate > sinkt. Vorschläge?
Das sollte mit CPU CGroups gehen. Braucht dann aber trotzdem mehr strom.
Smart U. schrieb: > Vorschläge? Verabschiede dich von der Idee, dass das ganz ohne Beeinflussung der anderen Serverdienste geht. Linux verwendet möglichst immer den gesamten Arbeitsspeicher, ggfs als Disk-Cache. Wenn du für irgendwas im Hintergrund, egal wie niedrig priorisiert, Arbeitsspeicher verwendest, reduzierst du den Cache, was den Rest des Systems beeinflusst. Also: Überleg dir, wieviel Speicher deine Serverdienste brauchen, und auf wieviel Cache du verzichten kannst, ohne dass es allzu negativ auffällt. (Hängt von den Diensten ab, bei einer Datenbank ist's evtl 0, bei einem File-Server für große Video-Dateien hingegen ist der Cache nicht so wichtig) Dann stell deinen Idle-Task so ein, dass er weniger Speicher verwendet. Beachte, dass das Laden der Trainingsdaten auch durch den Cache läuft. Und wenn du zum Schluss kommst, dass von 128 GB installiertem RAM eben nur 32 verzichtbar sind, dann ist das eben so. Und da mit SWAP-Space nachzuhelfen ist immer kontraproduktiv. Selbst wenn nur dein Ki-Training dahin ausgelagert werden darf, blockiert das trotzdem Speicheranforderungen der wichtigen Dienste.
DPA schrieb: > Das sollte mit CPU CGroups gehen. Braucht dann aber trotzdem mehr > strom. Nicht mein Problem, ich zahle eine Flatrate.
Smart U. schrieb: > Daher scheiden VM etc. aus, da ich diesen normalerweise immer Specs im > Voraus zuweisen muß und diese es sich nicht dynamisch holen oder gar > geben. Unsinn. Prozessorzeit wird schon immer dynamisch zugewiesen, RAM kann man ebenfalls dynamisch zuweisen lassen. Was du heutzutage typisch einer VM zuweist, sind nur die Limits. Das funktioniert in zwei Richtungen. Einerseits garantierst du der VM gewisse Mindestwerte (die sie sicher benutzen kann, aber nicht benutzen MUSS!), andererseits definierst du Maxima, die die VM nicht überschreiten kann. Im Prinzip funktioniert das eigentlich ganz genau so wie die Resourcenverwaltung innerhalb eines neuzeitlichen OS. Für RAM und Rechenzeit funktioniert das sehr gut. Etwas kitzlig ist nach wie vor IO. Und zwar sowohl innerhalb eines OS als auch bei einer Horde VMs, die auf einem Host laufen. > Außerdem sind mir VMs schlecht in Erinnerung, weil sie immer > ausgesprochen langsam waren, die Virtualisierung massig Performance > gekostet hat. Unsinn. Der Witz ist, dass VMs u.U. sogar schneller laufen als derselbe Code auf Blech. Das hängt aber natürlich von der konkreten Anwendung ab. Die Zusammenhänge sind sehr komplex.
Ist ja an sich eine gescheite Idee, gibt es aber nicht so etwas wie fair-use.. Bei meinem Provider hat der virtuell verteilte dedizierte Root-Server zwar nur Fair-Use, aber für kurzzeitige Spitzenlasten gibt es eine verteilte Reserve auf dem Host die dann automatisch genutzt wird, meine sogar gelesen zu haben das die wirte auch noch mehr zugeteilt bekommen können. Dadurch haben alle ja nur Vorteile. Einfach mal die AGBs lesen ;)
c-hater schrieb: > Prozessorzeit wird schon immer dynamisch zugewiesen, RAM kann > man ebenfalls dynamisch zuweisen lassen. Was du heutzutage typisch einer > VM zuweist, sind nur die Limits. Das funktioniert in zwei Richtungen. > Einerseits garantierst du der VM gewisse Mindestwerte (die sie sicher > benutzen kann, aber nicht benutzen MUSS!), andererseits definierst du > Maxima, die die VM nicht überschreiten kann. Im Prinzip funktioniert das > eigentlich ganz genau so wie die Resourcenverwaltung innerhalb *eines* > neuzeitlichen OS. Unsinn. > Der Witz ist, dass VMs u.U. sogar schneller laufen als > derselbe Code auf Blech. Das hängt aber natürlich von der konkreten > Anwendung ab. Die Zusammenhänge sind sehr komplex. Unsinn.
Totomitharry schrieb: > Ist ja an sich eine gescheite Idee, gibt es aber nicht so etwas wie > fair-use.. > > Dadurch haben alle ja nur Vorteile. Einfach mal die AGBs lesen ;) Unsinn. Einfach mal nachdenken, warum ;)
Smart U. schrieb: >> Das sollte mit CPU CGroups gehen. Braucht dann aber trotzdem mehr >> strom. > > Nicht mein Problem, ich zahle eine Flatrate. Flatrates verderben den Charakter
Wie wäre es mit Kerne zuweisen?
Beitrag #7309459 wurde von einem Moderator gelöscht.
c-hater schrieb: >> Außerdem sind mir VMs schlecht in Erinnerung, weil sie immer >> ausgesprochen langsam waren, die Virtualisierung massig Performance >> gekostet hat. Dann haben sie zu wenig Speicher zugewiesen bekommen.
Beitrag #7309546 wurde von einem Moderator gelöscht.
<<<<<>>>>> schrieb: > Dann haben sie zu wenig Speicher zugewiesen bekommen. Die Virtualisierungsunterstützung des Prozessors zur Beschleunigung war vermutlich nich aktiviert.
Beitrag #7309591 wurde von einem Moderator gelöscht.
Beitrag #7309632 wurde von einem Moderator gelöscht.
Smart U. schrieb: > Ich habe einen Linuxserver, der zu ca. 10% ausgelastet ist. Warum kaufst du sowas überhaupt? MAch nen langsameren Proz rein oder takte es runter.
Obonto schrieb: > oder takte es runter. Heutige Prozessoren sind für Faulpelze gebaut. Während man vor 3-4 Jahrzehnten noch Jumper stecken musste, oder im Luxusfall einen Schalter am Gehäuse, machen das heutige Rechner ganz von selbst. ;-)
Obonto schrieb: > Smart U. schrieb: >> Ich habe einen Linuxserver, der zu ca. 10% ausgelastet ist. > Warum kaufst du sowas überhaupt? MAch nen langsameren Proz rein oder > takte es runter. Kannst ja ne Softwarebremse einsetzen um auf die > 80 % zu kommen. :p SCNR
Smart U. schrieb: > Unsinn. Einfach mal nachdenken, warum ;) Kommt halt darauf an.. meine bis jetzt nicht gelesen zu haben ob es hier um einen bereits um eine Virtualisierung handelt oder eine eigene Hardware. Dazu kommt es ja auch an welche Virtualisierung bereits eingesetzt wird.. ds-root, VPS Root.. bzw. 14 Kerne vom gold epyc für 45€ oder 8 Kerne für 130€ im Monat.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.