Osvědčené postupy z hlediska výkonu: Úložiště, jádro, procesor a síť pro SQL Server on Linux

Platí pro:SQL Server na Linuxu

Tento článek se zabývá doporučeními pro konfiguraci operačního systému a hardwaru pro maximalizaci výkonu pro SQL Server on Linux, včetně úložiště, jádra, procesoru a nastavení sítě.

Note

Informace o limitech konfigurace paměti a paměti kontejnerů najdete v tématu Osvědčené postupy týkající se výkonu: SQL Server paměti v Linuxu.

Doporučení konfigurace úložiště

Subsystém úložiště, který hostuje data, transakční protokoly a další přidružené soubory (například soubory kontrolních bodů pro OLTP v paměti), by měl správně spravovat průměrné i špičky úloh.

Použití subsystému úložiště s příslušnými vstupně-výstupními operacemi za sekundu, propustností a redundancí

V místních prostředích dodavatel úložiště obvykle podporuje odpovídající hardwarovou konfiguraci RAID s prokládáním přes více disků, aby se zajistilo odpovídající IOPS, propustnost a redundantnost. Tato podpora se ale může lišit v různých dodavatelích úložiště a různých nabídkách úložiště s různými architekturami.

U SQL Server on Linux nasazených na Azure Virtual Machines zvažte použití softwarového pole RAID k zajištění odpovídajících IOPS a propustnosti. Důležité informace o úložišti při konfiguraci SQL Server na Azure virtuálních počítačích najdete v tématu Konfigurace úložiště pro SQL Server na virtuálních počítačích Azure.

Následující příklad ukazuje, jak vytvořit software RAID v Linuxu na virtuálním počítači Azure. Pro svazky založené na požadavcích na data, transakční protokol a tempdb V/V použijte odpovídající počet datových disků pro požadovanou propustnost a IOPS. V následujícím příkladu je k virtuálnímu počítači připojeno osm datových disků: čtyři pro hostování datových souborů, dva pro transakční protokoly a dvě pro tempdb úlohy.

K vyhledání zařízení (například /dev/sdc) pro vytvoření RAID použijte lsblk příkaz.

# 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

Doporučení pro dělení disku a konfigurace

Pro SQL Server použijte konfiguraci RAID. Nasazená jednotka prokládání systému souborů (sunit) a šířka pruhu odpovídají geometrii RAID. Následující příklad ukazuje konfiguraci založenou na systému XFS pro svazek protokolu.

# 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

Pole protokolů je šesti-diskový RAID-10 s stripem o velikosti 64 kB. Jak vidíte:

  • Velikost sunit=16 blksbloku 16 * 4096 = 64 kB odpovídá velikosti pruhu.
  • Pro swidth=48 blks, swidth / sunit = 3, což je počet disků pro ukládání dat v poli s výjimkou paritních disků.

SQL Server podporuje systémy souborů ext4 i XFS pro hostování databáze, transakčních protokolů a dalších souborů, jako jsou soubory kontrolních bodů pro OLTP v paměti na SQL Serveru. K hostování souborů SQL Server dat a souborů transakčních protokolů použijte systém souborů XFS.

Naformátujte svazek pomocí systému souborů XFS:

mkfs.xfs /dev/md0 -f -L datavolume
mkfs.xfs /dev/md1 -f -L logvolume
mkfs.xfs /dev/md2 -f -L tempdb

Systém souborů XFS můžete nakonfigurovat tak, aby při vytváření a formátování svazku XFS nerozlišovali malá a velká písmena. Tato konfigurace se v ekosystému Linuxu často nepoužívá, ale můžete ji použít z důvodů kompatibility.

Spusťte například následující příkaz. Slouží -n version=ci ke konfiguraci systému souborů XFS, aby nerozlišoval malá a velká písmena.

mkfs.xfs /dev/md0 -f -n version=ci -L datavolume

Doporučení systému souborů trvalé paměti

