Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server op Linux
In dit artikel worden aanbevelingen voor het besturingssysteem en de hardwareconfiguratie beschreven om de prestaties voor SQL Server on Linux te maximaliseren, waaronder opslag, kernel, CPU en netwerkinstellingen.
Note
Zie Aanbevolen procedures voor prestaties: SQL Server-geheugen in Linux voor de geheugenconfiguratie en geheugenlimieten voor containers.
- Aanbeveling voor opslagconfiguratie
- kernel- en CPU-instellingen voor hoge prestaties
- SQL Server-configuratie
Aanbeveling voor opslagconfiguratie
Het opslagsubsysteem dat als host fungeert voor gegevens, transactielogboeken en andere gekoppelde bestanden (zoals controlepuntbestanden voor OLTP in het geheugen) moet zowel de gemiddelde als de piekworkload correct beheren.
Opslagsubsysteem gebruiken met de juiste IOPS, doorvoer en redundantie
In on-premises omgevingen ondersteunt de opslagleverancier normaal gesproken de juiste HARDWARE RAID-configuratie met striping over meerdere schijven om ervoor te zorgen dat de juiste IOPS, doorvoer en redundantie worden gegarandeerd. Deze ondersteuning kan echter verschillen tussen verschillende opslagleveranciers en verschillende opslagaanbiedingen met verschillende architecturen.
Voor SQL Server on Linux geïmplementeerd op Azure Virtuele Machines kunt u software-RAID gebruiken om de juiste IOPS en doorvoer te garanderen. Zie Opslag configureren voor SQL Server op Azure VM's voor opslagoverwegingen bij het configureren van SQL Server op Azure virtuele machines.
In het volgende voorbeeld ziet u hoe u software-RAID maakt in Linux op een virtuele Azure-machine. Gebruik het juiste aantal gegevensschijven voor de vereiste doorvoer en IOPS voor volumes op basis van de vereisten voor gegevens, transactielogboeken en tempdb I/O. In het volgende voorbeeld zijn acht gegevensschijven gekoppeld aan de virtuele machine: vier voor het hosten van gegevensbestanden, twee voor transactielogboeken en twee voor tempdb werkbelasting.
Gebruik de /dev/sdc opdracht om de apparaten (bijvoorbeeld lsblk) te vinden voor het maken van RAID.
# 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
Aanbevelingen voor schijfpartitionering en configuratie
Gebruik voor SQL Server een RAID-configuratie. De geïmplementeerde stripe-eenheid van het bestandssysteem (sunit) en de breedte van de stripe komen overeen met de RAID-geometrie. In het volgende voorbeeld ziet u bijvoorbeeld een XFS-configuratie voor een logboekvolume.
# 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
De logarray is een RAID-10 met zes schijven met een stripe van 64 kB. Zoals u ziet:
- Voor
sunit=16 blks, 16 * 4096 blokgrootte = 64 kB, komt overeen met de streepgrootte. - Voor
swidth=48 blksisswidth/sunit= 3, het aantal gegevensstations in de matrix, met uitzondering van pariteitsstations.
Aanbevolen configuratie van bestandssysteem
SQL Server ondersteunt zowel ext4- als XFS-bestandssysteem voor het hosten van de database, transactielogboeken en andere bestanden, zoals controlepuntbestanden voor OLTP in het geheugen in SQL Server. Gebruik het XFS-bestandssysteem voor het hosten van SQL Server gegevens- en transactielogboekbestanden.
Maak het volume op met behulp van het XFS-bestandssysteem:
mkfs.xfs /dev/md0 -f -L datavolume
mkfs.xfs /dev/md1 -f -L logvolume
mkfs.xfs /dev/md2 -f -L tempdb
U kunt het XFS-bestandssysteem zodanig configureren dat het niet hoofdlettergevoelig is wanneer u het XFS-volume maakt en formatteren. Deze configuratie wordt niet vaak gebruikt in het Linux-ecosysteem, maar u kunt deze om compatibiliteitsredenen gebruiken.
Voer bijvoorbeeld de volgende opdracht uit. Gebruik -n version=ci om het XFS-bestandssysteem zo te configureren dat het niet hoofdlettergevoelig is.
mkfs.xfs /dev/md0 -f -n version=ci -L datavolume
Aanbeveling voor permanent geheugenbestandssysteem
Voor de configuratie van het bestandssysteem op permanente geheugenapparaten stelt u de bloktoewijzing voor het onderliggende bestandssysteem in op 2 MB. Zie Technische overwegingen voor meer informatie.
Beperking van het openen van bestanden
Uw productieomgeving vereist mogelijk meer verbindingen dan de standaardlimiet voor 1024 geopende bestanden (1024). U kunt zachte en harde limieten instellen op 1048576 (1.048.576). Bewerk bijvoorbeeld in RHELhet /etc/security/limits.d/99-mssql-server.conf-bestand met de volgende waarden:
mssql - nofile 1048576
Note
Deze instelling is niet van toepassing op SQL Server-services die zijn gestart door systemd. Zie voor meer informatie Limieten instellen voor services in RHEL en systemd.
Schakel laatste bezochte datum en tijd uit op bestandssystemen voor SQL Server-gegevens- en logboekbestanden
Om ervoor te zorgen dat het systeem de stations na het opnieuw opstarten automatisch opnieuw aankoppelt, voegt u deze toe aan het bestand /etc/fstab. Gebruik de UUID (Universally Unique Identifier) in /etc/fstab om naar de schijf te verwijzen, in plaats van alleen de apparaatnaam (zoals /dev/sdc1).
Gebruik het kenmerk noatime met elk bestandssysteem waarin SQL Server-gegevens en logboekbestanden worden opgeslagen. Raadpleeg uw Linux-documentatie over het instellen van dit kenmerk. In het volgende voorbeeld ziet u hoe u de noatime optie inschakelt voor een volume dat is gekoppeld aan een virtuele Azure-machine.
De vermelding van het koppelpunt in /etc/fstab:
UUID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" /data1 xfs rw,attr2,noatime 0 0
In het voorgaande voorbeeld vertegenwoordigt UUID het apparaat dat u kunt vinden met behulp van de blkid opdracht.
"Capaciteit van het I/O-subsysteem voor SQL Server en Geforceerde eenheidstoegang (FUA)"
Sommige ondersteunde Linux-distributies implementeren geforceerde eenheidstoegang (FUA) op het niveau van het I/O-subsysteem om de duurzaamheid van gegevens te garanderen. SQL Server maakt gebruik van deze mogelijkheid om efficiënte en betrouwbare I/O-prestaties te bieden voor Linux-workloads. Zie SQL Server op Linux voor meer informatie over FUA-ondersteuning voor Linux-distributies en het effect ervan op SQL Server : Geforceerde eenheidstoegang (FUA) Internals.
Ondersteuning voor FUA in het I/O-subsysteem is geïntroduceerd in SUSE Linux Enterprise Server 12 SP5, Red Hat Enterprise Linux 8.0 en Ubuntu 18.04. Gebruik in SQL Server 2017 (14.x) CU 6 en hoger de volgende configuratie om hoog presterende en efficiënte I/O met FUA in SQL Server mogelijk te maken.
Gebruik deze aanbevolen configuratie als aan de volgende voorwaarden wordt voldaan:
SQL Server 2017 (14.x) CU 6 en latere versies
Linux-distributie en -versie die ONDERSTEUNING biedt voor FUA-functionaliteit (te beginnen met Red Hat Enterprise Linux 8.0, SUSE Linux Enterprise Server 12 SP5 of Ubuntu 18.04)
Note
Vanaf SQL Server 2025 (17.x) wordt SUSE Linux Enterprise Server (SLES) niet ondersteund.
XFS-bestandssysteem voor SQL Server-opslag, op Linux-kernel 4.18 of hoger.
ext4-bestandssysteem voor SQL Server-opslag, op Linux-kernel 5.6 of hoger.
Note
Gebruik het XFS-bestandssysteem voor het hosten van SQL Server-gegevens en transactielogboekbestanden wanneer de Linux-kernelversie lager is dan 5.6. Vanaf kernelversie 5.6 kunt u kiezen tussen XFS en ext4 op basis van uw specifieke vereisten.
Opslagsubsysteem en hardware die ondersteuning bieden voor en is geconfigureerd voor FUA-functionaliteit
Aanbevolen configuratie:
Schakel traceervlag 3979 in als een opstartparameter.
Gebruiken
mssql-confom te configurerencontrol.writethrough = 1encontrol.alternatewritethrough = 0.
Gebruik de volgende aanbevolen configuratie voor bijna alle andere configuraties die niet aan de vorige voorwaarden voldoen:
Schakel traceringsvlag 3982 in als opstartparameter (de standaardwaarde voor SQL Server in het Linux-ecosysteem) en zorg ervoor dat traceringsvlag 3979 niet is ingeschakeld als opstartparameter.
Gebruiken
mssql-confom te configurerencontrol.writethrough = 1encontrol.alternatewritethrough = 1.
FUA-ondersteuning voor SQL Server-containers die zijn geïmplementeerd in Kubernetes
De SQL Server moet permanente gekoppelde opslag gebruiken en niet
overlayfs.De opslag moet gebruikmaken van de XFS - of ext4-bestandssysteemen en moet FUA ondersteunen (ext4 biedt geen ondersteuning voor FUA op de Linux-kernel ouder dan versie 5.6). Voordat u deze instelling inschakelt, moet u contact opnemen met uw Linux-distributie- en opslagleverancier om ervoor te zorgen dat het besturingssysteem en het opslagsubsysteem ONDERSTEUNING biedt voor FUA-opties. In Kubernetes kunt u een query uitvoeren op het bestandssysteemtype met behulp van de volgende opdracht, waarbij
<pvc-name>uwPersistentVolumeClaimis:kubectl describe pv <pvc-name>Zoek in de uitvoer naar
fstypedie is ingesteld op XFS.Het werkknooppunt dat als host fungeert voor de SQL Server-pods, moet gebruikmaken van een Linux-distributie en -versie die ONDERSTEUNING biedt voor FUA-functionaliteit (te beginnen met Red Hat Enterprise Linux 8.0, SUSE Linux Enterprise Server 12 SP5 of Ubuntu 18.04).
Als aan de voorgaande voorwaarden wordt voldaan, gebruikt u de volgende aanbevolen FUA-instellingen:
Schakel traceervlag 3979 in als een opstartparameter.
Gebruiken
mssql-confom te configurerencontrol.writethrough = 1encontrol.alternatewritethrough = 0.
Kernel- en CPU-instellingen voor hoge prestaties
In de volgende sectie worden de aanbevolen Linux-besturingssysteeminstellingen beschreven met betrekking tot hoge prestaties en doorvoer voor een SQL Server-installatie. Raadpleeg de documentatie van uw Linux-distributie voor het proces voor het configureren van deze instellingen. U kunt TuneD- zoals beschreven, gebruiken om veel CPU's en kernelconfiguraties te configureren, zoals beschreven in de volgende sectie.
TuneD- gebruiken om kernelinstellingen te configureren
Voor gebruikers van Red Hat Enterprise Linux (RHEL) configureert de "Tuned throughput-performance" profiel automatisch bepaalde kernel- en CPU-instellingen, met uitzondering van C-States. Vanaf RHEL 8.0 kunt u een TuneD-profiel gebruiken met de naam mssql dat betere afstemmingen met betrekking tot Linux-prestaties biedt voor SQL Server workloads. Dit profiel is gebaseerd op het RHEL-doorvoerprestatieprofiel. Omdat het mssql profiel alle instellingen weergeeft, kunt u deze controleren en aanpassen voor andere Linux-distributies of RHEL-releases die dit profiel niet bevatten.
Voor SUSE Linux Enterprise Server 12 SP5, Ubuntu 18.04 en Red Hat Enterprise Linux 7.x kunt u het tuned pakket handmatig installeren. Gebruik dit om het mssql profiel te maken en te configureren, zoals beschreven in de volgende sectie.
Note
Vanaf SQL Server 2025 (17.x) wordt SUSE Linux Enterprise Server (SLES) niet ondersteund.
Voorgestelde Linux-instellingen met behulp van een TuneD mssql-profiel
In het volgende voorbeeld ziet u een TuneD-configuratie voor SQL Server in 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
Als u Linux-distributies gebruikt met kernelversies die groter zijn dan 4.18, moet u de volgende opties als commentaar geven, zoals wordt weergegeven. Verwijder anders de opmerkingen bij de volgende opties als u distributies gebruikt met kernelversies ouder dan 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
Als u dit TuneD-profiel wilt inschakelen, slaat u deze definities op in een tuned.conf bestand onder de map /usr/lib/tuned/mssql en schakelt u het profiel in met behulp van de volgende opdrachten:
chmod +x /usr/lib/tuned/mssql/tuned.conf
tuned-adm profile mssql
Controleer of het profiel actief is met behulp van de volgende opdracht:
tuned-adm active
Of:
tuned-adm list
Aanbeveling voor CPU-instellingen
De volgende tabel bevat aanbevelingen voor CPU-instellingen:
| Instelling | Value | Meer informatie |
|---|---|---|
| CPU-frequentie regelaar | prestatie | Zie de opdracht cpupower |
| ENERGY_PERF_BIAS | prestatie | Zie het commando x86_energy_perf_policy |
| min_prestatie_pct | 100 | Raadpleeg uw eigen documentatie over Intel p-state |
| C-Staten | Alleen C1 | Raadpleeg uw Linux- of systeemdocumentatie over hoe u ervoor kunt zorgen dat C-States alleen is ingesteld op C1 |
Wanneer u TuneD gebruikt zoals beschreven, worden de CPU-frequentiebeheer ENERGY_PERF_BIASmin_perf_pct en instellingen automatisch geconfigureerd. Het profiel voor doorvoerprestaties wordt gebruikt als basis voor het mssql profiel. U moet de parameter C-States handmatig configureren volgens de documentatie van Linux of uw systeemdistributeur.
Aanbevelingen voor schijfinstellingen
De volgende tabel bevat aanbevelingen voor schijfinstellingen:
| Instelling | Value | Meer informatie |
|---|---|---|
Schijf readahead |
4096 | Zie de opdracht blockdev |
| sysctl-instellingen | kernel.sched_min_granularity_ns = 15000000kernel.sched_wakeup_granularity_ns = 2000000vm.dirty_ratio = 80vm.dirty_background_ratio = 3vm.swappiness = 1 |
Zie de opdracht sysctl |
Description
vm.swappiness: Deze parameter bepaalt het relatieve gewicht dat wordt gegeven aan het wisselen van runtime-procesgeheugen vergeleken met de bestandssysteemcache. De standaardwaarde voor deze parameter is 60, wat aangeeft dat geheugenpagina's van runtimeprocessen worden verwisseld in vergelijking met het verwijderen van cachepagina's van het bestandssysteem met een verhouding van 60:140. Als u de waarde instelt op 1, wordt een sterke voorkeur aangegeven voor het behouden van runtimeprocesgeheugen in fysiek geheugen ten koste van de bestandssysteemcache. Omdat SQL Server de bufferpool gebruikt als een gegevenspaginacache en nadrukkelijk de voorkeur geeft aan direct schrijven naar fysieke hardware, waarbij de bestandssysteemcache wordt omzeild voor betrouwbaar herstel, kan een agressieve swappiness-configuratie nuttig zijn voor een hoogpresterende en dedicated SQL Server.Meer informatie vindt u in de documentatie voor /proc/sys/vm/ - #swappiness.
vm.dirty_*: schrijftoegangen voor SQL Server-bestanden zijn niet in de cache opgeslagen en voldoen aan de vereisten voor gegevensintegriteit. Deze parameters bieden efficiënte asynchrone schrijfprestaties en verlagen het I/O-opslageffect van Schrijfbewerkingen in Linux-caching door voldoende caching toe te staan terwijl het leegmaken wordt beperkt.kernel.sched_*: Deze parameterwaarden vertegenwoordigen de huidige aanbeveling voor het aanpassen van het CFS-algoritme (Completely Fair Scheduling) in de Linux-kernel. Ze verbeteren de doorvoer van netwerk- en opslag-I/O-aanroepen met betrekking tot interprocesvoorbereiding en hervatting van threads.
Met het mssql TuneD-profiel configureert u de vm.swappiness, vm.dirty_*en kernel.sched_* instellingen. U moet de schijfinstelling readahead handmatig configureren met behulp van de blockdev opdracht voor elk apparaat.
Kernelinstelling voor automatische NUMA-balancering op NUMA-systemen met meerdere knooppunten
Als u SQL Server op een NUMA-systeem met meerdere knooppunten installeert, is de volgende kernel.numa_balancing kernelinstelling standaard ingeschakeld. Als u wilt dat SQL Server maximaal efficiënt werkt op een NUMA-systeem, schakelt u automatische NUMA-verdeling uit op een NUMA-systeem met meerdere knooppunten:
sysctl -w kernel.numa_balancing=0
Met het mssql TuneD-profiel configureert u de optie kernel.numa_balancing.
Kernelinstellingen voor virtuele adresruimte
De standaardinstelling vm.max_map_count is 65536 (65.536), die mogelijk niet hoog genoeg is voor een SQL Server installatie. Wijzig daarom de vm.max_map_count waarde in ten minste 262144 (262.144) voor een SQL Server-implementatie. Zie de voorgestelde Linux-instellingen met behulp van de sectie TuneD mssql-profiel voor meer afstemming van deze kernelparameters. De maximumwaarde vm.max_map_count is 2147483647 (2.147.483.647).
sysctl -w vm.max_map_count=1600000
Met het mssql TuneD-profiel configureert u de optie vm.max_map_count.
Transparent Huge Pages (THP) ingeschakeld laten
Voor de meeste Linux-installaties is deze optie standaard ingeschakeld. Laat deze configuratieoptie ingeschakeld voor de meest consistente prestaties. Als er echter sprake is van een hoge geheugen wisselactiviteit in SQL Server-implementaties met meerdere exemplaren of SQL Server-uitvoering met andere veeleisende toepassingen op de server, test u de prestaties van uw toepassing na het uitvoeren van de volgende opdracht:
echo madvise > /sys/kernel/mm/transparent_hugepage/enabled
Of wijzig het mssql TuneD-profiel met de regel:
vm.transparent_hugepages=madvise
En zorg ervoor dat het mssql profiel actief is na de wijziging:
tuned-adm off
tuned-adm profile mssql
Met het mssql TuneD-profiel configureert u de optie transparent_hugepage.
Aanbevelingen voor netwerkinstellingen
Houd rekening met de volgende netwerkspecifieke aanbevelingen, samen met aanbevelingen voor opslag en CPU. Verschillende NIC's bieden verschillende instellingen. Raadpleeg NIC-leveranciers voor richtlijnen voor elk van deze opties. Test en configureer deze instellingen voor ontwikkelomgevingen voordat u ze toepast op productieomgevingen. De volgende opties worden uitgelegd met voorbeelden en de gebruikte opdrachten zijn specifiek voor het type NIC en de leverancier.
De grootte van de netwerkpoortbuffer configureren. In het voorbeeld heeft de NIC de naam
eth0, een op Intel gebaseerde NIC. Voor Intel gebaseerde NIC is de aanbevolen buffergrootte 4 kB (4096). Controleer de vooraf ingestelde maximumlimieten en configureer deze vervolgens met behulp van het volgende voorbeeld:Controleer de vooraf ingestelde maximumlimieten met de volgende opdracht. Vervang
eth0door de NIC-naam:ethtool -g eth0Stel zowel de buffergrootte
rx(ontvangen) alstx(verzenden) in op 4 kB:ethtool -G eth0 rx 4096 tx 4096Controleer of de waarde juist is geconfigureerd:
ethtool -g eth0Jumboframesinschakelen. Voordat u jumboframes inschakelt, controleert u of alle netwerkswitches, routers en alle andere essentiële items in het netwerkpakketpad tussen de clients en de SQL Server jumboframes ondersteunen. Alleen dan kan het mogelijk maken van jumboframes de prestaties verbeteren. Nadat u jumboframes hebt ingeschakeld, maakt u verbinding met SQL Server en wijzigt u de netwerkpakketgrootte in 8060 met behulp van
sp_configure, zoals wordt weergegeven in het volgende voorbeeld:# 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; GOAdaptieve IRQ-coalescing configureren. Standaard wordt de poort ingesteld voor adaptieve RX/TX IRQ-coalescentie, waardoor de levering van interrupts wordt aangepast om de latentie te verbeteren wanneer de pakketsnelheid laag is en de doorvoer te verbeteren wanneer de pakketsnelheid hoog is. Deze instelling is mogelijk niet beschikbaar in uw netwerkinfrastructuur. Controleer daarom de bestaande netwerkinfrastructuur en controleer of deze instelling wordt ondersteund. Het voorbeeld is voor de NIC met de naam
eth0, een Intel-gebaseerde NIC:Stel de poort in voor Adaptive RX/TX IRQ Coalescing:
ethtool -C eth0 adaptive-rx on ethtool -C eth0 adaptive-tx onBevestig de instelling:
ethtool -c eth0Note
Voor voorspelbaar gedrag in omgevingen met hoge prestaties, zoals benchmarkomgevingen, deactiveert u de adaptieve RX/TX IRQ-verzameling en stelt u vervolgens specifiek de RX/TX-interruptverzameling in. Zie de voorbeeldopdrachten om de RX/TX IRQ-coalescentie uit te schakelen en stel vervolgens de waarden specifiek in.
De adaptieve RX/TX IRQ-coalescentie uitschakelen:
ethtool -C eth0 adaptive-rx off ethtool -C eth0 adaptive-tx offBevestig de wijziging:
ethtool -c eth0Stel de parameters
rx-usecsenirqin.rx-usecsspecificeert hoeveel microseconden moeten verstrijken nadat ten minste één pakket is ontvangen voordat er een interrupt wordt gegenereerd. De parameterirqgeeft de bijbehorende vertragingen op bij het bijwerken van de status wanneer de interrupt is uitgeschakeld. Voor Intel-NIC's kunt u de volgende instellingen gebruiken:ethtool -C eth0 rx-usecs 100 tx-frames-irq 512Bevestig de wijziging:
ethtool -c eth0Schakel schalen aan de ontvangstzijde (RSS) in en combineer standaard de RX- en TX-kant van RSS-wachtrijen. Er zijn specifieke scenario's, wanneer u met Microsoft Ondersteuning werkt, waarbij het uitschakelen van RSS ook de prestaties verbetert. Test deze instelling in testomgevingen voordat u deze toepast op productieomgevingen. Het volgende voorbeeld is voor Intel NIC's.
Haal de vooraf ingestelde maximumwaarden op:
ethtool -l eth0Combineer de wachtrijen met de waarde die is gerapporteerd in de vooraf ingestelde maximumwaarde 'Gecombineerd'. In dit voorbeeld is de waarde ingesteld op
8:ethtool -L eth0 combined 8Controleer de instelling:
ethtool -l eth0Configureer NIC-poort IRQ-affiniteit. Als u de verwachte prestaties wilt bereiken door de IRQ-affiniteit aan te passen, moet u rekening houden met enkele belangrijke parameters, zoals de verwerking van de servertopologie, de NIC-driverstapel, de standaardinstellingen en de
irqbalanceinstelling. U kunt de NIC-poort IRQ-affiniteitsinstellingen optimaliseren met behulp van uw kennis van servertopologie, hetirqbalanceuitschakelen van en het gebruik van de leverancierspecifieke NIC-instellingen.In het volgende voorbeeld van de specifieke netwerkinfrastructuur van Mellanox wordt de configuratie uitgelegd. Zie Hulpprogramma's voor het afstemmen van prestaties voor Mellanox-netwerkadaptersvoor meer informatie en om de Mellanox mlnx tools te downloaden. De opdrachten worden gewijzigd op basis van de omgeving. Neem contact op met de NIC-leverancier voor verdere richtlijnen.
Schakel
irqbalanceuit of haal een momentopname van de IRQ-instellingen op en dwing de daemon af te sluiten:systemctl disable irqbalance.serviceOf:
irqbalance --oneshotZorg ervoor dat
common_irq_affinity.shuitvoerbaar is:chmod +x common_irq_affinity.shIRQ-affiniteit weergeven voor mellanox-NIC-poort (bijvoorbeeld
eth0):./show_irq_affinity.sh eth0Optimaliseren voor de beste doorvoerprestaties met een Mellanox-hulpprogramma:
./mlnx_tune -p HIGH_THROUGHPUTStel hardwareaffiniteit in op het NUMA-knooppunt waarop de NIC en de poort fysiek worden gehost:
./set_irq_affinity_bynode.sh `\cat /sys/class/net/eth0/device/numa_node` eth0Controleer de IRQ-affiniteit:
./show_irq_affinity.sh eth0Optimalisaties voor IRQ-samenvoeging implementeren:
ethtool -C eth0 adaptive-rx off ethtool -C eth0 adaptive-tx off ethtool -C eth0 rx-usecs 750 tx-frames-irq 2048Controleer de instellingen:
ethtool -c eth0Controleer de NIC-snelheid. Nadat u de voorgaande wijzigingen hebt aangebracht, controleert u de snelheid van de NIC om ervoor te zorgen dat deze voldoet aan uw verwachtingen met behulp van de volgende opdracht:
ethtool eth0 | grep -i Speed
Geavanceerde kernel- en besturingssysteemconfiguratie
Gebruik Linux-planning voor meerdere wachtrijen voor blokapparaten voor de beste I/O-prestaties voor opslag. Met deze planningsmethode kunnen de prestaties van de bloklaag goed worden geschaald met snelle SSD's (Solid-State Drives) en multicore-systemen. Raadpleeg de documentatie om te zien of uw Linux-distributie deze standaard inschakelt. In de meeste andere gevallen kunt u de kernel opstarten met
scsi_mod.use_blk_mq=yom deze in te schakelen. De documentatie voor uw Linux-distributie bevat mogelijk verdere richtlijnen voor deze instelling. Deze instelling is consistent met de upstream Linux-kernel.Omdat multipath-I/O vaak wordt gebruikt voor SQL Server-implementaties, configureer het multiqueue-doel van Device Mapper (DM) zo dat het de
blk-mq-infrastructuur gebruikt door de opstartoptiedm_mod.use_blk_mq=yvan de kernel in te schakelen. De standaardwaarde isn(uitgeschakeld). Deze instelling vermindert de vergrendelingsoverhead op de DM-laag wanneer de onderliggende SCSI-apparaten gebruikmaken vanblk-mq. Zie de documentatie van uw Linux-distributie voor meer informatie over het configureren van multipath I/O.
Swapfile configureren
Zorg ervoor dat u een correct geconfigureerde swapfile hebt om geheugenproblemen te voorkomen. Raadpleeg uw Linux-documentatie voor het maken en de juiste grootte van een wisselbestand. Als u containers wilt uitvoeren, schakelt u wisselruimte op hostniveau in.
Virtuele machines en dynamisch geheugen
Als u SQL Server on Linux op een virtuele machine uitvoert, moet u opties selecteren waarmee de hoeveelheid geheugen wordt hersteld die is gereserveerd voor de virtuele machine. Gebruik geen functies zoals Hyper-V dynamisch geheugen.
configuratie van SQL Server
Voer de volgende configuratietaken uit nadat u SQL Server op Linux hebt geïnstalleerd om de beste prestaties voor uw toepassing te bereiken.
Aanbevolen procedures
De volgende procedures zijn van toepassing op alle SQL Server on Linux implementaties.
PROCESAFFINITEIT gebruiken voor knooppunten en CPU's
Gebruik ALTER SERVER CONFIGURATION om PROCESS AFFINITY in te stellen voor alle NUMANODEs en CPU's die u voor SQL Server gebruikt (wat doorgaans geldt voor alle NODEs en CPU's) op een Linux-besturingssysteem. Processoraffiniteit helpt het efficiënte gedrag van Linux- en SQL-planning te behouden. Het gebruik van de NUMANODE optie is de eenvoudigste methode. Gebruik PROCESS AFFINITY zelfs als u slechts één NUMA-knooppunt op uw computer hebt. Zie het ALTER SERVER CONFIGURATION-artikel voor meer informatie over het instellen van PROCESS AFFINITY.
Meerdere tempdb gegevensbestanden configureren
Omdat een SQL Server on Linux installatie geen optie biedt om meerdere tempdb bestanden te configureren, kunt u overwegen om meerdere tempdb gegevensbestanden te maken na de installatie. Zie Aanbevelingen voor het verminderen van toewijzingsconflicten in sql Server tempdb-databasevoor meer informatie.
Geavanceerde configuratie
Voor opties voor geheugenconfiguratie, waaronder mssql-conf geheugenlimieten, cgroup-instellingen, voorbeelden van Docker-containergeheugen en overwegingen voor wisselruimte, raadpleegt u best practices voor prestaties: SQL Server geheugen op Linux.