sys.dm_os_schedulers (Transact-SQL)

Çizelgeleyici başına bir satır döndürür. SQL Server Burada her Çizelgeleyici, belirli bir işlemciye eşleştirilir. Bu görünüm, bir Zamanlayıcı durumunu izlemek için veya ard arda görevler tanımlamak için kullanın.

Sütun adı

Veri türü

Açıklama

scheduler_address

varbinary(8)

Zamanlayıcı bellek adresi.Null değil.

parent_node_id

int

Zamanlayıcı, ait olduğu için üst düğüm olarak da bilinen bir düğüm KIMLIĞI.Bu, nonuniform bellek erişimi (NUMA) herhangi bir düğümü temsil eder.Null değil.

scheduler_id

int

Zamanlayıcı TEŞHIS koduNormal sorgular çalıştırmak için kullanılan tüm schedulers 255'den daha az KIMLIK numaraları vardır.Büyük veya eşit 255 kimliklerine sahip bu schedulers tarafından dahili olarak kullanılır SQL Server, ayrılmış bir yönetici bağlantı Çizelgeleyici gibi. Null değil.

cpu_id

smallint

Bu Zamanlayıcı ilişkilendirildiği CPU KIMLIĞI.If SQL Server yapılandırılmış benzeşimi ile çalıştırmak için , değer CPU, Zamanlayıcı çalışıyor olması beklenir kimliğidir.

255 Benzeşme maskesi belirtilmedi =.

Null değil.

Durum

nvarchar(60)

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

  • ÇEVRİMİÇİ 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.

Iç için olan istekleri işlemek için kullanılan GIZLI schedulers Database Engine. GÖRÜNÜR schedulers kullanıcı isteklerini işlemek için kullanılır.

Işlemci benzeşimi maskesi çevrimdışı ve bu nedenle, tüm istekleri işlemek için kullanılmadığından OFFLINE schedulers eşlenir.ONLINE schedulers benzeşme maskesini çevrimiçi ve kullanılabilir iş parçacığı işleme işlemci eşleyin.

DAC Zamanlayıcı, bir özel yönetici bağlantısı altında çalıştığını gösterir.

The schedulers yanıt olarak etkin bir CPU olay ekle eklenen HOT EKLENEN gösterir.

is_online

bit

If SQL Server yapılandırılmış kullanılabilir işlemcilerin yalnızca bir kısmını, sunucuda kullanmak için , bu yapılandırma işlemcilerle benzeşim maskesini içinde olmayan bazı schedulers eşleştirilir anlamına gelebilir. Diğer bir deyişle, durum, bu sütun, 0 değerini döndürür.Bu değer, Zamanlayıcı sorguları veya toplu işleri işlemek için kullanıldığını yok anlamına gelir.

Null değil.

is_idle

bit

1 = Çizelgeleyici boştadır.Hiçbir çalışanları şu anda çalışmıyor.Null değil.

preemptive_switches_count

int

Sayısı bu Zamanlayıcı, çalışanları preemptive moda geçti.

Dışındaki bir kod yürütmek için SQL Server (genişletilmiş saklı yordamlar ve dağıtılmış sorgular örneğin), preemptive olmayan Çizelgeleyici denetimin çalıştırmak, bir iş parçacığı vardır. Bunu yapmak için , bir alt preemptive moduna geçiş yapar.

context_switches_count

int

Bu Zamanlayıcı üzerinde gerçekleşen bağlam anahtarlarının sayısı.Null değil.

Diğer çalışanları çalışmasına izin vermek için , geçerli çalışan alt Zamanlayıcı denetimi relinquish veya içeriğinde geçiş var.

NoteNote:
Işçi Zamanlayıcı verir ve kendisini runnable sıraya koyar ve daha sonra başka bir çalışanları bulur, alt kendisini seçin.Bu durumda, context_switches_count güncelleştirilir.yield_count güncelleştirildi.

idle_switches_count

int

Sayıda Zamanlayıcı Boşta iken bir olayı bekliyor.Bu sütun benzer context_switches_count.Null değil.

current_tasks_count

int

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

  • Bunları yürütmek bir çalışan için bekleyen görevler.

  • Şu anda bekleyen veya (SUSPENDED veya RUNNABLE durumunda) çalışan görevler.

Bir görev tamamlandığında, bu indirildiği sayısıdır.Null değil.

runnable_tasks_count

int

