Ajánlott teljesítménybeli eljárások: Tárolás, kernel, PROCESSZOR és hálózat a SQL Server on Linux

A következőkre vonatkozik:SQL Server Linux rendszeren

Ez a cikk az operációs rendszer és a hardverkonfigurációs javaslatokat ismerteti a SQL Server on Linux teljesítményének maximalizálása érdekében, beleértve a tárolási, kernel-, CPU- és hálózati beállításokat.

Note

A memóriakonfigurációval és a tárolómemóriára vonatkozó korlátozásokkal kapcsolatban tekintse meg a teljesítmény ajánlott eljárásait: SQL Server memóriát Linuxon.

Tárkonfigurációs javaslat

Az adatokat, tranzakciónaplókat és más kapcsolódó fájlokat (például a memóriában lévő OLTP ellenőrzőpontok fájljait) tároló tárolási alrendszernek az átlagos és a csúcsterhelést is elegánsan kell kezelnie.

Tárolóalrendszer használata a megfelelő IOPS-val, átviteli sebességgel és redundanciával

A helyszíni környezetekben a tárolószolgáltató általában támogatja a megfelelő hardveres RAID-konfigurációt, amely több lemezre kiterjedő csíkozással biztosítja a megfelelő IOPS-t, átviteli sebességet és redundanciát. Ez a támogatás azonban különböző tárológyártóktól és különböző, eltérő architektúrájú tárolási ajánlatoktól eltérő lehet.

A Azure Virtual Machines üzembe helyezett SQL Server on Linux esetén fontolja meg a szoftveres RAID használatát a megfelelő IOPS és átviteli sebesség biztosításához. A SQL Server Azure virtuális gépeken való konfigurálásakor a tárolási szempontokat a Azure virtuális gépeken SQL Server tárterületének konfigurálása című témakörben talál.

Az alábbi példa bemutatja, hogyan hozhat létre szoftveres RAID-t Linuxon egy Azure-beli virtuális gépen. A kötetekhez szükséges átviteli sebesség és IOPS alapján válassza meg a megfelelő számú adatlemezt, az adatokra, a tranzakciónaplóra és a tempdb I/O-ra vonatkozó követelmények figyelembevételével. A következő példában nyolc adatlemez csatlakozik a virtuális géphez: négy adatfájlt tárol, kettőt a tranzakciónaplókhoz, kettőt pedig a számítási feladatokhoz tempdb .

A RAID létrehozásához használt eszközök (például /dev/sdc) megkereséséhez használja a lsblk parancsot.

# 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

Lemezpartíciós és konfigurációs javaslatok

SQL Server esetén használjon RAID-konfigurációt. Az üzembe helyezett fájlrendszercsíkegység (sunit) és a sávszélesség megegyezik a RAID-geometriával. Az alábbi példa például egy naplókötet XFS-alapú konfigurációját mutatja be.

# 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

A naplótömb egy hat meghajtós RAID-10, 64 KB-os csíkkal. Ahogy látja:

  • sunit=16 blksesetén a 16 * 4096 blokkméret = 64 KB megegyezik a csík méretével.
  • swidth=48 blksesetén swidth / sunit = 3, amely a tömbben lévő adatmeghajtók száma, a paritásos meghajtók kivételével.

Az SQL Server az ext4 és az XFS fájlrendszereket is támogatja az adatbázis, a tranzakciónaplók és más fájlok, például a memóriabeli OLTP ellenőrzőpont-fájljainak üzemeltetéséhez az SQL Serveren. Használja az XFS fájlrendszert SQL Server adat- és tranzakciónapló-fájlok üzemeltetéséhez.

Formázza a kötetet az XFS fájlrendszer használatával:

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

Úgy konfigurálhatja az XFS fájlrendszert, hogy az XFS-kötet létrehozásakor és formázásakor ne legyen érzékeny a kis- és nagybetűk megkülönböztetésére. Ezt a konfigurációt nem gyakran használják a Linux-ökoszisztémában, de kompatibilitási okokból használhatja.

Futtassa például a következő parancsot. -n version=ci konfigurálásával az XFS fájlrendszert kis- és nagybetű érzéketlenné teheti.

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

Állandó memória fájlrendszerre vonatkozó javaslat

Az állandó memóriaeszközök fájlrendszer-konfigurációja esetén állítsa a mögöttes fájlrendszer blokklefoglalását 2 MB-ra. További információkért tekintse meg a műszaki szempontokat.

