[Linux] Re: XEON

---------

New Message Reply About this list Date view Thread view Subject view Author view

From: Serdar Koylu (serdarkoylu@fisek.com.tr)
Date: Sun 09 Feb 2003 - 15:33:01 EET


Selamlar..

07 Feb 2003 18:11 EET tarihinde yazmışsınız:

>
> Baris Metin wrote:
> > Selamlar,
> >
> >
> Hmmm.. Simdi hyperthreading aslinda tek CPU yu lojical olarak cift gibi
> gosterme durumu bunda hem fikiriz. Bu sayede multhread yazilmis

Izafiyet teorisini, "Hic bir sey isiktan daha hizli" gidemez diyerek ozetlemek gibi bir yaklasim oluyor boyle soylemek.

> uygulamalar -alt duzeyde- hyperthread in sayesinde yaratilmis olan
> *lojik SMP* uzerinde makina sanki SMP iymis gibi calisabiliyor. Yani tek

Fiziksel SMP (!? Buda yanlis bir tanim) icin gecerli olan her tur sey, bu HyperThreading icin gecerli degil. Konu aslinda birazcik kafa karistirip "Bir CPU parasina iki CPU aldik" kuruntusunu kullanip daha cok CPU satmak. Cunku Athlon'da SMP supported oldu ve standart modelleri duz P4'ler ile iyi kapisabiliyor.

Pentium'lar ilk ciktiginda siradan insanlar icin "Ayni anda iki is yapiyor, yani sanki 2 CPU varmis gibi hizli oluyor" deniyordu. Bunun esprisi su. Bir branch prediction mekanizmasi ve iki pipeline. U ve V pipe'lerini surekli besleyebilirseniz ayni anda iki islem birden yapabilir bunlar. HyperThreading bunun birazcik gelsitirilmis versiyonu. Aslinda ortada 2 CPU yok. RISC yonunden son derece guclu bir tek CPU var. CISC komut setinin RISC'e translation'u o sekilde optimize yapilmis ki, opcode'u cozulmus olarak bekleyen komutlar ardi ardina U/V pipe'leri uzerinden paralel islenebiliyor. Olayin asli bundan ibaret. Fakat asil register seti, opcode decoding vs. mekanizmalari ortak. Elbette intel olayi sadece kucuk bir goz boyama olarak yapmiyor. Gercekten kullanisli bir teknoloji ve optimize kodlarla gercekten iyi verim alirsiniz. Belki hic bir zaman, 2 x PIII gucu vermeyebilir, fakat her zaman, 0 P4 gucu verebilir.

Dugum surada. Multithreading ne zaman kullanilir ? Ne zaman verimli olur ? Bu sorularda kilitleniyor. NT Fiber modeli mi ? Linux Kernel Threadlari mi ? SUN'in LWM'lerimi ? Yani daha temelde user-space veya kernel-level threading arasindaki ayrim. Ama isin icinde baska bir puf noktasi var. Interruptlar. Bunlar, bilhassa NT Fiber/SUN LWM gibi modellerde cpu latency'yi artiran parazitler gibidir. Zirt pirt cikarlar ve scheduling isini karistirirlar. Iste OS bu interruptlari bilhassa paralel olarak yurutebilir. Fakat, ornegin kendi threadlariniz arasinda non-blocking I/O amaciyla fork/clone kullaniyorsaniz, bilhassa fork sureci boyunca ardindan select() surecine gecinceye dek spin_lock's vs. kullanacaksiniz. Bu da Opcode encoding vs. islerinin cache-hitini azaltir sonucta "Bu nasil SMP ?" dersiniz. Kisaca, SMP'den beklediginiz non-blocking, high throughput I/O vs. ise performans'ta cok verim olmayabilir. Ama threading isi daha cok user-space'te geciyorsa, ornegin oyunlarda dusmanlarin hareketleri simule edilirk
en, bu mekanizma cok fazla zaman kazandirabilir. Simdi bu laftan anlasilan, server icin pek bir sey vermez, oyun oynarsaniz iyidir gibi oldu. Serverler icinde HT'nin verebilecegi cok sey vardir. Ornegin, I/O performansi, Stream performansi pek degismeyebilir. Ama php'nin sayfalari islemesi, OS'un cache yonetim islevleri vs. dramatik sekilde hizlanabilir. Bilhassa I/O yuku kadar CPU zorlayan squid ve/veya SQL serverleri bu durumdan memnun kalabilir.

> bir CPU uzerinde multhread uygulamalar calisabiliyor. SMP de
> uygulamalarda ozellikle multithreading uygulamalarin kostugu fiziksel
> coklu CPU tarlasi. Dolayisiyla SMP icin yazilmis bir uygulamanin
> hyperthread bir platforma da kosarken performans vermemesi durumu ancak
> o urun SMP uzerinde de verimli calismadigi bir durumda gecerlidir.

Temel olarak uygulamalar acisindan SMP veya Uni-CPU arasinda bir fark yoktur. Bazen, multithread bir uygulama, tek CPU uzerinde ayni isi tek threadli bir uygulamadan daha hizli yapabilir. SMP/UniCPU vs. ayrimi temel olarak O/S icin bir anlam ifade eder. O/S threadlari CPU'lara paylastirir. Interruptlari, APIC'leri vs. duzenler. Ama SMP icin ozel bir thread yapisi kullanabilir misiniz ? Maalesef. O/S sizin tum threadlarinizi alip tek bir CPU'ya verebilir. Yani siz, threadlarinizin hangi CPU tarafindan nasil islenecegini bilemezsiniz. O/S acisindan bakarsaniz, HyperThreading, genel olarak iyi yazilmis bir uygulama icin, multi-tier / multi-thread olup olmadigi onemsiz olarak, uygulamalara daha fazla kaynak aktarabilmenin bir yoludur. Sistemde programlar calisir. Mesela web serverde server. Ama gorunmeyen bir suru program calisir arka planda. Su surecler degil. IRQ handlerleri, Dosya sistemi, SWAP mekanizmasi, I/O arabellekleri (TCP/IP stack vs.) vs. vs. Genellikle uygulamalarin CPU yukleri, dogrudan OS CPU yuku
ne yansir. SMP veya HT, bu yuku dagitmakta genel toplamda basarili olabilir. Ama HT'den bir SMP performansi beklemek yanlis olur. Cunku CPU'nun asil "CPU" su gene tek. Genel olarak HT nin muadil SMP sisteminin @-70 arasi performans vermesi beklenir. Bence fiyat performans olarak iyi bir secim..

Saygi ve sevgiler..
-----------------------------------------------------------------------
Liste üyeliğiniz ile ilgili her türlü işlem için
http://liste.linux.org.tr adresindeki web arayüzünü kullanabilirsiniz.

Listeden çıkmak için: 'linux-request@linux.org.tr' adresine,
"Konu" kısmında "unsubscribe" yazan bir e-posta gönderiniz.
-----------------------------------------------------------------------


New Message Reply About this list Date view Thread view Subject view Author view

---------

Bu arsiv hypermail 2b29 tarafindan uretilmistir.