[Linux] Re: MAIL-SEMINER: SWAPPING

---------

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

From: Murat Koc (murat.koc@frontsite.de)
Date: Sat 06 Jul 2002 - 14:35:37 EEST


 
> Selamlar..

Selam,
 
> Genel olarak bakildiginda SWAP'in amaci bu.Biraz daha genellestirirsek,
>SWAP, Virtual Machine sisteminde, process yukunun artmasi ile VM
>isteklerinin fiziksel RAM ile karsilanamaz duruma dusmesinde kurtarici
>olarak kullanilir. Bir process'in dinamik olarak kullandigi RAM (DATA
>segment) gibi, process'in kendiside (TEXT segment) SWAP'a konabilir. Bu
>dogru tarif degil tam olarak ama, sunu anlamak icin faydali olur. Bazi

Bunu yazmistim. ne tur page lerin konulabilecegini. TEXT segment swap e
konmaz. Cunku read-only oldugu icin modify edilemez dolayisi ile o page
free yapilmadan swapped=out yapilmasinin bir anlami yoktur. Cunku
gerektiginde zaten orjinal dosyadan demand-paging yapilabilir.

>isletim sistemleri uzun sure Sleep durumunda kalan uygulamalari
>otomatikman SWAP'a koyabilir. SWAP'ten bir process'in tekrar
>yuklenmesi, process'in yeniden baslatilmasindan kat kat hizlidir. Bu
>nedenle bilhassa yuksek yuke gore dizayn edilmis sistemlerde,
>process'ler yuke binmeden baslatilir, bir sure sonra OS bunlari SWAP'e
>koyar. Ihtiyac oldugunda bunlari yuklemek daha kolay olur. Linux bu
>konuda biraz zayiftir. Fakat Solaris ve AIX bu isi cok iyi becerirler.
>Fakat Linux copy-and-execute yapabilir, yani calisan bir sureci
>hafizadan kopyalayarak yeni bir surec olusturabilir. Boylece bu sorun
>daha etkili olarak cozulmus olur.

himm ben anlamadim bunu? bahsettigin bu durumu bilmiyorum yani uzun sure
sleep modda kalan process ler swap e atilir sonra oradan geri yuklenir
filan. Bu bana pek mantikli gelmiyor simdi process table dan swap e
attiginizda bu durumda zaten cikarmis oluyorsunuz geri yuklemek icin ise
oncelikle diskten okumaniz gerekir o page leri ki tekrardan ona PID,
session leadership bilgilerinin degistirilmesi gerekir. Bu durumda page
in orjinal dosyadan okunmasi ile swapden okunmasi arasinda pek bir fark
kalmiyor. ki bence bahsettigin bu islem ise ancak karmasaya yol acar.
Ayrica linux un bunda zayif olmasini anlamadim ve buna karsilik da linux
copy-and-execute yapabilir i anlamadim. cop-and-execute ile sanirim
fork-exec ikilisini soylemek istedin ki bu zaten yeni bir process
olusturmak icin gerekli olan prosedurdur. Solaris ve AIX de fork-exec
kullanir? Dolayisi ile bu bahsettigin seyi ben hic anlamadim nasil bir
fayda sagliyor? linux nasil zayif? standart process olusturma islemi ile
bunlari ne alakasi var?
 
