Tuesday, October 21, 2008

Gentoo: mempercepat proses kompilasi

Sebagaimana kita semua ketahui, Gentoo Linux adalah suatu distribusi GNU/Linux yang memakai source sebagai paket software, dan inilah yang menjadi suatu kelebihan dan mungkin buat sebagian orang malah menganggap sebagai kekurangannya. Berbeda dengan distribusi lainnya, sebagai contoh: Debian dan Ubuntu yang menggunakan .deb paket, Mandrake menggunakan .rpm paket, dsb.

Dari sejarahnya (sumber wikipedia), Gentoo linux adalah distro pertama yang melakukan optimasi peningkatan kecepatan kompilasi GCC sampai 10% lebih, dan akhirnya secara resmi modifikasi GCC milik Gentoo (Enoch kala itu) di jadikan bagian dari GCC dan digunakan secara luas oleh distribusi lainnya.

Adapun salah satu kelebihan dari sistem pemaketannya, maka Gentoo dapat dioptimisasi dan dikustomisasi untuk hampir segala jenis aplikasi atau kegunaan sesuai dengan hardware dan arsitektur mesin yang dimiliki. Dengan kemampuan adaptasi Gentoo yang hampir tidak ada batasnya, maka Gentoo GNU/Linux sering disebut juga sebagai MetaDistribusi.

Kalo dari saya selaku pribadi, memilih gentoo sebagai distribusi yang digunakan dikarenakan berbagai alasan, hanya ingin bernostalgia, senang troubleshoot, ingin belajar gnu/linux lebih dalam, sudah tidak tau mo ngapain lagi dengan distribusi lain yang menjadi "sangat cantik" kala ini, tetapi juga karena ingin merasakan update aplikasi yang relatif lebih cepat khususnya bagi para developer yang merilis dalam bentuk "source" sampai membuat skrip kompilasi sendiri.

Disamping berbagai kelebihan yang didapatkan, ada satu titik lemah yang tidak bisa saya pungkiri, yaitu "waktu" kompilasi (saya menghabiskan hampir 10 jam untuk mengkompilasi Paket lengkap Openoffice , dan lebih lama lagi untuk versi sebelumnya sewaktu belum saya optimasi). Untuk itu banyak sekali tips yang dapat digunakan untuk mempercepat proses kompilasi dengan cara mengoptimasi mesin/compiler/environtment yang kita miliki.

Berikut adalah dua buah tips yang saya anggap kritikal untuk dilakukan

1. CFLAGS
CFLAGS adalah C compiler flags, umumnya merupakan opsi dari GCC (GNU Compiler Collection). CFLAGS digunakan untuk mengkustomisasi dan mengoptimasi aplikasi dari source. CFLAGS umumnya digunakan untuk mendefinisikan arsitektur dari komputer/mesin yang dimiliki, semisal CPU yang digunakan and opsi spesial lainnya. Daftar CFLAGS untuk Gentoo GNU/Linux telah dibuatkan di Safe CFLAGs Guide. (saat ini situs gentoo-wiki sedang tidak aktif, anda dapat mengakses cache-nya di google). Untuk komputer saya (Lenovo R60) yang berprocessor Intel Core Duo (silahkan anda sesuaikan dengan arsitektur anda), maka cukup mengubah CFLAGS di /etc/make.conf menjadi
CHOST="i686-pc-linux-gnu"
CFLAGS="-march=prescott -O2 -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"
2. CCACHE
CCACHE adalah cache yang digunakan oleh kompiler, efeknya akan meningkatkan kecepatan kompilasi 5-10 kali lebih cepat pada saat kompilasi berikutnya, CCAHE akan melakukan caching kompilasi sebelumnya dan mendeteksi apabila jenis kompilasi yang sama dilakukan lagi (dan ini sangat sering terjadi pada penginstallan aplikasi di Gentoo).

Proses installasi
# emerge --version
Portage 2.2_rc12 (default/linux/x86/2008.0/desktop, gcc-4.3.2, glibc-2.8_p20080602-r0, 2.6.25-gentoo-r5 i686)
# emerge -av dev-util/ccache
# emerge --info | grep CHOST
CHOST="i686-pc-linux-gnu"
# ccache-config --install-links i686-pc-linux-gnu

tambahkan ke /etc/make.conf untuk konfigurasi
FEATURES="ccache"
CCACHE_DIR="/var/tmp/ccache"
CCACHE_SIZE="976.6M"
Selanjutnya tinggal memeriksa apakah cache anda berjalan dengan perintah "ccache -s".

Selamat mencoba, enjoy(tm) :)

7 comments:

  1. waduhhh
    kapan kira2 gw bisa pake gentoo

    daripada nggak jadi2
    mending saya setia sama slackware aja
    slackbuild aja

    ReplyDelete
  2. Slackware juga kan sering kompile2 gitu, lalu yang membedakan dengan gentoo apa ya?
    Maaf, gw gak terlalu familiar sama gentoo. makanya gw nanya kayak gini. thx

    ReplyDelete
  3. @phpgz: dicoba aja dulu :), hahaha ga jadi2 apa neh?
    @linux : coba cek disini untuk beberapa perbandingan http://polishlinux.org/choose/comparison/?distro1=Gentoo&distro2=Slackware, AFAIK untuk slackware memang menggunakan pemaketan tgz, tetapi lemah dalam hal dependensi, dan gw ga tau sejauh apa user diberi kebebasan memodifikasi proses installasi (ex: modifikasi installer), gw juga belun coba install slack, baru pake Backtrack duank :d

    ReplyDelete
  4. ini om,
    kalo saat compile kernel biasanya saya;
    "make -j3"
    atau di make.conf
    ditambah;
    MAKEOPTS="-j3"

    itu juga kalo prosesornya kuat(dual core keatas)
    CMIIW... ;)

    ReplyDelete
  5. k1tk4t: hahaha, yoi, gak ngeh; kirain itu ketawa j3 j3 j3, gantiin h3 h3 h3 :lol:

    ReplyDelete