GNU/Linux >> Belajar Linux >  >> Linux

Siklus hidup pengujian kernel Linux

Dalam Pengujian integrasi berkelanjutan untuk kernel Linux , Saya menulis tentang proyek Continuous Kernel Integration (CKI) dan misinya untuk mengubah cara kerja pengembang dan pengelola kernel. Artikel ini adalah pembahasan mendalam tentang beberapa aspek yang lebih teknis dari proyek dan bagaimana semua bagiannya cocok satu sama lain.

Semuanya dimulai dengan perubahan

Setiap fitur menarik, peningkatan, dan bug di kernel dimulai dengan perubahan yang diusulkan oleh pengembang. Perubahan ini muncul di berbagai milis untuk repositori kernel yang berbeda. Beberapa repositori fokus pada subsistem tertentu di kernel, seperti penyimpanan atau jaringan, sementara yang lain fokus pada aspek kernel yang luas. Proyek CKI mulai beraksi ketika pengembang mengusulkan perubahan, atau patchset, ke kernel atau ketika pengelola membuat perubahan dalam repositori itu sendiri.

Proyek CKI mempertahankan pemicu yang memantau tambalan ini dan mengambil tindakan. Proyek perangkat lunak seperti Patchwork membuat proses ini lebih mudah dengan menggabungkan kontribusi multi-tambalan ke dalam satu seri tambalan. Seri ini berjalan sebagai satu unit melalui sistem CKI dan memungkinkan untuk menerbitkan satu laporan tentang seri tersebut.

Pemicu lain mengawasi repositori untuk perubahan. Ini terjadi ketika pengelola kernel menggabungkan tambalan, mengembalikan tambalan, atau membuat tag baru. Menguji perubahan penting ini memastikan bahwa pengembang selalu memiliki dasar yang kuat untuk digunakan sebagai dasar untuk menulis tambalan baru.

Semua perubahan ini masuk ke pipeline GitLab dan melewati beberapa tahap dan beberapa sistem.

Siapkan build

Semuanya dimulai dengan menyiapkan sumber untuk waktu kompilasi. Ini membutuhkan kloning repositori, menerapkan patchset yang diusulkan oleh pengembang, dan menghasilkan file konfigurasi kernel. File konfigurasi ini memiliki ribuan opsi yang mengaktifkan atau menonaktifkan fitur, dan file konfigurasi sangat berbeda antara arsitektur sistem yang berbeda. Misalnya, sistem x86_64 yang cukup standar mungkin memiliki banyak opsi yang tersedia di file konfigurasinya, tetapi sistem s390x (mainframe IBM zSeries) kemungkinan memiliki opsi yang jauh lebih sedikit. Beberapa opsi mungkin masuk akal di mainframe itu, tetapi tidak ada gunanya di laptop konsumen.

Kernel bergerak maju dan berubah menjadi artefak sumber. Artefak berisi seluruh repositori, dengan patch yang diterapkan, dan semua file konfigurasi kernel yang diperlukan untuk kompilasi. Kernel upstream bergerak sebagai tarball, sedangkan kernel Red Hat menjadi RPM sumber untuk langkah selanjutnya.

Tumpukan kompilasi

Mengkompilasi kernel mengubah kode sumber menjadi sesuatu yang dapat di-boot dan digunakan oleh komputer. File konfigurasi menjelaskan apa yang harus dibangun, skrip di kernel menjelaskan cara membuatnya, dan alat pada sistem (seperti GCC dan glibc) melakukan pembangunan. Proses ini membutuhkan waktu untuk diselesaikan, tetapi proyek CKI membutuhkannya untuk diselesaikan dengan cepat untuk empat arsitektur:aarch64 (64-bit ARM), ppc64le (POWER), s390x (IBM zSeries), dan x86_64. Sangat penting bagi kami untuk mengkompilasi kernel dengan cepat sehingga kami menjaga jaminan simpanan kami dapat dikelola dan pengembang menerima umpan balik yang cepat.

