sys.dm_os_schedulers (Transact-sql)

Zamanlayıcı başına bir satır döndürür SQL Servernerede her program için ayrı bir oluşum eşleştirilir. Bir Zamanlayıcı durumunu izlemek için ya da kaçak görevleri tanımlamak için bu görünümü kullanın.

Sütun adı

Veri türü

Açıklama

scheduler_address

varbinary(8)

Scheduler bellek adresi. NULL değil.

parent_node_id

int

Olarak da bilinen ana düğüm için Zamanlayıcı ait düğüm Kımlığı. Bu nonuniform bellek erişimi (numa) düğümü temsil eder. NULL değil.

scheduler_id

int

Zamanlayıcı Kımlığı. Normal sorgular çalıştırmak için kullanılan tüm schedulers 1048576 az kimlik numaraları var. Kimlikleri 1048576 eşit veya daha büyük olması o schedulers tarafından dahili olarak kullanılan SQL Server, adanmış bir yönetici bağlantı Zamanlayıcı gibi. NULL değil.

cpu_id

smallint

cpu Zamanlayıcısı olarak atanan Kımlığı.

NULL değil.

NotNot
255 değil göstermek hiçbir yakınlık olduğu gibi SQL Server 2005.Bkz: sys.dm_os_threads (Transact-sql)ek ilgi bilgi.

status

nvarchar(60)

Zamanlayıcı durumunu gösterir. Aşağıdaki değerlerden biri olabilir:

  • ONLINE GİZLİ

  • ÇEVRİMDIŞI GİZLİ

  • GÖRÜNÜR ÇEVRİMİÇİ

  • GÖRÜNÜR ÇEVRİMDIŞI

  • GÖRÜNÜR ÇEVRİMİÇİ (DAC)

  • HOT_ADDED

NULL değil.

GİZLİ schedulers iç için isteklerini işlemek için kullanılan Veritabanı Altyapısı. GÖRÜNÜR schedulers, kullanıcı isteklerini işlemek için kullanılır.

İşlemci benzeşimi maskesi çevrimdışı olan ve bu nedenle herhangi bir isteği işlemek için kullanılmayan çevrimdışı schedulers göster. Çevrimiçi schedulers benzeşme maskesi çevrimiçi ve konuları işlemek kullanılabilen işlemciler için göster.

dac Zamanlayıcı adanmış yönetici bağlantısı altında çalıştığını gösterir.

SICAK eklendi gösterir schedulers eklenmiştir karşısında sıcak cpu olay Ekle.

is_online

bit

Eğer SQL Serveryapılandırılan sunucuda mevcut işlemcileri yalnızca bir bölümünü kullanmak için bu yapılandırma için işlemci benzeşimi maskesi olmayan bazı schedulers eşlenen anlamına gelebilir. Bu durumda, bu sütun 0 döndürür. Bu değer, Zamanlayıcı sorgu veya toplu işlem için kullanıldığını değil demektir.

NULL değil.

is_idle

bit

1 = Zamanlayıcı boşta. Hiçbir işçi çalışmakta olan. NULL değil.

preemptive_switches_count

int

Bu Zamanlayıcı üzerinde işçi preemptive moduna geçiş var. kez sayısı.

Dışındaki kod yürütmek için SQL Server(genişletilmiş saklı yordamlar ve dağıtılmış sorgular örneğin), Sigara preemptive Zamanlayıcı denetimi dışında yürütülecek bir iş parçacığı vardır. Bir çalışan, bunun için preemptive moda geçer.

context_switches_count

int

Bu Zamanlayıcı üzerinde oluşan içerik geçişi numarası. NULL değil.

Diğer işçilerin çalışmasına izin vermek için geçerli çalışan işçi Zamanlayıcısı kontrol vazgeçmek veya içeriğinde geçiş vardır.

NotNot
Bir alt Zamanlayıcı verimleri ve kendisini runnable sıraya koyar ve diğer işçilerin bulur, işçi kendisi seçer.Bu durumda, context_switches_countgüncelleştirilmez, ama yield_countgüncelleştirilir.

idle_switches_count

