Win7'de bir işlem veya iş parçacığının G / Ç önceliğini nasıl değiştirebilirim?


32

İşlem Gezgini, verilen bir dizinin etkin IO önceliğini gösterebilir, ancak değiştiremez. IO öncelik desteği olarak görmek, nispeten yeni bir özelliktir, çoğu program kendi IO önceliklerini belirlemez. Varsayılan olarak, IO önceliğinin, İşlem Gezgini'nin değiştiremeyeceği, iş parçacığı önceliğinden (işlem önceliği yerine) elde edildiği anlaşılıyor.

Dışarıda, belirli bir işlemin IO önceliğini / belirli bir işlemin tüm konularını değiştirmeme yardımcı olabilecek başka araçlar var mı?


Yığın Taşması ile ilgili neredeyse aynı soru var: stackoverflow.com/questions/301290/…
Mehper C. Palavuzlar

3
@ [Mehper C. Palavuzlar] doğru, ancak bu geliştirdiğim yazılımlar için değil - bunu üçüncü taraf yazılımlarda yapmak için hazır bir araç arıyorum.
RomanSt

Yanıtlar:


11

Hazır Alet

Süreç G / Ç önceliklerini, manuel kullanıcı eylemi veya otomasyon ve sebatla belirleyen üçüncü taraf bir araç Süreç Kement olacaktır . Neredeyse herhangi bir işlem ayarını ayarlayabilir ve bunu ısrarla veya kurallara göre yapabilir (örneğin, bu olduğunda G / Ç önceliğini değiştirir).

Programlı Cevap

Yanıt, NTSetInformationProcess , NT yerel bir API'ye yapılan basit bir API çağrısıdır . 2008 DDK’de “IoPriority” sınıfı olarak tanımlanmaktadır. NT6'da yalnızca iki seviye desteklenir: Çok Düşük (arka plan) ve Normal . Teknik olarak tanımlanmış 5 seviye vardır - Kritik, Yüksek, Normal, Düşük ve Çok Düşük. Kritik seviye, sayfalama işlemleri için ayrılmıştır. Diğerleri hakkında veri yok.

Ancak, G / Ç önceliğini kullanmanın doğru yolu, yalnızca PROCESSS_MODE_BACKGROUND_BEGIN'i tedarik eden bir Windows API SetProcessPriorityClass çağrısı aracılığıyla bir 'arka plan modunu' başlatmaktır . Bu, bir IDLE CPU öncelik sınıfıyla birlikte çok Düşük (arka plan) G / Ç önceliğini kullanmasına neden olur . İşlem tamamlandığında, PROCESS_MODE_BACKGROUND_END ile geri dönün.

SetThreadPriority API ayrıca belirli iş parçacıklarının bu aynı arka plan modu sağlayacaktır. Burada THREAD_MODE_BACKGROUND_BEGIN / END tedarik edeceksiniz.


Windows programlama ve işletim sistemi seviyesine girmedim, ama iş parçacığının önceliğini çarptığımı duydum, THREAD_PRIORITY_TIME_CRITICAL, programınızla veya herhangi bir programla mümkün mü? veya hala cpu önceliği değil, ayarlanabilen sadece IO PRIORITY mi? Sanırım IO önceliğini değiştirmek CPU Kullanımı için fazla fark yaratmayacak, değil mi?
barlop

Evet. Her ikisi de ayarlanabilir ve kalıcı olabilir. Kurallara göre (örneğin CPU benzeşimi) başka birçok şey de ayarlanabilir veya dinamik olarak değiştirilebilir. G / Ç önceliği CPU önceliğinden farklıdır, doğru.
dyasta

Bu, "üçüncü taraf yazılımlarda bunu yapmak için hazır bir araç" değildir.
Cees Timmerman,

Maalesef, sorunun programlı bir taraftan cevap verdiğimden (değiştirilmemiş) açık bir şekilde düşündüm. İşlem Kement, 'üçüncü taraf yazılımlarda bunu yapmak için hazır bir araçtır'. Bitsum.com'a
dyasta

23

Bunu kimsenin rahatsız etmediğini gördükten sonra geliştirdim: https://sourceforge.net/projects/iopriority/ (açık kaynak)

Bu program bir işlemin G / Ç önceliğini belirleyebilir ve tüm iş parçacıkları derhal etkilenir. İşlemler yerine iş parçacığı ile çalışmak üzere değiştirmek oldukça kolaydır.


1
Sunucu 2012R2'de bir işlemi Yüksek öncelikli olarak değiştirmenize izin vermediğinizi fark ettim.
jftuga

14

ProcessHacker , keyfi bir işlemin GÇ önceliğini değiştirebilen bir GUI aracıdır.


Neden Russinovich'in yaptığı bir şeye benziyor?
Daniel Mošmondor 14:13

1
@ DanielMošmondor Belki ProcExp ve onun sınırlamalarından ilham aldı? ProceXP sürüm 14. sonra benim laptop tamamen yanlış CPU kullanımını gösterdi, çünkü ben şahsen açık
RomanSt

1
Sadece bu değil, ProcExp bilgisayarım BSOD'unu da yapabildi. Ücretsiz mi?
Daniel Mošmondor 16:13

@ DanielMošmondor Evet, üstelik aslında ProcExp'ten her şekilde daha fazlasını yapıyor gibi görünüyor. Biraz farklı UI ama gerçekten çok yetenekli.
RomanSt

1

Çok küçük (1 MB'den az) yer kaplayan, bir işlem önceliği tasarrufu olan (diğer şeylerin yanı sıra) olan PRIO adlı ücretsiz bir uygulamaya kısmi geliyorum. Yüklemeden sonra, ihtiyacınız olana kadar arka planda sessizce çalışır ve arabirimi doğrudan Windows Görev Yöneticisi'nde oluşturulur, işlevselliğini genişletir ve eklenen özellikler her zaman Görev Yöneticisi'nin bir parçasıymış gibi yapar. Öncelikini değiştirmek amacıyla Görev Yöneticisi'nde bir işlemi sağ tıklattığınızda, yalnızca işlemin CPU önceliğini değil G / Ç önceliğini de değiştirebileceğiniz için PRIO’nun bazı özellikleri belirginleşir (sorunuzu yanıtlayın) , ve eğer isterseniz, yeni ayarları KAYDETMeyi seçebilirsiniz. Sonuncusu, işlem (yani bu program) her çalıştırıldığında, sizin belirlediğiniz ve kaydettiğiniz CPU ve I / O işlem öncelikleri yürürlüğe girecek şekilde yapar.

Uygulama, Windows Görev Yöneticisi'ndeki çeşitli sekmelerin işlevselliğini de artıran başka özelliklere sahiptir. Hem 32 hem de 64 bit sistemler için sürümler mevcuttur ve uygulama kişisel kullanım için ücretsizdir.


Harika bir uygulama gibi geliyor. Bir link var mı?
Stijn de Witt

1
PRIO'yu kastediyorsanız, bir dizi farklı içerik toplayıcısından (cnet gibi) kullanılabilir, ancak doğrudan geliştiricinin web sitesinden prnwatch.com/prio
Mike Mounier
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.