Как определяются значения параметров ядра? - PullRequest
0 голосов
/ 30 марта 2019

Я пытаюсь установить Oracle 11g на машину Oracle Linux 7.6.Так как предварительные требования к деталям проверяют, как определяются значения параметров ядра.Потому что я вижу неожиданные значения для максимального размера сегмента.

На каком основании значения будут назначены этим параметрам.

max seg size (kbytes) = 18014398509465599
max total shared memory (kbytes) = 18014398442373116

Объем оперативной памяти моего ноутбука составляет 8 ГБ.

Пожалуйста, помогите мне в этом.

Спасибо, Чи

[chy@myserver ~]$ ipcs -l

------ Messages Limits --------
max queues system wide = 32000
max size of message (bytes) = 8192
default max size of queue (bytes) = 16384

------ Shared Memory Limits --------
max number of segments = 4096
max seg size (kbytes) = 18014398509465599
max total shared memory (kbytes) = 18014398442373116
min seg size (bytes) = 1

------ Semaphore Limits --------
max number of arrays = 32000
max semaphores per array = 32000
max semaphores system wide = 1024000000
max ops per semop call = 500
semaphore max value = 32767

1 Ответ

0 голосов
/ 31 марта 2019

Числа в выводе ipcs -l, которые вы видите, являются значениями по умолчанию (неизменными) значений этих параметров, которые жестко заданы в самом ядре.

Когда ядро ​​ создает пространство имен IPC (эти параметры определены для каждого пространства имен), оно инициализирует его , а устанавливает ограничения по умолчанию , которые определены здесь следующим образом:

#define SHMMIN 1                         /* min shared seg size (bytes) */
#define SHMMNI 4096                      /* max num of segs system wide */
#define SHMMAX (ULONG_MAX - (1UL << 24)) /* max shared seg size (bytes) */
#define SHMALL (ULONG_MAX - (1UL << 24)) /* max shm system wide (pages) */
#define SHMSEG SHMMNI                    /* max shared segs per process */

Как видите, эти значения по умолчанию не зависят от фактического размера вашей оперативной памяти. Что касается значения по умолчанию максимального размера общего сегмента, SHMMAX - оно определяется как ULONG_MAX - (1UL << 24) (то есть зависит только от максимального размера unsigned long), которое после оценки (в окне x86_64) дает 18446744073692774399 в байтах, то есть 18014398509465599 в килобайтах, и это именно то число, которое вы видите в строке max seg size (kbytes) вывода ipcs -l.

Вас не должно смущать тот факт, что это значение больше, чем ваш физический объем ОЗУ - все это о виртуальной памяти, которая намного больше, чем физическая ОЗУ .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...