Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применимо к:SQL Server в Linux
В этой статье рассматриваются рекомендации по настройке операционной системы и оборудования для повышения производительности для SQL Server на Linux, включая хранилище, ядро, ЦП и параметры сети.
Note
Сведения о конфигурации памяти и ограничениях памяти контейнера см. в статье Рекомендации по оптимизации производительности: память SQL Server в Linux.
- Рекомендация по настройке хранилища
- Параметры ядра и ЦП для высокой производительности
- Конфигурация SQL Server
Рекомендации по конфигурации хранилища
Подсистема хранения, в которую размещаются данные, журналы транзакций и другие связанные файлы (например, файлы контрольных точек для OLTP в памяти), должна эффективно управлять как средними, так и пиковых рабочими нагрузками.
Использование подсистемы хранения с соответствующей скоростью ввода-вывода, пропускной способностью и избыточностью
В локальных средах поставщик хранилища обычно поддерживает соответствующую конфигурацию аппаратного RAID с распределением данных по нескольким дискам, чтобы обеспечить соответствующие IOPS, пропускную способность и избыточность. Однако эта поддержка может отличаться между различными поставщиками хранилища и различными предложениями хранилища с различными архитектурами.
Для SQL Server в Linux, развернутого на виртуальных машинах Azure, рассмотрите возможность использования программного RAID, чтобы обеспечить требуемые IOPS и пропускную способность. Рекомендации по настройке SQL Server на виртуальных машинах Azure см. в статье "Настройка хранилища для SQL Server на Azure виртуальных машинах".
В следующем примере показано, как создать raid программного обеспечения в Linux на виртуальной машине Azure. Используйте соответствующее количество дисков с данными, чтобы обеспечить требуемую пропускную способность и IOPS для томов с учетом требований к данным, журналу транзакций и операциям ввода-вывода tempdb. В следующем примере восемь дисков данных подключены к виртуальной машине: четыре для размещения файлов данных, два для журналов транзакций и два для tempdb рабочей нагрузки.
Чтобы найти устройства (например, /dev/sdcдля создания RAID), используйте lsblk команду.
# 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
Логический массив представляет собой шесть дисков RAID-10 с размером полосы 64 КБ. Как вы видите:
- Для
sunit=16 blks, 16 * 4096 размер блока = 64 КБ, соответствует размеру полосы. - Для
swidth=48 blks,swidth/sunit= 3, что означает количество дисков данных в массиве, не включая диски четности.
Рекомендуемая конфигурация файловой системы
SQL Server поддерживает как файловые системы ext4, так и XFS для размещения базы данных, журналов транзакций и других файлов, таких как файлы контрольных точек для OLTP в памяти в SQL Server. Используйте файловую систему XFS для размещения SQL Server файлов данных и файлов журнала транзакций.
Форматирование тома с помощью файловой системы XFS:
mkfs.xfs /dev/md0 -f -L datavolume
mkfs.xfs /dev/md1 -f -L logvolume
mkfs.xfs /dev/md2 -f -L tempdb
Файловую систему XFS можно настроить на работу без учета регистра при создании и форматировании тома XFS. Эта конфигурация часто не используется в экосистеме Linux, но ее можно использовать по соображениям совместимости.
Например, выполните следующую команду. Используется -n version=ci для настройки файловой системы XFS для игнорирования регистра.
mkfs.xfs /dev/md0 -f -n version=ci -L datavolume
Рекомендация по файловой системе постоянной памяти
Для конфигурации файловой системы на устройствах постоянной памяти установите размер блоков основной файловой системы на 2 МБ. Дополнительные сведения см. в технических рекомендациях.
Ограничение на количество открытых файлов
В рабочей среде может потребоваться больше подключений, чем ограничение 1024 открытого файла по умолчанию (1024). Вы можете установить мягкие и жёсткие ограничения до 1048576 (1 048 576). Например, в RHEL измените /etc/security/limits.d/99-mssql-server.conf файл, чтобы иметь следующие значения:
mssql - nofile 1048576
Note
Этот параметр не применяется к службам SQL Server, запущенным systemd. Для получения дополнительной информации см. Как настроить ограничения для служб в RHEL и systemd.
Отключить дату и время последнего доступа на файловых системах для файлов данных и журналов SQL Server
Чтобы система автоматически переключяла диски после перезагрузки, добавьте их в /etc/fstab файл. Используйте UUID (универсальный уникальный идентификатор) /etc/fstab для ссылки на диск, а не только имя устройства (например /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 использует эту возможность для обеспечения эффективной и надежной производительности ввода-вывода для рабочих нагрузок Linux. Дополнительные сведения о поддержке FUA в дистрибутивах Linux и её влиянии на SQL Server см. в статье SQL Server в Linux: внутренние компоненты принудительного доступа к блокам данных (FUA).
Поддержка FUA в подсистеме ввода-вывода появилась в SUSE Linux Enterprise Server 12 с пакетом обновления 5 (SP5), Red Hat Enterprise Linux 8.0 и Ubuntu 18.04. В SQL Server 2017 (14.x) с накопительным пакетом обновления 6 и в последующих версиях используйте следующую конфигурацию, чтобы обеспечить высокую производительность и эффективность операций ввода-вывода с помощью FUA в SQL Server.
Используйте эту рекомендуемую конфигурацию, если выполнены следующие условия:
SQL Server 2017 (14.x) CU 6 и более поздние версии
Дистрибутив Linux и версия, поддерживающие возможности FUA (начиная с Red Hat Enterprise Linux 8.0, SUSE Linux Enterprise Server 12 с пакетом обновления 5 (SP5) или Ubuntu 18.04)
Note
Начиная с SQL Server 2025 (17.x), SUSE Linux Enterprise Server (SLES) не поддерживается.
Файловая система XFS для хранилища SQL Server в ядрах Linux 4.18 или более поздних версиях.
файловая система ext4 для хранилища SQL Server в ядрах Linux 5.6 или более поздних версиях.
Note
Используйте файловую систему XFS для размещения файлов данных SQL Server и файлов журнала транзакций, если версия ядра Linux ниже 5.6. Начиная с ядра версии 5.6, вы можете выбрать между XFS и ext4 в зависимости от ваших требований.
Подсистема хранилища и оборудование, поддерживающие и настроенные для возможностей FUA
Рекомендуемая конфигурация:
Включите флаг трассировки 3979 в качестве параметра запуска.
Используется
mssql-confдля настройкиcontrol.writethrough = 1иcontrol.alternatewritethrough = 0.
Для почти всех остальных конфигураций, которые не соответствуют предыдущим условиям, используйте следующую рекомендуемую конфигурацию:
Включите флаг трассировки 3982 в качестве параметра запуска (который используется по умолчанию для SQL Server в экосистеме Linux) и убедитесь, что флаг трассировки 3979 не включен в качестве параметра запуска.
Используется
mssql-confдля настройкиcontrol.writethrough = 1иcontrol.alternatewritethrough = 1.
Поддержка FUA для контейнеров SQL Server, развернутых в Kubernetes
SQL Server должен использовать сохраненное подключенное хранилище, а не
overlayfs.Хранилище должно использовать файловую систему XFS или ext4 и поддерживать FUA (ext4 не поддерживает FUA в ядре Linux до версии 5.6). Перед включением этого параметра обратитесь к поставщику дистрибутива и хранилища Linux, чтобы убедиться, что подсистема ОС и хранилища поддерживает параметры FUA. В Kubernetes вы можете запросить тип файловой системы, используя следующую команду, где
<pvc-name>— это вашPersistentVolumeClaim:kubectl describe pv <pvc-name>В выходных данных найдите
fstype, который настроен на XFS.Рабочий узел, на котором размещены модули pod SQL Server, должен использовать дистрибутив Linux и версию, которая поддерживает функцию FUA (начиная с Red Hat Enterprise Linux 8.0, SUSE Linux Enterprise Server 12 с пакетом обновления 5 (SP5) или Ubuntu 18.04.
Если выполнены предыдущие условия, используйте следующие рекомендуемые параметры FUA:
Включите флаг трассировки 3979 в качестве параметра запуска.
Используется
mssql-confдля настройкиcontrol.writethrough = 1иcontrol.alternatewritethrough = 0.
Параметры ядра и ЦП для высокой производительности
В этом разделе приводятся рекомендованные параметры ОС Linux для обеспечения высокой производительности и пропускной способности системы SQL Server. Сведения о настройке этих параметров см. в документации по дистрибутиву Linux. Вы можете использовать TuneD , как описано, для настройки множества ЦП и конфигураций ядра, описанных в следующем разделе.
Настройка параметров ядра с помощью TuneD
Для пользователей Red Hat Enterprise Linux (RHEL) профиль пропускной способности TuneD автоматически настраивает некоторые параметры ядра и ЦП (за исключением C-States). Начиная с RHEL 8.0, вы можете использовать профиль TuneD с именемmssql, который предлагает более подробные настройки производительности Linux для рабочих нагрузок SQL Server. Этот профиль основан на профиле производительности пропускной способности RHEL.
mssql Так как профиль предоставляет все его параметры, вы можете просматривать и адаптировать их для других дистрибутивов Linux или выпусков RHEL, которые не включают этот профиль.
Для SUSE Linux Enterprise Server 12 SP5, Ubuntu 18.04 и Red Hat Enterprise Linux 7.x можно вручную установить пакет tuned. Используйте его для создания и настройки mssql профиля, как описано в следующем разделе.
Note
Начиная с SQL Server 2025 (17.x), SUSE Linux Enterprise Server (SLES) не поддерживается.
Предлагаемые параметры Linux с использованием профиля TuneD mssql
В следующем примере представлена конфигурация TuneD для SQL Server на 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
Если вы используете дистрибутивы Linux с версиями ядра больше 4.18, закомментируйте следующие параметры, как показано ниже. В противном случае раскомментируйте следующие параметры, если вы используете дистрибутивы с версиями ядра до версии 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
Рекомендации в отношении параметров ЦП
В приведенной ниже таблице представлены рекомендации по параметрам ЦП.
| Setting | Value | Дополнительная информация |
|---|---|---|
| Регулятор частоты ЦП | производительность | См. описание команды cpupower |
| ENERGY_PERF_BIAS | производительность | См. описание команды x86_energy_perf_policy |
| min_perf_pct | 100 | Посмотрите документацию по Intel P-state |
| C-States | Только C1 | См. документацию по Linux или вашей системе, чтобы узнать, как установить C-States только на C1. |
При использовании TuneD, как описано, он автоматически настраивает регулятор ENERGY_PERF_BIASчастоты ЦП и min_perf_pct параметры. Он использует профиль пропускная способность-производительность в качестве основы для mssql профиля. Необходимо вручную настроить параметр C-States в соответствии с документацией, предоставленной Linux или распространителем системы.
Рекомендации в отношении параметров дисков
В приведенной ниже таблице представлены рекомендации по параметрам дисков.
| Setting | Value | Дополнительная информация |
|---|---|---|
Диск readahead |
4096 | См. blockdev команду |
| Параметры sysctl | kernel.sched_min_granularity_ns = 15000000kernel.sched_wakeup_granularity_ns = 2000000vm.dirty_ratio = 80vm.dirty_background_ratio = 3vm.swappiness = 1 |
См. описание команды sysctl |
Description
vm.swappiness: Этот параметр управляет относительным весом, отводимым для выгрузки памяти процесса выполнения по сравнению с кэшем файловой системы. Значение по умолчанию для этого параметра равно 60, которое указывает на переключение страниц памяти процесса выполнения по сравнению с удалением страниц кэша файловой системы в соотношении от 60:140. Если установить значение 1, это будет означать сильное предпочтение хранения памяти процесса выполнения в физической памяти, уменьшая кэш файловой системы. Поскольку SQL Server использует буферный пул данных в качестве кэша страниц данных и настоятельно предпочитает записывать данные непосредственно в физическое оборудование, обходя кэш файловой системы для надежного восстановления, агрессивная конфигурация параметра swappiness может быть полезна для высокопроизводительных и выделенных SQL Server.Дополнительную информацию можно найти в документации по /proc/sys/vm/ — #swappiness.
vm.dirty_*: Записи файлов SQL Server выполняются без кеширования, что удовлетворяет требованиям к целостности данных. Эти параметры позволяют обеспечивать эффективную асинхронную запись и снижать влияние операций ввода-вывода на кэширование в Linux, обеспечивая достаточно большой объем кэширования при ограничении очистки.kernel.sched_*: эти значения параметров представляют текущую рекомендацию по настройке алгоритма полностью справедливого планирования (CFS) в ядре Linux. Они улучшают пропускную способность сетевых и хранилищных ввода-вывода с учетом предостановки и возобновления потоков межпроцессного взаимодействия.
Использование профиля TuneD настраивает mssql параметры, vm.swappiness параметры и vm.dirty_* параметры. Необходимо вручную настроить параметр диска 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 (65 536), что может быть недостаточно для установки SQL Server. По этой причине измените значение vm.max_map_count как минимум до 262144 (262,144) при развертывании SQL Server. Дополнительные сведения о дальнейшей настройке этих параметров ядра см. в разделе Предлагаемые параметры Linux с использованием профиля TuneD mssql. Максимальное значение vm.max_map_count — 2147483647 2 147 483 647.
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
Или измените профиль TuneD, добавив строку: mssql
vm.transparent_hugepages=madvise
Убедитесь, что mssql профиль активен после изменения.
tuned-adm off
tuned-adm profile mssql
mssql Использование профиля TuneD настраивает transparent_hugepage этот параметр.
Рекомендации по настройке сети
Наряду с рекомендациями по хранению и ЦП рассмотрите следующие рекомендации, относящиеся к сети. Разные сетевые карты имеют разные параметры. Сведения о поставщиках сетевых адаптеров см. в руководстве по каждому из этих вариантов. Проверьте и настройте эти параметры в средах разработки перед применением их к рабочим средам. Ниже приведены примеры, а используемые команды относятся к типу сетевого адаптера и поставщику.
Настройка размера буфера сетевого порта. В примере сетевой адаптер называется
eth0, который является сетевой картой на основе Intel. Для сетевого адаптера на основе Intel рекомендуемый размер буфера составляет 4 КБ (4096). Проверьте предустановленные максимумы и настройте его с помощью следующего примера:Проверьте предустановленные максимумы с помощью следующей команды. Замените
eth0на имя вашего NIC.ethtool -g eth0Задайте для буфера
rx(получения) иtx(передачи) значение 4 КБ:ethtool -G eth0 rx 4096 tx 4096Убедитесь, что значение настроено правильно:
ethtool -g eth0Включите джамбо-фреймы. Прежде чем включать большие кадры, убедитесь, что все сетевые коммутаторы, маршрутизаторы и другие важные элементы в сетевом пути передачи пакетов между клиентами и SQL Server поддерживают большие кадры. Только после этого включение кадров увеличенного размера может повысить производительность. После включения увеличенных кадров (jumbo frames) подключитесь к 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 9014EXECUTE sp_configure 'network packet size', '8060'; GO RECONFIGURE WITH OVERRIDE; GOНастройте адаптивную объединение IRQ. По умолчанию задайте порт для адаптивного объединения RX/TX IRQ, что означает, что доставка прерываний корректируется, чтобы повысить задержку при низкой скорости пакетов и повысить пропускную способность при высокой скорости пакетов. Этот параметр может быть недоступен в сетевой инфраструктуре, поэтому просмотрите существующую сетевую инфраструктуру и убедитесь, что этот параметр поддерживается. Пример — для сетевого адаптера с именем
eth0, который является адаптером на основе Intel.Задайте порт для адаптивного объединения RX/TX IRQ:
ethtool -C eth0 adaptive-rx on ethtool -C eth0 adaptive-tx onПодтвердите параметр:
ethtool -c eth0Note
Для предсказуемого поведения в высокопроизводительных средах, таких как среды для тестирования производительности, отключите адаптивную агрегацию прерываний RX/TX IRQ, а затем задайте агрегацию прерываний RX/TX вручную. Чтобы отключить объединение запросов на прерывание RX/TX, воспользуйтесь примером команд, а затем установите конкретные значения.
Отключите адаптивное объединение RX/TX IRQ:
ethtool -C eth0 adaptive-rx off ethtool -C eth0 adaptive-tx offПодтвердите изменение:
ethtool -c eth0Установите параметры
rx-usecsиirq.rx-usecsуказывает, сколько микросекунд должно пройти после получения хотя бы одного пакета, прежде чем сгенерировать прерывание. Параметрirqуказывает соответствующие задержки при обновлении состояния при отключении прерывания. Для сетевых карт на основе Intel можно использовать следующие параметры:ethtool -C eth0 rx-usecs 100 tx-frames-irq 512Подтвердите изменение:
ethtool -c eth0Включите масштабирование на стороне получения (RSS) и по умолчанию объедините RX и TX-сторону очередей RSS. Существуют определенные сценарии, при работе с поддержкой Майкрософт, где отключение RSS также повышает производительность. Протестируйте этот параметр в тестовой среде перед его применением в рабочих средах. В следующем примере используется сетевые адаптеры Intel.
Получение предустановленных максимальных значений:
ethtool -l eth0Объедините очереди с максимальным значением, указанным в предустановке "Объединенный". В этом примере значение установлено на
8:ethtool -L eth0 combined 8Проверьте настройки:
ethtool -l eth0Настройте привязку IRQ для порта сетевого адаптера. Чтобы добиться ожидаемой производительности, путем корректировки привязки IRQ, рассмотрите несколько важных параметров, таких как обработка топологии сервера с помощью Linux, стек драйверов сетевого адаптера, параметры по умолчанию и параметр
irqbalance. Вы можете оптимизировать параметры привязки IRQ для портов сетевого адаптера, используя знания о топологии сервера, отключаяirqbalanceи используя специальные параметры, предоставляемые производителем сетевого адаптера.Следующий пример конкретной сетевой инфраструктуры Mellanox помогает объяснить конфигурацию. Дополнительные сведения о том, как скачать средства Mellanox для сетевых адаптеров Mellanox, см. в разделе "Средства настройки производительности". Команды изменяются в зависимости от среды. Обратитесь к поставщику сетевого адаптера, чтобы получить дополнительные рекомендации.
Отключите
irqbalanceили получите моментальный снимок параметров IRQ и принудительно завершите работу управляющей программы:systemctl disable irqbalance.serviceИли:
irqbalance --oneshotУбедитесь, что
common_irq_affinity.shэто исполняемый файл:chmod +x common_irq_affinity.shОтображение привязки IRQ для порта сетевого адаптера Mellanox (например,
eth0):./show_irq_affinity.sh eth0Оптимизируйте оптимальную производительность пропускной способности с помощью средства Mellanox:
./mlnx_tune -p HIGH_THROUGHPUTЗадайте аппаратную привязку к узлу NUMA, на котором физически размещены сетевой адаптер и его порт:
./set_irq_affinity_bynode.sh `\cat /sys/class/net/eth0/device/numa_node` eth0Проверьте привязку IRQ:
./show_irq_affinity.sh eth0Добавьте оптимизации объединения IRQ:
ethtool -C eth0 adaptive-rx off ethtool -C eth0 adaptive-tx off ethtool -C eth0 rx-usecs 750 tx-frames-irq 2048Проверьте параметры:
ethtool -c eth0Проверьте скорость сетевого адаптера. После внесения предыдущих изменений проверьте скорость сетевого адаптера, чтобы убедиться, что она соответствует вашим ожиданиям с помощью следующей команды:
ethtool eth0 | grep -i Speed
Расширенная конфигурация ядра и ОС
Для оптимальной производительности операций ввода-вывода хранилища используйте многоканальное планирование Linux для блочных устройств. Этот метод планирования позволяет производительности блочного слоя масштабироваться хорошо с быстрыми твердотельными дисками (SSD) и многоядерными системами. Проверьте документацию, чтобы узнать, включено ли это в вашем дистрибутиве Linux по умолчанию. В большинстве других случаев можно загрузить ядро
scsi_mod.use_blk_mq=y, чтобы активировать его. Документация по дистрибутиву Linux может иметь дополнительные рекомендации по этому параметру. Этот параметр соответствует вышестоящему ядру Linux.Поскольку при развертывании SQL Server часто используется многопутевой ввод-вывод, настройте цель многоочередности Device Mapper (DM) для использования инфраструктуры
blk-mq, включив параметр загрузки ядраdm_mod.use_blk_mq=y. Значение по умолчанию —n(отключено). Этот параметр снижает издержки блокировки на уровне диспетчера устройств (DM), когда используются базовые устройства SCSI сblk-mq. Дополнительные сведения о настройке многопатокового ввода-вывода см. в документации по дистрибутиву Linux.
Настройте файл подкачки
Во избежание проблем с нехваткой памяти правильно настройте файл подкачки. Сведения о создании файла подкачки и его правильном размере см. в документации по вашей системе Linux. Если вы планируете запускать контейнеры, включите пространство подкачки на уровне узла.
Виртуальные машины и динамическая память
Если вы выполняете SQL Server на Linux на виртуальной машине, убедитесь, что выбраны параметры, которые исправляют объем памяти, зарезервированный для виртуальной машины. Не используйте такие функции, как динамическая память Hyper-V.
конфигурация SQL Server
Выполните следующие задачи конфигурации после установки SQL Server на Linux, чтобы обеспечить оптимальную производительность приложения.
Лучшие практики
Следующие методики применяются ко всем SQL Server на Linux развертываниям.
Использование PROCESS AFFINITY для узлов и ЦП
Используйте ALTER SERVER CONFIGURATION для настройки PROCESS AFFINITY всех NUMANODEпроцессоров и ЦП, которые вы используете для SQL Server (обычно для всех NODEпроцессоров и ЦП) в ОС Linux. Сходство процессоров помогает поддерживать эффективное поведение планирования Linux и SQL.
NUMANODE Использование параметра является самым простым методом. Используйте PROCESS AFFINITY даже если на компьютере есть только один узел NUMA. Дополнительные сведения о настройке PROCESS AFFINITYсм. в ALTER SERVER CONFIGURATION статье.
Настройка нескольких tempdb файлов данных
Так как установка SQL Server на Linux не предоставляет возможность настройки нескольких tempdb файлов, рекомендуется создать несколько tempdb файлов данных после установки. Дополнительные сведения см. в рекомендациях по уменьшению конфликтов распределения в базе данных tempdb SQL Server.
Расширенная конфигурация
Сведения о параметрах конфигурации памяти, включая ограничения памяти mssql-conf, параметры cgroup, примеры настройки памяти для контейнеров Docker и рекомендации по использованию пространства подкачки, см. в статье Рекомендации по повышению производительности: память SQL Server в Linux.