startctl limit maxfiles vs sysctl kern.maxfilesperproc


3

Я намагаюся зрозуміти поведінку MacOS High Sierra. Ось вихід на моїй машині:

limitct
maxfiles startfik maxfiles 256 необмежений

sysctl kern.maxfiles
kern.maxfiles: 12228

sysctl kern.maxfilesperproc
kern.maxfilesperproc: 10240

Мої запитання:

  1. Чи є maxfiles 256 з limitctfix maxfiles limit per per process?
  2. Чому maxfiles за "startctl limit maxfiles" відрізняється від kern.maxfiles та kern.maxfilesperproc ?
  3. Який ліміт ( maxfiles 256 або kern.maxfilesperproc: 10240 ) застосовується для програми, яку вручну запускає користувач із програм?

Відповіді:


2
  1. Це maxfiles 256від launchctl limit maxfilesобмеження для кожного процесу?

Так. launchctl limit maxfilesдрукує м'які та жорсткі межі для кожного процесу, про які повідомляється getrlimit(2), чия сторінка man:

     Ліміт ресурсів визначається як м'який та жорсткий. Коли а
     перевищується м'який межа, процес може приймати сигнал (наприклад, якщо
     час процесора або розмір файлу перевищено), але його буде дозволено
     тримати виконання, поки не досягне жорсткої межі (або не модифікує свій ресурс
     межа).

getrlimit(2)мабуть, там, де вбудована команда оболонки ulimitотримує свою інформацію.

  1. Чому launchctl limit maxfilesвідрізняється від kern.maxfilesі kern.maxfilesperproc?

launchctl limit maxfilesповідомляє про м'які та жорсткі межі, що запускаються для процесів. Запускається, очевидно, встановлює м'який межа 256 і "необмежений" жорсткий ліміт, що насправді означає, що воно обмежене лише kern.maxfilesperprocядром, а не launchd.

kern.maxfiles- обмеження загальної кількості дескрипторів файлів у всій системі; загальна сума всіх відкритих файлів для всіх процесів плюс усіх файлів, які ядро ​​відкрило для власних цілей.

  1. Який ліміт ( maxfiles 256або kern.maxfilesperproc: 10240) застосовується для програми, яку вручну запускає користувач із програм?

Додаток, запущений користувачем, який запускає додаток із графічного інтерфейсу, успадковує накладений м'який ліміт 256 та "необмежений" жорсткий ліміт, тому його жорсткий ліміт фактично буде kern.maxfilesperproc, якщо припустити, що в системі достатньо безкоштовних дескрипторів файлів, що додаток може досягти межі, перш ніж вся система потрапить kern.maxfiles.

Процеси (додатки) також можуть використовувати системні дзвінки, щоб регулювати їхні обмежені обмеження, коли вони запущені. Тож м'який ліміт 256 - це лише типовий час запуску, і ваш додаток / процес може негайно збільшити свій власний м'який ліміт.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.