Рекомендации по производительности и конфигурации для SQL Server на Linux

Область применения: SQL Server (все поддерживаемые версии) — Linux

В этой статье приводятся рекомендации по повышению производительности приложений баз данных, подключающихся к SQL Server на Linux. Эти рекомендации относятся именно к платформе Linux. При этом действуют все стандартные рекомендации в отношении SQL Server, например касающиеся проектирования индекса.

Ниже приводятся рекомендации по настройке SQL Server и операционной системы (ОС) Linux.

Конфигурация ОС Linux

Чтобы обеспечить максимальную производительность системы SQL Server, рекомендуется использовать приведенные ниже параметры конфигурации ОС Linux.

Рекомендации по конфигурации хранилища

Использование подсистемы хранения с соответствующей скоростью ввода-вывода, пропускной способностью и избыточностью

Подсистема хранения, в которой размещаются данные, журналы транзакций и другие связанные файлы (например, файлы контрольных точек для выполняющейся в памяти OLTP), должна легко справляться со средней и пиковой рабочей нагрузкой. Как правило, в локальных средах поставщик хранилища поддерживает соответствующую конфигурацию аппаратного RAID-массива с чередованием между несколькими дисками для обеспечения соответствующих операций ввода-вывода в секунду, пропускной способности и избыточности. Однако эта поддержка зависит от конкретного поставщика хранилища и конкретной архитектуры системы хранения.

Для сервера SQL Server на Linux, развернутого на Виртуальных машинах Azure, рекомендуется использовать программную реализацию RAID, чтобы обеспечить выполнение требований к скорости ввода-вывода и пропускной способности. При настройке SQL Server на виртуальных машинах Azure с аналогичными рекомендациями по хранилищу см. статью Конфигурация хранилища для SQL Server виртуальных машин.

Ниже приведен пример создания программного RAID-массива в Linux на Виртуальных машинах Azure. Ниже приведен пример, но следует использовать соответствующее количество дисков данных для требуемой пропускной способности и операций ввода-вывода в секунду для томов в зависимости от требований к данным, журналам транзакций и tempdb ввода-выводам. В этом примере к виртуальной машине Azure были подключены восемь дисков данных; 4 для размещения файлов данных, 2 для журналов транзакций и 2 для рабочей нагрузки tempdb .

# To locate the devices (for example /dev/sdc) for RAID creation, use the lsblk command
# For Data volume, using 4 devices, in RAID 5 configuration with 8KB stripes
mdadm --create --verbose /dev/md0 --level=raid5 --chunk=8K --raid-devices=4 /dev/sdc /dev/sdd /dev/sde /dev/sdf

# For Log volume, using 2 devices in RAID 10 configuration with 64KB stripes
mdadm --create --verbose /dev/md1 --level=raid10 --chunk=64K --raid-devices=2 /dev/sdg /dev/sdh

# For tempdb volume, using 2 devices in RAID 0 configuration with 64KB stripes
mdadm --create --verbose /dev/md2 --level=raid0 --chunk=64K --raid-devices=2 /dev/sdi /dev/sdj

Рекомендации по разбиению дисков на разделы и их настройке

Для SQL Server рекомендуется использовать конфигурации RAID. Размер полосы (sunit) и ширина полосы развернутой файловой системы должны соответствовать геометрии RAID. Ниже приведен пример для тома журнала в файловой системе XFS.

# Creating a log volume, using 6 devices, in RAID 10 configuration with 64KB stripes
mdadm --create --verbose /dev/md3 --level=raid10 --chunk=64K --raid-devices=6 /dev/sda /dev/sdb /dev/sdc /dev/sdd /dev/sde /dev/sdf

mkfs.xfs /dev/md3 -f -L log
meta-data=/dev/md3               isize=512    agcount=32, agsize=18287648 blks
         =                       sectsz=4096  attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1
data     =                       bsize=4096   blocks=585204384, imaxpct=5
         =                       sunit=16     swidth=48 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=285744, version=2
         =                       sectsz=4096  sunit=1 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

Массив журналов представляет собой 6-дисковый RAID-10 с чередованием 64 КБ. Вы можете видеть следующее.

  • Для sunit=16 blks16 * 4096 размер блока = 64 КБ соответствует размеру полосы.
  • Для swidth=48 blks= swidth / sunit 3, то есть количество дисков с данными в массиве, за исключением дисков с четностью.

Рекомендации по настройке файловой системы

SQL Server поддерживает файловые системы EXT4 и XFS для размещения базы данных, журналов транзакций и дополнительных файлов, таких как файлы контрольных точек для выполняющейся в памяти OLTP. Корпорация Майкрософт рекомендует использовать файловую систему XFS для размещения файлов данных и журнала транзакций SQL Server.

# Formatting the volume with XFS filesystem
mkfs.xfs /dev/md0 -f -L datavolume
mkfs.xfs /dev/md1 -f -L logvolume
mkfs.xfs /dev/md2 -f -L tempdb

Примечание

При создании и форматировании тома XFS можно настроить файловую систему XFS так, чтобы она не учитывала регистр. В экосистеме Linux такая конфигурация применяется нечасто, но может потребоваться в целях совместимости.

Например: mkfs.xfs /dev/md0 -f -n version=ci -L datavolume

В этом примере параметры -n version=ci служат для настройки файловой системы XFS как не учитывающей регистр.

Рекомендации по файловой системе постоянной памяти

Для базовой файловой системы на устройствах PMEM следует настроить выделение блоков по 2 МБ. Дополнительные сведения на эту тему см. в разделе Технические вопросы.

Ограничение на открытие файла

По умолчанию ограничение на открытие файлов часто устанавливается в 1024. Для рабочей среды может потребоваться больше подключений, чем по умолчанию. Рекомендуется установить мягкое ограничение в 16 000, а жесткое — 32727. Например, в RHEL измените /etc/security/limits.d/99-mssql-server.conf файл следующим образом:

mssql hard nofile 32727
mssql soft nofile 16000

Отключение даты и времени последнего доступа к файлам данных и журналов SQL Server в файловых системах

Чтобы обеспечить автоматическое повторное подключение дисков, подключенных к системе, после перезагрузки, их необходимо добавить в файл /etc/fstab. Также для ссылки на диск настоятельно рекомендуется использовать в файле /etc/fstab идентификатор UUID (глобальный уникальный идентификатор), а не просто имя устройства (например, /dev/sdc1).

Настоятельно рекомендуется использовать атрибут с любой noatime файловой системой, используемой для хранения SQL Server файлов данных и журналов. Сведения о задании этого атрибута см. в документации по Linux. Ниже приведен noatime пример включения параметра для тома, подключенного к виртуальной машине Azure.

Запись точки подключения в /etc/fstab:

UUID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" /data1 xfs rw,attr2,noatime 0 0

В приведенном выше примере UUID представляет устройство, которое можно найти с помощью команды blkid.

SQL Server и возможность принудительного доступа к модулям (FUA) в подсистеме ввода-вывода

Некоторые версии поддерживаемых дистрибутивов Linux обеспечивают поддержку подсистемы ввода-вывода FUA, которая обеспечивает устойчивость данных. SQL Server использует функцию FUA для обеспечения высокой эффективности и надежности операций ввода-вывода для SQL Server рабочих нагрузок. Дополнительные сведения о поддержке FUA дистрибутивом Linux и ее влиянии на SQL Server см. в разделе SQL Server в Linux: внутренние функции принудительного доступа к единицам (FUA).

