Сколько процессов, файлов и т.д. может поддерживать система
Статья включает:
ЗОСРВ «Нейтрино» основана на микроядре, поэтому те ограничения, которые в других операционных системах были бы связаны с ядром, в данном случае будут зависеть только от того или иного менеджера ресурсов, реализующего соответствующую службу в ЗОСРВ «Нейтрино». Особенно это относится к файловым системам и тем случаям, когда одновременно используются несколько разных файловых систем.
Многие ресурсы зависят от объема доступной памяти. Другие лимиты зависят от целевой системы. Например, виртуальное адресное пространство для процесса при исполнении в 32-разрядном режиме работы ядра может составлять от 32 Мбайт на архитектуре ARM
до 3,5 Гбайт на архитектуре x86
. В 64-разрядном режиме работы ядра эти значения существенно увеличиваются.
Некоторые ограничения появляются в результате комплексного взаимодействия нескольких факторов. Если просто привести простые и очевидные значения граничных параметров без указания их взаимодействий, то это может ввести в заблуждение. Описание же всех взаимодействий может быть запутанным. Ключевым моментом, который нужно иметь в виду при чтении данного раздела, является то, что с конкретным ограничением может быть связано много дополнительных факторов.
Когда вы пытаетесь выяснить ограничения для системы, то нужно рассмотреть конфигурационные лимиты (configurable limit
) — специальные переменные с атрибутами "только чтение", в которых сохраняется системная информация.
В ЗОСРВ «Нейтрино» поддерживаются также конфигурационные строки (configurable string ), которые похожи на переменные окружения и часто используются совместно с ними. Подробнее об этом см. раздел Настройка параметров окружения и оболочки. |
Получить значения конфигурационных лимитов или строк можно с помощью утилиты getconf (POSIX). Поскольку утилита getconf относится к интерфейсу POSIX, то ее можно использовать в сценариях вместо жестко запрограммированных в ЗОСРВ «Нейтрино» значений лимитов, что позволяет адаптировать сценарии к другим конфигурационным параметрам POSIX. Некоторые конфигурационные лимиты связаны с путями. Их имена начинаются с префикса "_PC_". Когда вы запрашиваете значения этих параметров, то при запросе должен быть указан путь (см. подраздел "Лимиты файловой системы" далее). Например, для получения максимальной длины для имени файла нужно ввести:
getconf _PC_NAME_MAX имя_для_пути
Другие ограничения связаны с системой в целом. Имена этих параметров начинаются с "_SC_", и при их извлечении указание пути не требуется. Например, для получения максимального числа файлов, которые может открывать процесс, нужно ввести команду:
getconf _SC_OPEN_MAX
Вообще говоря, значения конфигурационных лимитов вы изменять не можете. Они называются "конфигурируемыми", потому что их значения могут изменяться системой. В библиотеках ЗОСРВ «Нейтрино» имеется несколько различных функций, которые можно использовать в программах для работы со значениями конфигурационных лимитов, связанных с конфигурацией:
Приведенные далее лимиты относятся ко всей системе в целом (по группам системных объектов):
Ассоциированные с процессом лимиты:
Приоритет с номером 0 используется для потока ожидания. По умолчанию приоритеты с номерами более 64 относятся к категории привилегированных, поэтому использовать их могут только пользователи с ID=0 (т.е. имеющие учетную запись root
). Остальным пользователям доступны приоритеты от 1 до 63.
Изменить диапазон привилегированных приоритетов можно с помощью ключа -P ядра операционной системы procnto.
Полное число файловых дескрипторов жестко ограничено значением 32 767 для каждого процесса, но, скорее всего, ограничение будет задано с помощью ключа -F ядра операционной системы procnto или системной переменной RLIMIT_NOFILE. Значение по умолчанию равно 1000, минимальное значение равно 100.
Имейте в виду, что файловые дескрипторы используются сокетами, именованными семафорами, очередями сообщений, идентификаторами соединений (coids ). |
Для того чтобы получить установленное в текущий момент времени значение для этого параметра, используйте встроенную команду ulimit или вызовите библиотечную процедуру getrlimit().
Не существует никаких ограничений на количество мьютексов (mutex
) и переменных для условий (condvars
). Нет также ограничений на количество непоименованных семафоров, но количество именованных семафоров ограничивается числом доступных дескрипторов (см. подраздел "Файловые дескрипторы" далее в этой статье).
Число открытых соединений и сокетов ограничивается только доступной памятью и максимальным числом файловых дескрипторов на каждый процесс (см. подраздел "Файловые дескрипторы" далее в этой статье).
Число областей разделяемой памяти ограничено разрешенным виртуальным адресным пространством, которое зависит от архитектуры целевой системы. См. описание ресурсных переменных RLIMIT_AS и RLIMIT_DATA для библиотечной процедуры setrlimit() в руководстве по библиотекам справочной системы комплекта разработчика ЗОСРВ «Нейтрино».
Количество очередей сообщений ограничено числом доступных файловых дескрипторов (см. подраздел "Файловые дескрипторы" далее в этой статье).
Установленное по умолчанию максимальное число записей в очереди и установленный по умолчанию максимальный размер записи для очереди зависит от того, используете вы для реализации очереди традиционный подход ( mqueue) или альтернативный ( mq).
Атрибут | Традиционный подход | Альтернативный подход |
---|---|---|
Число записей | 1024 | 64 |
Размер сообщения | 4096 | 256 |
Более подробно об этом см. описание команд mqueue и mq и описание функции mq_open().
Предельные значения
Архитектура | Режим работы ядра ОС | ЦПУ¹ | Размер ОЗУ | Виртуальное адресное пространство² |
---|---|---|---|---|
x86 | 32-разрядный | 32 | 64 Gb (36-битовая адресация) | 3,5 Gb |
PPC | 32-разрядный | 8 | 64 Gb (36-битовая адресация) | 3 Gb |
MIPS | 32-разрядный | 8 | 1 Tb (40-битовая адресация) | 2 Gb |
ARMv6 | 32-разрядный | 1 | 512 Mb (32-битовая адресация)³ | 2 Gb |
ARMv7 | 32-разрядный | 16 | 4 Gb (32-битовая адресация)³ | 2 Gb |
Aarch64 | 64-разрядный | 32 | 256 Tb (48-битовая адресация) | 512 Gb |
E2K | 64-разрядный | 32 | 1 Tb (40-битовая адресация) | 512 Gb |
¹ – применяемое оборудование может определять дополнительные лимиты на количество ЦПУ.
² — приведены абсолютные максимальные лимиты для виртуального адресного пространства. Эти значения можно уменьшить, изменив параметр RLIMIT_AS с помощью функции setrlimit(). ³ – 32-битная адресация устанавливает 4 Гб пространства данных, но оно не может быть все использовано для RAM системы на некоторых платформах. Некоторое количество пространства данных зарезервировано для устройств, и некоторые платформы могут накладывать ограничения. |
Минимальные системные требования
Для успешного выполнения встраиваемой конфигурации:
Архитектура | Размер ОЗУ | Размер ПЗУ для хранения загрузочного образа ОС |
---|---|---|
x86 | 32 Mb | 6 Mb |
PPC | 16 Mb | 8 Mb |
MIPS | 8 Mb | 4 Mb |
ARMv6 | 8 Mb | 4 Mb |
ARMv7 | 8 Mb | 4 Mb |
Aarch64 | 64 Mb | 6 Mb |
E2K | 256 Mb | 16 Mb |
Для возможности использовать инсталлятор:
Архитектура | Размер ОЗУ | Размер ОЗУ для Live DVD | Место на носителе для системных файлов |
---|---|---|---|
x86 | 32 Mb | 80 Mb | 450 Mb (только базовые компоненты) / 800 Mb (полная установка) |
E2K | 256 Mb | 256 Mb | 850 Mb (только базовые компоненты) / 1650 Mb (полная установка) |
Файловые системы в ЗОСРВ «Нейтрино» не являются частью ядра или базовых компонентов операционной системы. Файловые системы представляют собой отдельно загружаемые процессы или библиотеки. Под этим понимается следующее:
В последующих разделах будут приведены ограничения для поддерживаемых файловых систем. Имейте в виду следующее:
Вы можете узнать конфигурационные лимиты, имеющие отношение к путевому имени, чтобы выяснить свойства и лимиты, присущие конкретной файловой системе. Далее приводятся обозначения и описание переменных, задающих лимиты:
null
); null
); -1
), то это означает, что использование функции chown() ограничено процессами с соответствующими привилегиями и изменениями группового ID файла на эффективный групповой ID процесса или на один из его дополнительных групповых ID; -1
), то это означает, что при использовании компонентов имени для пути длиннее, чем значение, заданное константой _PC_NAME_MAX, приведет к сообщению об ошибке; -1
), то ее значение соответствует специальному символу, который может использоваться для индивидуального отключения специальных управляющих символов в структуре struct termios. Дополнительная информация приведена в разделе "Конфигурационные лимиты" ранее в этой статье.
Далее приведены лимиты для файловых систем QNX4:
.longfilenames
(подробнее об этом см. в описании файловой системы QNX4 в подразделе Имена файлов);
Лимиты для файловой системы Power-Safe:
Далее приведены лимиты для файловых систем Linux Ext2:
Далее приведены лимиты для файловых систем DOS FAT12/16/32:
В перечисленных файловых системах не поддерживается установка прав доступа к файлам, но эту функцию можно эмулировать.
Далее приведены лимиты для файловых систем CD-ROM (ISO 9660):
Взамен fs-cd.so лучше использовать драйвер fs-udf.so, поддерживающий файловую систему ISO-9660 в дополнение к UDF. Дополнительную информацию о лимитах UDF, см. в подразделе "Файловая система UDF" далее. |
Далее приведены лимиты для файловых систем NFS2 и NFS3:
Далее приведены лимиты для файловых систем CIFS:
Файловая система CIFS не поддерживает использование функций chmod или chown.
Далее приведены лимиты для встраиваемых файловых систем (для флэш-памяти):
Записи для файлов, каталогов и файловых экстентов представляют собой связанные списки. Чем длиннее список, тем больше времени требуется для поиска места, где нужно присоединить данные или получить связанную с файлом статистику.
Лимиты встраиваемой транзакционной файловой системы ETFS:
Для флеш-памяти NAND существуют дополнительные лимиты:
Для ETFS на NAND необходимо выполнить программную кодировку 1-битной коррекции ошибок (ECC) для данных в резервной области. Поддерживаемые конфигурации доступны для:
Установлено, что резервная область получает значение ECC от devio_postcluster(), и после этого записывает его на устройство памяти NAND. Для определения соответствующего размера значения ECC необходимо использовать следующее:
Для установки приоритета резервной области необходимо выполнить следующие изменения для BSP:
|
Лимиты для файловой системы UDF:
Какие-либо действия в файловой системе с использованием fs-udf.so запрещены. Данная файловая система доступна только для чтения.
Лимиты для Apple Macintosh HFS (Hierarchical File System) и HFS Plus:
Какие-либо действия в файловой системе с использованием fs-mac.so запрещены. Данная файловая система доступна только для чтения.
Лимиты для файловой системы Windows:
Данная файловая система доступна только для чтения.
Предыдущий раздел: перейти