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
Megjegyzés:
Ez a funkció az SQL Server egy későbbi verziójában lesz eltávolítva. Ne használja ezt a funkciót az új fejlesztési munkában, és tervezze meg a funkciót jelenleg használó alkalmazások módosítását. A ALTER SERVER CONFIGURATION használható helyette.
A többfeladatos munkavégzés végrehajtásához a Windows néha áthelyezi a folyamatszálakat a különböző processzorok között. Bár az operációs rendszer szempontjából hatékony, ez a tevékenység csökkentheti az SQL Server teljesítményét nagy rendszerterhelések esetén, mivel az egyes processzorgyorsítótárak ismételten újratöltődnek adatokkal. A processzorok adott szálakhoz való hozzárendelése ezen feltételek mellett javíthatja a teljesítményt a processzor újraterhelésének megszüntetésével; a szál és a processzor közötti ilyen társítást processzor-affinitásnak nevezzük.
Az SQL Server két affinitásmaszk-beállítással támogatja a processzor affinitást: affinity mask (más néven CPU-affinitási maszk) és affinity I/O mask. További információért a affinity I/O mask option témakörben lásd: Kiszolgáló konfigurációja: affinitási I/O-maszk. A 33–64 processzorral rendelkező kiszolgálók processzor- és I/O-affinitásának támogatásához az affinitás64 maszkot és az affinitás64 I/O-maszkkiszolgáló konfigurációs beállításait is használnia kell.
Megjegyzés:
A 33–64 processzorral rendelkező kiszolgálók affinitási támogatása csak 64 bites operációs rendszereken érhető el.
Az affinity mask SQL Server korábbi kiadásaiban meglévő lehetőség dinamikusan szabályozza a processzor affinitását.
Az SQL Serverben a affinity mask beállítás konfigurálható anélkül, hogy újra kellene indítania az SQL Server-példányt. Amikor a(z) sp_configure, elemet használja, egy konfigurációs beállítás megadása után le kell futtatnia a RECONFIGURE vagy a RECONFIGURE WITH OVERRIDE elemet. Az SQL Server Express használatakor a affinity mask beállítás módosítása újraindítást igényel.
Az affinitási maszkok módosítása dinamikusan történik, ami lehetővé teszi a folyamatszálakat az SQL Serveren belüli folyamatláncokat kötő processzorütemezők igény szerinti indítását és leállítását. Ez akkor fordulhat elő, ha a feltételek megváltoznak a kiszolgálón. Ha például egy új SQL Server-példányt ad hozzá a kiszolgálóhoz, előfordulhat, hogy módosítani kell a affinity mask processzorterhelés újraelosztásának lehetőségét.
Az affinitási bitmaszkok módosításához az SQL Servernek engedélyeznie kell egy új processzorütemezőt, és le kell tiltania a meglévő processzorütemezőt. Az új kötegek ezután feldolgozhatók az új vagy a megmaradt ütemezőkön.
Új PROCESSZORütemező indításához az SQL Server létrehoz egy új ütemezőt, és hozzáadja a szokásos ütemezők listájához. Az új ütemezőt csak az újonnan beérkező kötegek esetében veszik figyelembe. A jelenlegi kötegek továbbra is ugyanazon az ütemezőn futnak. A feldolgozók akkor kerülnek át az új ütemezőhöz, amikor felszabadulnak, vagy amikor új feldolgozók jönnek létre.
Az ütemező leállításához meg kell várni, hogy az ütemezőn futó összes köteg befejezze a tevékenységeit, majd kilépjen. A leállított ütemező offline állapotúként van megjelölve, így nincs új köteg ütemezve rajta.
Akár új ütemezőt ad hozzá, akár eltávolít, az állandó rendszerfeladatok, például a zárolásfigyelő, az ellenőrzőpont, a rendszertevékenység-szál (DTC feldolgozása) és a jelfeldolgozás továbbra is futnak az ütemezőn, amíg a kiszolgáló működik. Ezek az állandó rendszerfeladatok nem települnek át dinamikusan. A rendszerfeladatok processzorterhelésének ütemezők közötti újraelosztásához újra kell indítani az SQL Server-példányt. Ha az SQL Server egy állandó rendszerfeladathoz társított ütemezőt próbál leállítani, a feladat továbbra is az offline ütemezőn fut (migrálás nélkül). Ez az ütemező a módosított affinitási maszkban lévő processzorokhoz van kötve, és nem terheli a módosítás előtt kötött processzort. Az extra offline ütemezők nem befolyásolhatják jelentősen a rendszer terhelését. Ha igen, az adatbázis-kiszolgáló újraindítására van szükség a feladatok újrakonfigurálásához a módosított affinitási maszkkal elérhető ütemezőkben.
Ne állítsa be az SQL Server affinity mask és affinity I/O mask konfigurációs értékeit úgy, hogy ugyanazokat a processzorokat használják. A teljesítmény romlhat, ha úgy dönt, hogy egy processzort köt az SQL Server feldolgozói szálütemezéséhez és az I/O-feldolgozáshoz. Ezért győződjön meg arról, hogy a konfigurációs értékek nincsenek ugyanahhoz a processzorhoz beállítva. Ugyanez az ajánlás vonatkozik a affinity64 mask-ra és a affinity64 I/O mask-re. Annak biztosítására, hogy a affinity mask ne legyen átfedésben a affinity I/O mask elemmel, a RECONFIGURE parancs ellenőrzi, hogy a normál CPU- és I/O-affinitások kölcsönösen kizárják-e egymást. Ha nem, hibaüzenet jelenik meg az ügyfél munkamenetében és az SQL Server hibanaplójában, jelezve, hogy ez a beállítás nem ajánlott.
Msg 5834, Level 16, State 1, Line 1
The affinity mask specified conflicts with the IO affinity mask specified. Use the override option to force this configuration.
A(z) RECONFIGURE WITH OVERRIDE kapcsolók használata lehetővé teszi, hogy a CPU- és I/O-affinitások átfedjenek, és ne zárják ki egymást.
Az I/O affinitási feladatokra (például a lusta íróra és a naplóíróra) közvetlenül hatással van a affinity I/O mask. Ha a lusta írói és naplóírói feladatok nincsenek kötve, ugyanazok a szabályok vonatkoznak a többi állandó feladatra, például a zárolásfigyelőre vagy az ellenőrzőpontra.
Ha olyan affinitási maszkot ad meg, amely nem létező processzorra próbál megfeleltetni, a RECONFIGURE parancs hibaüzenetet küld az ügyfél munkamenetének és az SQL Server hibanaplójának is. A RECONFIGURE WITH OVERRIDE beállítás használatának ebben az esetben nincs semmilyen hatása, és ismét ugyanaz a konfigurációs hiba jelenik meg.
Az SQL Server-tevékenységet a Windows operációs rendszer adott számítási feladataiból is kizárhatja. Ha egy processzort 1ábrázoló bitet állít be, akkor az SQL Server adatbázismotorja kiválasztja a processzort a szál-hozzárendeléshez. Ha az alapértelmezett értékre affinity mask van állítva0, a Microsoft Windows ütemezési algoritmusai beállítják a szál affinitását. Ha nemero értékűre állítja be affinity mask az értéket, az SQL Server affinitása bitmaszkként értelmezi az értéket, amely meghatározza azokat a processzorokat, amelyek jogosultak a kiválasztásra.
Az SQL Server-szálak adott processzorokon való futtatásától való elkülönítésével a Microsoft Windows jobban értékelheti a Windowsra jellemző folyamatok rendszerszintű kezelését. Például egy 8 CPU-s kiszolgálón, amelyen az SQL Server két példánya (A és B példány) fut, a rendszergazda azzal a affinity mask beállítással rendelheti hozzá az első 4 CPU-készletet az A példányhoz, a második 4-et pedig a B példányhoz. 32-nél több processzor konfigurálásához állítsa be a affinity maskaffinity64 mask. A affinity mask értékei a következők:
| Bájtok maszkban | CPU-k száma |
|---|---|
| 1 bájt | Legfeljebb 8 processzor |
| 2 bájtos | Legfeljebb 16 processzor |
| 3 bájtos | Legfeljebb 24 processzor |
| 4-bájtos | Legfeljebb 32 PROCESSZOR |
Több mint 32 processzor lefedéséhez konfiguráljon 4 bájtot affinity mask az első 32 CPU-hoz, és legfeljebb 4 bájtot affinity64 mask a fennmaradó processzorokhoz.
Mivel az SQL Server processzor affinitása speciális művelet, csak akkor használja, ha szükséges. A legtöbb esetben az alapértelmezett Windows-affinitás biztosítja a legjobb teljesítményt. Az affinitási maszkok beállításakor vegye figyelembe a többi alkalmazás processzorigényét. További információkért tekintse meg a Windows operációs rendszer dokumentációját.
Megjegyzés:
A Folyamatfigyelővel megtekintheti és elemezheti az egyes processzorhasználatokat.
A affinity I/O mask beállítás megadásakor azt a(z) affinity mask konfigurációs beállítással együtt kell használnia. Azonban, ahogy korábban említettük, ne engedélyezze ugyanazt a processzort mind a kapcsolóban, mind a affinity maskaffinity I/O mask beállításban. Az egyes CPU-knak megfelelő biteknek az alábbi három állapot egyikében kell lenniük:
-
0mind aaffinity maskbeállításban, mind aaffinity I/O maskbeállításban. -
1aaffinity maskbeállításban és0aaffinity I/O maskbeállításban. -
0aaffinity maskbeállításban és1aaffinity I/O maskbeállításban.
Caution
Ne konfigurálja a cpu-affinitást a Windows operációs rendszerben, és ne konfigurálja az affinity mask SQL Serverben. Ezek a beállítások ugyanazt az eredményt próbálják elérni, és ha a konfigurációk inkonzisztensek, előfordulhat, hogy kiszámíthatatlan eredmények érhetők el. Az SQL Server CPU-affinitását legjobb az SQL Serveren belüli sp_configure opcióval konfigurálni.
Példák
Az affinity mask beállítás megadására példaként, ha az 1., 2. és 5. processzor van elérhetőként kiválasztva, az 1., 2. és 5. pozícióban lévő bitek értéke 1, a 0., 3., 4., 6. és 7. pozícióban lévő bitek értéke pedig 0, akkor a 0x26 hexadecimális értéket kell használni (ennek decimális megfelelője: 38). A bitpozíciók számozása jobbról balra.
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
GO
EXEC sp_configure 'affinity mask', 38;
RECONFIGURE;
GO
Az alábbi táblázat egy 8 CPU-s rendszer affinity mask értékeit mutatja.
| Decimális érték | Bináris bitmaszk | SQL Server-szálak engedélyezése processzorokon |
|---|---|---|
1 |
00000001 |
0 |
3 |
00000011 |
0 és 1 |
7 |
00000111 |
0, 1 és 2 |
15 |
00001111 |
0, 1, 2 és 3 |
31 |
00011111 |
0, 1, 2, 3 és 4 |
63 |
00111111 |
0, 1, 2, 3, 4 és 5 |
127 |
01111111 |
0, 1, 2, 3, 4, 5 és 6 |
255 |
11111111 |
0, 1, 2, 3, 4, 5, 6 és 7 |
A affinity mask beállítás egy speciális lehetőség. Ha a sp_configure rendszerben tárolt eljárást használja a beállítás módosítására, a(z) affinity mask értékét csak akkor módosíthatja, ha a(z) show advanced options értéke 1. A Transact-SQL RECONFIGURE parancs végrehajtása után az új beállítás azonnal érvénybe lép anélkül, hogy újra kellene indítania az SQL Server-példányt.
Nem egységes memóriahozzáférés (NUMA)
Ha hardveralapú, nem egységes memóriahozzáférést (NUMA) használ, és a affinity mask beállítás be van állítva, a csomópont minden ütemezője a saját processzorához csatlakozik. Ha nincs beállítva, minden affinity mask ütemező a NUMA-csomóponton belüli PROCESSZORok csoportjához van kötve, és a NUMA-csomópontra N1 leképezett ütemezők a csomópont bármely PROCESSZORán ütemezhetik a munkát, más csomóponthoz társított PROCESSZORokon azonban nem.
Az egyetlen NUMA-csomóponton futó műveletek csak az adott csomópont pufferoldalait használhatják. Ha egy művelet párhuzamosan fut több csomópont cpu-ján, a memória bármely érintett csomópontról használható.
Licencproblémák
A dinamikus affinitást szigorúan korlátozza a CPU-licencelés. Az SQL Server nem engedélyezi a licencelési szabályzatot sértő beállítások konfigurálását affinity mask .
Startup
Ha egy megadott affinitási maszk megsérti a licencelési szabályzatot az SQL Server indításakor vagy az adatbázis csatolása során, a motorréteg befejezi az indítási folyamatot vagy az adatbázis csatolási/visszaállítási műveletét, majd nullára állítja vissza sp_configure az affinitási maszk futtatási értékét, és hibaüzenetet küld az SQL Server hibanaplójának.
Újrakonfigurálás
Ha egy megadott affinitási maszk megsérti a licencelési szabályzatot Transact-SQL RECONFIGURE parancs futtatásakor, a rendszer hibaüzenetet küld az ügyfél munkamenetének és az SQL Server hibanaplójának, amely megköveteli, hogy az adatbázis rendszergazdája újrakonfigurálja az affinitási maszkot. Ebben az esetben a(z) RECONFIGURE WITH OVERRIDE parancs nem fogadható el.