Windows Görev Zamanlayıcı'da Öncelik

Windows Görev Zamanlayıcısı'nda iş çalıştıran herkes, er ya da geç açıklanamayan çalışma zamanı farklılıklarıyla karşılaşacaktır. Komut satırında 5 dakikada çalışan bir PHP betiği, Windows Görev Zamanlayıcısı üzerinden çalıştırıldığında aniden 20 dakika sürüyor. Aynı kullanıcı, aynı izinler, aynı kod - yürütme süresi dört kat fazla. Neler oluyordu?


Saatler süren hata ayıklama, İşlem İzleme oturumları ve sayısız yapılandırma karşılaştırmasından sonra çözüm korkutucu derecede basitti: Windows Görev Zamanlayıcısı varsayılan olarak daha düşük bir işlem önceliği ayarlar. Görev Zamanlayıcısı'ndaki görevler için varsayılan değer: 7 (Normalin Altında), değil 4-6 (Normal) Beklendiği gibi. Bu görünüşte küçük fark, G/Ç yoğun işlemlerde büyük performans düşüşüne yol açabilir.

Windows öncelik düzeyleri ayrıntılı olarak şöyledir::

DeğerÖncelikAçıklama
0Gerçek zamanlıEn yüksek öncelik (dikkat!)
1YüksekYüksek öncelik
2-3Normalin ÜstüNormal Hakkında
4-6NormalEtkileşimli süreçler için standart
7Normalin AltındaGörev Zamanlayıcı'da ÖN TANIMLI
8-9Normalin AltındaDaha da düşük
10BoştaEn düşük öncelik

Görev planlamasında öncelik sorunu çok katmanlıdır: Bir görevi dışa aktardığınızda ve XML'e baktığınızda, genellikle HAYIR Öncelik ayarı. Windows daha sonra sessizce varsayılan değeri kullanacaktır 7. GUI, bu değeri dışa aktarma sırasında görüntüler, ancak görevde açıkça saklanmaz. Daha düşük öncelik, yalnızca daha az CPU süresi sağlamakla kalmaz, aynı zamanda:

  • Kısıtlanmış disk G/Ç işlemleri
  • Daha düşük ağ önceliği
  • Zayıf dosya sistemi önbelleği
  • Veritabanı erişiminde gecikmeler

Aynı kullanıcıyı kullanıp "En yüksek ayrıcalıklarla çalıştır" seçeneğini etkinleştirseniz bile, görev farklı bir Windows istasyonunda/masaüstü ortamında farklı önceliklerle çalışır. Sorunu belirlemek için, PowerShell kullanarak tüm görevleri gerçek öncelikleriyle listeleyebilirsiniz.:

38b7fa6c77dc344401485cd338ea4128

Görevlerimin neredeyse tamamı öncelikli olarak yürütüldü 7. Artık birkaç görevin önceliğini aynı anda özel olarak düzeltiyoruz:

38b7fa6c77dc344401485cd338ea4128

Önceliği ayarladıktan sonra 4 (Normalde) PHP betiğim beklenen 300 saniyede tekrar çalıştı. Görevleri belirli bir kullanıcı hesabıyla yapılandırdıysanız, bunu 10. satırda aşağıdaki gibi kolayca belirtebilirsiniz.:

38b7fa6c77dc344401485cd338ea4128

Geri