Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
Update von clang-10 "out of memory"
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

Goto page 1, 2, 3, 4, 5, 6  Next  
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German)
View previous topic :: View next topic  
Author Message
alexander_ro
Guru
Guru


Joined: 22 Nov 2014
Posts: 427

PostPosted: Sat Jul 04, 2020 7:52 pm    Post subject: Update von clang-10 "out of memory" Reply with quote

Hi Mädels ... Jungs ... :)

Beim üblichen Gentoo Updaten bekomme ich bei der neuen clang Version eine Fehlermeldung. Im Syslog steht dann folgendes:

Code:

ul  4 19:04:39 alien kernel: oom-kill:constraint=CONSTRAINT_NONE,nodemask=(null),cpuset=/,mems_allowed=0,task=ld,pid=26791,uid=250
Jul  4 19:04:39 alien kernel: Out of memory: Killed process 26791 (ld) total-vm:7938052kB, anon-rss:2600640kB, file-rss:1712kB, shmem-rss:0kB, UID:250 pgtables:15568kB oom_score_adj:0
Jul  4 19:04:39 alien kernel: oom_reaper: reaped process 26791 (ld), now anon-rss:0kB, file-rss:0kB, shmem-rss:0kB


Der Rechner hat 8GB RAM und ein bisschen SWAP ... den -j Parameter habe ich schon reduziert das hatte keinerlei Auswirkung auf den Speicherbedarf.
Kann es sein das clang ein bisschen Kaputt ist? ... ich bin mir nicht sicher.

Grüße
Alexander
Back to top
View user's profile Send private message
franzf
Advocate
Advocate


Joined: 29 Mar 2005
Posts: 4565

PostPosted: Sun Jul 05, 2020 4:41 am    Post subject: Reply with quote

Das Problem ist nicht das KOMPILIEREN der sourcedateien (worauf MAKEOPTS einen Einfluss hat) sondern das LINKEN (Prozess "ld").
Beim Linken müssen die Symbole sämtlicher object files in eine Datei gepackt werden, was viel Speicher verbraucht.
Der ld.bfd - default in binutils - braucht leider besonders viel.
Lösung: Wechsel mal auf den gold linker:
https://wiki.gentoo.org/wiki/Gold
Back to top
View user's profile Send private message
alexander_ro
Guru
Guru


Joined: 22 Nov 2014
Posts: 427

PostPosted: Sun Jul 05, 2020 5:58 am    Post subject: Reply with quote

Ja schon der Linker ist mir aufgefallen ich war mir nur nicht sicher ob der die Option auch verwendet.