int

Kaç kez Zamanlayıcı için bir olay sırasında boşta bekleyen edilmiştir. Bu sütunda benzer context_switches_count. NULL değil.

current_tasks_count

int

Bu Zamanlayıcı ile ilişkili geçerli görevler sayısı. Bu sayaç, aşağıdakileri içerir:

  • Onları çalıştırılacak işçi bekleyen görevler.

  • Şu anda bekleyen veya (suspended veya runnable durumu) çalışan görevler.

Görev tamamlandığında, bu indirildiği sayısıdır. NULL değil.

runnable_tasks_count

int

Runnable sırada zamanlanabileceği bekliyor, atanmış görevlerle işçi sayısı. NULL değil.

current_workers_count

int

Bu Zamanlayıcı ile ilişkili olan işçi sayısı. Bu sayaç, herhangi bir görevin atanmamış olan işçilerin içerir. NULL değil.

active_workers_count

int

Etkin olan işçi sayısı. Etkin bir işçi asla preemptive, ilişkili bir görev olmalıdır ve ya da çalıştırılabilir veya askıya çalışır. NULL değil.

work_queue_count

bigint

Görev bekleyen sıra sayısı. Bu görevler, onları almak bir işçi için bekliyor. NULL değil.

pending_disk_io_count

int

Bekleyen tamamlanmasını bekleyen g/ç işlemlerinin sayısı. Her program bekleyen bir içerik anahtarı her zaman onlar tamamlanmış olup olmadığını belirlemek için kontrol çıkışları bir listesi vardır. İstek eklendiğinde sayı artırılır. İstek işlemi tamamlandığında bu indirildiği sayısıdır. Bu sayı, giriş çıkışları durumunu göstermez. NULL değil.

load_factor

int

Bu Zamanlayıcı algılanan yükü gösteren iç değer. Bu değer, yeni bir görev bu Zamanlayıcı veya başka bir zamanlayıcı olarak koymak belirlemek için kullanılır. Bu değer schedulers eşit olarak yüklü olmayan göründüğünde, amaçları hata ayıklama için yararlı olur. Yönlendirme kararı Zamanlayıcı yük göre yapılır. SQL ServerAyrıca bir yük faktörü düğümleri ve schedulers kaynakları elde etmek için en iyi yeri belirlemek için kullanır. Enqueued görevin ne zaman yük faktörü artar. Görev tamamlandığında, doluluk oranı azalır. Load kullanma faktörler yardımcı SQL Serverişletim sistemi daha iyi iş yükü dengesi. NULL değil.

yield_count

int

Bu zamanlayıcı ilerlemesini göstermek için kullanılan iç değer. Bu değer Zamanlayıcı monitör tarafından Zamanlayıcı üzerinde çalışan diğer işçiler için zamanında verimli değil olup olmadığını belirlemek için kullanılır. Bu değer, çalışan veya görevin yeni bir çalışan için geçiş göstermez. NULL değil.

last_timer_activity

bigint

cpu ticks Zamanlayıcı Süreölçer sırasının Zamanlayıcısı tarafından denetlenen son kez. NULL değil.

failed_to_create_worker

bit

Bu Zamanlayıcı üzerinde yeni işçi oluşturulamadı 1 olarak ayarlayın. Bu genellikle bellek kısıtlamaları nedeniyle oluşur. NULL olabilecek olduğunu.

active_worker_address

varbinary(8)

Şu an etkin olan alt bellek adresi. NULL olabilecek olduğunu. Daha fazla bilgi için, bkz. sys.dm_os_workers (Transact-sql).

memory_object_address

varbinary(8)

Zamanlayıcı bellek nesnenin bellek adresi. Not NULL olabilecek.

task_memory_object_address

varbinary(8)

Görev bellek nesnenin bellek adresi. NULL değil. Daha fazla bilgi için, bkz. sys.dm_os_memory_objects (Transact-sql).

quantum_length_us

bigint

Yalnızca bilgi amaçlı olarak belirtilmiştir. Desteklenmez. Gelecekteki uyumluluk garanti edilmez.sqlos tarafından kullanılan Zamanlayıcı kuantum sunar.