Fájlmegnyitási korlát

Előfordulhat, hogy a produkciós környezetben több kapcsolatra van szükség, mint a nyitott fájlok számára vonatkozó alapértelmezett korlátnál 1024 (1 024). Beállíthat soft és hard limiteket 1048576 értékre (1 048 576). Például RHEL esetén, szerkessze a /etc/security/limits.d/99-mssql-server.conf fájlt a következő értékekre.

mssql - nofile 1048576

Note

Ez a beállítás nem vonatkozik a systemdáltal indított SQL Server-szolgáltatásokra. További információért lásd: Hogyan állítsunk be korlátokat a szolgáltatásokhoz az RHEL-ben és a systemd-ben.

SQL Server adat- és naplófájlokhoz tartozó fájlrendszereken az utolsó hozzáférési dátum és idő letiltása

Annak érdekében, hogy a rendszer újraindítás után automatikusan újracsatlakoztathassa a meghajtókat, vegye fel őket a /etc/fstab fájlba. Használja az UUID -t (univerzálisan egyedi azonosító) /etc/fstab a meghajtóra való hivatkozáshoz, nem pedig az eszköz nevére (például /dev/sdc1).

Használja a noatime attribútumot az SQL Server-adatokat és naplófájlokat tároló fájlrendszerekkel. Tekintse meg a Linux-dokumentációt az attribútum beállításáról. Az alábbi példa bemutatja, hogyan engedélyezheti az noatime opciót egy Azure-beli virtuális gépen csatlakoztatott kötethez.

A /etc/fstabcsatlakoztatási pont bejegyzése:

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

Az előző példában az UUID azt az eszközt jelöli, amelyet a blkid parancs használatával talál.

SQL Server és kényszerített egységhozzáférés (FUA) I/O-alrendszer képessége

Egyes támogatott Linux-disztribúciók az I/O alrendszer szintjén implementálják a Forced Unit Access (FUA) rendszert az adatok tartósságának biztosítása érdekében. Az SQL Server ezzel a képességgel hatékony és megbízható I/O-teljesítményt nyújt Linux-számítási feladatokhoz. További információ a LINUX-disztribúciók FUA-támogatásáról és az SQL Serverre gyakorolt hatásáról : SQL Server on Linux: Forced Unit Access (FUA) Internals.

A FUA támogatása az I/O-alrendszerben a SUSE Linux Enterprise Server 12 SP5, a Red Hat Enterprise Linux 8.0 és az Ubuntu 18.04 rendszerben jelent meg. Az SQL Server 2017 (14.x) CU 6-os és újabb verzióiban az alábbi konfigurációval engedélyezheti a magas teljesítményt és a hatékony I/O-t a FUA-val az SQL Serverben.

Az alábbi feltételek teljesülése esetén használja ezt az ajánlott konfigurációt:

  • SQL Server 2017 (14.x) CU 6 és újabb verziók

  • A FUA-képességet támogató Linux-disztribúció és verzió (a Red Hat Enterprise Linux 8.0-tól, a SUSE Linux Enterprise Server 12 SP5-től vagy az Ubuntu 18.04-től kezdve)

    Note

    Az SQL Server 2025 -től (17.x) kezdődően a SUSE Linux Enterprise Server (SLES) nem támogatott.

  • Az SQL Server Storage XFS fájlrendszere a Linux kernel 4.18-ás vagy újabb verzióiban.

  • az SQL Server Storage ext4 fájlrendszere linuxos kernel 5.6-os vagy újabb verzióiban.

    Note

    Használja az XFS fájlrendszert SQL Server-adatok és tranzakciós naplófájlok üzemeltetéséhez, ha a Linux kernel verziója kisebb, mint 5.6. A kernel 5.6-os verziójától kezdve választhat az XFS és az ext4 között a megadott követelmények alapján.

  • A FUA-képességeket támogató és konfigurált tárolási alrendszer és hardver

Ajánlott konfiguráció:

  1. Engedélyezze a 3979 nyomkövetési jelzőt indítási paraméterként.

  2. Használja a mssql-conf a control.writethrough = 1 és a control.alternatewritethrough = 0 konfigurálásához.

