Pages

Subscribe:

Saturday, October 04, 2008

Membuat Linux Boot dalam 5 Detik

Dengan instalasi default, Fedora membutuhkan sekitar 45 detik untuk mulai dari nol hingga menampilkan halaman login GDM, waktu boot Ubuntu juga hanya dua detik lebih cepat. Di konferensi Linux Plumbers, Arjan van de Ven (pencipta PowerTOP) dan Auke Kok dari Intel mendemonstrasikan dua distro Linux yang telah dioptimisasi hanya membutuhkan waktu 5 detik untuk boot. Demonstrasi ini diperlihatkan dengan sistem operasi Fedora dan Moblin yang telah dioptimisasi menggunakan Eee PC dengan SSD. Sebagian cara optimisasi yang diperlihatkan dua Arjan dan Auke sudah dipakai oleh beberapa distro dan akan dikemas ke dalam kernel Linux dalam waktu dekat ini.

Dalam beberapa bulan belakangan ini kita telah melihat bagaimana para pengembang menyadari tentang pentingnya desain yang baik dalam mempercepat kinerja perangkat lunak, mulai dari pengembangan situs, browser, sistem operasi dan kini kecepatan boot yang menjadi sorotan utama di konferensi pengembang Linux yang berlangsung bulan lalu.

Definisi Selesai Boot

Bagaimana mereka menghasilkan terobosan baru ini? Pertama, Arjan mengatakan definisi "selesai boot adalah saat CPU dan hard disk (HD) tidak bekerja lagi," dan ini berarti tidak menampilkan desktop saat masih memulai berbagai aplikasi di balik layar (seperti yang dilakukan Microsoft, itulah sebabnya mengapa saat pertama kali login Anda harus menunggu selama beberapa saat sebelum dapat mulai menggunakan PC).

Waktu "selesai boot" tidak termasuk mendapatkan koneksi jaringan (DHCP), akan tetapi sudah mengikutkan waktu yang dibutuhkan untuk memulai NetworkManager. Sebuah sistem dengan HD akan membutuhkan waktuyang lebih lama untuk boot, tetapi Arjan mengatakan ia telah mencoba menggunakan konfigurasi yang sama di ThinkPad dan mendapatkan waktu boot 10 detik, tetap merupakan kemajuan yang sangat besar.

Konfigurasi Kurang Optimal

Menggunakan aplikasi Bootchart, kita dapat melihat jalannya proses boot Linux (Fedora) seperti yang diperlihatkan grafik di bawah ini:

Bootchart Fedora
Fedora banyak melakukan hal-hal yang tidak berguna:
  • Menghabiskan satu detik penuh untuk memeriksa loopback
  • Menghabiskan dua detik untuk memulai sendmail — "semua orang terpaksa memulai program ini hanya karena ada seseorang di luar sana yang membutuhkan sebuah mail server," ujar Arjan
  • Menghabiskan lima detik untuk memulai "settroubleshootd," aplikasi troubleshooting untuk konfigurasi SELinux
  • X Window System memulai C preprocessor dan compiler saat boot
Begitu juga dengan Ubuntu:
  • Menghabiskan 12 detik untuk "modprobe" yang akhirnya mengaktifkan semua modul yang ada
  • Menghabiskan 2,5 detik untuk memulai aplikasi yang mengaktifkan driver restricted yang tidak dibutuhkan di konfigurasi bawaan Ubuntu
  • Menghabiskan 2,5 detik untuk menampilkan gambar background di GDM
Kedua distribusi di atas menggunakan splash screen, dan Arjan maupun Auke setuju bahwa mereka "ingin bahwa proses boot selesai sebelum splash screen ditampilkan. Waktu yang dihabiskan banyak distro untuk membuat splash screen bahkan jauh lebih banyak dibandingkan waktu yang dibutuhkan Arjan untuk membuat proses boot yang cepat.

Optimisasi Kernel

Langkah pertama untuk mencapai target boot dalam 5 detik adalah mengalokasikan jatah waktu boot:
  1. Kernel diberikan jatah 1 detik untuk mengaktifkan semua modul yang dibutuhkan
  2. Early boot diberikan jatah 1 detik, sudah termasuk skrip init dan background task
  3. X diberikan jatah 1 detik
  4. Desktop environment diberikan jatah 2 detik


Jatah boot
Kernel harus dibangun tanpa "initrd" yang menghabiskan setengah detik walaupun tidak diisi apapun. Semua modul yang dibutuhkan saat boot harus dikemas ke dalam kernel. Cukup logis mengingat "95% laptop yang ada dapat ditangani hanya dengan beberapa modul," kata Arjan.

Beberapa modifikasi kernel memungkinkan inisialisasi beberapa komponen secara bersamaan. Contohnya kernel yang telah dimodifikasi Arjan mengaktifkan Advanced Host Controller Interface (AHCI untuk media penyimpanan) bersamaan dengan Universal Host Controller Interface (UHCI untuk USB). Arjan mengatakan bahwa mereka "kemungkinan besar dapat menyelesaikan boot kernel hanya dalam setengah detik tetapi kita berhenti mengoptimisasi-nya setelah berhasil mencapai target satu detik," tetapi waktu ini seharusnya berkurang menjadi setengah detik di versi 2.6.28 karena AHCI yang sudah diperbaharui.

Kernel selesai boot dalam 1 detik


Satu lagi perubahan di kernel adalah sebuah patch untuk mendukung "readahead."

Readahead dan Init

Fedora menggunakan "Upstart" menggantikan "init" yang biasanya merupakan program userspace pertama yang diaktifkan. Akan tetapi kedua pengembang ini kembali menggunakan "init" untuk memulai tiga kelompok aplikasi secara bersamaan:
  1. Proses "sReadahead" untuk membaca untuk menyimpan isi HD ke dalam memori
  2. Memeriksa filesystem, D-Bus, X kemudian desktop
  3. Hardware Abstraction Layer (HAL), "udev" dan komponen jaringan
Konfigurasi ini memaksimalkan penggunaan CPU. Sebagai contoh, saat dimulai X selalu menunda aktivasi selama setengah detik untuk mencari mode video yang tepat, dan waktu luang ini digunakan HAL untuk melakukan tugas-tugas yang CPU intensif. Utilisasi HD dan CPU selalu maksimal saat boot karena bantuan "sReadahead" yang menyimpan semua konten dari HD ke cache. sReadahead berbasiskan Fedora Readahead, akan tetapi untungnya patch untuk kernel Linux akan dibuat dalam waktu dekat ini sehingga hasil karya Arjan dan Auke akan dapta dinikmati oleh semua pengguna Linux.

Grafik akhir boot dalam 5 detik


Kesimpulannya, Arjan mengatakan bahwa pernyataan "membuat proses boot lebih cepat" adalah target yang salah. Target yang benar adalah "membuat boot cepat" dan jangan membuat semua pengguna menunggu hanya karena segelintir pengguna menggunakan filesystem atau aplikasi tertentu seperti "sendmail" di laptop mereka. Hanya beberapa hari setelah itu, Kyle McMartin mengumumkan bahwa baik Fedora maupun Ubuntu telah memperbaiki beberapa hal di proses boot mereka.

0 comments:

Post a Comment