Pro konfiguraci systému souborů na zařízeních s trvalou pamětí nastavte přidělení bloku pro příslušný systém souborů na 2 MB. Další informace najdete v tématu Technické aspekty.

Otevřít omezení souborů

Vaše produkční prostředí může vyžadovat více připojení, než je výchozí limit 1024 otevřených souborů (1 024). Můžete nastavit měkké a pevné limity na 1048576 (1 048 576). Například v RHEL upravte /etc/security/limits.d/99-mssql-server.conf soubor tak, aby měl následující hodnoty:

mssql - nofile 1048576

Note

Toto nastavení se nevztahuje na služby SQL Serveru spuštěné nástrojem systemd. Další informace naleznete v tématu Jak nastavit limity pro služby v RHEL a systemd.

Zakázání data a času posledního přístupu na filesystémech pro datové a protokolové soubory SQL Serveru

Chcete-li zajistit, aby systém po restartu automaticky znovu připojil disky, přidejte je do souboru /etc/fstab. Používejte UUID (Universally Unique Identifier) /etc/fstab k odkazování na jednotku, místo abyste použili pouze název zařízení (například /dev/sdc1).

noatime Použijte atribut s jakýmkoli systémem souborů, který ukládá data SQL Serveru a soubory protokolů. Informace o nastavení tohoto atributu najdete v dokumentaci k Linuxu. Následující příklad ukazuje, jak povolit noatime možnost pro svazek připojený k virtuálnímu počítači Azure.

Záznam přípojného bodu v /etc/fstab:

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

V předchozím příkladu UUID představuje zařízení, které můžete najít pomocí blkid příkazu.

Funkce I/O subsystému SQL Server a vynucený přístup k jednotkám (FUA)

Některé podporované linuxové distribuce implementují vynucený přístup k jednotce (FUA) na úrovni subsystému vstupně-výstupních operací, aby se zajistila stálost dat. SQL Server tuto funkci využívá k zajištění efektivního a spolehlivého výkonu vstupně-výstupních operací pro linuxové úlohy. Další informace o podpoře FUA napříč linuxovými distribucemi a jejím účinkem na SQL Server najdete v tématu SQL Server v Linuxu: Interní informace o vynuceném přístupu k jednotce (FUA).

Podpora FUA v subsystému vstupně-výstupních operací byla zavedena v systému SUSE Linux Enterprise Server 12 SP5, Red Hat Enterprise Linux 8.0 a Ubuntu 18.04. V SQL Serveru 2017 (14.x) CU 6 a novějších verzích použijte následující konfiguraci k povolení vysoce výkonných a efektivních vstupně-výstupních operací s FUA na SQL Serveru.

Tuto doporučenou konfiguraci použijte, pokud jsou splněny následující podmínky:

  • SQL Server 2017 (14.x) CU 6 a novější verze

  • Distribuce a verze Linuxu, která podporuje funkci FUA (počínaje verzí Red Hat Enterprise Linux 8.0, SUSE Linux Enterprise Server 12 SP5 nebo Ubuntu 18.04)

    Note

    Od verze SQL Server 2025 (17.x) se nepodporuje SUSE Linux Enterprise Server (SLES).

  • Systém souborů XFS pro úložiště SQL Serveru v linuxovém jádru 4.18 nebo novějších verzích.

  • Systém souborů ext4 pro úložiště SQL Serveru v linuxovém jádru 5.6 nebo novějších verzích.

    Note

    Systém souborů XFS slouží k hostování souborů SQL Serveru a souborů transakčních protokolů, pokud je verze jádra Linuxu nižší než 5.6. Počínaje jádrem verze 5.6 si můžete vybrat mezi XFS a ext4 na základě vašich konkrétních požadavků.

  • Subsystém úložiště a hardware, který podporuje a je nakonfigurovaný pro funkce FUA

Doporučená konfigurace:

  1. Povolte příznak trasování 3979 jako spouštěcí parametr.

  2. Slouží mssql-conf ke konfiguraci control.writethrough = 1 a control.alternatewritethrough = 0.