Szinte minden olyan konfiguráció esetében, amely nem felel meg az előző feltételeknek, használja az alábbi ajánlott konfigurációt:

  1. Engedélyezze a 3982 nyomkövetési jelzőt indítási paraméterként (amely a Linux-ökoszisztémában az SQL Server alapértelmezett beállítása), és győződjön meg arról, hogy a 3979-as nyomkövetési jelző nincs engedélyezve indítási paraméterként.

  2. Használja a mssql-conf a control.writethrough = 1 és a control.alternatewritethrough = 1 konfigurálásához.

A Kubernetesben üzembe helyezett SQL Server-tárolók FUA-támogatása

  1. Az SQL Servernek tartósan csatolt tárolót kell használnia, és nem overlayfs.

  2. A tárolónak az XFS-t vagy az ext4 fájlrendszereket kell használnia, és támogatnia kell a FUA-t (az ext4 nem támogatja a FUA-t a Linux kernelen az 5.6-os verziónál korábbi verziókban). A beállítás engedélyezése előtt működjön együtt a Linux disztribúciós és tárolási szállítójával annak érdekében, hogy az operációs rendszer és a tárolóalrendszer támogatja a FUA-beállításokat. A Kubernetesen az alábbi paranccsal kérdezheti le a fájlrendszer típusát, ahol <pvc-name> a PersistentVolumeClaim:

    kubectl describe pv <pvc-name>
    

    A kimenetben keresse meg a fstype-t, amely XFS-re van beállítva.

  3. Az SQL Server-podokat üzemeltető feldolgozó csomópontnak olyan Linux-disztribúciót és verziót kell használnia, amely támogatja a FUA-képességet (a Red Hat Enterprise Linux 8.0-tól, a SUSE Linux Enterprise Server 12 SP5-től vagy az Ubuntu 18.04-től kezdve).

Ha a fenti feltételek teljesülnek, használja az alábbi ajánlott FUA-beállításokat:

  1. Engedélyezze a 3979 nyomkövetési jelzőt indítási paraméterként.

  2. Használja a mssql-conf a control.writethrough = 1 és a control.alternatewritethrough = 0 konfigurálásához.

Kernel- és CPU-beállítások a nagy teljesítmény érdekében

Az alábbi szakasz az SQL Server telepítésének magas teljesítményével és átviteli sebességével kapcsolatos ajánlott Linux operációsrendszer-beállításokat ismerteti. A beállítások konfigurálásához tekintse meg a Linux-disztribúció dokumentációját. A TuneD az ismertetett módon használható a következő szakaszban leírt számos processzor- és kernelkonfiguráció beállításához.

Használja a TuneD rendszert a kernel beállításainak konfigurálásához

A Red Hat Enterprise Linux (RHEL) felhasználói számára a TuneD átviteli teljesítmény profil automatikusan beállít bizonyos kernel- és CPU-beállításokat (a C-állapotok kivételével). Az RHEL 8.0-tól kezdve használhat egy tuned profilt, mssql amely finomabb Linux-teljesítményhez kapcsolódó hangolásokat kínál SQL Server számítási feladatokhoz. Ez a profil az RHEL átviteli sebesség-teljesítmény profiljára épül. Mivel a mssql profil minden beállítását elérhetővé teszi, áttekintheti és módosíthatja azokat más Linux-disztribúciókhoz vagy rhEL-kiadásokhoz, amelyek nem tartalmazzák ezt a profilt.

A SUSE Linux Enterprise Server 12 SP5, Ubuntu 18.04 és Red Hat Enterprise Linux 7.x esetén manuálisan telepítheti a tuned csomagot. Az mssql profilt hozza létre és konfigurálja az alábbi szakaszban leírtak szerint.

Note

Az SQL Server 2025 -től (17.x) kezdődően a SUSE Linux Enterprise Server (SLES) nem támogatott.

Javasolt Linux-beállítások TuneD mssql profillal

Az alábbi példa egy TuneD konfigurációt biztosít a Linuxon futó SQL Serverhez.