Stimmt schon man braucht alle Symbole die in dem fertigen Programm enthalten sind. Man muss aber nicht alles zu einem Riesigen Monolithen zusammen linken ... :(
Fromme Sprüche:
Code:

Clang is probably a great solution for you.

für mich ist das nicht wahr kann man ja nicht mal übersetzen.

Der Mist wurde mal mit firefox glauche ich als Abhängigkeit installiert und Frist Ressourcen ohne Ende. Weil er recht oft neu gebaut werden muss. Scheinbar ändert sich an dem viel hat er aber auch dringend nötig wenn man den mit 8GB RAM nicht Compilieren kann das Design von dem muss ja ziemlich kaputt sein.

Ich werde man wieder versuchen den los zu werden. Der ist glaube ich irgendwann als Abhängigkeit zu Firefox und Thunderbird installiert worden. Es hieß er wäre zwingend dafür nötig. Wenn das so ist werde ich mal suchen und die beiden gleich mit ersetzen.
Back to top
View user's profile Send private message
franzf
Advocate
Advocate


Joined: 29 Mar 2005
Posts: 4565

PostPosted: Sun Jul 05, 2020 7:24 am    Post subject: Reply with quote

alexander_ro wrote:
Der Mist wurde mal mit firefox glauche ich als Abhängigkeit installiert und Frist Ressourcen ohne Ende. Weil er recht oft neu gebaut werden muss. Scheinbar ändert sich an dem viel hat er aber auch dringend nötig wenn man den mit 8GB RAM nicht Compilieren kann das Design von dem muss ja ziemlich kaputt sein.

clang ist ein moderner Compiler, Design ist top. Was Mist ist, das ist der ld.bfd, also der default linker. Das ist bekannt, nicht nur clang hat mit dem Probleme, sondern oft auch webkit, chromium, etc. Halt alles was heutzutage so an größeren Frameworks produziert wird.
Lösung habe ich schon erwähnt, aber hier nochmal: Ersetze den Linker! Nimm ld.gold statt ld.bfd. Punkt. Link zum Gentoo Wiki findest du im vorherigen Post.

Quote:
Ich werde man wieder versuchen den los zu werden. Der ist glaube ich irgendwann als Abhängigkeit zu Firefox und Thunderbird installiert worden. Es hieß er wäre zwingend dafür nötig. Wenn das so ist werde ich mal suchen und die beiden gleich mit ersetzen.

Wenn dich Kompilieren so stört dann nimm doch einfach firefox-bin und thunderbird-bin. Oder (so wie ich) eine binary-Distribution ala arch, suse, fedora...
Back to top
View user's profile Send private message
alexander_ro
Guru
Guru


Joined: 22 Nov 2014
Posts: 427

PostPosted: Sun Jul 05, 2020 8:27 am    Post subject: Reply with quote

Na ja also erstens steht da oben das mich das andauernde neu bauen von clang und llvm stört und nicht das von firefox und thunderbird. Die bauen erheblich seltener neu.

Alles was man zu einem Monolithen zusammen linkt das man es nicht mehr in 8GB Speicher bekommt ist Schrott Design. Modern ist nicht unbedingt gleich besser. Vermutlich stecken Facebook oder Google dahinter und haben vergessen das nicht jeder über mehrere Milliarden teure Rechenzentren verfügt.

Der ld kann Problemlos Thunderbird und Firefox auf meinem Rechner linken das ist überhaupt kein Problem.

Die Frage ist halt was Handel ich mir mit dem anderen Linker für Probleme ein. Ist vermutlich nicht ohne Grund das er nicht default ist.
Back to top
View user's profile Send private message
franzf
Advocate
Advocate


Joined: 29 Mar 2005
Posts: 4565

PostPosted: Sun Jul 05, 2020 9:19 am    Post subject: Reply with quote

alexander_ro wrote:
Na ja also erstens steht da oben das mich das andauernde neu bauen von clang und llvm stört und nicht das von firefox und thunderbird. Die bauen erheblich seltener neu.

Aber firefox hat clang fix in den Abhängigkeiten, deshalb als Lösung -> firefox-bin + thunderbird-bin.

Quote:
Alles was man zu einem Monolithen zusammen linkt das man es nicht mehr in 8GB Speicher bekommt ist Schrott Design. Modern ist nicht unbedingt gleich besser. Vermutlich stecken Facebook oder Google dahinter und haben vergessen das nicht jeder über mehrere Milliarden teure Rechenzentren verfügt.

Deine laienhafte Meinung oder fundierte Kenntnis nach jahrelanger Berufserfahrung?
Wenn du da weiter diskutieren willst, wäre auch ein vollständiges build.log nicht schlecht, dass man sieht was da gerade gelinkt wurde.

BTW.: Bist du dir sicher, dass nicht irgendein anderer Prozess zu dem Zeitpunkt gewaltig Speicher gebraucht hat? Z.B. ein firefox mit 100 tabs oder ein gigantisches Postfach in Thunderbird?

Quote:
Die Frage ist halt was Handel ich mir mit dem anderen Linker für Probleme ein. Ist vermutlich nicht ohne Grund das er nicht default ist.

https://bugs.gentoo.org/269315
Die üblichen Fehler sind dem korrekteren Verhalten geschuldet. Aber z.B. grub2 scheint gar nicht zu starten.
Schau hier für selektives Setzen eines linkers:
https://forums.gentoo.org/viewtopic-p-7938204.html#7938204
Letzte Zeile, die bfd.conf. Kannst du auch so hindrehen, dass du das nur für clang auf gold setzt und dein System weiterhin bfd verwendet.

Ich hatte jahrelang das System nur mit gold gebaut und nie wirkliche Probleme.
Back to top
View user's profile Send private message
Josef.95
Advocate
Advocate


Joined: 03 Sep 2007
Posts: 4669
Location: Germany

PostPosted: Sun Jul 05, 2020 9:46 am    Post subject: Reply with quote

Hm, vom global auf den gold Linker umstellen bin ich wieder ab -- es gibt leider einige Pakete im tree die damit nicht klarkommen, und übel auf die Nase fallen (lange Zeit war es auch nicht möglich einen Linux Kernel mit gold Linker zu bauen) :-/

alexander_ro wrote:
Der Rechner hat 8GB RAM und ein bisschen SWAP ... den -j Parameter habe ich schon reduziert

Was heißt "reduziert"? Von was auf was?
Ich denke wenn der RAM nicht anderweitig belegt ist, dann sollte -j4 mit 8 GB RAM funktionieren. Wenn der RAM noch mit anderen Kram genutzt wird, dann eher noch weiter runtergehen.

/edit: btw, toller Artikel zum thema swap :) --> https://chrisdown.name/2018/01/02/in-defence-of-swap.html
Back to top
View user's profile Send private message
franzf
Advocate
Advocate


