Изменение параметров ядра (Linux)
В установках с полномочиями root менеджер баз данных использует формулу для автоматической настройки параметров ядра, устраняя тем самым необходимость настройки этих параметров вручную.
Прежде чем начать
Процедура
Чтобы изменить параметры ядра в Red Hat и SUSE Linux®:
- Введите командуipcs -l, чтобы получить список текущих значений параметров ядра.
-
Проанализируйте вывод команды, чтобы определить, надо ли изменять параметры ядра,
сравнив текущие значения с принудительно задаваемыми минимальными значениями в следующей таблице.
Параметр ядра IPC Принудительно устанавливаемое минимальное значение kernel.shmmni (SHMMNI) 256 * <размер оперативной памяти в Гбайтах> kernel.shmmax (SHMMAX) <размер оперативной памяти в байтах>1 kernel.shmall (SHMALL) 2 * <размер оперативной памяти в страницах с системным размером страниц по умолчанию>2 kernel.sem (SEMMNI) 256 * <размер оперативной памяти в Гбайтах> kernel.sem (SEMMSL) 250 kernel.sem (SEMMNS) 256 000 kernel.sem (SEMOPM) 32 kernel.msgmni (MSGMNI) 1 024 * <размер оперативной памяти в Гбайтах> kernel.msgmax (MSGMAX) 65 536 kernel.msgmnb (MSGMNB) 65 536 3 - Для 32-битной операционной системы Linux принудительно устанавливаемый параметр для SHMMAX ограничен значением 4 294 967 295 байт.
- SHMALL ограничивает общий объем виртуальной совместной памяти, которая может быть выделена системе. Каждый сервер данных Db2 эффективно управляет тем объемом системной памяти, который он использует; ее называют также переданная память (committed memory). Сервер данных Db2 выделяет больше виртуальной памяти, чем ему передано, чтобы поддерживать предварительное выделение памяти и динамическое управление памятью. Предварительное выделение памяти повышает производительность. Динамическое управление памятью - это процесс увеличения и сокращения действительного использования памяти в отдельных областях виртуальной памяти совместного использования. Для поддержки предварительного выделения памяти и динамического управления памятью серверам данных часто необходимо выделять в системе больший объем виртуальной памяти совместного использования, чем физический объем оперативной памяти. Но для ядра это значение задается как число страниц.
- Производительность нагрузки может увеличиться в случае большего предельного размера очереди сообщений, который задается в байтах параметром MSGMNB. Использование памяти очередью сообщений можно просмотреть, введя команду
ipcs -q. Если очереди сообщений уже достигли предельного размера или близки к нему при операциях загрузки, рассмотрите возможность увеличения предельного размера очереди сообщений.
Ниже приведен пример вывода команды ipcs с комментариями после//, указывающими названия параметров:# ipcs -l ------ Shared Memory Limits -------- max number of segments = 4096 // SHMMNI max seg size (kbytes) = 32768 // SHMMAX max total shared memory (kbytes) = 8388608 // SHMALL min seg size (bytes) = 1 ------ Semaphore Limits -------- max number of arrays = 1024 // SEMMNI max semaphores per array = 250 // SEMMSL max semaphores system wide = 256000 // SEMMNS max ops per semop call = 32 // SEMOPM semaphore max value = 32767 ------ Messages: Limits -------- max queues system wide = 1024 // MSGMNI max size of message (bytes) = 65536 // MSGMAX default max size of queue (bytes) = 65536 // MSGMNB- В первом разделе, Shared Memory Limits (Предельные значения для совместно используемой памяти),
предельное значение SHMMAX - это максимальный размер сегмента совместно используемой памяти в системе Linux. Предельное значение SHMALL - это максимальное выделение страниц совместно используемой памяти в системе.
- Рекомендуется задать для SHMMAX значение, численно равное объему физической памяти в системе. Однако минимально необходимое в системах x86 значение равно 268435456 (256 Мбайт), а в 64-битных системах - 1073741824 (1 Гбайт).
- Следующий раздел описывает количество семафоров, доступных для операционной системы. Параметр ядра sem состоит из четырех элементов: SEMMSL, SEMMNS, SEMOPM и SEMMNI. Значение SEMMNS равно произведению SEMMSL на SEMMNI. Для менеджера баз данных требуется соответственным образом увеличить число массивов (SEMMNI). Обычно значение SEMMNI должно быть вдвое больше максимального разрешенного числа ожидаемых в системе агентов, умноженного на число логических разделов на компьютере сервера баз данных плюс число соединений локальных программ с компьютером сервера баз данных.
- В третьем разделе указаны параметры сообщений в системе.
- Параметр MSGMNI влияет на число агентов; которые можно запустить, параметр MSGMAX влияет на размер сообщения, которое можно поместить в очередь, а параметр MSGMNB влияет на размер очереди. Параметр MSGMNI влияет на число агентов; которые можно запустить, параметр MSGMAX влияет на размер сообщения, которое можно поместить в очередь, а параметр MSGMNB влияет на размер очереди.
- Для параметра MSGMAX нужно задать значение 64 Кбайта (то есть 65536 байт), а значение MSGMNB нужно увеличить до 65536.
-
Измените параметры ядра, которые требуется изменить, отредактировав файл /etc/sysctl.conf. Если этот файл не существует, создайте его.
Ниже показаны примеры строк, которые нужно поместить в этот файл:
#Пример для компьютера с 16 Гбайтами оперативной памяти: kernel.shmmni=4096 kernel.shmmax=17179869184 kernel.shmall=8388608 #kernel.sem=<SEMMSL> <SEMMNS> <SEMOPM> <SEMMNI> kernel.sem=250 1024000 32 4096 kernel.msgmni=16384 kernel.msgmax=65536 kernel.msgmnb=65536 - Введите команду sysctl с параметром -p, чтобы загрузить
значения sysctl из файла по умолчанию /etc/sysctl.conf:
sysctl -p - Необязательно: Сделайте, чтобы эти изменения сохраняли силу после каждой перезагрузки:
- (SUSE Linux) Сделайте активным файл boot.sysctl.
- (Red Hat) Сценарий инициализации rc.sysinit автоматически читает файл /etc/sysctl.conf.