Menambahkan lebih banyak CPU memberikan banyak peningkatan kecepatan, tetapi setiap sistem memiliki batasannya. Proyek CKI mengkompilasi kernel di dalam container dalam penerapan OpenShift; meskipun OpenShift memungkinkan banyak skalabilitas, penerapannya masih memiliki jumlah CPU yang terbatas. Tim CKI mengalokasikan 20 CPU virtual untuk mengkompilasi setiap kernel. Dengan empat arsitektur yang terlibat, ini menjadi 80 CPU!

Peningkatan kecepatan lainnya berasal dari alat yang disebut ccache. Pengembangan kernel bergerak cepat, tetapi sejumlah besar kernel tetap tidak berubah bahkan di antara beberapa rilis. Alat ccache menyimpan objek yang dibangun (potongan kecil dari keseluruhan kernel) selama kompilasi pada disk. Ketika kompilasi kernel lain datang kemudian, ccache mencari potongan kernel yang tidak berubah yang dilihatnya sebelumnya. Ccache menarik objek yang di-cache dari disk dan menggunakannya kembali. Ini memungkinkan kompilasi lebih cepat dan penggunaan CPU secara keseluruhan lebih rendah. Kernel yang membutuhkan waktu 20 menit untuk dikompilasi sekarang berlomba ke garis finis dalam waktu kurang dari beberapa menit.

Waktu pengujian

Lebih banyak sumber daya Linux

  • Lembar contekan perintah Linux
  • Lembar contekan perintah Linux tingkat lanjut
  • Kursus online gratis:Ikhtisar Teknis RHEL
  • Lembar contekan jaringan Linux
  • Lembar contekan SELinux
  • Lembar contekan perintah umum Linux
  • Apa itu container Linux?
  • Artikel Linux terbaru kami

Kernel bergerak ke langkah terakhirnya:pengujian pada perangkat keras yang sebenarnya. Setiap kernel melakukan booting pada arsitektur aslinya menggunakan Beaker, dan banyak sekali tes yang mulai menyodoknya untuk menemukan masalah. Beberapa pengujian mencari masalah sederhana, seperti masalah dengan container atau pesan kesalahan saat boot-up. Pengujian lain mendalami berbagai subsistem kernel untuk menemukan regresi dalam panggilan sistem, alokasi memori, dan threading.

Kerangka kerja pengujian besar, seperti Linux Test Project (LTP), berisi banyak pengujian yang mencari regresi yang merepotkan di kernel. Beberapa dari regresi ini dapat mengembalikan perbaikan keamanan penting, dan ada pengujian untuk memastikan peningkatan tersebut tetap ada di kernel.

Satu langkah penting tetap ada saat pengujian selesai:pelaporan. Pengembang dan pengelola kernel memerlukan laporan singkat yang memberi tahu mereka apa yang berhasil, apa yang tidak berhasil, dan bagaimana mendapatkan lebih banyak informasi. Setiap laporan CKI berisi detail tentang kode sumber yang digunakan, parameter kompilasi, dan hasil pengujian. Informasi tersebut membantu pengembang mengetahui dari mana harus mulai mencari untuk memperbaiki masalah. Selain itu, ini membantu pengelola mengetahui kapan patchset perlu ditahan untuk tampilan lain sebelum bug masuk ke repositori kernel mereka.

Ringkasan

Tim proyek CKI berusaha untuk mencegah bug memasuki kernel Linux dengan memberikan umpan balik otomatis yang tepat waktu kepada pengembang dan pengelola kernel. Pekerjaan ini membuat pekerjaan mereka lebih mudah dengan menemukan buah menggantung rendah yang mengarah ke bug kernel, masalah keamanan, dan masalah kinerja.

Untuk mempelajari lebih lanjut, Anda dapat menghadiri CKI Hackfest pada 12-13 September mengikuti Linux Plumbers Conference 9-11 September di Lisbon, Portugal.


Linux
  1. 30 hal yang tidak Anda ketahui tentang kernel Linux

  2. Analisis kernel Linux dengan ftrace

  3. Kernel Linux:5 inovasi teratas

  1. Pengujian integrasi berkelanjutan untuk kernel Linux

  2. Memecahkan masalah Tahun 2038 di kernel Linux

  3. Cara membersihkan cache yang digunakan oleh kernel Linux

  1. Di mana saya menemukan versi pohon sumber kernel Linux?

  2. Apa sumber kernel Linux saat ini?

  3. penambahan protokol jaringan baru di kernel linux