Joined: 29 Mar 2005
Posts: 4565

PostPosted: Sun Jul 05, 2020 10:31 am    Post subject: Reply with quote

Josef.95 wrote:
Hm, vom global auf den gold Linker umstellen bin ich wieder ab -- es gibt leider einige Pakete im tree die damit nicht klarkommen, und übel auf die Nase fallen (lange Zeit war es auch nicht möglich einen Linux Kernel mit gold Linker zu bauen) :-/

Hattest du tatsächlich Laufzeitfehler? Oder war es das übliche default-linken von lm, lpthread usw?
Back to top
View user's profile Send private message
alexander_ro
Guru
Guru


Joined: 22 Nov 2014
Posts: 427

PostPosted: Sun Jul 05, 2020 10:57 am    Post subject: Reply with quote

Quote:
Deine laienhafte Meinung oder fundierte Kenntnis nach jahrelanger Berufserfahrung?


Erkläre mir doch mal was an dem zusammen linken von Monolithen so tolles Software Design sein soll?

Schade wenn es der Firefox nur mit clang kann ich dachte mit dem USE-Flag clang kann man das evtl. ändern.
Vielleicht wird es doch langsam Zeit Firefox und Co. vom Rechner zu werfen und alternativen zu suchen. Richtig begeistert war ich seit die auf Google Software umgestellt haben so nicht mehr von dem Ding.

Von den 8GB sind noch 6GB und fast alles von den 10GB SWAP frei. Klar läuft da noch der Rest vom Betriebssystem den xfce zähle ich zum Betriebssystem.
Er sagt im Log: free swap: 0KB, Total swap = 10485756kB deshalb hat er dann den Prozess beendet.

Mit dem Rechner wurde zu dem Zeitpunkt nicht gearbeitet. Nur clang gebaut ...

@Josef.95
Reduziert von -j8 auf -j4. Mit -j8 hat sich bis vor kurzem das clang Ding noch bauen lassen.

Ja interessant das mit dem SWAP. Aber irgendwie finde ich schon das SWAP Notfall Speicher ist aber halt nicht nur. Mein Rechner hat im Normalbetrieb bei mir 3-4 GB freien RAM ganz ehrlich da ist es völlig egal ob ein bisschen Speicher von Uralten Speicherseiten belegt wird oder nicht. Ein bisschen SWAP benutzt der aber immer egal wie viel Speicher frei ist. SWAP wird Hauptsächlich für den shutdown to disk benutzt auf dem Rechner.
Back to top
View user's profile Send private message
Josef.95
Advocate
Advocate


Joined: 03 Sep 2007
Posts: 4669
Location: Germany

PostPosted: Sun Jul 05, 2020 11:03 am    Post subject: Reply with quote

franzf wrote:
Josef.95 wrote:
Hm, vom global auf den gold Linker umstellen bin ich wieder ab -- es gibt leider einige Pakete im tree die damit nicht klarkommen, und übel auf die Nase fallen (lange Zeit war es auch nicht möglich einen Linux Kernel mit gold Linker zu bauen) :-/

Hattest du tatsächlich Laufzeitfehler? Oder war es das übliche default-linken von lm, lpthread usw?

Nein, Laufzeitfehler habe ich keine bemerkt, es waren eher die üblichen Abbrüche beim bauen/linken. Ich muss aber gestehen das meine letzten Tests Jahre her sind -- habs ehrlich gesagt lange nicht mehr getestet.
Back to top
View user's profile Send private message
Josef.95
Advocate
Advocate


