Apa itu virtual memori? --- o merupakan 'RAM tambahan' yang menggunakan space dari disk (swap) o merupakan sebuah raw partition, tanpa file system yang ditandai dengan type filesystem 82 (Linux swap) Data disimpan di memori dalam sebuah "pages". Memori fisik hanya dapat menyimpan pages terbatas dalam suatu waktu, karenanya sebagian dipindahakan ke virtual memory. Proses ini disebut paging atau swapping. Kinerja virtual memori sangat mempengaruhi performansi sistem keseluruhan apalagi sistem yang bebannya sangat tinggi. Parameter kerja kernel terhadap virtual memori dapat diset pada file-file di directori /proc/sys/vm/ Linux memory manager membatasi besarnya swap sampai 127 MB, untuk itu jika menginginkan swap lebih besar, kita harus membaginya. Membuat swap dengan perintah mkfile --- Misalkan kita akan membuat alokasi swap sebsar 200 MByte di partisi hda1 $mkfile 200m /hda1/swap_200MB $swapon -a /hda1/swap_200MB Kita dapat menambahakan opsi "-c" untuk pengecekan badblock Lalu tambahkan dalam file system table (/etc/fstab) agarswap diaktifkan secara otomatis setiap kali booting: /disk2/swap_200M swap swap rw 0 0 Script startup akan mengeksekusiperintah 'swapon -a' yang membaca file tersebut. Membuat swap dengan perintah dd --- Cara kedua adalah sebagai berikut: $dd if=/dev/zero of=/extra-swap bs=1024 count=1024 1024+0 records in 1024+0 records out Setelah membuat alokasi space, maka kita harus memberi signature pada awal bagian space tersebut. $mkswap /extra-swap 1024 Setting up swapspace, size = 1044480 bytes Hati-hati dengan perintah tsb karena mkswap tidak mengecek bagian yang akan ditulisi, shingga dapat menimpa data atau file system yang sudah ada. Untuk mulai menggunakan space swap yang telah dibuat, $swapon /extra-swap Melihat alokasi swap --- Space swap dapat dilihat dengan perintah 'free' $ free total used free shared buffers cached Mem: 255340 217528 37812 0 93012 86408 -/+ buffers/cache: 38108 217232 Swap: 2096440 1072 2095368 Untuk men-disable swap yang adadapat dilakukan denganperintah 'swapoff' $ swapoff -a Program managemen virtual memori --- Linux dan sistem operasi lain biasanya melakukan disk buffering yaitu menyimpan sementara program, file atau yang lain yang sering diakses oleh sistem dalam memori virtual. Ini mempercepat kerja dibanding harus membacanya lagi langsung dari disk. Memori virtual yang digunakan untuk keperluan tsb disebut buffer cache. Buffer cache menyimpan dalam bentuk bloks yaitu ukuran terkecil dalam operasi I/O (sekitar 1kB). Buffer cache juga biasanya digunakan untuk menyimpan data dari prosen write-through atau write-back. Proses tersebut adalah proses penyimpanan sementara pada virtual memori pada data atau file yang sedang dibuka oleh suatu program, setelah program selesai barulah data/file tersebut ditulis ke disk. Perintah sync biasanya digunakan untuk membersihakan (flush) buffer, dengan kata lain memaksa semua data yang belum ditulis (masih didalam memory) untuk ditulis ke disk. Dalam sistem UNIX tradisional, terdapat program bernama update yang berjalan di background yang melakukan sync setiap 30 detik, jadi tidak perlu lagi menggunakan sync secara manual. Linux mempunyai daemon tambahan, bdflush, yang lebih sering menjalan sync untuk menghindari penghentian mendadak karena disk I/O yang berat. Seting parameter untuk virtual memory --- File-file dalam /proc/sys/vm/ beserta fungsinya adalah sbb: bdflush Mengontrol operasi dari program kernel daemon: bdflush buffermem Mengontrol penggunaan memory untuk buffer cache freepages Minimum, high dan low watermarks untuk free pages kswapd mengontrol kernel swap daemon overcommit_memory Jika diset menjadi 1, malloc akan selalu succeed pagecache Seperti buffermem tetapi mengontrol mapping memory dan file generic file cache swapctl Mengontrol proses paging (kswapd) pagetable_cache Page cache per CPU untuk sistem SMP Kita dapat mengoptimalkan kerja bdflush dengan mengeset file /proc/sys/vm/bdflush Ada 9 parameter yang dapat kita set pada file tersebut. Contoh isi file bdflush di mesin saya: $ cat /proc/sys/vm/bdflush 30 64 64 256 500 3000 60 0 0 Tiga parameter yang pertama adalah yang paling penting, yaitu: 1. nfract, persentasi buffer cache dirty 2. ndirty, banyaknya dirty block maksimum yang ditulis per wake-cycle 3. nrefill, banyaknya clesn buffer yang disediakan saat refill parameter yang lainnya adalah: ... 6. age_buffer, waktu untuk buffer normal tetap disimpan sebelum di flush 7. age_super, waktu untuk super block tetap disimpan sebelum di flush ... Untuk mengeset file tersebut dapat dilakukan... $ echo "100 1200 128 512 15 5000 500 1884 2">/proc/sys/vm/bdflush atau dengan mengedit file /etc/sysctl.conf, dengan menambahakan baris: vm.bdflush = 100 1200 128 512 15 5000 500 1884 2 File lain yang penting adalah /proc/sys/vm/freepages, yang mengontrol seberapa agresif kernel akan menjalankan proses swapping. Bahan bacaan --- /usr/src/linux/Documentation/sysctl/vm.txt http://www.oreilly.com/catalog/spt2/chapter/ch04.html http://www.byte.com/documents/s=429/byt20000829s0006/index3.htm http://www.tldp.org/LDP/solrhe/Securing-Optimizing-Linux-RH-Edition-v1.3/chap6sec68.html --- eryan12@yahoo.com http://paucits.itb.ac.id/~eryan 020910