Fast Kernel Headers, một tập hợp các bản vá giúp tăng tốc độ biên dịch kernel lên 50-80%

Ingo Molnar, một nhà phát triển nhân Linux nổi tiếng và tác giả của CFS Task Scheduler đã đề xuất cho cuộc thảo luận danh sách gửi thư phát triển nhân Linux một số bản vá, ảnh hưởng đến hơn một nửa số tệp trong nguồn hạt nhân và cung cấp tốc độ xây dựng lại hạt nhân tổng thể tăng 50-80% tùy thuộc vào cấu hình.

Tối ưu hóa được triển khai đáng chú ý là nó được liên kết với việc bổ sung các tập thay đổi lớn nhất trong lịch sử phát triển hạt nhân: họ đặt ra 2297 bản vá cùng một lúc, thay đổi hơn 25 nghìn tệp.

Tăng hiệu suất đạt được bằng cách thay đổi phương pháp xử lý tệp tiêu đề. Cần lưu ý rằng trong suốt ba mươi năm phát triển hạt nhân, trạng thái của các tệp tiêu đề đã trở nên tồi tệ do sự hiện diện của một số lượng lớn các phụ thuộc chéo giữa các tệp.

Việc tái cấu trúc các tệp tiêu đề mất hơn một năm và yêu cầu thiết kế lại đáng kể hệ thống phân cấp và các yếu tố phụ thuộc. Trong quá trình tái cấu trúc, công việc đã được thực hiện để tách các định nghĩa kiểu và API cho các hệ thống con hạt nhân khác nhau.

Tôi vui mừng thông báo phiên bản công khai đầu tiên của dự án "Fast Kernel Headers" mới mà tôi đã thực hiện từ cuối năm 2020, đây là phiên bản làm lại toàn diện hệ thống phân cấp tiêu đề hạt nhân Linux và các phụ thuộc tiêu đề, với mục đích kép là:

- tăng tốc độ xây dựng hạt nhân (cả thời gian xây dựng tuyệt đối và tăng dần)

- loại tách hệ thống con và định nghĩa API khỏi nhau

Như hầu hết các nhà phát triển nhân đều biết, có khoảng ~ 10,000 tiêu đề .h chính trong nhân Linux, trong hệ thống phân cấp bao gồm / và vòm / * / bao gồm /. Trong hơn 30 năm qua, chúng đã phát triển thành một tập hợp phức tạp và đau đớn của những mối quan hệ phụ thuộc chéo mà chúng tôi trìu mến gọi là 'Địa ngục của sự phụ thuộc'.

Trong số những thay đổi được thực hiện là: tách các tệp tiêu đề cấp cao khỏi nhau, loại trừ các chức năng nội tuyến liên kết tệp tiêu đề, ánh xạ tệp tiêu đề cho các loại và API, cung cấp một tập hợp tệp tiêu đề riêng biệt (khoảng 80 tệp có phụ thuộc gián tiếp can thiệp vào việc lắp ráp, hiển thị thông qua các tệp tiêu đề tệp khác), tự động bổ sung các tệp phụ thuộc vào Tệp ".h" và ".c", tối ưu hóa từng bước tệp tiêu đề, sử dụng chế độ "CONFIG_KALLSYMS_FAST = y", hợp nhất có chọn lọc các tệp C thành các khối lắp ráp để giảm số lượng tệp đối tượng.

Kết quả là công việc đã thực hiện được phép giảm kích thước của các tệp tiêu đề đã xử lýtrong giai đoạn tiền xử lý sau 1-2 bậc lớn.

  • Ví dụ: trước khi tối ưu hóa, việc sử dụng tệp tiêu đề "linux / gfp.h" dẫn đến việc bổ sung 13543 dòng mã và bao gồm 303 tệp tiêu đề phụ thuộc và sau khi tối ưu hóa, kích thước giảm xuống còn 181 dòng và 26 tệp phụ thuộc.
  • Một ví dụ khác: xử lý trước tệp "kernel / pid.c" chưa được vá kết nối 94 nghìn dòng mã, hầu hết trong số đó không được sử dụng trong pid.c. Việc chia nhỏ các tệp tiêu đề cho phép chúng tôi giảm số lượng mã được xử lý ba lần, giảm số dòng được xử lý xuống còn 36.

Khi hạt nhân được xây dựng lại hoàn toàn bằng lệnh "make -j96 vmlinux" trên hệ thống thử nghiệm, bản vá cho thấy thời gian biên dịch của nhánh v5.16-rc7 giảm từ 231,34 xuống 129,97 giây (từ 15,5 xuống 27,7 mỗi lần xây dựng giờ) và cũng tăng hiệu quả sử dụng lõi CPU trong quá trình xây dựng.

Với sự biên dịch gia tăng, hiệu quả tối ưu hóa thậm chí còn đáng chú ý hơn: thời gian để xây dựng lại hạt nhân sau khi thực hiện các thay đổi đối với tệp tiêu đề đã giảm đáng kể (từ 112% xuống 173%, tùy thuộc vào tệp tiêu đề được thay đổi).

Tối ưu hóa hiện chỉ có sẵn cho kiến ​​trúc ARM64, MIPS, Sparc và x86 (32-bit và 64-bit).

Tốt thôi nếu bạn muốn biết thêm về nó, bạn có thể kiểm tra các chi tiết trong liên kết theo dõi.


Để lại bình luận của bạn

địa chỉ email của bạn sẽ không được công bố. Các trường bắt buộc được đánh dấu bằng *

*

*

  1. Chịu trách nhiệm về dữ liệu: Miguel Ángel Gatón
  2. Mục đích của dữ liệu: Kiểm soát SPAM, quản lý bình luận.
  3. Hợp pháp: Sự đồng ý của bạn
  4. Truyền thông dữ liệu: Dữ liệu sẽ không được thông báo cho các bên thứ ba trừ khi có nghĩa vụ pháp lý.
  5. Lưu trữ dữ liệu: Cơ sở dữ liệu do Occentus Networks (EU) lưu trữ
  6. Quyền: Bất cứ lúc nào bạn có thể giới hạn, khôi phục và xóa thông tin của mình.