maxctes launchctl max vs sysctl kern.maxfilesperproc

397
DenisL

Ich versuche, das Verhalten von MacOS High Sierra zu verstehen. Hier ist die Ausgabe auf meiner Maschine:

launchctl limit maxfiles
maxfiles 256 unbegrenzt

sysctl kern.maxfiles
kern.maxfiles: 12228

sysctl kern.maxfilesperproc
kern.maxfilesperproc: 10240

Meine Fragen sind:

  1. Ist maxfiles 256 von launchctl limit maxfiles ist pro prozess limit?
  2. Warum unterscheidet sich maxfiles von "launchctl limit maxfiles" von kern.maxfiles und kern.maxfilesperproc ?
  3. Welches Limit ( maxfiles 256 oder kern.maxfilesperproc: 10240 ) wird für eine Anwendung angewendet, die von einem Benutzer manuell aus Anwendungen gestartet wird?
2

1 Antwort auf die Frage

0
Spiff
  1. Ist maxfiles 256von launchctl limit maxfileseinem pro-Prozess-Limit?

Ja. launchctl limit maxfilesGibt die pro-prozessualen Soft- und Hard-Limits aus getrlimit(2), deren Berichtsseite Folgendes angibt:

 Ein Ressourcenlimit wird als Soft-Limit und Hard-Limit angegeben. Wenn ein weicher Grenzwert überschritten Ein Prozess kann ein Signal empfangen (z. B. wenn CPU-Zeit oder Dateigröße überschritten), es wird jedoch erlaubt, bis zur Erreichung der harten Grenze (oder zur Änderung der Ressource) Grenze). 

getrlimit(2)Anscheinend ulimiterhält der eingebaute Befehl der Shell seine Informationen.

  1. Warum unterscheidet launchctl limit maxfilessich von kern.maxfilesund kern.maxfilesperproc?

launchctl limit maxfilesmeldet die prozessbezogenen Soft- und Hard-Limits, die launchd Prozessen auferlegt. launchd schreibt anscheinend ein Soft-Limit von 256 und ein "unbegrenztes" Hard-Limit vor, was bedeutet, dass es nur durch kern.maxfilesperprocden Kernel begrenzt wird, nicht durch launchd.

kern.maxfilesist die Grenze der gesamten Dateideskriptoren im gesamten System; die Summe aller geöffneten Dateien für alle Prozesse sowie alle Dateien, die der Kernel für eigene Zwecke geöffnet hat.

  1. Welches Limit ( maxfiles 256oder kern.maxfilesperproc: 10240) wird für eine Anwendung angewendet, die von einem Benutzer manuell aus Anwendungen gestartet wird?

Eine Anwendung, die manuell von einem Benutzer gestartet wird, der eine App über die GUI startet, erbt das vom Launchd- kern.maxfilesperprocSystem festgelegte Soft-Limit von 256 und das unbegrenzte Hard-Limit. Das harte Limit wird also effektiv sein, vorausgesetzt, es gibt genügend freie Dateideskriptoren auf dem System der App kann sein Limit erreichen, bevor das gesamte System erreicht wird kern.maxfiles.

Prozesse (Apps) können auch Systemaufrufe verwenden, um ihre Soft-Limits anzupassen, wenn sie ausgeführt werden. Das Soft-Limit von 256 ist also nur die Standardeinstellung zum Startzeitpunkt, und Ihre App / Ihr Prozess kann das eigene Soft-Limit sofort erhöhen.