> SWAP isinde en can alici nokta, Murat'in belirttigi swap-out kismidir.
> 386 Mimarisinde bellek Virtual86 modunda kullanilir. Bu modda, bellek
>4K sayfalar halinde tutulur ve swap-out kolaylasir (nispeten). MMU
>sagolsun.. Ama, bir process'in user level thread modeli, kernel
>tarafindan bilinmeyebilir. Eger, pthread gibi bir user-level thread
>sistemi kullaniyorsaniz, thread onceliklerinizi belirleyemeden onlarin
>SWAP out'a fazla dusmesi mumkun olur, bu da performans kaybina yol
>acar. Nasil ?
>
> Bir user-space thread, kernel tarafindan process'in bir parcasi gibi gorunur.
> Kernel threadlari ise kernel tarafindan bilinir ve daha iyi SWAP ve
>process yonetimi saglar. Demekki, pthread "POSIX thread" kullanmak swap
>mevcut olan bir sistemde cok verimli olmaz :(( Ama penguenciler
>uyaniktir. Bakin ne yapmislar: POSIX threadlarini implement eden
>pthread library'sin libc'ye gommusler ve clone() ile bunlarin bir
>kernel-thread olarak calismasini saglamislar. Ama user space
>sync-thread (fiber) destegide yokolmus otomatikman. Gerci buyuk bir
>kayip degil.

bu thread konusunu sanirim onceden de (bayaa once) konusmustuk. Yalniz
bunlara kernel-thread demeyelim kernel-level-thread diyelim daha duzgun
olacaktir sanirim. Serdar ben bu ikisini birbirine sokulmus sekilde
goruyorum burada. kernel-thread ile kernel-level-thread farkli
seylerdir. pthread in kernel-thread ile alakasi yoktur. kernel-thread
denilen sey kernel_thread() ile olusturulur ve kswapd buna iyi bir
ornektir. PID leri 2,3,4 ... gibi kucuk numaralar olurlar ve priority
olarak en yuksek seviyede calisirlar (RING 0) ve kesinlikle USER memory
ile alakalari yoktur direk KERNEL memory i share ederler. Bir MT
application inin bu LWP lerin gucunu kullandigi dogrudur ama her
application MT olarak yazilmamis olabilir ayrica LWP leri solaris filan
kernel-thread olarak process ederler ama biz Linux bazli konusuyoruz ve
Linux burada standart disi olarak bu isi clone() ile yapar ki bu bir
kernel_thread degildir. kernel_thread() da sonradan clone() u cagirir
orasi ayri.
 
> Thread ile SWAP arasindaki baglanti, thread'in scheduling que'de sirasi
>gelince isleniyor olmasindan kaynaklanir. Eger sirasi gelen thread
>swap'ta ise veya bos bellek yoksa, SWAP islevi baslar. Bu da kernelin
>tek bir thread (one-to-many) olarak gordugu bir process'i SWAP'a
>gereksiz yere atmasiyla sonuclanabilir.
>

iyi de ben thread kullanmiyorsam. Butun programlar veya process ler
thread kullanmak zorunda mi? ben kodumu yazarken sadece fork-exec
yapiyorum belki ne clone() ne de pthread_create() kullanmiyorum. Bu
durumda bunun benim icin hicbir anlami olmaz ki? Calistirilan her
process illa ki MT sekilde calistiriliyor degil ki?

> Peki bunlari neden yaziyoruz ? SWAP yonetimi, boy pos tespiti vs.
>sistemin kullandigi thread modeliyle son derece alakalidir. Bu tur bir
>thread yonetimi, SWAP yonetiminide kolaylastirir. Demekki, SWAP'a
>ihtiyaciniz varsa, uygulamalarin thread modelini cok fazla dusunmeden
>bir SWAP modeli cikarabilirsiniz.

butun alakayi buna baglayamayiz. Eger boyle birsey yaparsak benim
swapping konusunda yazdiklarimin hicbirinin anlami olmaz.
 

-- 
IYI CALISMALAR

MURAT KOC

-- Attached file included as plaintext by Ecartis -- -- File: signature.asc -- Desc: This is a digitally signed message part

-----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.7 (GNU/Linux)

iQIXAwUAPSbWCL6uWt8ry/OwFAKnfgf+PuZrF0naoj57Tx0DlxS5Dn1HLUtd0RWI y7U1xFjxU+07Lsu+oNWdiAzpriVbN8vguYQ5UDLBf75jGtmffVnnJm9cwm4ui0Fo mv/if00PEz750qrpbL3ypOm3Mda0DWev97QntFMjD7UoL7Xrcg3m1Mt+d5gg3JUR DI1aT8cj0m6Inb74w8KdefjHO8uXpH6o+UmdqXTH0riZCKtpW+TJApnsO2EPfipj zAi5MfrBbXcW1FUUK+xwKw5v7NzvI2kJHiOyKOKKdZaYYuLYpz1sl66EG/1ha2j/ Qg/HXWndIsryk1QmohiotlYBOLeyonYKvDAYvnPWd2c13RXQSffRvgf+KziHqQMn ToZx1M8As7rV9ZCD4lD46xyi1bm9Ylp5fXyFP0OJH+4TbvHXSKGXq8hMnNAJpanp pCpCOwzYQxbC/oc7gqUClTGICwTIYFoehEdj/RsVGT3XQw8s1XmAa0teJnHKQNaj C+iSwnm8Lh0ZbfIUesr2U6gYRejJq1Qc1/RwC9OtmEOb45SYklvshRwDpqiscBrH TjC8P+q5uGJkSzJePse88841Yb4tFPf9ck4qzZjZl2wY1TmtOHBg/UPwtLIJpYAl VvQk6Gb368i1xbooLq/UK9j9SpN/IeUcA9ksRnBBAhO3RHInuhxkucrq0+laYnCC TYWF5pNQrAt//w== =bzq0 -----END PGP SIGNATURE-----

----------------------------------------------------------------------- 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.