Pro téměř všechny ostatní konfigurace, které nesplňují předchozí podmínky, použijte následující doporučenou konfiguraci:

  1. Povolte příznak trasování 3982 jako spouštěcí parametr (což je výchozí hodnota pro SQL Server v ekosystému Linuxu) a ujistěte se, že příznak trasování 3979 není povolený jako spouštěcí parametr.

  2. Slouží mssql-conf ke konfiguraci control.writethrough = 1 a control.alternatewritethrough = 1.

Podpora FUA pro kontejnery SQL Serveru nasazené v Kubernetes

  1. SQL Server musí používat trvalé připojené úložiště, a nikoli overlayfs.

  2. Úložiště musí používat systémy souborů XFS nebo ext4 a měly by podporovat FUA (ext4 nepodporuje FUA v linuxovém jádru starším než verze 5.6). Před povolením tohoto nastavení ve spolupráci s dodavatelem linuxové distribuce a úložiště se ujistěte, že operační systém a subsystém úložiště podporují možnosti FUA. V Kubernetes můžete zadat dotaz na typ systému souborů pomocí následujícího příkazu, kde <pvc-name> je vaše PersistentVolumeClaim:

    kubectl describe pv <pvc-name>
    

    Ve výstupu vyhledejte fstype, která je nastavená na XFS.

  3. Pracovní uzel hostující pody SQL Serveru by měl používat distribuci a verzi Linuxu, která podporuje funkci FUA (počínaje red hat Enterprise Linuxem 8.0, SUSE Linux Enterprise Serverem 12 SP5 nebo Ubuntu 18.04).

Pokud jsou splněny předchozí podmínky, použijte následující doporučená nastavení FUA:

  1. Povolte příznak trasování 3979 jako spouštěcí parametr.

  2. Slouží mssql-conf ke konfiguraci control.writethrough = 1 a control.alternatewritethrough = 0.

Nastavení jádra a procesoru pro vysoký výkon

Následující část popisuje doporučené nastavení operačního systému Linux související s vysokým výkonem a propustností pro instalaci SQL Serveru. Informace o konfiguraci těchto nastavení najdete v dokumentaci k distribuci Linuxu. Pomocí tuneD můžete nakonfigurovat mnoho konfigurací procesorů a jader popsaných v další části.

Konfigurace nastavení jádra pomocí TuneD

U uživatelů Red Hat Enterprise Linuxu (RHEL) profil tuneD propustnosti automaticky konfiguruje některá nastavení jádra a procesoru (s výjimkou C-States). Počínaje verzí RHEL 8.0 můžete použít profil TuneD s názvemmssql, který nabízí jemné ladění výkonu související s Linuxem pro SQL Server úlohy. Tento profil vychází z profilu výkonu propustnosti RHEL. mssql Vzhledem k tomu, že profil zveřejňuje všechna jeho nastavení, můžete je zkontrolovat a přizpůsobit pro jiné linuxové distribuce nebo verze RHEL, které tento profil nezahrnují.

Pro SUSE Linux Enterprise Server 12 SP5, Ubuntu 18.04 a Red Hat Enterprise Linux 7.x můžete balíček nainstalovat tuned ručně. Použijte ho k vytvoření a konfiguraci mssql profilu, jak je popsáno v následující části.

Note

Od verze SQL Server 2025 (17.x) se nepodporuje SUSE Linux Enterprise Server (SLES).

Navrhovaná nastavení Linuxu pomocí profilu TuneD mssql

Následující příklad poskytuje konfiguraci TuneD pro SQL Server v Linuxu.

