Ib txheej ntawm thaj ua rau thaj tau raug luam tawm uas ua kom lub zog ntawm Linux kernel los ntawm 50-80%

Ingo Molnar, tus paub zoo Linux kernel tus tsim tawm thiab tus sau ntawm CFS (Ua tiav Lub Sijhawm Ncaj Ncees) ua haujlwm teem sijhawm, tau thov rau kev sib tham ntawm Linux kernel tus tsim tawm xa cov npe ntawm cov thaj ua rau thaj uas cuam tshuam ntau tshaj li ib nrab ntawm tag nrho cov ntaub ntawv nyob rau hauv cov ntaub ntawv kernel thiab muab qhov nce hauv qhov nrawm ntawm cov ntsiav ua kom tiav los ntawm 50-80% nyob ntawm qhov chaw. Qhov kev ua kom zoo tshaj plaws yog qhov tseem ceeb hauv qhov uas nws cuam tshuam nrog qhov sib ntxiv ntawm cov txheej txheem loj tshaj plaws ntawm kev hloov pauv hauv keeb kwm ntawm kernel txoj kev loj hlob - 2297 thaj ua rau thaj tau thov kom suav nrog ib zaug, hloov ntau dua 25 txhiab cov ntaub ntawv (10 txhiab cov ntaub ntawv header hauv "suav nrog. /" thiab "arch/*/include/" directories "thiab 15 txhiab cov ntaub ntawv nrog cov ntawv nyeem).

Qhov kev ua tau zoo yog ua tiav los ntawm kev hloov cov txheej txheem ntawm kev ua cov ntaub ntawv header. Nws tau raug sau tseg tias dhau peb caug xyoo ntawm kev txhim kho kernel, lub xeev ntawm cov ntaub ntawv header tau ua rau muaj kev ntxhov siab vim muaj ntau tus neeg hla kev nyob nruab nrab ntawm cov ntaub ntawv. Cov ntaub ntawv header restructuring siv ntau tshaj ib xyoos thiab xav tau kev rov ua haujlwm tseem ceeb ntawm hierarchy thiab dependencies. Thaum lub sijhawm rov tsim kho, ua haujlwm tau ua kom cais cov ntsiab lus thiab APIs rau cov kab ke sib txawv.

Ntawm cov kev hloov pauv tau ua: cais cov ntaub ntawv qib siab header los ntawm ib leeg, tshem tawm cov haujlwm inline uas txuas cov ntaub ntawv header, cais cov ntaub ntawv header rau hom thiab APIs, xyuas kom muaj kev sib dhos ntawm cov ntaub ntawv header (txog 80 cov ntaub ntawv muaj kev cuam tshuam ncaj qha cuam tshuam nrog kev sib dhos, nthuav tawm los ntawm lwm cov ntaub ntawv header), tsis siv neeg ntxiv ntawm kev vam khom rau ".h" thiab ".c" cov ntaub ntawv, kev ua kom zoo ib ntus ntawm cov ntaub ntawv header, siv "CONFIG_KALLSYMS_FAST = y" hom, xaiv kev sib sau ntawm C cov ntaub ntawv rau hauv cov ntawv sib dhos rau txo tus naj npawb ntawm cov khoom siv.

Raws li qhov tshwm sim, kev ua haujlwm tau ua kom txo tau qhov loj ntawm cov ntaub ntawv header ua tiav ntawm theem tom qab ua ntej los ntawm 1-2 xaj ntawm qhov loj. Piv txwv li, ua ntej kev ua kom zoo, siv cov ntaub ntawv header "linux/gfp.h" ua rau qhov sib ntxiv ntawm 13543 kab ntawm cov cai thiab suav nrog 303 nyob ntawm cov ntaub ntawv header, thiab tom qab ua kom zoo dua qhov loj me tau txo mus rau 181 kab thiab 26 cov ntaub ntawv nyob. Los yog lwm qhov piv txwv: thaum preprocessing cov ntaub ntawv "kernel/pid.c" tsis muaj ib thaj, 94 txhiab kab ntawm cov lej suav nrog, feem ntau tsis siv hauv pid.c. Kev sib cais ntawm cov ntaub ntawv header ua rau nws tuaj yeem txo tus nqi ntawm cov txheej txheem ua tiav peb zaug, txo cov kab ua tiav rau 36 txhiab.

Thaum lub kernel tau ua tiav tag nrho nrog "ua -j96 vmlinux" cov lus txib ntawm qhov kev sim, daim ntawv thov thaj ua rau pom qhov txo qis hauv lub sijhawm tsim ntawm v5.16-rc7 ceg ntawm 231.34 txog 129.97 vib nas this (los ntawm 15.5 txog 27.7 tsim. ib teev), thiab tseem nce qhov kev ua tau zoo ntawm kev siv CPU cores thaum lub rooj sib txoos. Nrog rau kev tsim kho ntxiv, cov txiaj ntsig ntawm kev ua kom zoo dua yog qhov pom tau ntau dua - lub sijhawm rov tsim kho cov ntsiav tom qab hloov pauv cov ntaub ntawv header tau poob qis (los ntawm 112% mus rau 173% nyob ntawm cov ntaub ntawv header raug hloov). Kev ua kom zoo tam sim no tsuas yog muaj rau ARM64, MIPS, Sparc thiab x86 (32- thiab 64-ntsis) architectures.

Tau qhov twg los: opennet.ru

Ntxiv ib saib