GNU/Linux >> Belajar Linux >  >> Linux

Memboot Linux lebih cepat

Dari semua komputer yang pernah saya miliki atau gunakan, yang paling cepat booting adalah dari tahun 1980-an; pada saat tangan Anda berpindah dari sakelar daya ke keyboard, penerjemah BASIC sudah siap untuk perintah Anda. Komputer modern membutuhkan waktu mulai dari 15 detik untuk laptop hingga beberapa menit untuk server rumah kecil untuk boot. Mengapa ada perbedaan waktu booting?

Sebuah komputer mikro dari tahun 1980-an yang boot langsung ke prompt BASIC memiliki CPU yang sangat sederhana yang mulai mengambil dan mengeksekusi instruksi dari alamat memori segera setelah mendapatkan daya. Karena sistem ini memiliki BASIC dalam ROM, tidak ada waktu pemuatan—Anda mendapatkan prompt BASIC dengan sangat cepat. Sistem yang lebih kompleks pada era yang sama, seperti IBM PC atau Macintosh, membutuhkan waktu yang signifikan untuk boot (~30 detik), meskipun ini sebagian besar karena harus membaca sistem operasi (OS) dari floppy disk. Hanya beberapa detik yang dihabiskan dalam firmware sebelum dapat memuat OS.

Server modern biasanya menghabiskan beberapa menit, bukan detik, dalam firmware sebelum sampai pada titik mem-boot OS dari disk. Hal ini sebagian besar disebabkan oleh peningkatan kompleksitas sistem modern. CPU tidak lagi dapat muncul begitu saja dan mulai mengeksekusi instruksi dengan kecepatan penuh; kita sudah terbiasa dengan penskalaan frekuensi CPU, status idle yang menghemat banyak daya, dan banyak inti CPU. Faktanya, di dalam CPU modern terdapat sejumlah CPU sederhana yang membantu memulai inti CPU utama dan menyediakan layanan runtime seperti membatasi frekuensi saat terlalu panas. Pada sebagian besar arsitektur CPU, kode yang berjalan pada inti ini di dalam CPU Anda disediakan sebagai gumpalan biner buram.

Pada sistem OpenPOWER, setiap instruksi yang dieksekusi pada setiap inti di dalam CPU adalah perangkat lunak open source. Pada mesin dengan OpenBMC (seperti sistem AC922 IBM dan sistem TALOS II dan Blackbird Raptor), ini juga meluas ke kode yang berjalan pada Baseboard Management Controller juga. Artinya, kami bisa mendapatkan banyak sekali wawasan tentang waktu yang begitu lama dari saat Anda mencolokkan kabel daya hingga saat perintah login yang sudah dikenal ditampilkan.

Jika Anda adalah bagian dari tim yang bekerja pada kernel Linux, Anda mungkin mem-boot banyak kernel. Jika Anda adalah bagian dari tim yang bekerja pada firmware, Anda mungkin akan mem-boot banyak gambar firmware yang berbeda, diikuti oleh OS untuk memastikan firmware Anda masih berfungsi. Jika kami dapat mengurangi waktu boot perangkat keras, tim ini dapat menjadi lebih produktif, dan pengguna akhir mungkin berterima kasih saat mereka menyiapkan sistem atau melakukan boot ulang untuk menginstal firmware atau pembaruan OS.

Pemrograman dan pengembangan

  • Blog Pengembang Topi Merah
  • Pemrograman lembar contekan
  • Coba gratis:Langganan Pembelajaran Red Hat
  • eBook:Pengantar pemrograman dengan Bash
  • Lembar Curang Skrip Bash Shell
  • eBook:Modernisasi Enterprise Java

Selama bertahun-tahun, banyak perbaikan telah dilakukan pada waktu boot distribusi Linux. Sistem init modern dapat menangani pekerjaan secara bersamaan dan sesuai permintaan dengan baik. Pada sistem modern, setelah kernel mulai dijalankan, diperlukan beberapa detik untuk mendapatkan perintah login. Beberapa detik ini bukanlah tempat untuk mengoptimalkan waktu booting; kita harus pergi lebih awal:sebelum kita masuk ke OS.

Pada sistem OpenPOWER, firmware memuat OS dengan mem-boot kernel Linux yang disimpan dalam chip flash firmware yang menjalankan program ruang pengguna yang disebut Petitboot untuk menemukan disk yang menampung OS yang ingin di-boot pengguna dan kexec() untuk itu. Penggunaan kembali kode ini memanfaatkan upaya yang telah dilakukan untuk membuat boot Linux lebih cepat. Meski begitu, kami menemukan tempat di konfigurasi kernel dan ruang pengguna kami di mana kami dapat meningkatkan dan dengan mudah mengurangi detik dari waktu boot. Dengan pengoptimalan ini, mem-boot lingkungan Petitboot adalah persentase satu digit dari waktu boot, jadi kami harus menemukan lebih banyak peningkatan di tempat lain.

Sebelum lingkungan Petitboot dimulai, ada sedikit firmware yang disebut Skiboot, dan sebelum itu ada Hostboot. Sebelum Hostboot adalah Self-Boot Engine, inti terpisah yang membuat satu inti CPU naik dan menjalankan instruksi dari cache Level 3. Komponen-komponen ini adalah tempat kita dapat membuat kemajuan maksimal dalam mengurangi waktu boot, karena mereka menghabiskan sebagian besar waktunya. Mungkin beberapa komponen ini tidak cukup dioptimalkan atau bekerja secara paralel?

Jalan serangan lain adalah waktu reboot daripada waktu boot. Saat reboot, apakah kita benar-benar perlu menginisialisasi ulang semua perangkat kerasnya?

Seperti sistem modern lainnya, solusi untuk meningkatkan waktu boot (dan reboot) adalah campuran dari melakukan lebih banyak secara paralel, menangani warisan, dan (bisa dibilang) curang.

Stewart Smith akan menghadirkan Booting lebih cepat di linux.conf.au, 21-25 Januari di Christchurch, Selandia Baru.


Linux
  1. Contoh Perintah timedatectl di Linux

  2. Contoh Perintah uptime di Linux

  3. Bisakah saya mem-boot Linux dari VHD?

  1. Contoh Perintah Waktu Linux

  2. Mengapa partisi boot ext2 100MB direkomendasikan untuk linux?

  3. Waktu Lokal Windows vs Linux?

  1. Proses Boot Linux

  2. Status Proses Linux

  3. Bagaimana cara memberikan nilai ke modul kernel Linux bawaan saat boot?