Speicherbedarf mit ulimit begrenzen



  • Hallo,

    ich würde gerne mein Programm automatisch beenden, wenn es mehr als 4 GB in Anspruch nehmen will. Das sollte - soweit ich weiss - mit ulimit funktionieren. Aber welchen Parameter genau muss ich auf 4 GB setzen:

    • data seg size,
    • max locked memory,
    • max memory size oder
    • virtual memory?


  • Ich denke, was du brauchst ist "max memory size" oder "virtual memory". Ersteres begrenzt den physischen Speicher, und letzteres, wie der Name schon sagt, den virtuellen Speicher. Welches von beiden du brauchst kommt dann darauf an, was genau du erreichen möchtest.
    Nur der Vollständigkeit halber, "max locked memory" bezieht sich auf den Speicher, den ein Programm mittels mlock() vor dem Auslagern auf die Platte schützen kann. Zu "data seg size" kann ich leider nix sagen.

    Beachte außerdem, daß das Programm nicht zwangsläufig beendet wird. Solange alle fehlgeschlagenen Speicherallokationen (malloc() gibt NULL zurück, etc.) abgefangen werden, könnte das Programm theoretisch weiterlaufen. Aber wer macht das schon... Und ansonsten wird das Programm auch nicht sauber beendet, sondern halt früher oder später durch einen Segfault o.ä...


Anmelden zum Antworten