2

Я пытаюсь понять поведение MacOS High Sierra. Вот вывод на моей машине:

предел запуска
maxfiles 256 без ограничений

sysctl kern.maxfiles
kern.maxfiles: 12228

sysctl kern.maxfilesperproc
kern.maxfilesperproc: 10240

Мои вопросы:

  1. Является ли maxfiles 256 из launchctl limit maxfiles лимитом для каждого процесса?
  2. Почему maxfiles по "launchctl limit maxfiles" отличается от kern.maxfiles и kern.maxfilesperproc?
  3. Какой лимит (maxfiles 256 или kern.maxfilesperproc: 10240) применяется для приложения, которое пользователь запускает вручную из Приложения?

1 ответ1

0
  1. Является ли maxfiles 256 из launchctl limit maxfiles для каждого процесса?

Да. launchctl limit maxfiles печатает мягкие и жесткие ограничения для каждого процесса, как сообщает getrlimit(2) , на странице руководства которого написано:

     A resource limit is specified as a soft limit and a hard limit.  When a
     soft limit is exceeded a process may receive a signal (for example, if
     the cpu time or file size is exceeded), but it will be allowed to con-
     tinue execution until it reaches the hard limit (or modifies its resource
     limit).

getrlimit(2) , очевидно, где встроенная в оболочку команда ulimit получает свою информацию.

  1. Почему launchctl limit maxfiles отличаются от kern.maxfiles и kern.maxfilesperproc?

launchctl limit maxfiles сообщает о мягких и жестких ограничениях для каждого процесса, которые launchd накладывает на процессы. launchd, по-видимому, накладывает мягкое ограничение в 256 и "неограниченное" жесткое ограничение, что на самом деле означает, что оно ограничено только kern.maxfilesperproc в ядре, а не launchd .

kern.maxfiles - ограничение общего количества файловых дескрипторов во всей системе; общая сумма всех открытых файлов для всех процессов плюс все файлы, которые ядро открыло для своих собственных целей.

  1. Какой лимит (maxfiles 256 или kern.maxfilesperproc: 10240) применяется для приложения, которое пользователь запускает вручную из Приложения?

Приложение, запускаемое вручную пользователем, запускающим приложение из графического интерфейса, будет наследовать установленный при запуске мягкий предел в 256 и "неограниченный" жесткий предел, поэтому его жесткий предел будет по сути kern.maxfilesperproc , при условии, что в системе достаточно свободных дескрипторов файлов что приложение может достичь своего предела до того, как вся система достигнет kern.maxfiles .

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .