Một bộ bản vá đã được xuất bản giúp tăng tốc quá trình xây dựng nhân Linux lên 50-80%

Ingo Molnar, một nhà phát triển nhân Linux nổi tiếng và là tác giả của bộ lập lịch tác vụ CFS (Completely Fair Scheduler), đã đề xuất thảo luận về danh sách gửi thư của nhà phát triển nhân Linux về một loạt các bản vá ảnh hưởng đến hơn một nửa tất cả các tệp trong nguồn nhân và giúp tăng tốc độ xây dựng lại kernel hoàn chỉnh thêm 50-80% tùy theo cài đặt. Việc tối ưu hóa được triển khai đáng chú ý ở chỗ nó liên quan đến việc bổ sung bộ thay đổi lớn nhất trong lịch sử phát triển kernel - 2297 bản vá đã được đề xuất đưa vào cùng một lúc, thay đổi hơn 25 nghìn tệp (10 nghìn tệp tiêu đề trong “bao gồm /” và “arch/*/include/” thư mục "và 15 nghìn tệp có văn bản nguồn).

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 hơn 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 đề đã có vẻ đáng buồn 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. Quá trình tái cấu trúc tệp tiêu đề mất hơn một năm và yêu cầu phải làm lại đáng kể hệ thống phân cấp và các phần 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 kernel khác nhau.

Trong số các thay đổi được thực hiện: tách các tệp tiêu đề cấp cao với nhau, loại bỏ các chức năng nội tuyến liên kết các tệp tiêu đề, tách các tệp tiêu đề cho các loại và API, đảm bảo tập hợp các tệp tiêu đề riêng biệt (khoảng 80 tệp có các phụ thuộc gián tiếp can thiệp vào quá trình lắp ráp, được hiển thị thông qua các tệp tiêu đề khác), tự động bổ sung các phần phụ thuộc vào tệp “.h” và “.c”, tối ưu hóa từng bước cá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 tin đối tượng.

Do đó, công việc được thực hiện có thể giảm kích thước của tệp tiêu đề được xử lý ở giai đoạn tiền xử lý hậu kỳ xuống 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. Hoặc một ví dụ khác: khi tiền xử lý tệp “kernel/pid.c” không có bản vá, 94 nghìn dòng mã được bao gồm, hầu hết trong số đó không được sử dụng trong pid.c. Việc tách các tệp tiêu đề giúp giảm số lượng mã được xử lý xuống ba lần, giảm số dòng được xử lý xuống còn 36 nghìn.

Khi kernel đượ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, việc áp dụng các bản vá cho thấy thời gian build 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 build). mỗi giờ), đồng thời cũng tăng hiệu quả sử dụng lõi CPU trong quá trình lắp ráp. Với bản dựng tăng dần, hiệu quả của việc tối ưu hóa thậm chí còn đáng chú ý hơn - thời gian xây dựng lại kernel 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ính năng tối ưu hóa hiện chỉ khả dụng cho kiến ​​trúc ARM64, MIPS, Sparc và x86 (32 và 64-bit).

Nguồn: opennet.ru

Thêm một lời nhận xét