Köker Optimizer 1.0
Windows'ta seçilen uygulamanın işlem/iş parçacığı önceliği ve işlemci yakınlığı gibi çalışma parametreleriyle deney yapmaya yönelik erken dönem performans yardımcı programı.
Köker Optimizer 1.0, Windows üzerinde seçilen bir uygulamanın işlem (process) ve iş parçacığı öncelikleri ile bazı çalışma parametrelerini değiştirerek sistem davranışını gözlemlemek için geliştirdiğim erken dönem performans aracıdır.
Program, çalıştırılabilir dosyaların bağlam menüsüne kayıt ekleyebiliyor ve seçilen uygulamayı kendi çalışma akışı üzerinden başlatabiliyordu. Arka planda ilgili işlemin durumunu izliyor; uygulama kapandığında yaptığı geçici ayarları geri alarak sonlanıyordu.
Öncelik Kapasite Yaratmaz
Bu projeyi bugün anlatırken en önemli düzeltme şudur: bir işleme daha yüksek öncelik vermek CPU'nun toplam hesaplama kapasitesini artırmaz.
Scheduler, mevcut CPU zamanını çalışabilir iş parçacıkları arasında dağıtır. Öncelik değişikliği, rekabet olduğunda hangi işin önce CPU alacağını etkileyebilir; fakat arka plandaki işlerin gereksinimini ortadan kaldırmaz.
Aşırı veya bilinçsiz öncelik yükseltme, etkileşimli sistemde başka kritik görevlerin gecikmesine ve kararlılığın kötüleşmesine neden olabilir.
İşlemci Yakınlığı ve Working Set
İşlemci yakınlığı (CPU affinity), bir işlemin veya iş parçacığının hangi mantıksal işlemcilerde çalışabileceğini sınırlar. Bazı özel workload'larda cache yerelliği veya ölçüm tekrarlanabilirliği için yararlı olabilir; ancak çekirdekleri rastgele kısıtlamak çoğu uygulamayı hızlandırmaz.
Benzer biçimde working set ile oynama fiziksel bellek üretmez. İşletim sisteminin bellek yönetim kararlarını zorlamak page fault ve I/O maliyetini artırabilir.
I/O ve Thread Önceliği
Windows, CPU önceliğinin dışında iş parçacığı ve belirli I/O önceliklerini de yönetir. Bu ayarların her biri farklı kaynak üzerinde etki gösterdiği için tek bir "yüksek performans" anahtarına indirgenmemelidir.
Projenin tarihsel değeri, işletim sistemindeki scheduler ve kaynak yönetimi parametrelerini programatik olarak gözlemlemem ve bu ayarların yaşam döngüsünü seçilen process ile ilişkilendirmemdir.
Bugünkü Performans Yaklaşımı
Bugün aynı probleme doğrudan öncelik değiştirerek başlamam. Önce CPU, I/O, lock, bellek veya başka bir kaynak darboğazı olup olmadığını ölçer; ancak ölçüm ilgili scheduler davranışını işaret ediyorsa priority/affinity üzerinde deney yaparım.
Bu yaklaşımın teorik arka planı İşletim Sistemleri ve Bilgisayar Mimarisi notlarımla ilişkilidir.