เบŠเบธเบ”เบ‚เบญเบ‡ patches เป„เบ”เป‰เบ–เบทเบเบˆเบฑเบ”เบžเบตเบกเบกเบฒเบ—เบตเปˆเป€เบฅเบฑเปˆเบ‡เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ‚เบญเบ‡ Linux kernel เป‚เบ”เบ 50-80%

Ingo Molnar, เบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒ kernel Linux เบ—เบตเปˆเบกเบตเบŠเบทเปˆเบชเบฝเบ‡เปเบฅเบฐเป€เบ›เบฑเบ™เบœเบนเป‰เบ‚เบฝเบ™เบ‚เบญเบ‡ CFS (Completely Fair Scheduler) เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบงเบฝเบเบ‡เบฒเบ™, เบชเบฐเป€เบซเบ™เบตเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเบปเบ™เบ—เบฐเบ™เบฒเบเปˆเบฝเบงเบเบฑเบšเบฅเบฒเบเบŠเบทเปˆเบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒ Linux kernel เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡ patches เบ—เบตเปˆเบกเบตเบœเบปเบ™เบเบฐเบ—เบปเบšเบซเบผเบฒเบเบเบงเปˆเบฒเป€เบ„เบดเปˆเบ‡เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เป„เบŸเบฅเปŒเบ—เบฑเบ‡เบซเบกเบปเบ”เปƒเบ™เปเบซเบผเปˆเบ‡ kernel เปเบฅเบฐ. เบชเบฐเบซเบ™เบญเบ‡เบเบฒเบ™เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเป„เบงเบ‚เบญเบ‡ kernel เบชเปเบฒเป€เบฅเบฑเบ” 50-80% เบ‚เบถเป‰เบ™เบเบฑเบšเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ. เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ—เบตเปˆเบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เปเบกเปˆเบ™เป€เบ›เบฑเบ™เบ—เบตเปˆเบซเบ™เป‰เบฒเบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเบกเบฑเบ™เบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบเบฒเบ™เป€เบžเบตเปˆเบกเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ—เบตเปˆเปƒเบซเบเปˆเบ—เบตเปˆเบชเบธเบ”เปƒเบ™เบ›เบฐเบซเบงเบฑเบ”เบชเบฒเบ”เบ‚เบญเบ‡เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบเปˆเบ™ - 2297 เปเบœเปˆเบ™เป„เบ”เป‰เบ–เบทเบเบชเบฐเป€เบซเบ™เบตเปƒเบซเป‰เบฅเบงเบกเบขเบนเปˆเปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบง, เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบซเบผเบฒเบเบเบงเปˆเบฒ 25 เบžเบฑเบ™เป„เบŸเบฅเปŒ (10 เบžเบฑเบ™เป„เบŸเบฅเปŒเบซเบปเบงเปƒเบ™ "เบฅเบงเบกเป€เบญเบปเบฒ. /โ€ เปเบฅเบฐ โ€œarch/*/include/โ€ directoryโ€ เปเบฅเบฐ 15 เบžเบฑเบ™เป„เบŸเบฅเปŒเบ—เบตเปˆเบกเบตเบ‚เปเป‰เบ„เบงเบฒเบกเปเบซเบผเปˆเบ‡).

เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปเบกเปˆเบ™เบšเบฑเบ™เบฅเบธเป„เบ”เป‰เป‚เบ”เบเบเบฒเบ™เบ›เปˆเบฝเบ™เบงเบดเบ—เบตเบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡เป„เบŸเบฅเปŒ header. เบกเบฑเบ™เป„เบ”เป‰เบ–เบทเบเบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เบงเปˆเบฒเปƒเบ™เป„เบฅเบเบฐเบชเบฒเบกเบชเบดเบšเบ›เบตเบ‚เบญเบ‡เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ kernel, เบชเบฐเบ–เบฒเบ™เบฐเบ‚เบญเบ‡เป„เบŸเบฅเปŒ header เป„เบ”เป‰เบ›เบฐเบ•เบดเบšเบฑเบ”เบฎเบนเบšเบฅเบฑเบเบชเบฐเบ™เบฐเบ—เบตเปˆเบซเบ™เป‰เบฒเป€เบชเบปเป‰เบฒเปƒเบˆเป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบเบฒเบ™เบกเบตเบˆเปเบฒเบ™เบงเบ™เบซเบฅเบฒเบเบ‚เบญเบ‡เบเบฒเบ™เบ‚เบทเป‰เบ™เบ‚เป‰เบฒเบกเบฅเบฐเบซเบงเปˆเบฒเบ‡เป„เบŸเบฅเปŒ. เบเบฒเบ™เบ›เบฑเบšเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เป„เบŸเบฅเปŒ header เปƒเบŠเป‰เป€เบงเบฅเบฒเบซเบผเบฒเบเบเบงเปˆเบฒเบซเบ™เบถเปˆเบ‡เบ›เบตเปเบฅเบฐเบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰เบกเบตเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเปƒเบซเบกเปˆเบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบ‚เบญเบ‡เบฅเปเบฒเบ”เบฑเบšเบŠเบฑเป‰เบ™เปเบฅเบฐเบเบฒเบ™เบ‚เบถเป‰เบ™เบเบฑเบš. เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบ›เบฑเบšเป‚เบ„เบ‡เบชเป‰เบฒเบ‡, เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเป„เบ”เป‰เบ–เบทเบเป€เบฎเบฑเบ”เป€เบžเบทเปˆเบญเปเบเบเบ„เปเบฒเบ™เบดเบเบฒเบกเบ›เบฐเป€เบžเบ”เปเบฅเบฐ APIs เบชเปเบฒเบฅเบฑเบšเบฅเบฐเบšเบปเบšเบเปˆเบญเบ kernel เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™.

เปƒเบ™เบšเบฑเบ™เบ”เบฒเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ—เบตเปˆเป€เบฎเบฑเบ”: เบเบฒเบ™เปเบเบเป„เบŸเบฅเปŒ header เบฅเบฐเบ”เบฑเบšเบชเบนเบ‡เบญเบญเบเบˆเบฒเบเบเบฑเบ™เปเบฅเบฐเบเบฑเบ™, เบเปเบฒเบˆเบฑเบ”เบซเบ™เป‰เบฒเบ—เบตเปˆเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเปƒเบ™เป„เบŸเบฅเปŒ header, เปเบเบเป„เบŸเบฅเปŒ header เบชเปเบฒเบฅเบฑเบšเบ›เบฐเป€เบžเบ”เปเบฅเบฐ APIs, เบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบเบฒเบ™เบ›เบฐเบเบญเบšเป„เบŸเบฅเปŒ header เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ (เบ›เบฐเบกเบฒเบ™ 80 เป„เบŸเบฅเปŒเบกเบตเบเบฒเบ™เบญเป‰เบฒเบ‡เบญเบตเบ‡เบ—เบฒเบ‡เบญเป‰เบญเบกเบ—เบตเปˆเปเบŠเบเปเบŠเบ‡เบเบฑเบšเบเบฒเบ™เบŠเบธเบกเบ™เบธเบก, เป€เบ›เบตเบ”เป€เบœเบตเบเบœเปˆเบฒเบ™. เป„เบŸเบฅเปŒ header เบญเบทเปˆเบ™เป†), เบเบฒเบ™เป€เบžเบตเปˆเบกเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบ‚เบญเบ‡เบเบฒเบ™เบ‚เบถเป‰เบ™เบเบฑเบšเป„เบŸเบฅเปŒ โ€œ.hโ€ เปเบฅเบฐ โ€œ.cโ€, เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเป€เบ—เบทเปˆเบญเบฅเบฐเบเป‰เบฒเบงเบ‚เบญเบ‡เป„เบŸเบฅเปŒ header, เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ โ€œCONFIG_KALLSYMS_FAST=yโ€ เป‚เปเบ”, เบเบฒเบ™เบ„เบฑเบ”เป€เบฅเบทเบญเบเบ‚เบญเบ‡เป„เบŸเบฅเปŒ C เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบšเบฅเบฑเบญเบเบ›เบฐเบเบญเบšเป€เบžเบทเปˆเบญ เบซเบผเบธเบ”เบœเปˆเบญเบ™เบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡เป„เบŸเบฅเปŒเบงเบฑเบ”เบ–เบธ.

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ—เบตเปˆเป€เบฎเบฑเบ”เป„เบ”เป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเบซเบผเบธเบ”เบœเปˆเบญเบ™เบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เป„เบŸเบฅเปŒ header เบ—เบตเปˆเบ–เบทเบเบ›เบธเบ‡เปเบ•เปˆเบ‡เบขเบนเปˆเปƒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบซเบฅเบฑเบ‡เบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡เป‚เบ”เบ 1-2 เบ„เปเบฒเบชเบฑเปˆเบ‡เบ‚เบญเบ‡เบ‚เบฐเบซเบ™เบฒเบ”. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš, เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เป„เบŸเบฅเปŒ header "linux/gfp.h" เป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบตเบเบฒเบ™เป€เบžเบตเปˆเบกเบฅเบฐเบซเบฑเบ” 13543 เปเบ–เบงเปเบฅเบฐเบเบฒเบ™เบฅเบงเบกเป€เบญเบปเบฒเป„เบŸเบฅเปŒ header 303 เบ‚เบถเป‰เบ™เบเบฑเบš, เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ‚เบฐเบซเบ™เบฒเบ”เป„เบ”เป‰เบ–เบทเบเบซเบผเบธเบ”เบฅเบปเบ‡เป€เบ›เบฑเบ™ 181 เปเบ–เบงเปเบฅเบฐ 26 เป„เบŸเบฅเปŒเบ—เบตเปˆเบ‚เบถเป‰เบ™เบเบฑเบš. เบซเบผเบทเบ•เบปเบงเบขเปˆเบฒเบ‡เบญเบทเปˆเบ™: เป€เบกเบทเปˆเบญเบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡เป„เบŸเบฅเปŒ "kernel/pid.c" เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™ patch, 94 เบžเบฑเบ™เป€เบชเบฑเป‰เบ™เบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เป„เบ”เป‰เบ–เบทเบเบฅเบงเบกเป€เบ‚เบปเป‰เบฒ, เป€เบŠเบดเปˆเบ‡เบชเปˆเบงเบ™เปƒเบซเบเปˆเบšเปเปˆเป„เบ”เป‰เปƒเบŠเป‰เปƒเบ™ pid.c. เบเบฒเบ™เปเบเบเป„เบŸเบฅเปŒ header เป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเบซเบผเบธเบ”เบœเปˆเบญเบ™เบˆเปเบฒเบ™เบงเบ™เบฅเบฐเบซเบฑเบ”เบ›เบฐเบกเบงเบ™เบœเบปเบ™เบชเบฒเบกเป€เบ—เบทเปˆเบญ, เบซเบผเบธเบ”เบœเปˆเบญเบ™เบˆเปเบฒเบ™เบงเบ™เบชเบฒเบเบ—เบตเปˆเบ›เบธเบ‡เปเบ•เปˆเบ‡เป€เบ›เบฑเบ™ 36 เบžเบฑเบ™.

เป€เบกเบทเปˆเบญ kernel เป„เบ”เป‰เบ–เบทเบเบชเป‰เบฒเบ‡เปƒเบซเบกเปˆเบขเปˆเบฒเบ‡เบชเบปเบกเบšเบนเบ™เบ”เป‰เบงเบเบ„เปเบฒเบชเบฑเปˆเบ‡ "make -j96 vmlinux" เปƒเบ™เบฅเบฐเบšเบปเบšเบเบฒเบ™เบ—เบปเบ”เบชเบญเบš, เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ‚เบญเบ‡ patches เบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เบเบฒเบ™เบซเบผเบธเบ”เบœเปˆเบญเบ™เป€เบงเบฅเบฒเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ‚เบญเบ‡เบชเบฒเบ‚เบฒ v5.16-rc7 เบˆเบฒเบ 231.34 เบซเบฒ 129.97 เบงเบดเบ™เบฒเบ—เบต (เบˆเบฒเบ 15.5 เบซเบฒ 27.7 เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡. เบ•เปเปˆเบŠเบปเปˆเบงเป‚เบกเบ‡), เปเบฅเบฐเบเบฑเบ‡เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ‚เบญเบ‡เบเบฒเบ™เปƒเบŠเป‰ CPU cores เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบ›เบฐเบเบญเบš. เบ”เป‰เบงเบเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ—เบตเปˆเป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™, เบœเบปเบ™เบเบฐเบ—เบปเบšเบ‚เบญเบ‡เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปเบกเปˆเบ™เป€เบซเบฑเบ™เป„เบ”เป‰เบŠเบฑเบ”เป€เบˆเบ™ - เป€เบงเบฅเบฒเบ—เบตเปˆเบˆเบฐเบชเป‰เบฒเบ‡เปƒเบซเบกเปˆ kernel เบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เป„เบŸเบฅเปŒ header เป„เบ”เป‰เบซเบผเบธเบ”เบฅเบปเบ‡เบขเปˆเบฒเบ‡เบซเบผเบงเบ‡เบซเบผเบฒเบ (เบˆเบฒเบ 112% เบซเบฒ 173% เบ‚เบถเป‰เบ™เบเบฑเบšเป„เบŸเบฅเปŒ header เบ—เบตเปˆเบ–เบทเบเบ›เปˆเบฝเบ™เปเบ›เบ‡). เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปเบกเปˆเบ™เบกเบตเบžเบฝเบ‡เปเบ•เปˆเบชเปเบฒเบฅเบฑเบš ARM64, MIPS, Sparc เปเบฅเบฐ x86 (32- เปเบฅเบฐ 64-bit) เบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐ.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: opennet.ru

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™