ಲಿನಕ್ಸ್ ಕರ್ನಲ್‌ನ ನಿರ್ಮಾಣವನ್ನು 50-80% ರಷ್ಟು ವೇಗಗೊಳಿಸುವ ಪ್ಯಾಚ್‌ಗಳ ಗುಂಪನ್ನು ಪ್ರಕಟಿಸಲಾಗಿದೆ

Ingo Molnar, ಒಬ್ಬ ಸುಪ್ರಸಿದ್ಧ ಲಿನಕ್ಸ್ ಕರ್ನಲ್ ಡೆವಲಪರ್ ಮತ್ತು 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 ಸಾವಿರಕ್ಕೆ ಕಡಿಮೆ ಮಾಡುತ್ತದೆ.

ಪರೀಕ್ಷಾ ವ್ಯವಸ್ಥೆಯಲ್ಲಿ "make -j96 vmlinux" ಆಜ್ಞೆಯೊಂದಿಗೆ ಕರ್ನಲ್ ಅನ್ನು ಸಂಪೂರ್ಣವಾಗಿ ಮರುನಿರ್ಮಿಸಿದಾಗ, ಪ್ಯಾಚ್‌ಗಳ ಅಪ್ಲಿಕೇಶನ್ v5.16-rc7 ಶಾಖೆಯ ನಿರ್ಮಾಣ ಸಮಯವನ್ನು 231.34 ರಿಂದ 129.97 ಸೆಕೆಂಡುಗಳವರೆಗೆ (15.5 ರಿಂದ 27.7 ಬಿಲ್ಡ್‌ಗಳಿಗೆ ಕಡಿಮೆಗೊಳಿಸಿತು. ಪ್ರತಿ ಗಂಟೆಗೆ), ಮತ್ತು ಅಸೆಂಬ್ಲಿಗಳ ಸಮಯದಲ್ಲಿ CPU ಕೋರ್‌ಗಳನ್ನು ಬಳಸುವ ದಕ್ಷತೆಯನ್ನು ಹೆಚ್ಚಿಸಿತು. ಹೆಚ್ಚುತ್ತಿರುವ ನಿರ್ಮಾಣದೊಂದಿಗೆ, ಆಪ್ಟಿಮೈಸೇಶನ್‌ನ ಪರಿಣಾಮವು ಹೆಚ್ಚು ಗಮನಾರ್ಹವಾಗಿದೆ - ಹೆಡರ್ ಫೈಲ್‌ಗಳಿಗೆ ಬದಲಾವಣೆಗಳನ್ನು ಮಾಡಿದ ನಂತರ ಕರ್ನಲ್ ಅನ್ನು ಮರು-ನಿರ್ಮಾಣ ಮಾಡುವ ಸಮಯವು ಗಮನಾರ್ಹವಾಗಿ ಕಡಿಮೆಯಾಗಿದೆ (ಹೆಡರ್ ಫೈಲ್ ಅನ್ನು ಬದಲಾಯಿಸುವ ಆಧಾರದ ಮೇಲೆ 112% ರಿಂದ 173% ವರೆಗೆ). ಆಪ್ಟಿಮೈಸೇಶನ್‌ಗಳು ಪ್ರಸ್ತುತ ARM64, MIPS, Sparc ಮತ್ತು x86 (32- ಮತ್ತು 64-bit) ಆರ್ಕಿಟೆಕ್ಚರ್‌ಗಳಿಗೆ ಮಾತ್ರ ಲಭ್ಯವಿವೆ.

ಮೂಲ: opennet.ru

ಕಾಮೆಂಟ್ ಅನ್ನು ಸೇರಿಸಿ