SUSE Linux Enterprise Server 12 с пакетом обновления 5 (SP5) и Red Hat Enterprise Linux 8.0 и более поздних версий поддерживают возможность FUA в подсистеме ввода-вывода. Если вы используете SQL Server 2017 (14.x) с накопительным пакетом обновления 6 (CU6) и более поздних версий, следует использовать следующую конфигурацию для высокопроизводительной и эффективной реализации операций ввода-вывода с помощью FUA SQL Server.

Используйте приведенную ниже рекомендуемую конфигурацию, если выполняются указанные ниже условия.

  • Использование SQL Server 2017 (14.x) с накопительным пакетом обновления 6 и более поздних версий
  • Используется дистрибутив и версия Linux, поддерживающие возможность FUA (Red Hat Enterprise Linux 8.0 или более поздней версии либо SUSE Linux Enterprise Server 12 с пакетом обновления 5 (SP5))
  • Подсистема хранения и (или) оборудование поддерживают возможность FUA и настроены для ее использования.

Рекомендуемая конфигурация

  1. Включение флага трассировки 3979 в качестве параметра запуска
  2. Используйте mssql-conf для настройки control.writethrough = 1 и control.alternatewritethrough = 0.

Для почти всех остальных конфигураций, которые не соответствуют указанным выше условиям, рекомендуется приведенная ниже конфигурация.

  1. Включите флаг трассировки 3982 в качестве параметра запуска (который используется по умолчанию для SQL Server в экосистеме Linux), при этом убедитесь, что флаг трассировки 3979 не включен в качестве параметра запуска
  2. Используйте mssql-conf для настройки control.writethrough = 1 и control.alternatewritethrough = 1.

Параметры ядра и ЦП для высокой производительности

В этом разделе приводятся рекомендованные параметры ОС Linux для обеспечения высокой производительности и пропускной способности системы SQL Server. Сведения о настройке этих параметров см. в документации по ОС Linux. Использование TuneD , как описано, помогает настроить множество ЦП и конфигураций ядра, описанных ниже.

Настройка параметров ядра с помощью TuneD

Для пользователей Red Hat Enterprise Linux (RHEL) профиль производительности TuneD настраивает некоторые параметры ядра и ЦП автоматически (за исключением состояний C). Начиная с RHEL 8.0, профиль TuneD с именем mssql был закодирован с помощью Red Hat и предлагает более точные настройки производительности Linux для SQL Server рабочих нагрузок. Этот профиль включает профиль пропускной способности RHEL, и мы представляем его определения ниже для вашей проверки с другими дистрибутивами Linux и выпусками RHEL без этого профиля.

Для SUSE Linux Enterprise Server 12 SP5, Ubuntu 18.04 и Red Hat Enterprise Linux 7.x tuned пакет можно установить вручную. Его можно использовать для создания и настройки профиля, mssql как описано ниже.

Предлагаемые параметры Linux с использованием профиля TuneD mssql
#
# A TuneD configuration for SQL Server on Linux
#

[main]
summary=Optimize for Microsoft SQL Server
include=throughput-performance

[cpu]
force_latency=5

[sysctl]
vm.swappiness = 1
vm.dirty_background_ratio = 3
vm.dirty_ratio = 80
vm.dirty_expire_centisecs = 500
vm.dirty_writeback_centisecs = 100
vm.transparent_hugepages=always
# For multi-instance SQL deployments, use
# vm.transparent_hugepages=madvise
vm.max_map_count=1600000
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
kernel.numa_balancing=0
#Note: If you are using Linux distributions with kernel versions greater than 4.18, please comment the following options as shown; otherwise, uncomment the following options if you are using distributions with kernel versions less than 4.18.
# kernel.sched_latency_ns = 60000000
# kernel.sched_migration_cost_ns = 500000
# kernel.sched_min_granularity_ns = 15000000
# kernel.sched_wakeup_granularity_ns = 2000000

Чтобы включить этот профиль TuneD, сохраните эти определения в файле в tuned.conf папке /usr/lib/tuned/mssql и включите профиль с помощью следующих команд:

chmod +x /usr/lib/tuned/mssql/tuned.conf
tuned-adm profile mssql

Проверьте, включен ли профиль, с помощью следующей команды:

tuned-adm active

или

tuned-adm list

Рекомендации в отношении параметров ЦП

В приведенной ниже таблице представлены рекомендации по параметрам ЦП.

Параметр Значение Дополнительные сведения
Регулятор частоты ЦП производительность См. описание команды cpupower
ENERGY_PERF_BIAS производительность См. описание команды x86_energy_perf_policy
min_perf_pct 100 См. документацию по режиму Intel p-state
C-States Только C1 Сведения о том, как включить только режим C1 C-States, см. в документации по Linux или вашей системе

Использование TuneD, как описано ранее, автоматически настраивает регулятор частоты ЦП, ENERGY_PERF_BIASи min_perf_pct параметры соответствующим образом из-за профиля пропускной способности и производительности, используемого mssql в качестве основы для профиля. Параметр C-States необходимо настроить вручную в соответствии с документацией, предоставляемой сообществом Linux или распространителем системы.

Рекомендации в отношении параметров дисков

В приведенной ниже таблице представлены рекомендации по параметрам дисков.

Параметр Значение Дополнительные сведения
Диск readahead 4096 См. описание команды blockdev
Параметры sysctl kernel.sched_min_granularity_ns = 15000000
kernel.sched_wakeup_granularity_ns = 2000000
vm.dirty_ratio = 80
vm.dirty_background_ratio = 3
vm.swappiness = 1
См. описание команды sysctl

Описание.

  • vm.swappiness: этот параметр управляет относительным весом, заданным для переключения памяти процесса среды выполнения по сравнению с кэшем файловой системы. Значение этого параметра по умолчанию — 60, то есть страницы выгружаются из памяти процесса среды выполнения и удаляются из кэша файловой системы в соотношении 60:140. Значение 1 указывает на то, что в физической памяти предпочтительнее сохранять процесс среды выполнения, а не кэш файловой системы. Так как SQL Server использует буферный пул в качестве кэша страниц данных и преимущественно выполняет запись в физическую память в обход кэша файловой системы для надежного восстановления, конфигурация с агрессивной подкачкой может быть выгодна для высокопроизводительных и выделенных серверов SQL Server. Дополнительные сведения см. в документации по параметру /proc/sys/vm/ — #swappiness.

  • vm.dirty_*: SQL Server доступ к файлам для записи не кешируется, что соответствует требованиям к целостности данных. Эти параметры обеспечивают высокую производительность асинхронной записи и снижают влияние операций записи с кэшированием в Linux на подсистему ввода-вывода хранилища, разрешая кэширование достаточного объема содержимого, при этом ограничивая запись на диск.

  • kernel.sched_*: эти значения параметров представляют текущую рекомендацию по настройке алгоритма полного планирования (CFS) в ядре Linux для повышения пропускной способности вызовов ввода-вывода сети и хранилища в отношении вытеснения и возобновления потоков между процессами.

mssql С помощью профиля TuneD настраиваются vm.swappinessпараметры , vm.dirty_* и kernel.sched_* . Настройка readahead для диска с помощью команды blockdev производится на уровне устройства и должна выполняться вручную.

Настройка ядра автоматической балансировки NUMA для систем NUMA с несколькими узлами

При установке SQL Server в многоузловой системе NUMA по умолчанию включен следующий kernel.numa_balancing параметр ядра. Чтобы обеспечить максимальную эффективность работы SQL Server в системе NUMA, отключите автоматическую балансировку NUMA в многоузловой системе NUMA:

sysctl -w kernel.numa_balancing=0

mssql При использовании профиля TuneD параметр настраиваетсяkernel.numa_balancing.

Параметры ядра для виртуального адресного пространства

