[linux-baslangic] Re: swap

---------

From: Serdar Koylu (serdarkoylu@fisek.com.tr)
Date: Sat 12 Apr 2003 - 14:37:39 EEST

  • Next message: Gürkan KARABATAK: "[linux-baslangic] Re: Qmail"

    Selamlar..

    12 Apr 2003 10:28 EEST tarihinde yazmışsınız:

    > Serdar Koylu wrote:
    >
    > Benim swap konusunda düşüncem, swapa ihtiyaç bırakma, swapsız kalma
    > şeklinde.

    Katiliyorum.. Aynen...
     
    > Pek çok sistem, sonsuz hafıza varsayımı üzerine yazılmış. Eğer makina
    > swapsız çalışır ise, kırk yılın bir başı swap gerektiği zaman ne olacak?
    > Bellek tükendi hata mesajları bana içacıcı gelmiyor.

    Yanlis bakilan taraf su olabilir. Bir process eger ENOMEM almiyorsa boyuna alloc cagirip durur. Eger SWAP yoksa, cogu zaman ENOMEM alan process kendi yagiyla kavrulmayi dener/denemelidir. TMP dizini bunun icin vardir. Sonucta 1GB RAM var, 2GB ta SWAP varsa aslinda hic gerekmedigi halde sistem SWAP'a duser gider.

    >
    > Belki ben yanlış biliyorum fakat sistem swap yaptığı zaman hafızanın
    > tümünü swap'a yazıp swap'tan boşaltmıyor, bunu page bazında yapıyor diye
    > hatırlıyorum. Dolayısıyla 1Gig hafızası olan bir sistem, çok yüklendiği
    > bir zamanda ufak bir miktar swap yazabilir/kullanabilir. Muhakkak 1 Gig
    > yazması gerekmez.

    Elbette.. Ama text segmentleri (kodlar olur kendileri malum) SWAP'a gitmiyor artik. Sadece datalar yaziliyor. Sonucta datada yapilan islem demek. Cogu zaman bu islemler cache ve bufferler oluyor.

    SWAP mekanizmasinin bir diger sorunu ilk anda gorulmez. 2 GB SWAP icin birde bu SWAP uzerinde index olusturmak var. Sayfa SWAP'a atilirken baska bir sayfada SWAP'dan bellege alinir. Yani bir sayfa yazilir, ardindan bir sayfa okunur. Bu da overhead'i son derece yuksek bir isdir.

    Neticede oraya bilhassa oyle 2GB SWAP koyarsaniz, programlar istahla uzerine saldiriverir. Diger taraftan sistem kendi cache ihtiyaclari icin vs. RAM uzerine yuklenebilir. Sonucta uzun zamandir kullanilmayan processlerin datalarini kendine cache acmak icin SWAP'a ativerir. Bu ise gereksiz sistem yuku demektir.

    > Ve eğer ciddi bir swap kullanımı olacak ise, swap'ı farklı bir diskten
    > vermek en iyisi.

    Muhakkak. Fakat asil onemli olan bu SWAP'in boyu. 128 RAM olur. Bazen millet yuklenecek ve sistemi sisrecek olur ki, bu OpenOffice calistirmak kadar makul bir istektir. Iste o zaman SWAP imdada yetisir. Bu nedenle tercihan SWAP ayri bir diskte tutulmalidir. Kafa hareketi en az olsun diye.

    > > Simdi gelelim bu tur sistemde ne yapabiliriz konusuna. Bu benim kendi tezim ve tartismaya acigim.
    >
    > Ufak bir makinacık var, CPU'su çok hızlı bir makina da değil. Güvenlik
    > duvarı, squid, fetchmail, DNS vb çalıştırıyor. Özellikle squid yüzünden
    > rutin olarak 1 Gig hafızayı dolduruyor. Genelde swap yaparken
    > yakalamıyorum fakat swap yaptığı da oluyor.

    Tipik bir durum. Squid buldugu tum bellegi pool eder. Fakat gerektigi zaman sisteme geri verebilir. Guzel bir page fault mekanizmasi vardir. squid olan makineye ne kadar RAM koyarsaniz koyun kisa sure sonra mutlaka SWAP'a dusurur. Devaminda sistem bellek ihtiyaci artinca kendi bellek kulanimini otomatik kisitlayabilir.

     
    > Aynı şekilde, çok kişinin bir şekilde bağlandığı (örneğin dosya sunucuları)
    > makinalar, üzerinde procmail, spamassassin, virüs temizleme vb
    > çalıştıran posta sunucuları, veritabanı makinaları, ağa hizmet veren
    > sunucular (ldap, imap vb). Bunlar Giglerce hafızayı güzelce kullanıyorlar.
    > Bence Gig'lik hafıza artık özel bir durum olmaktan çıktı.

    Oyle oldu. Ama nedendir aklim almiyor. Fakat malum bir husus varki, SWAP devreye girdigi anda performans 50 kat filan dusuyor. Bir sekilde SWAP kullanmadan sistemin yoluna devam etmesini saglamak lazim. elbette bunu entry level sunucular veya desktoplar icin soylemiyorum. Ama 1 GB RAM varken bu yetmiyorsa ve sistem 1 GB daha istiyorsa/istemisse, 512MB PC2700 DDRAM 58 $ iken, oturup dusunmek gerekiyor "niye SWAP diye yoruyorum su cici pengueni" diyerek..

    > Makinanın normal işleyişini karşılayacak ve normalde swap'a ihtiyaç
    > hissettirmeyecek kadar hafıza konulması konusunda size katılıyorum.
    > Fakat hafızası yeterli olan bir makinada hiç swap kurulmaması konusunda
    > katılmıyorum. O zaman makinayı herkesin aynı anda maksimum kullanımına
    > göre tanzim etmek gerekli ki, baştan doğru hesaplanması bile güç.

    Sorun da burada zaten. Bunu kestirmek icin sistemin bir sure calismasi lazim. Aslolan SWAP konmamasi degil 1 GB vs. swap konmasi. Bu ters geliyor bana. Eger 1 GB SWAP gerekebilir diyorsaniz, en azindan 512MB daha RAM takin. Bu 1 GB SWAP'tan 10 kere daha etkili olur. Windows'larda "bana bellek ver" dediginizde, en fazla 1.2GB Bellek alabilirsiniz. Bazi taklalarla (BOOT.INI'ye /3GB yazmak gibi) 2GB bellek alabilmeniz belki mumkun olur. Windows memory defragmentation yapmaz. Parca parca bellekler kullanilmissa siz bir defada en buyuk bos blok kadar bellek alabilirsiniz. Bu nedenle SWAP ihtiyaci cok zor kestirilebilir. Ayrica DLL'ler on-the-fly link edilir ve kodlarinda SWAP'a atilmasi gerekebilir. Sonucta sizin process sayisini, process basina kod interface sayisini, bunlarin kullanacagi data buyuklugunu vs kestirmeniz cok guc olur. Windows bu nedenle SWAP buyuklugunu dinamik olarak duzenlemeye calisir. Oysa Linux'ta kesin olan bir sey varsa, alloc ile 4GB bellek isteyebilecegin
     iz, varsa SWAP veya fiziksel olarak, bunuda alabileceginizdir. Surecler kendini fork veya clone ettikce ekstra code segmenti gerektirmezler. Yani bir sendmail 1 MB ise, 100 sendmail (=100 aktif kullanici) bakarsiniz en fazla 20 MB eder (file, page table vs.) dahasi text segmentleri swap'a atilmaz, dogrudan yuklendigi dosyadan alinir. Sonucta SWAP = Kullanilan aktif data demektir. Boyle olmasi icin transparent olarak uygulamalara sunulmasi gerekir. Uygulamalar, bilhassa squid gibileri dayanamaz bu durumda swap vs. ne varsa dolduruverir. Allahtan squid asenkron bir pool mekanizmasi kullaniyor. SWAP'a dustugunu hissettigi anda poollari olduruyor.

    DB serverleri de ayni sekilde davranacaktir. Siz ona gorunur 3GB (1 GB RAM 2 GB SWAP) verirseniz gider onu dolduruncaya kadar ugrasir. Elbette ORACLE vs. bu durumun farkina varinca gene kendini toparlayabilir. Eger siz sistemdeki tablolara yetecek kadar RAM sahibiyseniz, normalizasyonu "5 asamadir, 5'ide gecilmistir, gerisi allah kerim" demeden mantikli sekilde yapmissaniz, buffer yonetimi, cache yonetim vs. bilesenleri hic SWAP yuzu gormeden calisabilir.

    Kisaca, SWAP miktari RAM miktarina bakarak tayin edilemez artik, GB'lar ile konusuyorsak. Burada sistemimiz, uygulamamiz vs. hepsi birlesir. Siz buna gore bir swap secebilirsiniz. Ama kas yapayim derken goz cikarmaniz, sistemi surunur hale getirmeniz de mumkundur. Sonucta belli bir formulu olmayan, hava tahmininden bile daha muallak bir sey yaptiginiz. Bu nedenle onceligi gerekecek RAM miktarini bulmaya verin. Ve bu RAM'i saglayin derim. Zaten o analizler size gerekebilecek SWAP miktarini hissettirecektir. Hatta RAM miktarida oyle 4-6 GB filan gibi bir sey cikiyorsa derhal cluster konusunu gundeme getirmelisiniz. Kendi adima 2 GB'tan fazla yogun kullanilacak RAM varsa, bunu 4 CPU yerine Tek CPU'lu 4 makineye bolmeyi daha cok tercih ederim. PC mimarisinde RAM erisim hizi dehsetli bir bootleneck olusturuyor. 533 Mhz denen P4 FSB aslinda 133 MHz lik bir veriyolu. Bu veriyolundan 512 MB'i okuyup yazmak, cacheleri doldurmak vs. buyuk dert..

    Saygi ve sevgiler.
     
    > Bence sistemde swap kurmak ve eğer sistem rutin olarak swap'a yöneliyor
    > ise, RAM'i arttırmak gerekli.
    >
    > Esen kalın,
    > Deniz
    >
    >
    >


  • Next message: Gürkan KARABATAK: "[linux-baslangic] Re: Qmail"

    ---------

    Bu arsiv hypermail 2.1.6 tarafindan uretilmistir.