Пределы на количество дескрипторов файлов

Попробовать vga=normal как параметр ядра во время начальной загрузки.

Обновление: Это помогло мне однажды на OpenSuSE: noirqdebug. В той системе добрался IRQ для сетевого устройства, отключают, потому что другое устройство - использование того же IRQ не использовалось...

Возможно, Ваш графический адаптер переносит ту же судьбу.

34
18.08.2018, 18:25
2 ответа

Согласно документации ядра, /proc/sys/file-max максимум, общее, глобальное количество дескрипторов файлов, которые ядро выделит перед дросселированием. Это - предел ядра, не Ваш текущий пользователь. Таким образом, можно открыть 590432, если Вы являетесь одними в неактивной системе (однопользовательский режим, никакие демоны, работающие).

Обратите внимание, что документация устарела: файл был proc/sys/fs/file-max в течение долгого времени. Благодаря Martin Jambon для указания на это.

Различию между мягкими и жесткими пределами отвечают здесь на SE. Можно повысить или понизить мягкий предел как обычный пользователь, если Вы не переступаете через жесткий предел. Можно также понизить жесткий предел (но Вы не можете повысить его снова для того процесса). Как суперпользователь, можно повысить и понизить и жесткие и мягкие пределы. Двойная предельная схема используется, чтобы осуществить системные политики, но также и позволить обычным пользователям установить временные пределы для себя и позже изменить их.

Обратите внимание, что, при попытке понизить жесткий предел ниже мягкого предела (и Вы не суперпользователь), Вы доберетесь EINVAL назад (Недействительный аргумент).

Так, в Вашем особом случае, ulimit (который совпадает с ulimit -Sf) говорит, что у Вас нет мягкого предела размера файлов записанным оболочкой и ее подпроцессами. (это - вероятно, хорошая идея в большинстве случаев),

Ваш другой вызов, ulimit -Hn отчеты о -n предел (максимальное количество открытых дескрипторов файлов), не -f предел, который является, почему мягкий предел кажется выше, чем жесткий предел. Если Вы входите ulimit -Hf Вы также станете 'неограниченными'.

39
27.01.2020, 19:37
  • 1
    На Linux 4.4.0, макс. файлом путь, /proc/sys/fs/file-max. скобок –  Martin Jambon 11.06.2016, 02:40

Системный вызов "select" является одним из многих ужасных дизайнерских решений unix, по сравнению с которым даже windows95 выглядит так хорошо.

Это должно было быть запрещено 20 лет назад, и тогда у нас могла бы быть возможность неограниченного количества обработчиков файлов без проблем.

Вы можете легко увеличить количество файловых дескрипторов с помощью конфигурации ядра и ulimit, НО помните, что если какая-либо библиотека использует системный вызов select, ваша программа станет нестабильной и завершится ошибкой (, если автор не узнает и не проверит, соответствует ли номер файлового дескриптора передаваемое больше, чем FD _SET _MAX и в этом случае переключается на использование poll или epoll, и в этом случае непонятно, почему это не было написано с учетом этого с самого начала ).

Select может обрабатывать только файловые дескрипторы от 0 до 1023 (или что-либо другое, установленное в FD _SET жестко закодированная константа ), и если вы подаете одно с более высоким значением, оно будет случайным образом тыкать в вашу память и выбор никогда не будет повторять дескриптор как работающий. К сожалению, многие библиотеки все еще используют select, и вы видите, что он используется во всех примерах кода и руководствах.

Ужасно и причина, по которой этот комментарий является разглагольствованием и ответом. Не могу ответить, не разозлившись.

-2
27.01.2020, 19:37

Теги

Похожие вопросы