[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

Pokud používáte linuxové distribuce s verzemi jádra většími než 4.18, komentujte následující možnosti, jak je znázorněno. Jinak odkomentujte následující možnosti, pokud používáte distribuce s verzemi jádra staršími než 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

Chcete-li povolit tento profil TuneD, uložte tyto definice do souboru ve tuned.conf/usr/lib/tuned/mssql složce a povolte profil pomocí následujících příkazů:

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

Pomocí následujícího příkazu ověřte, že je profil aktivní:

tuned-adm active

Nebo:

tuned-adm list

Doporučení k nastavení procesoru

Následující tabulka obsahuje doporučení pro nastavení procesoru:

Nastavení Value Více informací
Správce frekvence procesoru výkon Zobrazení příkazu cpupower
ENERGETICKÁ_VÝKONNOSTNÍ_PŘEDPOJATOST výkon Zobrazení příkazu x86_energy_perf_policy
min_perf_pct 100 Viz dokumentace k Intel p-state
Stavy C Pouze C1 Informace o tom, jak zajistit, aby byly stavy C-States nastavené jenom na C1, najdete v dokumentaci k Linuxu nebo systému.

Když použijete TuneD, jak je popsáno, automaticky nakonfiguruje správce frekvence procesoru, ENERGY_PERF_BIAS, a min_perf_pct nastavení. Používá profil výkonu propustnosti jako základ profilu mssql . Parametr C-States musíte nakonfigurovat ručně podle dokumentace poskytované Linuxem nebo distributorem systému.

Doporučení pro nastavení disků

Následující tabulka obsahuje doporučení pro nastavení disku:

Nastavení Value Více informací
Disk readahead 4096 blockdev Zobrazit příkaz
Nastavení 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
Zobrazení příkazu sysctl

Description

  • vm.swappiness: Tento parametr řídí relativní váhu zadanou pro vyřazení paměti běžícího procesu ve vztahu k mezipaměti systému souborů. Výchozí hodnota pro tento parametr je 60, což indikuje výměnu paměťových stránek běžícího procesu oproti odstranění stránek cache souborového systému v poměru 60:140. Nastavení hodnoty 1 označuje silnou předvolbu pro zachování paměti procesu runtime ve fyzické paměti na úkor mezipaměti systému souborů. Vzhledem k tomu, že SQL Server používá fond vyrovnávací paměti jako mezipaměť datových stránek a důrazně dává přednost zápisu do fyzického hardwaru, který obchází mezipaměť systému souborů pro spolehlivé obnovení, může být užitečné agresivní nastavení swappiness pro vysoce výkonný a vyhrazený SQL Server.

    Další informace najdete v dokumentaci pro /proc/sys/vm/ – #swappiness.

  • vm.dirty_*: Přístupy k zápisu souborů SQL Serveru jsou bez mezipaměti, které splňují požadavky na integritu dat. Tyto parametry umožňují efektivní výkon asynchronního zápisu a snížit vliv vstupně-výstupních operací úložiště asynchronních zápisů do mezipaměti v Linuxu tím, že umožňují dostatečně velké ukládání do mezipaměti, zatímco řídí proces vyprazdňování.

  • kernel.sched_*: Tyto hodnoty parametrů představují aktuální doporučení pro úpravu algoritmu Zcela spravedlivého plánování (CFS) v jádru Linuxu. Zlepšují propustnost síťových a úložných I/O operací, pokud jde o preempci procesů a obnovení provádění vláken.

Pomocí profilu TuneD se konfiguruje mssql, vm.swappiness a vm.dirty_* nastavení. Nastavení disku readahead musíte nakonfigurovat ručně pomocí blockdev příkazu pro každé zařízení.

Nastavení jádra pro automatické vyrovnávání NUMA v systémech NUMA s více uzlů

Pokud nainstalujete SQL Server do systému NUMA s více uzlu, je ve výchozím nastavení povolené následující kernel.numa_balancing nastavení jádra. Pokud chcete systému NUMA umožnit provoz SQL Serveru s maximální efektivitou, zakažte automatické vyrovnávání NUMA v systému NUMA s více uzlů:

sysctl -w kernel.numa_balancing=0

mssql Pomocí profilu TuneD nakonfigurujete kernel.numa_balancing možnost.

Nastavení jádra pro virtuální adresní prostor

Výchozí nastavení vm.max_map_count je 65536 (65 536), které nemusí být dostatečně vysoké pro instalaci SQL Server. Z tohoto důvodu změňte hodnotu vm.max_map_count na alespoň 262144 (262,144) pro nasazení SQL Serveru. Další ladění těchto parametrů jádra najdete v části Navrhované nastavení Linuxu pomocí části profilu TuneD mssql . Maximální hodnota je vm.max_map_count2147483647 (2 147 483 647).

sysctl -w vm.max_map_count=1600000

mssql Pomocí profilu TuneD nakonfigurujete vm.max_map_count možnost.

Nechte Transparentní obrovské stránky (THP) povolené

Ve výchozím nastavení má většina instalací Linuxu tuto možnost zapnutou. Pro nejkonzistentnější výkon nechte tuto možnost konfigurace povolenou. Pokud je však v nasazeních SQL Serveru s více instancemi vysoká aktivita stránkování paměti nebo spouštění SQL Serveru s jinými aplikacemi náročnými na paměť na serveru, otestujte výkon aplikace po spuštění následujícího příkazu:

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

Nebo upravte mssql profil TuneD pomocí řádku:

vm.transparent_hugepages=madvise

Ujistěte se, že je mssql profil po úpravě aktivní.

tuned-adm off
tuned-adm profile mssql

mssql Pomocí profilu TuneD nakonfigurujete transparent_hugepage možnost.

Doporučení pro nastavení sítě

Spolu s doporučeními k úložišti a procesoru zvažte následující doporučení specifická pro síť. Různá síťová rozhraní nabízejí různá nastavení. Pokyny pro každou z těchto možností najdete v dodavatelích síťových adaptérů. Otestujte a nakonfigurujte tato nastavení pro vývojová prostředí, než je použijete v produkčních prostředích. Následující možnosti jsou vysvětleny příklady a použité příkazy jsou specifické pro typ síťové karty a dodavatele.

  1. Konfigurace velikosti vyrovnávací paměti síťového portu V tomto příkladu je síťová karta pojmenovaná eth0, což je síťová karta založená na Intelu. U síťových adaptérů založených na Intelu je doporučená velikost vyrovnávací paměti 4 kB (4096). Pomocí následujícího příkladu ověřte maximální hodnoty předvoleb a pak ho nakonfigurujte:

    Pomocí následujícího příkazu zkontrolujte maximální hodnoty přednastavení. Nahraďte eth0 názvem síťové karty:

    ethtool -g eth0
    

    Nastavte velikost vyrovnávací paměti rx (příjem) a tx (přenos) na 4 kB:

    ethtool -G eth0 rx 4096 tx 4096
    

    Zkontrolujte, jestli je hodnota správně nakonfigurovaná:

    ethtool -g eth0
    
  2. Povolte rámce jumbo. Před povolením rámců jumbo ověřte, že všechny síťové přepínače, směrovače a cokoli jiného důležitého v síťové cestě paketů mezi klienty a SQL Serverem podporují rámce jumbo. Teprve poté může povolení jumbo rámců zlepšit výkon. Po povolení rámců jumbo se připojte k SQL Server a změňte velikost síťového paketu na 8060 pomocí sp_configure, jak je znázorněno v následujícím příkladu:

    # 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
    
    EXECUTE sp_configure 'network packet size', '8060';
    GO
    
    RECONFIGURE WITH OVERRIDE;
    GO
    
  3. Nakonfigurujte adaptivní sdružování IRQ. Ve výchozím nastavení nastavte port pro adaptivní shodování RX/TX IRQ, což znamená, že doručování přerušení se upraví tak, aby se zlepšila latence, když je rychlost paketů nízká a zlepšila propustnost, když je rychlost paketů vysoká. Toto nastavení nemusí být dostupné ve vaší síťové infrastruktuře, proto zkontrolujte stávající síťovou infrastrukturu a ověřte, že je toto nastavení podporované. Příklad je pro síťové rozhraní s názvem eth0, což je síťové rozhraní na bázi Intel.

    Nastavte port pro adaptivní sloučení RX/TX IRQ.

    ethtool -C eth0 adaptive-rx on
    ethtool -C eth0 adaptive-tx on
    

    Potvrďte nastavení:

    ethtool -c eth0
    

    Note

    Pokud chcete předvídatelné chování v prostředích s vysokým výkonem, jako jsou prostředí pro srovnávací testy, vypněte adaptivní slučování RX/TX IRQ a pak specificky nastavte RX/TX slučování přerušení. Podívejte se na ukázkové příkazy, které zakážou RX/TX IRQ, a pak hodnoty konkrétně nastavíte:

    Zakažte adaptivní RX/TX IRQ coalescing:

    ethtool -C eth0 adaptive-rx off
    ethtool -C eth0 adaptive-tx off
    

    Potvrďte změnu:

    ethtool -c eth0
    

    Nastavte parametry rx-usecs a irq. rx-usecs určuje, kolik mikrosekund po přijetí aspoň jednoho paketu před vygenerováním přerušení. Parametr irq určuje odpovídající zpoždění při aktualizaci stavu při zakázání přerušení. Pro síťové karty založené na intelu můžete použít následující nastavení:

    ethtool -C eth0 rx-usecs 100 tx-frames-irq 512
    

    Potvrďte změnu:

    ethtool -c eth0
    
  4. Povolte škálování na straně příjmu (RSS) a ve výchozím nastavení sloučte fronty RSS pro příjem (RX) a vysílání (TX). Při práci s podporou Microsoftu existují konkrétní scénáře, kdy zakázání rss zlepšuje také výkon. Toto nastavení otestujte v testovacích prostředích, než ho použijete v produkčních prostředích. Následující příklad je určený pro síťové karty Intel.

    Získejte přednastavené maximální hodnoty:

    ethtool -l eth0
    

    Zkombinujte fronty s hodnotou hlášenou v přednastavené maximální hodnotě Kombinované. V tomto příkladu je hodnota nastavená na 8:

    ethtool -L eth0 combined 8
    

    Ověřte nastavení:

    ethtool -l eth0
    
  5. Nakonfigurujte afinitu IRQ portu síťové karty. Abyste dosáhli očekávaného výkonu úpravou spřažení IRQ, zvažte několik důležitých parametrů, jako je linuxové zpracování serverové topologie, zásobník ovladačů síťové karty, výchozí nastavení a irqbalance nastavení. Nastavení spřažení portu IRQ síťové karty můžete optimalizovat pomocí znalostí topologie serveru, zakázáním irqbalancea použitím nastavení specifických pro dodavatele síťové karty.

    Následující příklad síťové infrastruktury specifické pro Mellanox pomáhá vysvětlit konfiguraci. Další informace a stažení nástrojů Mellanox mlnx naleznete v tématu Nástroje ladění výkonu pro Síťové adaptéry Mellanox. Příkazy se mění v závislosti na prostředí. Další pokyny vám poskytne dodavatel síťových adaptérů.

    Zakažte irqbalancenebo získejte snímek nastavení IRQ a vynuťte ukončení démona:

    systemctl disable irqbalance.service
    

    Nebo:

    irqbalance --oneshot
    

    Ujistěte se, že common_irq_affinity.sh je spustitelný:

    chmod +x common_irq_affinity.sh
    

    Zobrazení vazby IRQ pro port síťové karty Mellanox (například eth0):

    ./show_irq_affinity.sh eth0
    

    Optimalizace pro zajištění nejlepšího výkonu propustnosti pomocí nástroje Mellanox:

    ./mlnx_tune -p HIGH_THROUGHPUT
    

    Nastavte hardwarovou afinitu na uzel NUMA, na kterém se fyzicky nachází síťová karta a její port:

    ./set_irq_affinity_bynode.sh `\cat /sys/class/net/eth0/device/numa_node` eth0
    

    Ověřte spřažení IRQ:

    ./show_irq_affinity.sh eth0
    

    Přidání optimalizací shod irQ:

    ethtool -C eth0 adaptive-rx off
    ethtool -C eth0 adaptive-tx off
    ethtool -C eth0  rx-usecs 750 tx-frames-irq 2048
    

    Ověřte nastavení:

    ethtool -c eth0
    
  6. Ověřte rychlost síťové karty. Po provedení předchozích změn pomocí následujícího příkazu ověřte rychlost síťové karty, abyste měli jistotu, že odpovídá vašim očekáváním:

    ethtool eth0 | grep -i Speed
    

Pokročilá konfigurace jádra a operačního systému

  • Pokud chcete dosáhnout nejlepšího výkonu vstupně-výstupních operací úložiště, použijte pro bloková zařízení plánování multiqueue s Linuxem. Tato metoda plánování umožňuje dobře škálovat výkon blokové vrstvy s rychlými jednotkami SSD (Solid-State Drive) a vícejádrovými systémy. V dokumentaci zjistíte, jestli je vaše distribuce Linuxu ve výchozím nastavení povolená. Ve většině ostatních případů můžete jádro spustit pomocí scsi_mod.use_blk_mq=y pro jeho povolení. Další pokyny k tomuto nastavení můžou mít dokumentace pro vaši linuxovou distribuci. Toto nastavení je konzistentní s upstreamovým linuxovým jádrem.

  • Vzhledem k tomu, že se pro nasazení SQL Serveru často používá multipath I/O, nakonfigurujte cíl device mapperu (DM) pro více front tak, aby používal infrastrukturu blk-mq, a to povolením spouštěcí volby jádra dm_mod.use_blk_mq=y. Výchozí hodnota je n (zakázaná). Toto nastavení snižuje režii zamykání na úrovni DM při použití podkladových zařízení SCSI s blk-mq. Další informace o konfiguraci vstupně-výstupních operací s více cestami najdete v dokumentaci k distribuci Linuxu.

Konfigurovat stránkovací soubor

Ujistěte se, že máte správně nakonfigurovaný swapfile, abyste se vyhnuli problémům s nedostatkem paměti. Podejte se na dokumentaci k Linuxu, jak vytvořit a správně velikostně nastavit odkládací soubor. Pokud plánujete spouštět kontejnery, povolte odkládací prostor na hostitelském systému.

Virtuální počítače a dynamická paměť

Pokud na virtuálním počítači používáte SQL Server on Linux, ujistěte se, že jste vybrali možnosti, které opravují velikost paměti rezervované pro virtuální počítač. Nepoužívejte funkce, jako je Hyper-V dynamická paměť.

Konfigurace SQL Serveru

Po instalaci SQL Serveru v Linuxu proveďte následující úlohy konfigurace, abyste dosáhli nejlepšího výkonu pro vaši aplikaci.

Doporučené postupy

Následující postupy platí pro všechna nasazení SQL Server on Linux.

Použijte AFINITU PROCESU pro uzel a CPU

Pomocí ALTER SERVER CONFIGURATION nastavte PROCESS AFFINITY pro všechny NUMANODE a procesory, které používáte pro SQL Server (což obvykle platí pro všechny NODE a procesory) v systému Linux. Afinita procesoru pomáhá zachovat efektivní plánování v Linuxu a SQL. Použití této NUMANODE možnosti je nejjednodušší metoda. Používejte PROCESS AFFINITY i v případě, že máte v počítači jenom jeden uzel NUMA. Další informace o nastavení PROCESS AFFINITYnajdete v ALTER SERVER CONFIGURATION článku.

Konfigurace více tempdb datových souborů

Vzhledem k tomu, že instalace SQL Server on Linux nenabízí možnost konfigurace více souborů, zvažte vytvoření více tempdbtempdb datových souborů po instalaci. Další informace naleznete v tématu Doporučení k omezení konfliktu přidělení v databázi tempdb systému SQL Server.

Rozšířená konfigurace

Informace o možnostech konfigurace paměti, včetně limitů paměti mssql-conf, nastavení cgroup, příkladů paměti kontejnerů Dockeru a aspektů odkládacího prostoru, najdete v Osvědčené postupy pro výkon: paměť SQL Serveru v Linuxu.