Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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ě
- Nastavení jádra a procesoru pro vysoký výkon
- Konfigurace SQL Serveru
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ů.
Doporučená konfigurace systému souborů
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:
Povolte příznak trasování 3979 jako spouštěcí parametr.
Slouží
mssql-confke konfiguracicontrol.writethrough = 1acontrol.alternatewritethrough = 0.
Pro téměř všechny ostatní konfigurace, které nesplňují předchozí podmínky, použijte následující doporučenou konfiguraci:
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.
Slouží
mssql-confke konfiguracicontrol.writethrough = 1acontrol.alternatewritethrough = 1.
Podpora FUA pro kontejnery SQL Serveru nasazené v Kubernetes
SQL Server musí používat trvalé připojené úložiště, a nikoli
overlayfs.Ú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šePersistentVolumeClaim:kubectl describe pv <pvc-name>Ve výstupu vyhledejte
fstype, která je nastavená na XFS.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:
Povolte příznak trasování 3979 jako spouštěcí parametr.
Slouží
mssql-confke konfiguracicontrol.writethrough = 1acontrol.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 = 15000000kernel.sched_wakeup_granularity_ns = 2000000vm.dirty_ratio = 80vm.dirty_background_ratio = 3vm.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.
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
eth0názvem síťové karty:ethtool -g eth0Nastavte velikost vyrovnávací paměti
rx(příjem) atx(přenos) na 4 kB:ethtool -G eth0 rx 4096 tx 4096Zkontrolujte, jestli je hodnota správně nakonfigurovaná:
ethtool -g eth0Povolte 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 9014EXECUTE sp_configure 'network packet size', '8060'; GO RECONFIGURE WITH OVERRIDE; GONakonfigurujte 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 onPotvrďte nastavení:
ethtool -c eth0Note
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 offPotvrďte změnu:
ethtool -c eth0Nastavte parametry
rx-usecsairq.rx-usecsurčuje, kolik mikrosekund po přijetí aspoň jednoho paketu před vygenerováním přerušení. Parametrirqurč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 512Potvrďte změnu:
ethtool -c eth0Povolte š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 eth0Zkombinujte 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 8Ověřte nastavení:
ethtool -l eth0Nakonfigurujte 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
irqbalancenastavení. Nastavení spřažení portu IRQ síťové karty můžete optimalizovat pomocí znalostí topologie serveru, zakázánímirqbalancea 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.serviceNebo:
irqbalance --oneshotUjistěte se, že
common_irq_affinity.shje spustitelný:chmod +x common_irq_affinity.shZobrazení vazby IRQ pro port síťové karty Mellanox (například
eth0):./show_irq_affinity.sh eth0Optimalizace pro zajištění nejlepšího výkonu propustnosti pomocí nástroje Mellanox:
./mlnx_tune -p HIGH_THROUGHPUTNastavte 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` eth0Ověřte spřažení IRQ:
./show_irq_affinity.sh eth0Př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 2048Ověřte nastavení:
ethtool -c eth0Ověř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=ypro 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ádradm_mod.use_blk_mq=y. Výchozí hodnota jen(zakázaná). Toto nastavení snižuje režii zamykání na úrovni DM při použití podkladových zařízení SCSI sblk-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.