You are not logged in.

#1 2012-12-08 16:35:11

graysky
Wiki Maintainer
From: :wq
Registered: 2008-12-01
Posts: 10,597
Website

Kernel patch for more CPU families offers measurable speed increases

I wanted to show folks a pretty nice patch that allows one more options when compiling a kernel for CPU families.  Complete list included at the bottom of this post.  I tested it using three different x86_64 machines running a generic x86-64 kernel and an otherwise identical kernel running with the optimized gcc options.

Conclusion: There are small but real speed increases using a make endpoint to building with this patch.

Details:
1) Three test machines: Intel Xeon X3360, Intel i7-2620M, Intel Core i7-3660K.
2) All ran the make benchmark (linked below) 35 times while booted into a 'generic' kernel. Then all ran the same make benchmark 35 times after booting into an optimized kernel. Below are the optimizations chosen for each machine.
2a) X3360 = core2
2b) i7-2620M = corei7-avx
2c) i7-3660K = core-avx-i
3) Analyzed resulting distributions for statistical significance via ANOVA plots that clearly show statistically significant albeit small differences.

Discussion
1) All the assumptions for ANOVA are met:
*Data are normally distributed as show in the normal quantile plots.
*The population variances are fairly equal (Levene and Barlett tests).

2) The ANOVA plots clearly show significance.
*Pair-wise analysis by Tukey-Kramer shows significance at the 0.05 level for all CPUs compared.
Below are the differences in median values:

core2       +87.5 ms
corei7-avx  +79.7 ms
core-avx-i  +257.2 ms

References:
Kernel patch: https://github.com/graysky2/kernel_gcc_patch
Bash script that controls the benchmark: https://github.com/graysky2/bin/blob/master/bench
Log file generated by script: http://repo-ck.com/bench/compile_time_o … ion.txt.gz

Links to ANOVA plots:
Sandybridge vs generic:
39409974-d2d88a40-4bbd-11e8-9375-ce3aba6113dc.png

Ivybridge vs generic:
39409975-d2e90280-4bbd-11e8-9835-8a005933dcfc.png

Core2 vs generic:
39409976-d2fa28ee-4bbd-11e8-957a-ff46ba6f4ffa.png

Complete list of x86_64 CPU Families:
1. AMD Opteron/Athlon64/Hammer/K8 (MK8)
2. AMD 61xx/7x50/PhenomX3/X4/II/K10 (MAMDFAM10) (NEW)
3. AMD Barcelona (MBARCELONA) (NEW)
4. AMD Bobcat (MBOBCAT) (NEW)
5. AMD Bulldozer (MBULLDOZER) (NEW)
6. AMD Piledriver (MPILEDRIVER) (NEW)
7. Intel P4 / older Netburst based Xeon (MPSC)
8. Intel Core 2 (MCORE2)
9. Intel Core i7 (MCOREI7) (NEW)
11. Intel Core 2nd Gen AVX (MCOREI7AVX) (NEW)
12. Intel Core 3rd Gen AVX (MCOREAVXI) (NEW)
13. Intel Core AVX-2 (MCOREAVX2) (NEW)
14. Intel Atom (MATOM)
15. Generic-x86-64 (GENERIC_CPU)

Complete list of i686 CPU Families:
1. 386 (M386)
2. 486 (M486)
3. 586/K5/5x86/6x86/6x86MX (M586)
4. Pentium-Classic (M586TSC)
5. Pentium-MMX (M586MMX)
6. Pentium-Pro (M686)
7. Pentium-II/Celeron(pre-Coppermine) (MPENTIUMII)
8. Pentium-III/Celeron(Coppermine)/Pentium-III Xeon (MPENTIUMIII)
9. Pentium M (MPENTIUMM)
10. Pentium-4/Celeron(P4-based)/Pentium-4 M/older Xeon (MPENTIUM4)
11. AMD K6/K6-II/K6-III (MK6)
12. AMD Athlon/Duron/K7 (MK7)
13. AMD Opteron/Athlon64/Hammer/K8 (MK8)
14. AMD 61xx/7x50/PhenomX3/X4/II/K10 (MAMDFAM10) (NEW)
15. AMD Barcelona (MBARCELONA) (NEW)
16. AMD Bobcat (MBOBCAT) (NEW)
17. AMD Bulldozer (MBULLDOZER) (NEW)
18. AMD Piledriver (MPILEDRIVER) (NEW)
19. Crusoe (MCRUSOE)
20. Efficeon (MEFFICEON)
21. Winchip-C6 (MWINCHIPC6)
22. Winchip-2/Winchip-2A/Winchip-3 (MWINCHIP3D)
23. AMD Elan (MELAN)
24. GeodeGX1 (MGEODEGX1)
25. Geode GX/LX (MGEODE_LX)
26. CyrixIII/VIA-C3 (MCYRIXIII)
27. VIA C3-2 (Nehemiah) (MVIAC3_2)
28. VIA C7 (MVIAC7)
29. Intel Core 2 (MCORE2)
30. Intel Core i7 (MCOREI7) (NEW)
31. Intel Core 2nd Gen AVX (MCOREI7AVX) (NEW)
32. Intel Core 3rd Gen AVX (MCOREAVXI) (NEW)
33. Intel Core AVX-2 (MCOREAVX2) (NEW)
34. Intel Atom (MATOM)

Last edited by graysky (2019-09-04 11:19:30)


CPU-optimized Linux-ck packages @ Repo-ck  • AUR packagesZsh and other configs

Offline

Board footer

Powered by FluxBB