Ich habe ulimit in /etc/security/limits.conf
gesetzt . Wenn ich mich als Benutzer testuser
bei meiner Desktop-Umgebung anmelde normalerweise (mit schlankem login
Manager), funktioniert alles einwandfrei.
Wenn ich mich als Benutzer testuser
anmelde über Xephyr
(aus meiner anderen Sitzung als anderer Benutzer) funktioniert alles gut, außer chromium
Browser. Dies ist der Fehler, den ich in dmesg
erhalte :
Chrome_ChildIOT (2472): VmData 4310827008 exceed data ulimit 4294967296. Update limits or use boot option ignore_rlimit_data.
Und Chromium ist unbrauchbar (es startet, wartet aber auf unbestimmte Zeit, um eine Seite zu laden)
Alle anderen Programme außer chromium
richtige Limits gesetzt haben. Ich habe dies überprüft mit:
find /proc/ -maxdepth 1 -user testuser -exec cat {}/limits ; | grep 'Max data size'
alle PIDs
Max data size
haben auf unbegrenzt setzen:
Max data size unlimited unlimited bytes
außer chromium
Prozesse:
Max data size 4294967296 4294967296 bytes
Max data size 17179869184 17179869184 bytes
Max data size 17179869184 17179869184 bytes
Max data size 17179869184 17179869184 bytes
Max data size 17179869184 17179869184 bytes
Max data size 17179869184 17179869184 bytes
Max data size 17179869184 17179869184 bytes
Max data size 17179869184 17179869184 bytes
Ich würde gerne verstehen:
1) warum chromium
haben andere Limits als alle anderen Programme ?
2) woher kommen die "Standard"-Limits (wo nimmt Chromium das Limit 4294967296
). von ?
3) Wie kann ich diese Standardgrenzen ein für alle Mal global für alle Prozesse ändern, unabhängig davon, ob sie pam verwenden oder nicht?
Akzeptierte Antwort:
- Warum hat Chromium andere Limits als alle anderen Programme?
Chromium mag wie eine einfache Anwendung aussehen, ist es aber nicht, zuerst gibt es das Multi-Threading, das Chromium dazu bringt, mehrere Prozesse für verschiedene Aufgaben auszuführen (Erweiterungen, Registerkarten, Kern-Web-Engine usw.), dann die Virtualisierung, Chromium verwendet viele Sandboxen zum Isolieren die Browsing-Aktivitäten, die dazu führen, dass mehr Ressourcen als andere Anwendungen verwendet werden, auch die verwendete Web-Engine ist keine leichte. Hinzu kommen die verschiedenen erforderlichen Bibliotheken, die zum Ausführen erforderlich sind, und andere ressourcenintensive Funktionen. Einige zugehörige Dokumentationen sind hier verfügbar. Hier und in diesem Artikel finden Sie einige nützliche Informationen.
- Woher kommen die "Standard"-Limits (woher nimmt Chromium das Limit 4294967296?
4294967296 Byte (4096 MB oder 4 GB-Grenze) Chromium hat per Design eine 4-GB-Grenze. Dies ist fest codiert. Weitere Informationen dazu finden Sie hier und hier
- Wie kann ich diese Standardgrenzen ein für alle Mal global für alle Prozesse ändern, unabhängig davon, ob sie pam verwenden oder nicht?
Keine leichte Aufgabe, aber Sie machen es für die meisten üblichen Prozesse richtig, jetzt müssen Sie für komplizierte Prozesse wie Chromium Ihre Konfiguration für jede „spezielle“ App anpassen.
Verwandte:Linux – NTP-Zeitsynchronisierung dauert lange?Für Chromium gibt es einige Befehlsparameter, die zum Anpassen/Aktivieren/Deaktivieren von Funktionen verwendet werden können. Sie können versuchen, einige davon zu verwenden, um Chromium an Ihre Bedürfnisse anzupassen. Hier sind einige interessante Schalter:
Diese Schalter können mit einer Befehlszeile wie dieser /usr/bin/chromium --single-process
verwendet werden
--single-process
--aggressive-tab-discard
--aggressive-cache-discard
--ui-compositor-memory-limit-when-visible-mb
--disk-cache-dir # Use a specific disk cache location, rather than one derived from the UserDatadir.
--disk-cache-size # Forces the maximum disk space to be used by the disk cache, in bytes.
--force-gpu-mem-available-mb # Sets the total amount of memory that may be allocated for GPU resources
--gpu-program-cache-size-kb # Sets the maximum size of the in-memory gpu program cache, in kb
--mem-pressure-system-reserved-kb # Some platforms typically have very little 'free' memory, but plenty is available in buffers+cached. For such platforms, configure this amount as the portion of buffers+cached memory that should be treated as unavailable. If this switch is not used, a simple pressure heuristic based purely on free memory will be used.
--renderer-process-limit # Overrides the default/calculated limit to the number of renderer processes. Very high values for this setting can lead to high memory/resource usage or instability.
Sie können Chromium auch mit einem Skript ausführen, das das ulimit dafür aktualisiert (beachten Sie, dass Werte unter 4 GB den Browser zum Absturz bringen können …)
ulimit -Sv 4352000000 #4.2GB
/usr/bin/chromium
# or 0.42GB, it works but the browser may crash
#ulimit -Sv 435200000 #0.42GB
#/usr/bin/chromium