[Linux] Re: Linux- windoz, Intel-AMD benchmark

---------

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

From: Serdar KÖYLÜ (serdarkoylu@fisek.com.tr)
Date: Tue 16 Jul 2002 - 14:01:58 EEST


Selamlar..

Bellek konusunda NT ile W2K'nin yaklasimlari farkli. W2K process bellek yonetimi bir hayli daha iyi. NT ise bellek yonetiminde cok feci sekilde cuvalliyor. Mikrokernel'in tasklari cok fazla bellek yiyor, yeni bellek isteklerinde yavas kaliyor. Ama thread'lar, co-operative calisabiliyorsa, IO islevleri sync yapilabiliyor. Bu sayede sistem daha hizli IO performansi verebiliyor.

W2K icinde fork var. Evet var. Ama library seviyesinde implementasyonunu bulamadim. Yani kernel kendi internal islevleri (kernel -> kernel tasks) icin fork kullaniyor. Bu sayede IO islevlerini nonblocking gerceklestirebiliyor. Ama user space programlar icin bu destek kullanilamiyor. MS-SQL bunu bildiginden kendi IO islevleri icin kernele sarkarak fork kullaniyor. Boylece performans konusunda ORACLE vs.nin onunde gidiyor. Tipik MS Ayagi. Eger DOS'ta undocumented fonksiyonlar aciklanmis olsaydi, Novell NetWare'i %90 daha kisa surede yazardim diyor. Benzer undocumented API cagrilarini MS Office ve Explorer'de kullaniyor..

Bellek yonetiminde temel farklar burada. Asil onemli fark thread modelinde mevcut. NT kernel-level threadler icin user-space threadlerin baglanacagi bir girdi yaratir. Buna fiber deriz. POSIX ise kernel-level thread tarif etmez, threadler user-space olur. Eger sistemde calisan process ayni fiber uzerinden thread senkronizasyonu yaparsa bir hayli yuksek performans elde eder. Fakat, kernel process scheduler entry, fiber entry, thread entry zinciri daha fazla bellek alani ister. Buda azimsanmayacak olcekte daha fazladir. Thread basina 2K kadar olabilir. BU deger onemsiz gibi gorunur fakat, Bunlar 16 Bitlik pointerle isaretlenir. Yani 64K segmentler halinde tutulur. Bir fiber'in 64K uzerinde thread entry'ye sahip olmasi mumkun olmaz. Bu durumda process kendine yeni fiberler olusturur. Her yeni fiber kernel seviyesinde yeni bir task entry demektir. Dahasi bellek ihtiyaci olunca, Bu 64K bloklar hayasizca SWAP'a gidebilir. Evet, bunlar process'in bellek alanindadir ve NT Kernel bunlari SWAP-OUT yapabilir. Sonucta b
ellek yetersizligi durumunda NT son derece dramatik bir sekilde performans kaybina ugrar. W2K icin durum bir hayli duzeltilmistir. Yeni scheduling algortimasi BSD'nin bilinen reserved bellek mimarisini kullanir. Bu, fiber entry'lerin sistemin reserved bellegi icinde tutulmasini saglar. Boylece thread kabiliyeti artarken bellek ihtiyaci katlanir. User space icin gerektiginde kullanilabilecek bellek azalir.

Linux'ta (ve Solaris'te, ve HP/UX'te...) fiber diye bir sey yoktur. LigthWeight Process denen tek bir threadtan olusan ve dogrudan kernel-level calisan, boylece dogru schedule ve resource support alabilen threadlar vardir. Bu sayede her processin yeterli ve adil olarak sistem kaynagi kullanmasi saglanir. Fakat, mesela diskten veri bekleyen bir surec, su kadar sure git baska threadlerle ilgilen diyemez. Yani dogal yoldan sync olamaz. OS, LISTEN durumundaki bir sureci, Sleep olsa bile schedule mekanizmasina koyar.. Bu ilk bakista buyuk performans kaybi gibi gorunur, fakat, multi-user bir sistemde, her kullanicinin farkli processleri calistiracagini dusunurseniz her kullaniciya CPU/RAM kotalari dahilinde adaletli olarak dagilmasini saglar.