Значение по умолчанию vm.max_map_count (65536) может быть недостаточно высоким для установки SQL Server. По этой причине измените vm.max_map_count значение по крайней мере на 262144 для развертывания SQL Server и ознакомьтесь с разделом Предлагаемые параметры Linux с помощью профиля TuneD mssql для дальнейшей настройки этих параметров ядра. Максимальное значение для vm.max_map_count равно 2147483647.

sysctl -w vm.max_map_count=1600000

mssql При использовании профиля TuneD параметр настраиваетсяvm.max_map_count.

Сохранение параметра Transparent Huge Pages (THP) во включенном состоянии

В большинстве систем Linux этот параметр конфигурации включен по умолчанию. Чтобы обеспечить максимально единообразную производительность, мы рекомендуем не отключать его. Однако в случае высокой активности страничной памяти в развертываниях SQL Server с несколькими экземплярами или при выполнении SQL Server с другими ресурсоемкими приложениями на сервере рекомендуется проверить производительность приложений после выполнения следующей команды:

echo madvise > /sys/kernel/mm/transparent_hugepage/enabled

Или измените mssql профиль TuneD с помощью строки:

vm.transparent_hugepages=madvise

И сделайте mssql профиль активным после изменения:

tuned-adm off
tuned-adm profile mssql

mssql При использовании профиля TuneD параметр настраиваетсяtransparent_hugepage.

Рекомендации по настройке сети