İzinler

Sunucu üzerindeki VIEW server state izni gerektirir.

Örnekler

A.Gizli ve gizlenmemiş schedulers izleme

Aşağıdaki sorgu işçilerin durumunu çıkarır ve görevleri de SQL Servertüm schedulers üzerinde. Bu sorgu, aşağıda olan bir bilgisayar sisteminde yürütülen:

  • İki işlemci (CPU)

  • İki (numa) düğümü

  • numa düğüm başına bir cpu

  • Benzeşme maskesi ayarlamak 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;

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;

Sonuç kümesi buradadır.

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

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

Çıktı aşağıdaki bilgileri sağlar:

  • Beş programları vardır. İki schedulers var Kımlık değeri < 1048576. Schedulers kimliği ile >gizli schedulers bilinen 1048576are =. Zamanlayıcı 255adanmış yönetici bağlantısı (dac) temsil eder. Orada bir dac Zamanlayıcı her örneği. Bellek baskısı koordine kaynak izleyicileri zamanlayıcı kullanmak 257ve Zamanlayıcı 258, her numa düğümünde

  • Çıktıda 23 aktif görevler vardır. Bu görevler kullanıcı isteklerine göre başlatılmış kaynak yönetimi görevlerini ek dahil SQL Server. Örnekleri SQL Servergörevleri olan Kaynak İzleyicisi'ni (numa düğüm başına bir tane), TEMBEL yazar (numa düğüm başına bir tane), kilit İZLEYİCİSİ, CHECKPOINT ve GÜNLÜĞÜNE yazar.

  • numa düğüm 0cpu eşleştirilir 1ve numa düğüm 1cpu eşleştirilir 0. SQL Servergenellikle düğüme 0 dışında bir numa düğümünde başlatılır. Daha fazla bilgi için, bkz. Memory Management Architecture.

  • İle runnable_tasks_countgeri 0, hayır aktif görevler yayınlanıyor. Ancak, etkin oturumlar var olabilir.

  • Zamanlayıcı 255dac gösteren vardır 3işçi görüneceği ile ilişkili Bu işçiler, tahsis edilen SQL Serverbaşlangıç ve değişmez. Bu işçiler, dac sorguları yalnızca işlemek için kullanılır. Bu Zamanlayıcı üzerinde iki görevi, Bağlantı Yöneticisi ve boş bir işçi temsil eder.

  • active_workers_count görevlerle ilişkili ve olmayan preemptive modu altında çalışan tüm işçilerin temsil eder. Ağ dinleyici gibi bazı görevleri preemptive zamanlaması altında çalıştırın.

  • Gizli schedulers normal kullanıcı isteklerini işlemez. dac Zamanlayıcı istisnadır. Bu dac Zamanlayıcı isteklerini işlemek için bir iş parçacığı vardır.

B.Yoğun bir sistemi gizlenmemiş schedulers izleme

Aşağıdaki sorgu, burada daha fazla kişi mevcut işçiler tarafından işlenebilir daha var ağır yüklü gizlenmemiş schedulers durumunu gösterir. Örneğin, 256 işçi görevlere atanır. Bazı görevler, bir işçi atama bekliyor. Alt runnable sayısı, çoklu görevler için kaynağın bekliyor anlamına gelir.

[!NOT]

Sen-ebilmek bulmak işçilerin durumunu sorgulayarak sys.dm_os_workers. Daha fazla bilgi için, bkz. sys.dm_os_workers (Transact-sql).

Sorgu aşağıdadır:

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;

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;

Sonuç kümesi buradadır.

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

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

Karşılaştırma, aşağıdaki sonucu, burada hiçbir görevi işçi almak için bekleyen birden fazla runnable görevleri gösterir. work_queue_count'S 0için hem 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

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

Ayrıca bkz.

Başvuru

Dinamik yönetimi görünümler ve işlevler (Transact-sql)

SQL Server işletim sistemi ilgili dinamik yönetim görünümleri (Transact-sql)

Diğer Kaynaklar

Memory Management Architecture