Eger sizinki gibi kucuk bir sistem ile calisiyorsaniz, Linux her processi yeterince makul bir hizda olusturup kisitli bellek alani icinde copy-on-write ederek guzelce calistirir. Bu makineye insaf deme noktasina gelinceye kadar yuklensenizde, makul ve kabul eidlebilir bir hizda isini yapmaya devam eder. Fakat, NT/W2K icin, sisteme yuklendginizde bellek ihtiyaci artar. Eger donanim bellek ihtiyacini karsilayabiliyorsa, task priority'leri duzgun ayarlanmis thread'ler kullaniliyorsa hiz kaybi olmadan, dahasi bilhassa W2K icin tikanma yasanmadan yeterli task response saglanir. Fakat, GUI, MM uzantilari, Kernel Reserved Resources (CPU, MEM, MicroTimer, VGA icin GART, DISK-IO icin DMA cache/buffer vs. ki bunlar yuk ile birlikte geometrik olarak artar..) gereksiz yere yuk olusturup toplam kaynak ihtiyacini artirirlar. Linux ise GUI kullanilsa bile (GUI kernel'e yapisik bir bilesen degildir, bir process'ten ibarettir) sistem yukunu kolayca karsilayabilir.

Sonuc olarak yuk yuksekse, buna bagintili olarak yuksek bir konfigurasyon kullanirsaniz, bilhassa MS'nin kendi yazdigi ve kernelin icine dahi sarkan, Exchange, MS-SQL gibi serverler kullaniyorsaniz, thread ve VM mekanizmasi size bir hayli yuksek bir performans saglayabilir. Ama, derseniz ki, bir makinem var, MS-SQL+IIS+Exchange+DNS+DHCP kullanilsin.. Bunlarin task priority ve kernel erisimleri cakisacagindan toplamda berbat bir performans elde edersiniz. Bunlarin her birini ayri ayri makinelere, hemde her biri irice olan makinelere koymaniz gerekir. Bunlari tek makineye koyarsaniz, 5 servis icin herbirinin hizi o makinenin vereceginin 1/5'i olmasi gerekirken 1/50'sine dusuverir. Oysa Linux ile boyle bir konsolide server de her servis 1/5 kaynak kullanir, makinenin 1/5'i gucunde/performasinda is yapar.

Linux, bilhassa dusuk sistem kaynagi ve bu seviyedeki bir makine icin makul olabilecek yuklerde cok iyi netice verir. NT/W2K ise ayni yuku karsilamak icin her zaman daha fazla kaynak gerektirir. Ama, bir noktaya gelindiginde, yuk bir hayli buyudugunde, bagli olarak donanimda bir hayli buyudugunde durum once dengelenir, sonra W2K one gecmeye baslar. Ornegin, 8 CPU, 16GB RAM ve 16 * 36GB SCSI-RAID olan bir sistemde, Sistemin boyuna gore fazla olmayan yuk varsa, W2K icin yeterince yer vardir. Boyle bir sistemde W2K Linux'tan cok daha fazla performans gosterir. Ama 2 CPU 512MB RAM, 1 SCSI Disk varsa, bunun kaldiracagi maksimum yuk, W2K ile ornegin 500 transaction/sn iken, Linux ile 700 olabilir. Ama 8 CPU sistemde, W2K 10000 Tr/sec verebilirken, Linux 8000 tr/sec filan verebilir. Fakat bu ssitemin yuku artarda, hardware yetersiz kalmaya baslarsa, Linux gene one gecer..