Как и в случае с хранилищем и ЦП, существуют рекомендации в отношении сети. Они приведены ниже для справки. Указанные ниже параметры доступны не для всех сетевых карт. За указаниями обратитесь к поставщику конкретной сетевой карты. Протестируйте эти настройки в среде разработки перед их применением в рабочей среде. Параметры сопровождаются примерами, а используемые команды относятся к конкретному типу и поставщику сетевой карты.

  1. Настройка размера буфера для сетевого порта. В приведенном ниже примере сетевая карта называется eth0. Это сетевая карта Intel. Для сетевого адаптера на основе Intel рекомендуемый размер буфера составляет 4 КБ (4096). Проверьте предварительно установленные максимальные значения и выполните настройку с помощью приведенных ниже примеров команд.

    #To check the pre-set maximums please run the command, example NIC name used here is:"eth0"
    ethtool -g eth0
    #command to set both the rx (receive) and tx (transmit) buffer size to 4 KB.
    ethtool -G eth0 rx 4096 tx 4096
    #command to check the value is properly configured is:
    ethtool -g eth0
    
  2. Включить jumbo кадры. Перед включением jumbo-кадров убедитесь, что все сетевые коммутаторы, маршрутизаторы и все необходимые компоненты в пути сетевых пакетов между клиентами и SQL Server поддерживают jumbo-кадры. Только в этом случае включение jumbo-кадров может повысить производительность. После включения jumbo-кадров подключитесь к SQL Server и измените размер сетевого пакета на 8060 с помощью sp_configure, как показано ниже.

    #command to set jumbo frame to 9014 for a Intel NIC named eth0 is
    ifconfig eth0 mtu 9014
    #verify the setting using the command:
    ip addr | grep 9014
    
    EXEC sp_configure 'network packet size', '8060';
    GO
    RECONFIGURE WITH OVERRIDE;
    GO
    
  3. По умолчанию рекомендуется задать порт для объединения запросов на прерывание RX/TX. В результате доставка прерываний будет корректироваться в направлении оптимизации задержки при низкой скорости передачи пакетов или повышения пропускной способности при высокой скорости их передачи. Этот параметр может быть доступен не во всех разных сетевых инфраструктурах, поэтому просмотрите существующую сетевую инфраструктуру и убедитесь, что она поддерживается. В приведенном ниже примере сетевая карта называется eth0. Это сетевая карта Intel.

    #command to set the port for adaptive RX/TX IRQ coalescing
    ethtool -C eth0 adaptive-rx on
    ethtool -C eth0 adaptive-tx on
    #confirm the setting using the command:
    ethtool -c eth0
    

    Примечание

    Для предсказуемого поведения в высокопроизводительных средах, таких как среды для тестирования производительности, отключите адаптивное объединение запросов на прерывание RX/TX, а затем задайте его вручную. Для заданий значений воспользуйтесь примерами команд для отключения объединения запросов на прерывание RX/TX.

    #commands to disable adaptive RX/TX IRQ coalescing
    ethtool -C eth0 adaptive-rx off
    ethtool -C eth0 adaptive-tx off
    #confirm the setting using the command:
    ethtool -c eth0
    #Let us set the rx-usecs parameter which specify how many microseconds after at least 1 packet is received before generating an interrupt, and the [irq] parameters are the corresponding delays in updating the #status when the interrupt is disabled. For Intel bases NICs below are good values to start with:
    ethtool -C eth0 rx-usecs 100 tx-frames-irq 512
    #confirm the setting using the command:
    ethtool -c eth0
    
  4. Мы также рекомендуем включить RSS (масштабирование на стороне получения) и по умолчанию объединить RX и TX очереди RSS. В некоторых случаях обращений в службу поддержки Майкрософт отключение RSS также приводило к повышению производительности. Протестируйте этот параметр в тестовой среде перед его применением в рабочих средах. Ниже приведен пример команды для сетевых карт Intel.

    #command to get pre-set maximums
    ethtool -l eth0
    #note the pre-set "Combined" maximum value. let's consider for this example, it is 8.
    #command to combine the queues with the value reported in the pre-set "Combined" maximum value:
    ethtool -L eth0 combined 8
    #you can verify the setting using the command below
    ethtool -l eth0
    
  5. Сходство запросов на прерывание для портов сетевой карты Чтобы добиться ожидаемой производительности путем настройки сходства запросов на прерывание, можно воспользоваться рядом важных параметров, в том числе относящихся к серверной топологии в Linux и стеку драйверов сетевой карты, а также параметрами по умолчанию и параметром irqbalance. Оптимизация параметров сходства запросов на прерывание для портов сетевой карты выполняется с учетом топологии сервера, предусматривает отключение параметра irqbalance и использование параметров конкретного поставщика сетевой карты.

    Ниже приведен пример для сетевой инфраструктуры Mellanox. Дополнительные сведения см. в статье Инструменты настройки производительности для сетевых адаптеров Mellanox. Команды будут изменяться в зависимости от среды. За дополнительными инструкциями обратитесь к поставщику сетевой карты.

    #disable irqbalance or get a snapshot of the IRQ settings and force the daemon to exit
    systemctl disable irqbalance.service
    #or
    irqbalance --oneshot
    
    #download the Mellanox mlnx tools -- see https://support.mellanox.com/s/article/MLNX2-117-2523kn
    
    #be sure, common_irq_affinity.sh is executable. if not,
    #chmod +x common_irq_affinity.sh
    
    #display IRQ affinity for Mellanox NIC port; e.g eth0
    ./show_irq_affinity.sh eth0
    
    #optimize for best throughput performance with a Mellanox tool
    ./mlnx_tune -p HIGH_THROUGHPUT
    
    #set hardware affinity to the NUMA node hosting physically the NIC and its port
    ./set_irq_affinity_bynode.sh `\cat /sys/class/net/eth0/device/numa_node` eth0
    
    #verify IRQ affinity
    ./show_irq_affinity.sh eth0
    
    #add IRQ coalescing optimizations
    ethtool -C eth0 adaptive-rx off
    ethtool -C eth0 adaptive-tx off
    ethtool -C eth0  rx-usecs 750 tx-frames-irq 2048
    
    #verify the settings
    ethtool -c eth0
    
  6. После внесения указанных выше изменений проверьте скорость работы сетевой карты с помощью следующей команды:

    ethtool eth0 | grep -i Speed
    

