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

    Source: geocities.com/hackermuda/exploits

               ( geocities.com/hackermuda)