Joined: 03 Sep 2007
Posts: 4669
Location: Germany

PostPosted: Sun Jul 05, 2020 11:19 am    Post subject: Reply with quote

@alexander_ro
Hm, und portage baute zu der Zeit auch wirklich nur dieses eine clang Paket? Sprich die emerge --jobs Option wurde nicht genutzt, und Späße wie PORTAGE_TMPDIR im tmpfs ist auch nicht eingebunden?

Vorschlag: Teste den build bitte mal mit MAKEOPTS="-j2"
Wenn das auch fehlschlägt, dann poste bitte mal das komplette build.log und die dazugehörige emerge --info
und die Ausgabe von
Code:
df -h `portageq envvar PORTAGE_TMPDIR`/portage
Back to top
View user's profile Send private message
mike155
Advocate
Advocate


Joined: 17 Sep 2010
Posts: 4438
Location: Frankfurt, Germany

PostPosted: Sun Jul 05, 2020 12:01 pm    Post subject: Reply with quote

franzf wrote:
Lösung: Wechsel mal auf den gold linker:

Nach diesem Artikel hatte ich eher den Eindruck, dass gold tot ist...
Back to top
View user's profile Send private message
mike155
Advocate
Advocate


Joined: 17 Sep 2010
Posts: 4438
Location: Frankfurt, Germany

PostPosted: Sun Jul 05, 2020 12:10 pm    Post subject: Reply with quote

alexander_ro wrote:
Reduziert von -j8 auf -j4.

Für große in C++ geschriebene Pakete sollte man mittlerweile mit 2 GB RAM pro Job rechnen. Swap hilft nicht! Hinzu kommt, dass man noch weiteres RAM braucht für Betriebssystem und /var/tmp/portage, falls /var/tmp/portage ein tmpfs ist.

Es wundert mich also nicht, dass es bei "-j4" und "-j8" Probleme gibt.

@Josef.95 hat Recht: probiere es mal mit "-j2".
Back to top
View user's profile Send private message
alexander_ro
Guru
Guru


Joined: 22 Nov 2014
Posts: 427

PostPosted: Sun Jul 05, 2020 12:44 pm    Post subject: Reply with quote

Mich wundert das schon weil es wie gesagt bisher mit -j8 Problemlos lief ...

Ich kenne auch sonst keine Software die für einen Compilejob 2GB braucht. Weil ich dann auch keinerlei Software auf einem Raspi für Gentoo bauen könnte. Der baut alles mit -j2 und einem GB. Der gcc und anderes was da so läuft ist auch nicht gerade ein mini Projekt.

Wenn SWAP nichts bringt wieso waren dann 10GB SWAP voll?
Mit dem Auslagern der 2GB belegtem RAM wohl eher nicht da ist noch eine Lücke mit Lumpigen 8GB ...

Ich probiere mal mit -j2 aber das dauert bis es fertig ist.

@Josef.95
Ich habe da nichts das mit --jobs oder tmpfs zu tun hätte.
Back to top
View user's profile Send private message
mike155
Advocate
Advocate


Joined: 17 Sep 2010
Posts: 4438
Location: Frankfurt, Germany

PostPosted: Sun Jul 05, 2020 1:49 pm    Post subject: Reply with quote

alexander_ro wrote:
Wenn SWAP nichts bringt wieso waren dann 10GB SWAP voll?
Mit dem Auslagern der 2GB belegtem RAM wohl eher nicht da ist noch eine Lücke mit Lumpigen 8GB ...

  1. Es gibt Speicherbereiche, die "non-swapable" sind. Von daher kann es gut sein, dass man einen OOM Fehler bekommt, obwohl von den 10 GB Swap Space erst 2 GB belegt sind.

  2. Swap hilft, wenn man lang laufende Prozesse hat, die viel Hauptspeicher benötigen - die aber auf einzelne Speicherbereiche nur sehr selten zugreifen. Diese selten genutzten Speicherbereiche können dann tatsächlich auf die Festplatte ausgelagert werden - und dann kann Swap tatsächlich etwas bringen.

    Dieses Szenario hat man aber nicht bei emerge. Hier werden kurz hintereinander Tools der Build-Chain aufgerufen, die bei großen C++ Programmen viel Hauptspeicher brauchen und auch damit arbeiten. Wenn hier Teile des Hauptspeichers auf die Festplatte ausgelagert werden, führt dies zu sehr viel I/O, weil nach kürzester Zeit doch wieder auf den ausgelagerten Speicher zugegriffen werden muss. Dann müssen die Daten wieder eingelesen werden - und zuvor müssen andere Daten ausgelagert werden, die dann aber auch nach kürzester Zeit wieder benötigt werden.

  3. Bei dem Szenario "emerge" kann man den Hauptspeicher mit Swap vielleicht um 10% oder 20% vergrößern (virtuell). Aber man kommt nicht von 8 GB auf 18 GB.