Çalışanları (runnable sıraya göre planlanmış bekleniyor, kendilerine atanan görevlerle sayısı.Null değil.

current_workers_count

int

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

active_workers_count

int

Etkin olan çalışanları sayısı.Etkin bir çalışan hiçbir zaman preemptive, ilişkili bir görevi olmalıdır ve ya da, runnable veya askıya alınan çalıştırıyor.Null değil.

work_queue_count

bigint

Görevleri, bekleyen sıra numarası.Bu görevler, bunları seçmek bir çalışan için bekleyen.Null değil.

pending_disk_io_count

int

Bekleyen tamamlanması için bekleyen bir g/Ç sayısı.Her Çizelgeleyici listesini bekleyen g/ç işlemleri, tamamlanan olup olmadığını belirlemek için işaretli olan her saat içerik anahtar yok.Istek eklendiğinde, sayacı artırılır.Istek işlemi tamamlandığında bu indirildiği sayısıdır.Bu numara, g/Ç durumunu göstermez.Null değil.

load_factor

int

Bu Zamanlayıcı algılanan yükünü belirten iç değeri.Bu değer, yeni bir görev bu Çizelgeleyici veya başka bir zamanlayıcı konması olup olmadığını belirlemek için kullanılır.Bu değer, schedulers düzgün yüklenmiş olduğunu görüntülendiğinde amacıyla hata ayıklamak için yararlıdır.Içinde SQL Server 2000, görev için belirli bir zamanlayıcı yönlendirilir. 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.Yük faktörü, bir görev enqueued, arttırılır.Yük faktörü, bir görev tamamlandığında, azalır.Yük etkene kullanarak yardımcı olur. SQL Server Işletim SISTEMI, iş yükü daha iyi bakiye. Null değil.

yield_count

int

Bu Zamanlayıcı, ilerleme durumunu göstermek için kullanılan dahili değeri.Bu değer, Zamanlayıcı monitör tarafından işçi Zamanlayıcı, diğer çalışanlar için saat oluşturan değil olup olmadığını belirlemek için kullanılır.Bu değer, alt veya görev için yeni bir alt moda göstermez.Null değil.

last_timer_activity

bigint

CPU ticks Çizelgeleyici Süreölçer sırasının zamanlayıcısı tarafından denetlenen son tarih.Null değil.

failed_to_create_worker

bit

küme Yeni bir alt üzerinde bu zamanlayıcı oluşturulamadı, 1.Bu genellikle, bellek kısıtlamaları nedeniyle oluşur.Null.

active_worker_address

varbinary(8)

Şu anda etkin olan bir çalışan bellek adresi.Null.Daha fazla bilgi için bkz:sys.dm_os_workers (Transact-SQL).

memory_object_address

varbinary(8)

Çizelgeleyici bellek nesnesinin bellek adresi.NULLABLE değil.

task_memory_object_address

varbinary(8)

Görev bellek nesnesinin bellek adresi.Null değil.Daha fazla bilgi için bkz:sys.dm_os_memory_objects (Transact-SQL).

İzinler

Sunucudaki SUNUCU DURUM VIEW iznine gerek duyar.

Örnekler

C.Gizli ve nonhidden schedulers izleme

Aşağıdaki sorgu çalışanları ve görevlerin durumunu verir... SQL Server Tüm schedulers arasında. Bu sorgu, aşağıdakileri içeren bir bilgisayar sistemine yürütüldü:

  • Iki işlemciyle (CPU)

  • Iki (NUMA) düğümü

  • Bir CPU başına NUMA düğümü

  • Benzeşme maskesi küme için 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

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

  • Beş zamanlamaları vardır.Iki schedulers bir KIMLIK değeri vardır. < 255. Schedulers kimliği >= 255 gizli schedulers bilinir. Çizelgeleyici 255 Özel yönetici bağlantısı (DAC) temsil eder. Bir DAC Çizelgeleyici her örnek.Bellek baskısı eşgüdümlemek kaynak izleyicileri Çizelgeleyici kullanın... 257 ve çizelgeleyicinin 258tek başına NUMA düğümü

  • Çıktıda 23 etkin görevler vardır.Bu görevler, kullanıcı istekleri tarafından başlatılan bir kaynak yönetimi görevlerini ek olarak içerir. SQL Server. Örnekleri SQL Server Kaynak MONITÖR (NUMA düğümü başına bir tane) YAVAŞ YAZıCı (NUMA düğümü başına), kilit MONITÖR, DENETIMNOKTASı ve LOG YAZıCı görevlerdir.

  • 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.Daha fazla bilgi için bkz:Disk tekdüze bellek erişimi'ni anlama.

  • Ile runnable_tasks_count döndürme 0, görevlerin yok etkin çalıştırıyorsunuz. Ancak, etkin oturum olabilir.

  • Çizelgeleyici 255 DAC temsil eden vardır. 3 çalışanları, kendisiyle ilişkilendirilmiş. Bu çalışanları sırasında ayrılır SQL Server Başlangıç ve değişmez. Bu çalışanları DAC sorgularını işlemek için kullanılır.Iki görevi bu Zamanlayıcı, bir Bağlantı Yöneticisi ve boş bir alt temsil eder.

  • active_workers_count Görevler ilişkili ve olmayan-preemptive modunda çalışan tüm çalışanları gösterir.Ağ dinleyicileri gibi bazı görevler, preemptive zamanlaması altında çalışır.

  • Gizli schedulers normal kullanıcı istekleri işlemez.DAC Çizelgeleyici dışındadır.Bu DAC Çizelgeleyici istekleri işlemek için bir iş parçacığı vardır.

b.Yoğun bir sistemde nonhidden schedulers izleme

Aşağıdaki sorgu yoğun olarak yüklenen nonhidden schedulers burada daha fazla istekleri kullanılabilir çalışanları tarafından işlenen çok kayıtlı durumunu gösterir.Bu örnekte, görevleri 256 çalışanlara atanır.Bazı görevler, bir çalışan için bir atama için bekleyen.Birden fazla görev, kaynak için bekleyen alt runnable sayımını gösterir.

Not

Çalışanları durumunu sorgulayarak bulabilirsiniz 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;

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

Bunun bir karşılaştırma aşağıdaki sonucu, hiçbir görev işçi almak için bekliyor birden çok runnable görevleri gösterir.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