[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

Ha 4.18-nál nagyobb kernelverziójú Linux-disztribúciókat használ, tegye megjegyzésbe az alábbi lehetőségeket az ábrán látható módon. Ellenkező esetben törölje a következő beállításokat, ha 4.18-nál korábbi kernelverziókkal rendelkező disztribúciókat használ.

# kernel.sched_latency_ns = 60000000
# kernel.sched_migration_cost_ns = 500000
# kernel.sched_min_granularity_ns = 15000000
# kernel.sched_wakeup_granularity_ns = 2000000

A TuneD profil engedélyezéséhez mentse ezeket a definíciókat egy tuned.conf fájlba a /usr/lib/tuned/mssql mappába, majd az alábbi parancsokkal engedélyezze a profilt:

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

Ellenőrizze, hogy a profil aktív-e a következő paranccsal:

tuned-adm active

Vagy:

tuned-adm list

CPU-beállításokra vonatkozó javaslat

Az alábbi táblázat a CPU-beállításokra vonatkozó javaslatokat tartalmaz:

Setting Value További információ
Processzorfrekvencia-vezérlő teljesítmény A cpupower parancs megtekintése
ENERGY_PERF_BIAS teljesítmény A x86_energy_perf_policy parancs megtekintése
minimális teljesítmény százalék 100 Nézze meg az Intel p-state dokumentációját.
C-államok Csak C1 A linuxos vagy rendszerdokumentációban megtudhatja, hogyan biztosítható, hogy a C-államok csak C1 értékre legyenek beállítva

Ha a TuneD-et a leírtaknak megfelelően használja, az automatikusan konfigurálja a processzorfrekvencia-vezérlőt ENERGY_PERF_BIASés min_perf_pct a beállításokat. Az átviteli sebesség-teljesítmény profilt használja a mssql profil alapjaként. A C-States paramétert manuálisan kell konfigurálnia a Linux vagy a rendszer forgalmazója által biztosított dokumentációnak megfelelően.

Lemezbeállításokra vonatkozó javaslatok

Az alábbi táblázat a lemezbeállításokra vonatkozó javaslatokat tartalmaz:

Setting Value További információ
Lemez readahead 4096 Lásd a blockdev parancsot
sysctl beállításai kernel.sched_min_granularity_ns = 15000000
kernel.sched_wakeup_granularity_ns = 2000000
vm.dirty_ratio = 80
vm.dirty_background_ratio = 3
vm.swappiness = 1
Lásd a sysctl parancsot

Description

  • vm.swappiness: Ez a paraméter szabályozza a futtatókörnyezeti folyamat memóriájának a fájlrendszer gyorsítótárához viszonyított felcseréléséhez megadott relatív súlyt. Ennek a paraméternek az alapértelmezett értéke 60, ami azt jelzi, hogy a futtatókörnyezeti folyamat memórialapjainak cseréje a fájlrendszer gyorsítótároldalainak eltávolításához képest 60:140 arányban történik. Ha az értéket 1 értékre állítja, az azt jelzi, hogy a futtatókörnyezeti folyamat memóriája a fájlrendszer gyorsítótárazásának rovására a fizikai memóriában marad. Mivel az SQL Server adatoldal-gyorsítótárként használja a pufferkészletet, és szívesebben ír át a fájlrendszer gyorsítótárát megkerülő fizikai hardveren a megbízható helyreállítás érdekében, az agresszív felcserélési konfiguráció előnyös lehet a nagy teljesítményű és dedikált SQL Server esetében.

    További információt a /proc/sys/vm/ – #swappiness dokumentációjában talál.

  • vm.dirty_*: Az SQL Server fájlírási hozzáférései gyorsítótárazás nélkül történnek, és így megfelelnek az adatintegritási követelményeknek. Ezek a paraméterek lehetővé teszik a hatékony aszinkron írási teljesítményt, és csökkentik a Linux-gyorsítótárazási írások tárolási I/O-hatását azáltal, hogy elegendő méretű gyorsítótárazást biztosítanak, miközben korlátozzák a kiürítést.

  • kernel.sched_*: Ezek a paraméterértékek a Linux-kernel teljesen tisztességes ütemezési (CFS) algoritmusának finomhangolására vonatkozó jelenlegi javaslatot képviselik. Javítják a hálózati és tárolási I/O-hívások átviteli sebességét a szálak folyamatközi előmegismétlése és újrakezdése tekintetében.

mssql A TuneD profil használatával konfigurálja a , vm.swappinessés vm.dirty_* a kernel.sched_*beállításokat. A lemezbeállítást readahead manuálisan kell konfigurálnia az blockdev parancsot használva az egyes eszközökhöz.

Kernelbeállítás az automatikus NUMA-kiegyensúlyozáshoz többcsomópontos NUMA-rendszereken

Ha többcsomópontos NUMA-rendszerre telepíti az SQL Servert, alapértelmezés szerint az alábbi kernel.numa_balancing kernelbeállítás engedélyezve van. Annak érdekében, hogy az SQL Server maximális hatékonysággal működjön egy NUMA-rendszeren, tiltsa le az automatikus NUMA-kiegyensúlyozást egy többcsomópontos NUMA-rendszeren:

sysctl -w kernel.numa_balancing=0

A mssql Hangolt profil használata konfigurálja a kernel.numa_balancing beállítást.

A virtuális címtér kernelbeállításai

Az alapértelmezett beállítás vm.max_map_count65536 a (65 536), amely lehet, hogy nem elég magas egy SQL Server telepítéshez. Ezért módosítsa az vm.max_map_count értéket legalább 262144 (262 144) értékre egy SQL Server üzemelő példány esetében. A kernelparaméterek további finomhangolásához tekintse meg a javasolt Linux-beállításokat egy TuneD mssql-profilszakasz használatával . A(z) vm.max_map_count maximális értéke 2147483647 (2 147 483 647).

sysctl -w vm.max_map_count=1600000

A mssql Hangolt profil használata konfigurálja a vm.max_map_count beállítást.

Tartsa engedélyezve a transzparens nagy oldalakat (THP)

A legtöbb Linux-telepítés alapértelmezés szerint be van kapcsolva. A legkonzisztensebb teljesítmény érdekében hagyja engedélyezve ezt a konfigurációs beállítást. Ha azonban a több példányt tartalmazó SQL Server-telepítésekben nagy memória-lapozási tevékenység van, vagy ha az SQL Server más memóriaigényű alkalmazásokkal fut a kiszolgálón, tesztelje az alkalmazás teljesítményét a következő parancs végrehajtása után:

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

Vagy módosítsa a mssql Hangolás profilt a következő sorral:

vm.transparent_hugepages=madvise

A módosítás után győződjön meg arról, hogy a mssql profil aktív:

tuned-adm off
tuned-adm profile mssql

A mssql Hangolt profil használata konfigurálja a transparent_hugepage beállítást.

Hálózati beállítási javaslatok

A tárolási és a CPU-javaslatok mellett vegye figyelembe a következő hálózatspecifikus javaslatokat. A különböző hálózati adapterek különböző beállításokat kínálnak. A hálózati adapterek gyártói útmutatást nyújtanak az egyes beállításokhoz. Tesztelje és konfigurálja ezeket a beállításokat a fejlesztési környezetekben, mielőtt éles környezetekre alkalmazza őket. Az alábbi lehetőségeket példákkal ismertetjük, és a használt parancsok a hálózati adapter típusára és a szállítóra vonatkoznak.

  1. Hálózati port pufferméreténekkonfigurálása. A példában a hálózati adapter neve eth0Intel-alapú hálózati adapter. Intel-alapú hálózati adapter esetén az ajánlott pufferméret 4 KB (4096). Ellenőrizze az előre beállított maximumokat, majd konfigurálja az alábbi példával:

    Ellenőrizze az előre beállított maximumokat az alábbi paranccsal. Cserélje le a eth0 a hálózati kártya nevére:

    ethtool -g eth0
    

    Állítsa a rx (fogadás) és tx (átvitel) pufferméretét 4 KB-ra:

    ethtool -G eth0 rx 4096 tx 4096
    

    Ellenőrizze, hogy az érték megfelelően van-e konfigurálva:

    ethtool -g eth0
    
  2. Jumbo-keretek engedélyezése. A jumbo-keretek engedélyezése előtt győződjön meg arról, hogy az ügyfelek és az SQL Server közötti hálózati csomag elérési útjának minden hálózati kapcsolója, útválasztója és bármi más nélkülözhetetlen eleme támogatja a jumbo-kereteket. A jumbo-keretek csak ezután javíthatják a teljesítményt. A jumbo frame-ek engedélyezése után csatlakozzon a SQL Serverhez, és állítsa a hálózati csomagméretet 8060-ra a sp_configure használatával, ahogy az a következő példában látható:

    # 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. Konfigurálja az adaptív IRQ-összevonást. Alapértelmezés szerint állítsa be a portot az adaptív RX/TX IRQ-skálázáshoz, ami azt jelenti, hogy a megszakításkézbesítés úgy van beállítva, hogy javítsa a késést, ha a csomagsebesség alacsony, és javítja az átviteli sebességet, ha a csomagsebesség magas. Előfordulhat, hogy ez a beállítás nem érhető el a hálózati infrastruktúrában, ezért tekintse át a meglévő hálózati infrastruktúrát, és győződjön meg arról, hogy ez a beállítás támogatott. Ilyen például a eth0 nevű hálózati kártya, amely Intel-alapú.

    Állítsa be a portot az adaptív RX/TX IRQ-szenesítéshez:

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

    Erősítse meg a beállítást:

    ethtool -c eth0
    

    Note

    A nagy teljesítményű környezetekben, például a teljesítménymérési környezetekben való kiszámítható viselkedés érdekében tiltsa le az adaptív RX/TX IRQ-egyesítést, majd állítsa be kifejezetten az RX/TX megszakítás-egyesítést. Tekintse meg a példaparancsokat az RX/TX IRQ-szenesítés letiltásához, majd az értékek konkrét beállításához:

    Az adaptív RX/TX IRQ-egyesítés letiltása:

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

    Erősítse meg a módosítást:

    ethtool -c eth0
    

    Adja meg a rx-usecs és irq paramétereket. rx-usecs meghatározza, hány mikroszekundum telik el legalább egy csomag fogadása után, mielőtt a megszakítás megkezdődik. A irq paraméter a megszakítás letiltásakor az állapot frissítésének megfelelő késleltetését adja meg. Intel-alapú hálózati adapterek esetén a következő beállításokat használhatja:

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

    Erősítse meg a módosítást:

    ethtool -c eth0
    
  4. Engedélyezze a fogadóoldali skálázást (RSS), és alapértelmezés szerint egyesítse az RSS-üzenetsorok RX és TX oldalát. A Microsoft támogatási szolgálatának használatakor bizonyos helyzetekben az RSS letiltása is javítja a teljesítményt. Tesztelje ezt a beállítást tesztkörnyezetekben, mielőtt éles környezetben alkalmazva lenne. Az alábbi példa az Intel hálózati adapterekre mutat.

    Az előre beállított maximális értékek lekérése:

    ethtool -l eth0
    

    Egyesítse az üzenetsorokat az előre beállított "Kombinált" maximális értékben jelentett értékkel. Ebben a példában az érték 8-ra van beállítva.

    ethtool -L eth0 combined 8
    

    Ellenőrizze a beállítást:

    ethtool -l eth0
    
  5. Konfigurálja a hálózati adapter port IRQ-affinitását. Az IRQ-affinitás módosításával a várt teljesítmény eléréséhez vegye figyelembe néhány fontos paramétert, például a kiszolgálótopológia Linux általi kezelését, a hálózati adapter illesztőprogram-vermét, az alapértelmezett beállításokat és irqbalance beállításokat. A hálózati adapter portjának IRQ-affinitási beállításait optimalizálhatja a kiszolgáló topológiájára vonatkozó ismeretei felhasználásával, a irqbalance letiltásával és a hálózati adapter gyártóspecifikus beállításainak használatával.

    A konfiguráció magyarázatában a Mellanox-specifikus hálózati infrastruktúra alábbi példája segít. További információkért és a Mellanox mlnx eszközök letöltéséhez tekintse meg Mellanox hálózati adapterek teljesítményhangoló eszközeit. A parancsok a környezet alapján változnak. További útmutatásért forduljon a hálózati adapter gyártójához.

    Tiltsa le irqbalance, vagy kérje le az IRQ-beállítások pillanatképét, és kényszerítse a démont a kilépésre:

    systemctl disable irqbalance.service
    

    Vagy:

    irqbalance --oneshot
    

    Győződjön meg arról, hogy a common_irq_affinity.sh végrehajtható:

    chmod +x common_irq_affinity.sh
    

    IrQ-affinitás megjelenítése a Mellanox hálózati adapter portjához (például eth0):

    ./show_irq_affinity.sh eth0
    

    Optimalizálja a legjobb átviteli teljesítményt egy Mellanox eszközzel:

    ./mlnx_tune -p HIGH_THROUGHPUT
    

    Állítson be hardver affinitást a hálózati adaptert és portját fizikailag üzemeltető NUMA-csomóponthoz:

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

    Ellenőrizze az IRQ-affinitást:

    ./show_irq_affinity.sh eth0
    

    IRQ-egyesítési optimalizálások hozzáadása:

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

    Ellenőrizze a beállításokat:

    ethtool -c eth0
    
  6. Ellenőrizze a hálózati adapter sebességét. Az előző módosítások elvégzése után ellenőrizze a hálózati adapter sebességét, hogy az megfeleljen az elvárásainak az alábbi paranccsal:

    ethtool eth0 | grep -i Speed
    

Speciális kernel- és operációsrendszer-konfiguráció

  • A legjobb tárolási I/O-teljesítmény érdekében használja a Linux multiqueue ütemezését blokkeszközökhöz. Ez az ütemezési módszer lehetővé teszi, hogy a blokkréteg teljesítménye jól skálázható legyen gyors SSD-meghajtókkal és többmagos rendszerekkel. Ellenőrizze a dokumentációban, hogy a Linux-disztribúció alapértelmezés szerint engedélyezi-e. A legtöbb másik esetben elindíthatja a kernelt scsi_mod.use_blk_mq=y a szükséges funkciók engedélyezéséhez. A Linux-disztribúció dokumentációja további útmutatást adhat ehhez a beállításhoz. Ez a beállítás konzisztens a linuxos felsőbb rétegbeli kernellel.

  • Mivel a többutas I/O-t gyakran használják SQL Server-telepítésekhez, az eszközleképező (DM) multiqueue-célját úgy konfigurálja, hogy a blk-mq infrastruktúrát használja, a dm_mod.use_blk_mq=y rendszermag-indítási kapcsoló engedélyezésével. Az alapértelmezett érték a n (letiltva). Ez a beállítás csökkenti a DM-réteg zárolási többletterhelését, amikor a mögöttes SCSI-eszközök használják blk-mq. A többutas I/O konfigurálásáról további információt a Linux-disztribúció dokumentációjában talál.

Swapfile konfigurálása

Győződjön meg arról, hogy megfelelően konfigurált swapfile-t használ a memóriakihasználtság elkerülése érdekében. A swapfile létrehozásához és megfelelő méretéhez tekintse meg a Linux dokumentációját. Ha tárolók futtatását tervezi, engedélyezze a helycserét a gazdagép szintjén.

Virtuális gépek és dinamikus memória

Ha SQL Server on Linux fut egy virtuális gépen, győződjön meg arról, hogy olyan beállításokat választ, amelyek javítják a virtuális gép számára fenntartott memória mennyiségét. Ne használjon olyan funkciókat, mint Hyper-V dinamikus memória.

SQL Server-konfiguráció

Hajtsa végre az alábbi konfigurációs feladatokat az SQL Server Linuxon való telepítése után, hogy a lehető legjobb teljesítményt érje el az alkalmazás számára.

Bevált gyakorlatok

Az alábbi eljárások az összes SQL Server on Linux üzemelő példányra vonatkoznak.

A PROCESS AFFINITY használata csomópontokhoz és processzorokhoz

Linux operációs rendszeren a ALTER SERVER CONFIGURATION használatával állíthatja be a(z) PROCESS AFFINITY értéket az SQL Serverhez használt összes NUMANODE és CPU esetében (ami jellemzően az összes NODEra és CPU-ra vonatkozik). A processzor affinitása segít fenntartani a linuxos és SQL-ütemezés hatékony viselkedését. A legegyszerűbb módszer a NUMANODE lehetőség használata. Akkor is használhatja PROCESS AFFINITY , ha csak egyetlen NUMA-csomópont van a számítógépen. A beállítással PROCESS AFFINITYkapcsolatos további információkért lásd a ALTER SERVER CONFIGURATION cikket.

Több tempdb adatfájl konfigurálása

Mivel egy SQL Server on Linux telepítés nem kínál lehetőséget több tempdb fájl konfigurálására, érdemes lehet több tempdb adatfájlt létrehozni a telepítés után. További információ: Javaslatok az SQL Server tempdb-adatbázisfoglalási versengés csökkentésére.

Speciális konfiguráció

A memóriakonfigurációs lehetőségekről, beleértve a mssql-conf memóriakorlátokat, a csoportbeállításokat, a Docker-tárolómemória-példákat és a helycserére vonatkozó szempontokat, tekintse meg a Teljesítmény ajánlott eljárásait: SQL Server memória Linuxon.