Quote:
Ich kenne auch sonst keine Software, die für einen Compilejob 2GB braucht. Weil ich dann auch keinerlei Software auf einem Raspi für Gentoo bauen könnte.

Schon mal Webkit, Webengine & friends auf dem Raspberry mit "-j4" gebaut? :wink:
Back to top
View user's profile Send private message
Tyrus
Guru
Guru


Joined: 03 Feb 2018
Posts: 300

PostPosted: Sun Jul 05, 2020 2:18 pm    Post subject: Reply with quote

Hm - also ich hab mit clang bisher keine Probleme an die mich mich erinnern würde.
Hab hier jetzt auch nicht mehr als 8GB Speicher. Arbeite mit "-j3". System ist: Intel(R) Core(TM) i3-6100 CPU @ 3.70GHz (das sind 2 Prozessoren)
Swap hab ich großzügig eingeräumt mit 16 GB. Wobei kaum der Fall eintritt das mehr als 2 GB genutzt werden. Aber dann ist die Last am System auch hoch.
Dazu läuft kde als Oberfläche wenn das gebaut wird.

Aktuell sind sogar zwei Versionen von clang installiert. Noch nicht alles ist auf clang:10 umgestellt:

Code:

Calculating dependencies... done!
  sys-devel/clang-9.0.1 pulled in by:
    app-doc/doxygen-1.8.17 requires <sys-devel/clang-10:9/9=
    dev-qt/qdoc-5.15.0 requires sys-devel/clang:9/9=
    dev-qt/qt-creator-4.12.3 requires <sys-devel/clang-11:9/9=
    dev-util/kdevelop-5.5.2 requires >=sys-devel/clang-6.0:9/9=


Und ja ich hab auch den Gold-Linker im Einsatz. Noch keine Probleme deswegen bekommen.

Ein genlop zeigt:
Code:

[...]

     Fri May 29 13:52:49 2020 >>> sys-devel/clang-9.0.1
       merge time: 1 hour, 48 minutes and 26 seconds.

     Tue Jun 30 18:23:40 2020 >>> sys-devel/clang-10.0.0
       merge time: 2 hours, 28 minutes and 40 seconds.


   Total builds: 30
   Global build time: 1 day, 17 hours, 48 minutes and 7 seconds.
   Average merge time: 1 hour, 23 minutes and 36 seconds.

   Info about currently installed ebuild:

   * sys-devel/clang-9.0.1
   Install date: Fri May 29 13:52:49 2020
   USE=""
   CFLAGS="-march=native -O2 -pipe"   CXXFLAGS="-march=native -O2 -pipe"   LDFLAGS="-Wl,-O1 -Wl,--as-needed"

   * sys-devel/clang-10.0.0
   Install date: Tue Jun 30 18:23:40 2020
   USE=""
   CFLAGS="-march=native -O2 -pipe"   CXXFLAGS="-march=native -O2 -pipe"   LDFLAGS="-Wl,-O1 -Wl,--as-needed"


So oft musste das jetzt nicht neu gebaut werden. Komme auf 30 Builds seit März 2015. Damals wars aber noch clang-3.5.0 ...
Back to top
View user's profile Send private message
alexander_ro
Guru
Guru


Joined: 22 Nov 2014
Posts: 427

PostPosted: Sun Jul 05, 2020 6:21 pm    Post subject: Reply with quote

zu 1) Ja gibt es aber dann erklär mir doch bitte warum im Log steht "free SWAP 0KB" wenn er die Sachen nicht auslagern darf?

zu 2) Das ist nur fast richtig dem Kernel ist es egal wie schnell Seiten getauscht werden müssen. Der macht das in der Hoffnung so alles am leben zu erhalten. Erst wenn er SWAP=0KB hat killt er Prozesse. Die nicht auslagerbaren Bereiche gibt es eigentlich nur für den Kernel selbst und Hardware nahe Speicherbereiche die nicht unter alleiniger Kontrolle des Kerns stehen. gcc und wie hier der ld haben so etwas sicher nicht.

