Ingo Molnar, tus tsim tawm nto moo Linux kernel thiab tus sau ntawm CFS (Completely Fair Scheduler) task scheduler, tau hais kom nws sib tham txog cov npe xa ntawv ntawm cov neeg tsim khoom kernel. Linux Ib qho kev kho uas cuam tshuam ntau dua ib nrab ntawm tag nrho cov ntaub ntawv hauv kernel source code thiab muab kev nce 50-80% ntawm qhov ceev ntawm kev tsim kho kernel tag nrho, nyob ntawm qhov chaw teeb tsa. Qhov kev kho kom zoo no yog qhov tseem ceeb vim tias nws suav nrog cov kev hloov pauv loj tshaj plaws hauv keeb kwm ntawm kev txhim kho kernel - 2297 daim kho uas tau npaj tseg rau kev suav nrog ib zaug, hloov ntau dua 25 cov ntaub ntawv (10 cov ntaub ntawv header hauv "include/" thiab "arch/*/include/" directories thiab 15 cov ntaub ntawv source code).
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