Neden ? Cunku, Linux'un thread modeli ve VM sisteminin, kaynaklari cok verimli kullanirken harcadigi guc, boyle buyuk makinelerde bir dezavantaj olur. Kisitli RAM ile SWAP'a dusurmeden process baslatmanin etkili yolu olan copy-on-write, ayni bellek bolgesinin birden fazla VM tarafindan kullanilmasini saglar. Fakat her VM schedule edilirken, MMU'nun uygun sekilde ayarlanmasi gerekir. Bu bir CPU surecidir. Oysa W2K her process'i kendi belleginde calistirir ve MMU Set etmekle filan ugrasmaz. SAnirim bu ornek, durumu aciklamaya biraz olsun yeterli olur. Eger, donanim yeterliyse, W2K daha hizlidir. Ama, yuke gore donanim yetersiz kaliyorsa, Linux one gecer. Hele birde donanim boyle kucuk bir seyse, (Kucuk buyuk ayrimi icin W2K hardware desgin Guide'a bir gozatin. Ornegin, sadece sistem icin, uygulamalar haric, processor basina 256 MB Ram gereklidir) Linux bilhassa yuk altinda cok iyi neticeler verir. Ama donanim W2K'ye gani gani yetiyorsa, W2K Linux'tan onde gider..

Sizin sorunuza bu acidan bakarsak, W2K server icin gerekli olan CPU basina 256 MB RAM, bu makinede saglanamadigi icin, bu makinenin W2K server olarak kullanilmasi kabul edilemez. Masaustu icin, bu defa 128 MB kotasina takilirsiniz. Bu nedenle, ureticisinin tarif ettigi sistem gereksinimini karsilayamayan bu makine icin W2K soyle calisir diyemeyiz. Bu sistem, Linux ile ornegin, bir mail server yapilabilir. Sanirim, simultane Max 500 baglanti ile gunde yaklasik 100000 mail isleyebilir. Ayni performansi ayni stabilite ile alabilmek icin, 512 MB RAM ile Guclu CPU'lu bir W2K makinesi almaniz gerekir. Exchange server ve W2K icin yazilmis paperler boyle diyor..

AMD 450 MHz ? K6 serisinde boyle bir CPU, PII-300 civarinda bir performans saglar. Sadece CPU olarak bakildiginda.. Uygulamaya bagli olarak, atbasi giderler. PII-300, 512K half speed cache ve 100 MHz FSB sayesinde bilhassa office turu uygulamalarda bariz sekilde onde olur. Ama, 3D islerinde bunlarin 3DNow'lari K6'lari one cikarir. Ayni sekilde bir server yapmayi dusunuyorsaniz, PII-300, AMD'yi ikiye uce katlayacak kadar hizli olabilir.

Mimari olarak AMD K6-450 icin en yakin Intel karsiligi, Celeron 333/366 filan olabilir. Gene ayni sekilde bazi uygulamalarda, bilhassa masaustunde Celeron daha one cikar. Asil problem CPU core degilde, FPU/3Dnow unitlerini kullanmayan programlar. BU CPU AutoCAD ile render yaparken guclu FPU ve 3Dnow'u ile Celeron'a nal toplatir.

Saygi ve sevgiler..

On Mon, 15 Jul 2002 23:26:01 -0700 (PDT)
Zeynep Arslanoglu <zeynep104@yahoo.com> wrote:

>
>
> Merhabalar,
> basliktan da anlasildigi gibi soyle iki soru var:
> ornegin 64 MB RAM in Linux 2.2 uzerinde verecegi
> performansi Win2000/NT uzerinde ne kadar bellegi olan
> bir makinayla karsilastirabiliriz?
> RAM miktari degisebilir ama cekirdek 2.2.
>
> Bir de AMD - Intel benchmarki ariyorum. Yaklasik bir
> AMD 450 Mhz islemcinin intel karsiligi ne olabilir?
>
> Simdiden tesekkurler.
-----------------------------------------------------------------------
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.