zu3) siehe 1 und 2

Der llvm wurde auf dem Raspi gebaut bis mir aufgefallen ist das ich den gar nicht brauche. Ob da clang auch dabei war kann ich mich nicht mehr erinnern aber vermutlich schon weil man ja sonst mit dem llvm nichts anfangen kann. Das letzte mal ist jetzt vielleicht 1 Jahr her. Da ging das noch.

Software die sich mit 16 GB Speicher (6 RAM, 10 SWAP) nicht bauen lässt ist hochgradig kaputt. Das hat nichts mit C++ oder dem ld zu tun sondern mit extrem schlechtem Design. Ich habe keine Ahnung wer hinter clang und llvm steckt das ist ja auch nur eines der weiteren Kommerziellen Projekte die für lau Massen an Menschen für sich schuften lassen. Um dann die daraus entstehenden Produkte für Unsummen genau an diese Menschen zu verkaufen. OpenSource ist heute ja mehr Kommerz als der Kommerz selber.


@Tyrus
Du hast auch die Version die ich habe und die auf dem System gebaut wurde. Die neue ist jetzt kaputt weil man die nicht mehr bauen kann. Das mit dem Gold Linker mache ich nicht. Ich habe viele System mit Gentoo laufen und werde nicht anfangen jedem Programm seine Lieblings Build Umgebung bauen. Was mit dem Standard nicht läuft ist kaputt. Wenn die Mozies glauben eine Hersteller Abhängikeit in einem wie sie immer betonen freiem OpenSource Projekt sei eine gute Sache wird es so Zeit Mozilla vom Rechner zu werfen. Ich verlasse mich mal darauf das die Macher der binutils wissen warum der Oberflächlich besser aussehende Linker nicht default ist.

Vorher probiere ich aber noch was dieses USE-Flag clang beim Firefox macht.
Wozu ein USE Flag wenn clang Zwang ist?
Back to top
View user's profile Send private message
alexander_ro
Guru
Guru


Joined: 22 Nov 2014
Posts: 427

PostPosted: Sun Jul 05, 2020 6:57 pm    Post subject: Reply with quote

Das ist jetzt interessant:

Code:

alien /home/alex # equery uses firefox
[ Legend : U - final flag setting for installation]
[        : I - package is installed with flag     ]
[ Colors : set, unset                             ]
 * Found these USE flags for www-client/firefox-68.9.0:
 U I
 - - clang                : Use Clang compiler instead of GCC


Das USE-Flag clang ist nicht gesetzt aber er will trotzdem clang und llvm wieder installieren. Irgendwie kommt mir das so vor wie wenn es auch nicht ganz richtig wäre.
Back to top
View user's profile Send private message
franzf
Advocate
Advocate


Joined: 29 Mar 2005
Posts: 4565

PostPosted: Sun Jul 05, 2020 7:28 pm    Post subject: Reply with quote

alexander_ro wrote:
Das ist jetzt interessant:

Code:

alien /home/alex # equery uses firefox
[ Legend : U - final flag setting for installation]
[        : I - package is installed with flag     ]
[ Colors : set, unset                             ]
 * Found these USE flags for www-client/firefox-68.9.0:
 U I
 - - clang                : Use Clang compiler instead of GCC


Das USE-Flag clang ist nicht gesetzt aber er will trotzdem clang und llvm wieder installieren. Irgendwie kommt mir das so vor wie wenn es auch nicht ganz richtig wäre.

Schau doch einfach ins ebuild, dann wird klar was USE=clang macht.

Und dein Design-Genörgel nervt. Was den ld.bfd aus der Bahn wirft ist höchstwahrcheinlich template-code. Zig Instantiierungen für verschiedene Typen, irgendwelche verschachtelten Compilezeit-Algorithmen können schon einiges an Symbolen erzeugen. Wenn da aus mehreren Übersetzungseinheiten solche Wuste zusammenkommen hast du ein Problem, wenn der Linker Speicher verschwendet.

