sys.dm_os_schedulers (języka Transact-SQL)
Zwraca jeden wiersz na harmonogram w SQL Server w przypadku gdy każdy harmonogram jest mapowany procesor, w którym poszczególne. Użyj tego widoku, aby monitorować stan harmonogramu lub do identyfikowania wykorzystał zadań.
Nazwa kolumna |
Typ danych |
Description |
---|---|---|
scheduler_address |
varbinary(8) |
Adres pamięci do harmonogramu.Nie jest pustych. |
parent_node_id |
int |
Identyfikator węzła, który przez harmonogram zadań, do której należy ta znana również jako węzeł nadrzędny.Ten parametr reprezentuje pamięć typu węzła dostępu (NUMA).Nie jest pustych. |
scheduler_id |
int |
Identyfikator harmonogramu.Wszystkie pracownikom, służące do uruchamiania kwerend regularnych mają numery identyfikacyjne, mniej niż 255.Te pracownikom, których identyfikatory większe niż lub równą 255 są używane wewnętrznie przez SQL Server, takie jak harmonogram połączeń dedykowanych administratora. Nie jest pustych. |
cpu_id |
smallint |
Identyfikator PROCESORA, z którym skojarzony jest ten harmonogram.Jeśli SQL Server jest skonfigurowany do uruchamiania z koligacji, wartość jest IDENTYFIKATOREM PROCESORA, powinien być uruchomiony przez harmonogram zadań. 255 = Nie określono maski koligacji. Nie jest pustych. |
Stan |
nvarchar(60) |
Wskazuje stan przez harmonogram zadań.Może mieć jedną z następujących wartości:
Nie jest pustych. UKRYTE pracownikom służą do przetwarzania żądań, które są wewnętrzne Database Engine. Pracownikom WIDOCZNE są używane do przetworzenia żądania użytkownika. OFFLINE pracownikom mapować procesorów jest w trybie offline w maski koligacji i dlatego nie są używane do przetwarzania wszystkich żądań.ONLINE pracownikom mapować procesorów, które w maski koligacji są w trybie online i są dostępne do przetwarzania wątków. DAC wskazuje przez harmonogram zadań jest uruchomiona w ramach połączenia dedykowane administratora. DODATKIEM HOT wskazuje pracownikom zostały dodane w odpowiedzi na gorąco dodać zdarzenie PROCESORA. |
is_online |
bit |
Jeśli SQL Server jest skonfigurowany do używania tylko niektóre z dostępnych procesorów na serwerze, konfiguracja ta może oznaczać, że niektóre pracownikom są mapowane na które nie znajdują się w maski koligacji procesorów. Jeżeli przypadek tak, to kolumna zwraca wartość 0.Ta wartość oznacza przez harmonogram zadań nie jest używany do przetwarzania kwerend lub partii. Nie jest pustych. |
is_idle |
bit |
1 = Harmonogram jest bezczynny.Pracownicy nie są obecnie uruchomione.Nie jest pustych. |
preemptive_switches_count |
int |
Liczba określająca, ile razy pracowników na ten harmonogram mają przejściu do trybu preemptive. Wykonanie kodu, który znajduje się poza SQL Server (na przykład rozszerzone procedury przechowywane i kwerendami rozproszonymi) wątek ma wykonać poza kontrolą-preemptive harmonogramu. W tym celu należy pracownik Przełącza tryb preemptive. |
context_switches_count |
int |
Liczba przełączeń kontekstu, które wystąpiły na tym harmonogramu.Nie jest pustych. Aby zezwolić na innych pracowników uruchomić, bieżący pracownik uruchomiony musi zrzeka się sterowania do harmonogramu lub przełączyć kontekst.
Note:
Jeśli pracownik daje przez harmonogram zadań i umieszcza się w kolejce runnable i następnie znajdzie nie innych pracowników, pracownika powoduje zaznaczenie samego siebie.W takim przypadek context_switches_count nie zostanie zaktualizowana, ale yield_count jest aktualizowany.
|
idle_switches_count |
int |
Liczba określająca, ile razy oczekiwania zdarzenie podczas bezczynności przez harmonogram zadań.W tej kolumnie jest podobne do context_switches_count.Nie jest pustych. |
current_tasks_count |
int |
Liczba bieżących zadań, które są skojarzone z tym harmonogramu.Ten licznik obejmuje następujące czynności:
Po zakończeniu zadania, ten licznik zostanie zmniejszona.Nie jest pustych. |
runnable_tasks_count |
int |
Liczba pracowników z zadań przydzielonych do nich, oczekujące ma odbywać się w kolejce runnable.Nie jest pustych. |
current_workers_count |
int |
Liczba pracowników, które są skojarzone z tym harmonogramu.Ten licznik obejmuje pracowników, które nie są przypisane dowolnego zadania.Nie jest pustych. |
active_workers_count |
int |
Liczba pracowników, które są aktywne.Aktywnego pracownika nie jest nigdy preemptive, musi mieć skojarzone zadania programu i jest albo uruchomiony, runnable lub zawieszony.Nie jest pustych. |
work_queue_count |
bigint |
Liczba zadań w kolejce oczekujących.Zadania te oczekują na pracownika je pobrać.Nie jest pustych. |
pending_disk_io_count |
int |
Liczba oczekujących operacji We/Wy, oczekujących na być wypełnione.Każdy harmonogram zawiera listę oczekujących operacji We/Wy, które są sprawdzane w celu ustalenia, czy zostały one ukończone co czas jest przełączanie kontekstu.Licznik jest zwiększany po wstawieniu żądania.Ten licznik zostanie zmniejszona, kiedy żądanie zostało ukończone.Numer ten nie wskazuje stan operacji We/Wy.Nie jest pustych. |
load_factor |
int |
Wewnętrzna wartość, która wskazuje, znane obciążenie tego harmonogramu.Ta wartość jest używana do określenia, czy powinny być traktowane nowe zadanie na ten harmonogram lub innego harmonogramu.Wartość ta jest przydatna do debugowania, gdy wydaje się, że pracownikom nie są równomiernie załadowany.W SQL Server 2000, zadanie jest przesyłane do określonego harmonogramu. However, in SQL Server, the routing decision is made based on the load on the scheduler.SQL Server also uses a load factor of nodes and schedulers to help determine the best location to acquire resources.Współczynnik obciążenia jest zwiększane, gdy zadanie jest enqueued.Po zakończeniu zadania się zmniejszyła się współczynnik obciążenia.Korzystanie z czynników obciążenia ułatwia SQL Server System operacyjny lepiej równoważyć obciążenie pracy. Nie jest pustych. |
yield_count |
int |
Wewnętrzna wartość, która jest używana do określenia postępu tego harmonogramu.Ta wartość jest używana przez Monitor harmonogram, aby określić, czy pracownik na przez harmonogram zadań nie jest produkcji do innych pracowników na czas.Ta wartość nie wskazuje pracownika lub zadania transitioned do nowego pracownika.Nie jest pustych. |
last_timer_activity |
bigint |
W Takty PROCESORA podczas ostatniego kolejki czasomierza harmonogram był sprawdzany przez harmonogram.Nie jest pustych. |
failed_to_create_worker |
bit |
zestaw do 1, jeśli nie można utworzyć nowego pracownika na ten harmonogram.Dzieje się zazwyczaj z powodu ograniczeń pamięci.Jest pustych. |
active_worker_address |
varbinary(8) |
Adres pamięci pracownika, który jest obecnie aktywny.Jest pustych.Aby uzyskać więcej informacji zobaczsys.dm_os_workers (Transact-SQL). |
memory_object_address |
varbinary(8) |
Adres pamięci harmonogramu obiektu pamięci.Nie jest PUSTYCH. |
task_memory_object_address |
varbinary(8) |
Adres pamięci zadania obiektu pamięci.Nie jest pustych.Aby uzyskać więcej informacji zobaczsys.dm_os_memory_objects (Transact-SQL). |
Uprawnienia
Wymaga uprawnienia VIEW SERVER STATE na serwerze.
Przykłady
A.Monitorowanie pracownikom ukryte i nonhidden
Następująca kwerenda wyświetla stan zadań i pracowników SQL Server we wszystkich pracownikom. Tej kwerendy zostało wykonane na komputerze z następujących czynności:
Dwa procesory (procesorów)
Dwa węzły (NUMA)
Jednego PROCESORA węzeł NUMA
Ustawić maski koligacji 0x03.
SELECT
scheduler_id,
cpu_id,
parent_node_id,
current_tasks_count,
runnable_tasks_count,
current_workers_count,
active_workers_count,
work_queue_count
FROM sys.dm_os_schedulers;
Here is the result set.
scheduler_id cpu_id parent_node_id current_tasks_count
------------ ------ -------------- -------------------
0 1 0 9
257 255 0 1
1 0 1 10
258 255 1 1
255 255 32 2
runnable_tasks_count current_workers_count
-------------------- ---------------------
0 11
0 1
0 18
0 1
0 3
active_workers_count work_queue_count
-------------------- --------------------
6 0
1 0
8 0
1 0
1 0
Dane wyjściowe są dostępne następujące informacje:
Istnieje pięć harmonogramów.Dwa pracownikom mają wartość IDENTYFIKATORA < 255. Pracownikom z IDENTYFIKATOREM >= 255 są znane jako ukryty pracownikom. Harmonogram 255 reprezentuje połączenie dedykowane administratora (DAC). Istnieje jeden harmonogram DAC każdego wystąpienie.Monitorów zasób, które koordynują ciśnienia pamięci za pomocą harmonogramu 257 i harmonogramu 258jeden na węzeł NUMA
Brak 23 zadania aktywne w danych wyjściowych.Zadania te obejmują żądań użytkownika w uzupełnieniu do zadań zarządzania zasób, które zostały uruchomione przez SQL Server. Przykłady SQL Server zadania są MONITOR zasób (jeden węzeł NUMA), LENIWE WRITER (jeden węzeł NUMA), blokada MONITOR, punkt kontrolny i WRITER dziennik.
NUMA node 0 is mapped to CPU 1 and NUMA node 1 is mapped to CPU 0.SQL Server typically starts on a NUMA node other than node 0.Aby uzyskać więcej informacji zobaczOpis dostępu do pamięci inne niż jednolite.
Z runnable_tasks_count zwracanie 0, są nie aktywnie uruchomionych zadań. Jednak mogą istnieć aktywnych sesji.
Harmonogram 255 ma reprezentujących DAC 3 pracowników skojarzonych z nią. Te pracownikom są przydzielane na SQL Server uruchamiania i nie ulegają zmianie. Tych pracowników są używane do przetwarzania tylko kwerend DAC.Dwa zadania na ten harmonogram reprezentują menedżer połączeń i bezczynności pracownika.
active_workers_count Reprezentuje wszystkich pracowników, które są skojarzone z zadaniami i są uruchomione w trybie innym niż preemptive.Niektóre zadania, takie jak odbiorników sieci uruchamiane preemptive planowania.
Ukryte pracownikom nie przetwarzają żądań typowego użytkownika.Harmonogram DAC jest ten wyjątek.Ten harmonogram DAC ma jeden wątek na przetwarzanie żądań.
B.Monitorowanie nonhidden pracownikom w systemie zajęty
Następująca kwerenda pokazuje stan silnie załadowanego nonhidden pracownikom, wówczas, gdy istnieją większej liczby żądań, nie mogą być obsługiwane przez pracowników dostępne.W tym przykładzie 256 pracowników są przydzielone zadania.Niektóre zadania czeka na przypisanie do pracownika.Niższa liczba runnable oznacza oczekujące wielu zadań dla zasób.
Uwaga
Za pomocą kwerend wysyłanych można znaleźć stanu pracowników sys.dm_os_workers.Aby uzyskać więcej informacji zobaczsys.dm_os_workers (Transact-SQL).
Oto kwerendy:
SELECT
scheduler_id,
cpu_id,
current_tasks_count,
runnable_tasks_count,
current_workers_count,
active_workers_count,
work_queue_count
FROM sys.dm_os_schedulers
WHERE scheduler_id < 255;
Here is the result set.
scheduler_id current_tasks_count runnable_tasks_count
------------ ------------------- --------------------
0 144 0
1 147 1
current_workers_count active_workers_count work_queue_count
--------------------- -------------------- --------------------
128 125 16
128 126 19
Przez porównanie następujący wynik zawiera wiele zadań runnable w przypadku gdy nie zadanie oczekuje na uzyskać pracownik.The work_queue_count is 0 for both schedulers.
scheduler_id current_tasks_count runnable_tasks_count
------------ ------------------- --------------------
0 107 98
1 110 100
current_workers_count active_workers_count work_queue_count
--------------------- -------------------- --------------------
128 104 0
128 108 0