Линуксийн цөмийн бүтээцийг 50-80%-иар хурдасгах багц засварууд нийтлэгдсэн.

Алдарт Линуксийн цөм хөгжүүлэгч, CFS (Бүрэн Шударга Хуваарьлагч) даалгаврын хуваарийн зохиогч Инго Молнар Linux цөмийн хөгжүүлэгчийн захидлын жагсаалтад цөмийн эх сурвалж дахь бүх файлын талаас илүү хувь нь нөлөөлдөг хэд хэдэн засваруудыг хэлэлцэхийг санал болгов. тохиргооноос хамааран цөмийг бүрэн сэргээх хурдыг 50-80% нэмэгдүүлэх. Хэрэгжүүлсэн оновчлол нь цөмийн хөгжлийн түүхэн дэх хамгийн том өөрчлөлтийг нэмж оруулсантай холбоотой гэдгээрээ анхаарал татаж байна - 2297 нөхөөсийг нэг дор оруулахаар санал болгож, 25 мянга гаруй файлыг өөрчилсөн (10 мянган толгой файлыг "оруулсан" /” ба “arch/*/include/” сангууд болон эх бичвэр бүхий 15 мянган файл).

Гүйцэтгэлийн өсөлт нь толгой файлуудыг боловсруулах аргыг өөрчилснөөр хүрдэг. Цөмийн хөгжүүлэлтийн гуч гаруй жилийн хугацаанд файлуудын хооронд олон тооны хөндлөн хамаарал байдгаас болж толгой файлуудын төлөв байдал гунигтай харагдах болсон гэж тэмдэглэжээ. Толгой файлын бүтцийн өөрчлөлт нь нэг жил гаруй үргэлжилсэн бөгөөд шатлал, хамаарлыг мэдэгдэхүйц дахин боловсруулах шаардлагатай болсон. Бүтцийн өөрчлөлтийн явцад янз бүрийн цөмийн дэд системүүдийн төрлийн тодорхойлолт, API-г салгах ажлыг хийсэн.

Хийсэн өөрчлөлтүүдийн дунд: дээд түвшний толгой файлуудыг бие биенээсээ салгах, толгой файлуудыг холбодог шугаман функцүүдийг арилгах, толгой файлуудыг төрөл болон API-д хуваах, толгой файлуудыг тусад нь угсрах (80 орчим файл нь угсралтад саад учруулсан шууд бус хамааралтай байсан. бусад толгой файлууд), ".h" болон ".c" файлуудад хамаарлыг автоматаар нэмэх, толгой файлуудыг алхам алхмаар оновчтой болгох, "CONFIG_KALLSYMS_FAST=y" горимыг ашиглах, С файлуудыг угсралтын блок болгон сонгон нэгтгэх. объектын файлуудын тоог багасгах.

Үүний үр дүнд хийсэн ажил нь урьдчилсан боловсруулалтын дараах үе шатанд боловсруулсан толгой файлуудын хэмжээг 1-2 баллын дарааллаар багасгах боломжтой болсон. Жишээлбэл, оновчлолын өмнө "linux/gfp.h" толгой файлыг ашигласнаар 13543 мөр код нэмж, 303 хамааралтай толгой файлыг оруулсан ба оновчлолын дараа хэмжээ нь 181 мөр, 26 хамааралтай файл болж буурсан. Эсвэл өөр нэг жишээ: "kernel/pid.c" файлыг нөхөөсгүйгээр урьдчилан боловсруулахад 94 мянган мөр код орсон бөгөөд ихэнх нь pid.c-д ашиглагддаггүй. Толгой файлуудыг салгаснаар боловсруулсан кодын хэмжээг 36 дахин багасгаж, боловсруулсан мөрийн тоог XNUMX мянга хүртэл бууруулсан.

Туршилтын систем дээрх "make -j96 vmlinux" командын тусламжтайгаар цөмийг бүрэн сэргээн засварлах үед засваруудыг ашигласнаар v5.16-rc7 салбарыг бүтээх хугацаа 231.34 секундээс 129.97 секунд (15.5-аас 27.7 бүтээх хүртэл) болж буурсан байна. цагт), мөн угсрах явцад CPU-ийн цөмийг ашиглах үр ашгийг нэмэгдүүлсэн. Өсөн нэмэгдэж буй бүтэцтэй бол оновчлолын үр нөлөө нь илүү мэдэгдэхүйц юм - толгой файлд өөрчлөлт оруулсны дараа цөмийг дахин бүтээх хугацаа мэдэгдэхүйц буурсан (толгой файлын өөрчлөлтөөс хамаарч 112% -иас 173% хүртэл). Оновчлолыг одоогоор зөвхөн ARM64, MIPS, Sparc болон x86 (32 ба 64 бит) архитектурт ашиглах боломжтой.

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх