Haklı gibi gözüküyorsunuz, sched_setaffinity() pthread ile uyumlu mu ? değil mi ? bilmiyorum. Fakat şöyle bir durum var Linux çekirdeğinde process ve thread ayrımı yok. İş böyle olunca aslında bizim posix'de ki "thread yarat" fonksiyonu bir sys_clone çağrısından ibaret Yani kısaca ortak bir virtual space'i paylaşan process'leri thread diye yutturuyorlar. (Windows'da tamamen farklılar)
Peki biz neden process/thread'ları cpu/core'lara tek tek dağıtmak isteyelim ? Parallel işlem için. Yazdığımız programı 2 çekirdeğide aynı anda kullanacak şekilde dizayn edersek, hızı artacaktır. (2 cpu için 1.4 ile 2 kat arasında bir artış olur) ANCAK ! Eğer bu 2 thread aynı core üzerinde çalışmaya başlarlarsa hızlanmak yerine yavaşlarız. O yüzden thread'ları core'lar üzerine dağıtmalıyız. 2011/5/25 Serdar KÖYLÜ <[email protected]>: > Linkte verilen sched_setaffinity() bu meselenin çözümü değil gibi > görünüyor bana. > > Linkte anlatılan yöntem, threadları işlemci çekirdeklerine dağıtmaktan > biraz daha farklı bir durum. Bu daha ziyade bir processi sadece bir > tek CPU'da çalıştırmaya yönelik bir mesele. Process başka, thread > başka şey. > > Affinity, temel olarak bir process'i tek bir CPU'ya bağlamak için > kullanılır. Bunun pratikte tek faydası (başka bir takım minör şeyler > olabilir) cache üzerinde her zaman güncel bilgiyi tutmak olabilir. > > Threadların CPU'lar üzerine dağılmasını istiyorsanız, hiç bir şey > yapmayın. "pthread_create()" ile threadı yaratıp öylece bırakın. Çok > çok büyük ihtimalle kernel threadları CPU'lara dağıtacaktır kendisi. > Ve bunu sürekli güncelleyecek maksimum performansı vs. sağlayacaktır. > Kernel bunu yapamıyorsa, bunu yapmak daha kötü olacağı için yapamıyor > olacaktır. > > Sizin affinity değerleri ile oynamanız, size ek performans filan > kazandırmayacak gibi görünüyor buradan bakınca. > > 2011/5/25 hal 2000 hal <[email protected]>: >> http://www.ibm.com/developerworks/linux/library/l-affinity/index.html >> >> 2011/5/25 Cihat YILDIZ <[email protected]>: >>> Merhabalar, >>> Linux konsol uzerinde calisan multithread bir uygulama yazmak istiyorum. >>> Multithread yapmak istememin nedeni olusturdugum threadlerin islemci >>> cekirdeklerine dagilmasini istemem. >>> Ama bunun yapilip yapilamadigi veya nasil yapilacagi hakkinda bir fikrim >>> yok. >>> Bu konuda onerineriniz almak istiyorum. >>> Ayrica bununla ilgili bir dokuman onerebilirseniz sevinirim. >>> Kolay gelsin, >>> >>> --- >>> Cihat YILDIZ >>> Electronics Engineer >>> >>> >>> >>> _______________________________________________ >>> Linux-programlama mailing list >>> [email protected] >>> https://liste.linux.org.tr/mailman/listinfo/linux-programlama >>> Liste kurallari: http://liste.linux.org.tr/kurallar.php >>> >>> >> _______________________________________________ >> Linux-programlama mailing list >> [email protected] >> https://liste.linux.org.tr/mailman/listinfo/linux-programlama >> Liste kurallari: http://liste.linux.org.tr/kurallar.php >> > _______________________________________________ > Linux-programlama mailing list > [email protected] > https://liste.linux.org.tr/mailman/listinfo/linux-programlama > Liste kurallari: http://liste.linux.org.tr/kurallar.php > _______________________________________________ Linux-programlama mailing list [email protected] https://liste.linux.org.tr/mailman/listinfo/linux-programlama Liste kurallari: http://liste.linux.org.tr/kurallar.php