Quote:
Der llvm wurde auf dem Raspi gebaut bis mir aufgefallen ist das ich den gar nicht brauche. Ob da clang auch dabei war kann ich mich nicht mehr erinnern aber vermutlich schon weil man ja sonst mit dem llvm nichts anfangen kann.

Bitte auch mal schauen, was genau llvm und clang sind. llvm geht nämlich sehrwohl ohne clang. llvm als lib wird u.A. auch von mesa verwendet.
Back to top
View user's profile Send private message
mike155
Advocate
Advocate


Joined: 17 Sep 2010
Posts: 4438
Location: Frankfurt, Germany

PostPosted: Sun Jul 05, 2020 7:29 pm    Post subject: Reply with quote

Josef.95 wrote:
/edit: btw, toller Artikel zum thema swap :) --> https://chrisdown.name/2018/01/02/in-defence-of-swap.html

Schon klar, dass die Fans des Swap-Subsystems ihr System verteidigen :)

Vermutlich muss man etwas unterscheiden. Bei Embedded Systemen oder anderen Maschinen mit wenig RAM - oder bei ganz speziellen Anforderungen - kann Swap tatsächlich sinnvoll sein.

Bei Desktop-Rechnern und Servern benutze ich seit 10 Jahren kein Swap mehr. Bei Servern schalte ich zudem nach Möglichkeit Memory Over-Commitment aus. Dann stört auch der OOM Killer nicht mehr. In Zeiten, in denen RAM so preiswert ist, kauft man halt ein paar GB RAM zusätzlich. Dafür kann man Swapping und Memory Over-Commitment ausschalten.

Das ist doch ein guter Deal! Nie wieder hängende Systeme, die unter exzessivem Swapping leiden. Nie wieder vom OOM Killer abgeschossene Prozesse! Und über Dienste wie earlyoom muss man sich auch nicht mehr wundern. :)


Last edited by mike155 on Sun Jul 05, 2020 7:49 pm; edited 2 times in total
Back to top
View user's profile Send private message
alexander_ro
Guru
Guru


Joined: 22 Nov 2014
Posts: 427

PostPosted: Sun Jul 05, 2020 7:42 pm    Post subject: Reply with quote

@franzel
Ich schau auf den Text und das macht es nicht also ist mindestens der Text falsch ... naja vielleicht ist auch meine Übersetzung des Textes falsch. Nicht meine Schuld das es keinen Deutschen gibt.

