Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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.
- Storage konfigurációs ajánlása
- Kernel- és CPU-beállítások a nagy teljesítmény érdekében
- Az SQL Server konfigurációja
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énswidth/sunit= 3, amely a tömbben lévő adatmeghajtók száma, a paritásos meghajtók kivételével.
Ajánlott fájlrendszerkonfiguráció
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ó:
Engedélyezze a 3979 nyomkövetési jelzőt indítási paraméterként.
Használja a
mssql-confacontrol.writethrough = 1és acontrol.alternatewritethrough = 0konfigurá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:
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.
Használja a
mssql-confacontrol.writethrough = 1és acontrol.alternatewritethrough = 1konfigurálásához.
A Kubernetesben üzembe helyezett SQL Server-tárolók FUA-támogatása
Az SQL Servernek tartósan csatolt tárolót kell használnia, és nem
overlayfs.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>aPersistentVolumeClaim:kubectl describe pv <pvc-name>A kimenetben keresse meg a
fstype-t, amely XFS-re van beállítva.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:
Engedélyezze a 3979 nyomkövetési jelzőt indítási paraméterként.
Használja a
mssql-confacontrol.writethrough = 1és acontrol.alternatewritethrough = 0konfigurá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 = 15000000kernel.sched_wakeup_granularity_ns = 2000000vm.dirty_ratio = 80vm.dirty_background_ratio = 3vm.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.
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
eth0a hálózati kártya nevére:ethtool -g eth0Állítsa a
rx(fogadás) éstx(átvitel) pufferméretét 4 KB-ra:ethtool -G eth0 rx 4096 tx 4096Ellenőrizze, hogy az érték megfelelően van-e konfigurálva:
ethtool -g eth0Jumbo-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_configurehaszná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 9014EXECUTE sp_configure 'network packet size', '8060'; GO RECONFIGURE WITH OVERRIDE; GOKonfigurá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
eth0nevű 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 onErősítse meg a beállítást:
ethtool -c eth0Note
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 offErősítse meg a módosítást:
ethtool -c eth0Adja meg a
rx-usecsésirqparamétereket.rx-usecsmeghatározza, hány mikroszekundum telik el legalább egy csomag fogadása után, mielőtt a megszakítás megkezdődik. Airqparamé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 512Erősítse meg a módosítást:
ethtool -c eth0Engedé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 eth0Egyesí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 8Ellenőrizze a beállítást:
ethtool -l eth0Konfigurá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
irqbalancebeá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, airqbalanceletiltá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.serviceVagy:
irqbalance --oneshotGyőződjön meg arról, hogy a
common_irq_affinity.shvégrehajtható:chmod +x common_irq_affinity.shIrQ-affinitás megjelenítése a Mellanox hálózati adapter portjához (például
eth0):./show_irq_affinity.sh eth0Optimalizá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` eth0Ellenőrizze az IRQ-affinitást:
./show_irq_affinity.sh eth0IRQ-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 2048Ellenőrizze a beállításokat:
ethtool -c eth0Ellenő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=ya 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-mqinfrastruktúrát használja, adm_mod.use_blk_mq=yrendszermag-indítási kapcsoló engedélyezésével. Az alapértelmezett érték an(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ákblk-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.