Дополнительная расширенная конфигурация ядра или ОС

  • Для обеспечения максимальной производительности ввода-вывода хранилища в Linux рекомендуется использовать планирование на основе нескольких очередей для блочных устройств. Это позволяет эффективно масштабировать производительность на блочном уровне при использовании быстрых твердотельных накопителей (SSD) и многоядерных систем. Чтобы узнать, включена ли эта функция по умолчанию в вашем дистрибутиве Linux, обратитесь к документации. В большинстве других случаев загрузка ядра с scsi_mod.use_blk_mq=y включает его, хотя документация по используемому дистрибутиву Linux может содержать дополнительные рекомендации по нему. Это согласуется с основным ядром Linux.

  • Так как для развертываний SQL Server часто используются операции ввода-вывода с несколькими путими, для целевого объекта сопоставления устройств (DM) с несколькими очередями также следует настроить использование blk-mq инфраструктуры, включив dm_mod.use_blk_mq=y параметр загрузки ядра. Значение по умолчанию — n (отключено). Когда базовые устройства SCSI используют blk-mq, этот параметр сокращает затраты на блокировку на уровне DM. Дополнительные рекомендации по настройке см. в документации по используемому дистрибутиву Linux.

Настройка файла подкачки

Во избежание проблем с нехваткой памяти правильно настройте файл подкачки. Сведения о создании файла подкачки и его правильном размере см. в документации по вашей системе Linux.

Виртуальные машины и динамическая память

Если SQL Server на Linux выполняется в виртуальной машине, настройте фиксированный размер памяти, резервируемой для виртуальной машины. Не используйте такие функции, как динамическая память Hyper-V.

Конфигурация SQL Server

Чтобы обеспечить максимальную производительность, рекомендуется выполнить описанные ниже задачи по настройке после установки SQL Server на Linux.

Рекомендации

  • Использование PROCESS AFFINITY для узлов и ЦП

    Рекомендуется использовать ALTER SERVER CONFIGURATION , чтобы задать PROCESS AFFINITY для всех NUMANODEпроцессоров и (или) ЦП, которые вы используете для SQL Server (как правило, для всех NODEs и ЦП) в ОС Linux. Соответствие процессоров помогает эффективно планировать работу Linux и SQL. NUMANODE Использование параметра является простейшим методом. Используйте, PROCESS AFFINITY даже если на компьютере есть только один узел NUMA. Дополнительные сведения о настройке PROCESS AFFINITYсм. в статье ALTER SERVER CONFIGURATION .

  • Настройка нескольких tempdb файлов данных

    Так как установка SQL Server на Linux не позволяет настроить несколько tempdb файлов, рекомендуется рассмотреть возможность создания нескольких tempdb файлов данных после установки. Дополнительные сведения см. в статье Рекомендации по сокращению состязания за выделяемые ресурсы в базе данных tempdb SQL Server.

Расширенная конфигурация

Ниже приведены рекомендации по дополнительным параметрам конфигурации, которые можно настроить после установки SQL Server на Linux. Их выбор зависит от требований рабочей нагрузки и конфигурации ОС Linux.

  • Настройка предельного объема памяти с помощью mssql-conf

    Чтобы обеспечить достаточный объем свободной физической памяти для ОС Linux, процесс SQL Server по умолчанию использует только 80 % физического ОЗУ. В некоторых системах с большим размером ОЗУ 20 % может быть очень много. Например, в системе с 1 ТБ ОЗУ при настройке по умолчанию неиспользуемыми остаются приблизительно 200 ГБ ОЗУ. В таком случае может быть желательно установить более высокий предел памяти. См. документацию по средству mssql-conf и параметру memory.memorylimitmb, который определяет объем памяти, доступный SQL Server (в МБ).

    При изменении этого параметра будьте осторожны. Не задавайте слишком большое значение. Если памяти будет недостаточно, могут возникнуть проблемы в работе ОС Linux и других приложений Linux.

Дальнейшие действия