Ja danke Du nervst auch ... :(
Spar Dir in Zukunft so blöde Kommentare kann ich gut darauf verzichten. Wenn die ihre Instanzenbildung in den Templates nicht im griff haben ist das auch nicht mein Problem ich habe den Mist nicht Programmiert. Das Design ist Schrottreif ob Dir das passt geht mir am Arsch vorbei.

Ich weiß nicht genau was llvm und clang sind was mir auch wurscht ist es muss funktionieren sonst fliegt es raus. Ich brauch den Mist nicht und bekomme es nur als irgendwelche Abhängigkeiten aufgezwungen und verbringe Tage mit der Fehlersuche und Beseitigung. Was ich aber genau weiß ist das der Schrott sein langem nur Probleme Verursacht.

Also entweder sagst Du was Sache ist oder behalte Deine Kommentare für Dich ... ja Danke.
Back to top
View user's profile Send private message
alexander_ro
Guru
Guru


Joined: 22 Nov 2014
Posts: 427

PostPosted: Sun Jul 05, 2020 7:56 pm    Post subject: Reply with quote

Quote:

... kauft man halt ein paar GB RAM zusätzlich ...


Ja habe ich ja gemacht. Belegt sind bei mir meist nur 2-3 GB speicher. Habe also schon 5 zusätzlich gekauft.
Als extra wegen "shutdown to disk" habe ich noch 10GB als SWAP. Die reichten aber nicht der Kernel sagte 0KB SWAP verfügbar. Also ein paar GB mehr kaufen löst das Problem nicht. Wenn ich noch Platz hätte würde ich einfach mal SWAP größer machen und schauen wie viele GB der noch verbrät. Aber das ist den Aufwand nicht Wert für so eine Software. Ich habe nun llvm und clang entfernt und schau mal was wegen wegen Tyrannei auf clang nicht mehr funktioniert fliegt auch gleich mit raus. Ich brauch Software die Funktioniert.
Back to top
View user's profile Send private message
Josef.95
Advocate
Advocate


Joined: 03 Sep 2007
Posts: 4669
Location: Germany

PostPosted: Sun Jul 05, 2020 8:00 pm    Post subject: Reply with quote

@alexander_ro,
uff, nun bleib mal bitte aufm Teppich. Ja dein Design-Genörgel nervt mich auch, und es hilft auch niemanden weiter.
Franz hat doch mit guten Erklärungen versucht zu helfen. Wenn du diese Hilfe nicht annehmen magst, dann ist das eher traurig, und kein Grund ihn dafür auch noch anzupamppen.
Back to top
View user's profile Send private message
alexander_ro
Guru
Guru


Joined: 22 Nov 2014
Posts: 427

PostPosted: Sun Jul 05, 2020 8:17 pm    Post subject: Reply with quote

@Josef.95

Ich muss mir keine Beleidigungen gefallen lassen nur weil ihn meine Meinung echauffiert. Also er hat mich angepamppt. Gut ich habe zurückgepamppt. Klar das die Forumsurgesteine zusammenhalten aber das kommt jetzt schon Arg unfair. Wem es nicht gefällt der muss es ja nicht lesen oder antworten. Ich bekomme hier so nur recht selten eine Antwort auf Fragen (außer die letzten zwei) aber wenn es dann nur wegen seichter Kritik an einem unbegrenztem Speicherverbrauch ausartet dann ist es besser man bekommt keine Antwort.

Hilfe ähm wo denn bitte ...
Ich weiß selbst wie man eine Memory Overflow mit kaputten Template Code in C++ generiert. Ich Programmiere sei Jahrzehnten in C++.
Back to top
View user's profile Send private message
mike155
Advocate
Advocate


Joined: 17 Sep 2010
Posts: 4438
Location: Frankfurt, Germany

PostPosted: Sun Jul 05, 2020 10:20 pm    Post subject: Reply with quote

@alexander_ro: im englischsprachigen Teil der Gentoo Foren wird häufiger von OOM Killer Problemen berichtet. Fast immer im Zusammenhang mit den großen in C++ geschriebenen Paketen.

Manchmal posten die Betroffenen direkt die OOM Killer Nachrichten (wie Du), manchmal treten die Fehler aber auch an einer anderen Stelle auf - und erst auf Nachfrage sehen die Betroffenen die OOM Killer Nachrichten im System Log.

Im Laufe der Zeit bekommt man da eine gewisse Routine. Wenn Betroffene merkwürdige Fehler berichten und es ein in C++ geschriebenes Paket ist, denke ich fast immer automatisch an den OOM Killer. Und die bis zu 2 GB pro Job RAM ist der Erfahrungswert, den wir dort im Laufe der Zeit gesammelt haben. Der Wert ist also nicht vom Himmel gefallen oder geraten. Ich vermute, dass es im Laufe der Zeit noch mehr werden wird.

Das Vorgehen ist aber immer gleich:
  • Runtergehen auf "-j1". Wenn es dann geht, lag es an zu wenig RAM
  • Wenn es "-j1" auch nicht funktioniert, ist es ein anderes Problem - aber man hat zumindest ein gutes Build-Log, in dem nicht alle Jobs durcheinander loggen.
Von daher mach bitte folgendes
  1. Übersetze das Paket bitte mit -j1
  2. Wenn es dann immer noch Fehler gibt, poste bitte die vollständige OOM Killer Nachricht aus dmesg, die Ausgabe von "emerge --info" und die letzten 200 Zeilen des Build Logs.
Dann können wir weitersehen.

Was C++ an sich betrifft: der Vorwurf, dass C++ Code Bloat verursacht und viel Speicher benötigt, ist so alt wie C++ selbst. Ich erinnere mich an ein Interview mit Stroustrup aus den 90ern, in dem er den Code Bloat auch einräumt, aber versichert, dass das Problem wohl bald gelöst sein wird. Hat wohl nicht funktioniert. Alle ärgern sich über die langen Compilier-Zeiten und den großen Resourcen-Bedarf - aber bisher hat noch keiner ein Mittel dagegen gefunden.

PS: Hier werden ein paar Gründe für den Code Bloat beschrieben: https://dirtyhandscoding.github.io/posts/on-cpp-code-bloat.html
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) All times are GMT
Goto page 1, 2, 3, 4, 5, 6  Next
Page 1 of 6

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum