

MultiThread Programming (ÇokluKanal programlama) terimine kısaca bakmak gerekirse, bir programdaki akış kontrol mekanizmasıdır. Örneğin; klasik batch modunda programlardan farklı olarak kullanıcı herhangibir anda girdi girerken program arka planda başka veriler toplayabiliyor olmasıdır.
Gelelim önemine: Çok çekirdekli işlemcilerin piyasaya çıkmasıyla beraber çok kanallı programlar önem kazandı. Performansın önemli olduğu çeşitli algoritmik uygulamalar için ise vazgeçilmez bir kaynak oluyor.
Java her ne kadar platformdan bağımsız olma özelliği gösterse de bu sadece byteCode konusundadır. Java sanal makinesini sonuçta işletim sisteminde çalışır. Bu açıdan işletim sistemlerinin çoğul çekirdekli sistemlerde programları yönetme farklılıkları gösterir. Örneğin C dilinde, dil seviyesinde çok kanallı programlama desteği yoktur. Ancak işletim sistemi öncül tiplerini kullanarak bu yetiye ulaşır.
Bu zamana kadar çeşitli Linux dağıtımları, Java'nın crossPlatform olmasını da kullanarak performans karşılaştırmaları yapmışlar. Örneğin Ubuntu vs Vista. Sunuyu burdan indirebilirsiniz: "JAVA Multi-thread Programming on CMP System" .
Biz de test için bir java sınıfı oluşturduk. Programa göre 1, 3, 5, 7, 10 saniye olmak üzere 5 farklı zaman diliminde, biri yüksek öncelikli(7) diğeri düşük öncelikli (3), 2 kanalın çalışması sırasında while döngüsünün 5 defa tekrarlanarak "counter" sayacını kaç defa arttırdığı ölçüldü.
Bu tip ölçümlerde her ne kadar sistem durumu, uygulamaların etkinliği vs vs birçok etmen olmasına rağmen kabaca bir ölçüm elde ettik.
**00****00****00****00****00****00****00****00****00****00****00**
Her zaman dilimi (1, 3, 5, 7, 10 saniye) için 5 ölçüm yapıldı. Bu beş ölçümün ortalaması ise o saniye dilimi için kullanıldı.
Yüksek Öncelikli Kanal ile Pardus ve Vista'da yapılan ölçümler sonucu:

Düşük Öncelikli Kanal ile Pardus ve Vista'da yapılan ölçümler sonucu:

Grafikleri yorumlamak gerekirse:
- Yüksek öncelikli kanalda, programların çalışma sürelerine bağlı olarak artış hızı Pardus'ta daha fazla olduğunu görüyoruz. Bunun yanında Pardus daha düzensiz olarak hızlı arttığını görüyoruz. Pardus burada birim zamanda daha çok döngü sağlayıp eşit süreli çalışma zamanları için daha çok counter hit üretmiştir.
Vista ise düzenli bir hız artışına sahip ama birim zamanda performansı Pardus'a göre %14.06 daha düşük çıkıyor.
Pardus dolu dizgin koşarken Vista düzgün ilerlemeyi seçiyor :) - Düşük öncelikli kanalın her iki işletim sisteminde çalışmasını incelemek gerekirse, Pardus'un, her bir zaman diliminde üretilen ortalama sayaç sayısının zamana göre artış hızı Vista'dan daha fazla. Düşük öncelikli kanalda Pardus düzenli bir artışı seçerken Vista da yine düzenli olarak artıyor. Örneğin 5 sn'li çalışma süresince aralarında ki standart sapma ise %19.02 gibi azımsanmayacak bir rakam.

Bu grafikte ise 5 zaman dilimi için(1, 3, 5, 7, 10 saniye) (High level, Low level) çifti çizildi. Bu grafiği Microsoft Math 2007'den çizdim bu arada. Gariptir ki Microsoft bu projeyi açık olarak yürütüyor, yoksa işimiz ne :). Çok kullanışlı bir program tavsiye ederim.
Kaynak Dosyalar ve Bilgisayar bileşen özellikleri için: Burdan
Ayrıntılı ölçüm sonuçları ve Grafikler için: Burdan
Eksik ve eklemek istedikleriniz varsa yorumlarınızı beklerim...























