[Linux] MAIL-SEMINER: SWAPPING VI

---------

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

From: Murat Koc (murat.koc@frontsite.de)
Date: Tue 09 Jul 2002 - 06:55:22 EEST


Selam,

gelen giden birsey olmamis:( anlatalim o zaman.

Bu arada kullandigimiz kernel versiyonlari degisik olabilir. Ben

uname -r
2.4.19-pre3-lkpc-2-Newnat13+Helpers

version kernel kullaniyorum. Ornek verdigim kod parcalari sizinkinden
farkli ise haber verirseniz sevinirim.

-------------------------------------------------------------------------------

Pekala ne sormustuk. Swap e atilmis olan page lerin nerede olduklarini
nasil belirleriz. Temel olarak bunu belirlemek icin 2 tane veriye
ihtiyacimiz var. Bunlardan biri hangi swap alaninda oldugu? Ikincisi de
hangi slot ta oldugu? Hangi swap alaninda oldugunu zaten swap_info[] dan
biliyoruz. Daha once swap alanlari ile bilgilerin nasil tutuldugunu
anlatmistim. swap_info_struct bu is icin kullaniliyordu. dolayisi ile

struct swap_info_struct swap_info[MAX_SWAPFILES];

buradaki swap_info[] da bizim swap alanlarimizin listesi bulunmakta.
Bunun ustune de zaten swap alanindaki slot adini verdigimiz bolumlerde
page ler bulunmakta.

Boylece neyin nerede oldugunu belirleyebiliyoruz. Temelde bir swap entry
e baktigimiz zaman sunu goruyoruz.

typedef struct {
        unsigned long val;
} swp_entry_t;

bakin bir swap entry 32 bitlik bir yapiya yerlesmis vaziyette.

Simdi buradan bakmaya devam edersek. 3 tane macro ya sahibiz. Bunlar

* Encode and de-code a swap entry */
#define SWP_TYPE(x) (((x).val >> 1) & 0x3f)
#define SWP_OFFSET(x) ((x).val >> 8)
#define SWP_ENTRY(type, offset) ((swp_entry_t) { ((type) << 1) |
((offset) << 8) })

Bunlardan SWP_ENTRY tahmin edebileceginiz uzere encode islemi SWP_TYPE
ve SWP_OFFSET ile sirayla swap alani index ini ve slot indexini decode
etmek icin kullaniliyor. Oradaki 0x3f nin ne oldugunu sorabilirsiniz.
Simdi ne dedim? SWP_TYPE ile swap alani index i belirleniyor. Burada
0x3f ile bitwise and yapilarak da bu index de 64 tane entry
olabilecegini yani maksimum 64 tane swap alaniniz olabilecegini
belirtmis oluyorsunuz. Bu arada eger SWP_OFFSET e bakacak olursak bu 32
bitin 24 bitinin slotlar icin kullanildigini goruruz. Ufak bir hesap
yaparsak 2^24= 16777216 e bunu da x4K yaparsak 68719476736 byte yani
tam olarak == 64GB. Bu ne demek oluyor 64Gb a kadar swap alanimiz
olabilir. Himm tabii bunun tek bir swap alani icin oldugunu belirtmeme
gerek yok sanirim. 64 tane swap alani ve herbiri 64GB lik olabilir.
Temel olarak baktigimiz zaman buradan bunu gorebiliyoruz. Fakat 2GB nin
ustu onerilmiyor. Tabii bunun mkswap ile ne kadar uyumlu oldugunu filan
su asamada bilmiyorum mkswap in kodunu incelemek gerekiyor ama simdilik
useniyorum bakmaya koda ve usenmeye de devam edecegim sanirim :)) Bu
arada MAX_SWAPFILES, 32 olarak tanimlanmistir. 64 e kadar
cikarabilirsiniz. Daha buyuk degerler deneyerek kernel i derleyin
bakalim neler oluyor :)) Tabii bu 64 ustu olabilir. Yani aslinda buna
cok bir engel yok gibi ama neden 64 bir arastirmak lazim.

Amanin sabah 6:50 olmus saat, neyse benim yapmam gereken islerim var. Bu
kisim biraz karisik gelmis olabilir. Benimde zaten anlayana kadar
gobegim catlamisti :))

-- 
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.6 (GNU/Linux) Comment: For info see http://www.gnupg.org

iQIXAwUAPSpeqb6uWt8ry/OwFAIGtwf/XeiKvnGpqACcRVI6JVxbGvbAq8TYGtHJ Sz3pXzwjt9uxgJw5ZS8r1E1md35xkRwf84sZnLoj2KCRAVcMHpLvl/mzNy7rRFZv GMTgI1SHB3qjQrWEIzBocwxqlLoqar/P7I/tmiGU6REye4vBML2XzLECh2TItjZt 2YkewsQieeDQWKgRX3xBL3oqe9iYNHJVoz15/0fSHxwpVVp0IA4CJrQMx7F9A0t2 JId5ZfaXT0PmXQ+2ag6OkhgzOLqW8MIA8z/is1/Vn2iMX/fbVipV4oyemvHhj9X1 IPyWtX2lX3fSzztn4o/Vbzo/LNzxi1p2moGwe8rZXAVmpsgbu4cSFAf9EhnD6U1S /Ycryacci2/b+sjW9o7j1PiLbce0tkW6H3b59JXW8g3PjMysNyseCJ/M1YYJnc0m 67ggkSZuXRfaW69t96itb6dOCHT+BeQIyx8wxi939fM2q64oDcTr0grktLsT8z4W 5zXu/mtK1ZX6cH2SP6367ES0bItlIFmWY2ZeZSKwuQqkh+Tv9GAB7yHqvuDd/Qww Yi9fnUIh90QKW2UUMjNYIAbOMQmFih4OmIC5ABw+z0ZYjPBEDPiNkiTH8ISRoLBB jDpYQvbQv2Azz31y8sALPvGXDgygz3ytZqRxXp3t8usdB7Ew2VwNWPYXf69+9dtv L7eN4m1gA2oKBA== =FhEr -----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.