Git Product home page Git Product logo

kernel_gcc_patch's Introduction

Kernel_gcc_patch

This kernel patch adds additional CPU options to the Linux kernel accessible under:

 Processor type and features  --->
 Processor family --->

Why a specific patch?

The kernel uses its own set of CFLAGS, KCFLAGS. For example, see:

Expanded CPUs include

CPU Family GCC Optimization
Native optimizations autodetected by GCC -march=native
AMD Improved K8-family -march=k8-sse3
AMD K10-family -march=amdfam10
AMD Family 10h (Barcelona) -march=barcelona
AMD Family 14h (Bobcat) -march=btver1
AMD Family 16h (Jaguar) -march=btver2
AMD Family 15h (Bulldozer) -march=bdver1
AMD Family 15h (Piledriver) -march=bdver2
AMD Family 15h (Steamroller) -march=bdver3
AMD Family 15h (Excavator) -march=bdver4
AMD Family 17h (Zen) -march=znver1
AMD Family 17h (Zen 2) -march=znver2
Intel Bonnell family of low-power Atom processors -march=bonnell
Intel Silvermont family of low-power Atom processors -march=silvermont
Intel Goldmont family of low-power Atom processors (Apollo Lake and Denverton) -march=goldmont
Intel Goldmont Plus family of low-power Atom processors (Gemini Lake) -march=goldmont-plus
Intel 1st Gen Core i3/i5/i7-family (Nehalem) -march=nehalem
Intel 1.5 Gen Core i3/i5/i7-family (Westmere) -march=westmere
Intel 2nd Gen Core i3/i5/i7-family (Sandybridge) -march=sandybridge
Intel 3rd Gen Core i3/i5/i7-family (Ivybridge) -march=ivybridge
Intel 4th Gen Core i3/i5/i7-family (Haswell) -march=haswell
Intel 5th Gen Core i3/i5/i7-family (Broadwell) -march=broadwell
Intel 6th Gen Core i3/i5/i7-family (Skylake) -march=skylake
Intel 6th Gen Core i7/i9-family (Skylake X) -march=skylake-avx512
Intel 8th Gen Core i3/i5/i7-family (Cannon Lake) -march=cannonlake
Intel 10th Gen Core i7/i9-family (Ice Lake) -march=icelake-client
Intel Xeon (Cascade Lake) -march=cascadelake

Benchmarks

Intro

Three different machines running a generic x86-64 kernel and an otherwise identical kernel running with the optimized gcc options were tested using a make based endpoint.

Conclusion

There are small but real speed increases to running with this patch as judged by a make endpoint. The increases are on par with the speed increase that the upstream sanctioned core2 option gives users, so not including additional options seems somewhat arbitrary to me.

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.
    • X3360 = core2
    • i7-2620M = sandybridge
    • i7-3660K = ivybridge
  3. Results were analyzed 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:

CPU Difference in median value
core2 +87.5 ms
sandybridge +79.7 ms
ivybridge +257.2 ms

References

Credit

Legacy support

Find support for older version of the linux kernel and of gcc in the outdated_versions directory.

Data

Sandybridge vs. Generic

2620_m

Ivybridge vs. Generic

3770_k

Core2 vs. Generic

x3360

kernel_gcc_patch's People

Contributors

bircoph avatar bryant1410 avatar dougvj avatar emcek avatar ferroin avatar graysky2 avatar sirlucjan avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.