SlideShare a Scribd company logo
How to choose a kernel to ship with a product
Willy Tarreau
HAProxy Technologies
Kernel Recipes 2015
Outline
● Target
– People who don’t use distro kernels
– People who run their own distros
– People who don’t know they’re currently at risk
● Identify your needs
● What not to do
● Remaining options
● How to improve your situation
Background
Past and present activities
● First kernel patch around 1995 on kernel 1.2.13
● Maintainer of very old kernels (2.4, 2.6.32, ...)
● Been shipping remotely managed gateways at
Exosec from 2002 to 2008
● Been shipping HAProxy load balancers since
2006
Challenges
=> Maintain systems up to date WRT bugs/vulns:
● Gateways: operate remotely without local help
● LBs: avoid regressions casting a bad image of
the product and company in general
What absolutely needs updates ?
Few critical components on a system :
“The ones allowing you to fix a bug and then to
fix the failed attempt to fix this bug”
In short (YMMV) :
● Kernel
● Libc
● sshd
Not all of them in fact
● Libc very rarely needs to be updated in a
product's life
● Most products don't depend on SSHd, pick the
last one and you're OK.
Kernel is special
The kernel :
● provides drivers for your device
● provides drivers for other obscure devices
● provides various network protocols
● provides all the security layers
=> suffers orders of magnitude more bugs than
any other component found in such an appliance.
Kernel is sensitive!
A missed kernel upgrade in field can lead to :
● System malfunction / instability / outages
● Data corruption / data loss
● Local and remote DoS
● Local root
=> angry customers, bad image, loss of time
and money
Kernel is too sensitive!
In case of bad or failed upgrade in field :
● Have to drive there (managed gateways)
● angry customer + RMA (LBs)
=> Common question :
“should I risk an upgrade or risk a bug?”
No such thing as validation in lab
The Linux kernel is a monster project.
● Current size around 19.5M lines
● Linux 4.2 added around 1M lines of code (5%)
=> Nobody can verify there's no regression.
At best we can be certain that there are regs...
...and you don't want them in your product!
More numbers
Kernel 2.6.32 was released on 2009/12. Patches
merged from 2009/12 to 2012/05 :
3325
Patches merged from 2012/05 to 2015/09 :
724
Uncertain fixes dropped since 2012/05 :
~3000
=> The kernel is a living thing !
Facing a difficult choice
● How long will the product live ?
● What initial level of stability is expected ?
● Does the product accept hardware extensions in field ?
● Will it be possible to update in field ?
● Will the customers see what is running ?
● Will the customers expect updates ?
● Is downtime affordable ?
● Are security issues really a problem ?
Stick to what works
● Don't change a kernel branch in the middle of a
product's life cycle if breakage is not an option.
● Backport the fixes you need only.
● Stable kernels are made for you.
=> OK but which one ?
How the kernel quality evolves
● All fixes are first merged into mainline before -stable
● -stable lasts 2-3 months, + about 2 years for LTS.
● Typos / thinkos are found after a few days / weeks
=> they will be fixed in -stable
● More subtle bugs can take months/years to be detected
=> only LTS will have a chance to fix them
● Architectural shortcomings require massive rework
=> only a version upgrade will bring them
First corollary on kernel quality
Claim: Unmaintained EOLed kernels contain a
lot of subtle bugs that are hard to detect.
You don't believe me ? OK, let's see :
First corollary on kernel quality
Claim: Unmaintained EOLed kernels contain a
lot of subtle bugs that are hard to detect.
You don't believe me ? OK, let's see :
First corollary on kernel quality
Claim: Unmaintained EOLed kernels contain a
lot of subtle bugs that are hard to detect.
You don't believe me ? OK, let's see :
Immediate conclusion
If you really need them, help with
their maintenance and try to get your
work supported by more recent ones.
NEVER EVER USE EOLed KERNELS!!!
So what should you do ?
● Pick a kernel that lasts at least as long as your
product's life (or major version's life)
● Degree of confidence should match your
customers' expectations (ADSL router, load
balancer, file server, power plant controller, …)
● Backport missing features (arbitration needed)
● But avoid backporting infrastructure changes!
You're not alone!
● All distro vendors and product vendors are in the
same boat.
● Use your distro's kernel if it matches your needs,
it's free.
● Otherwise join forces to maintain a specific kernel
for as long as you need.
=> But please, oh please, avoid needless effort
duplication caused by adding more LTS versions.
How to participate
● Upstream your local fixes and improvements
(but not your local crap, thank you)
● Test stable kernels and report good/bad status
● Scrutinize changelogs to check for failed
backports
● Maintain, publish, and advertise a stable
branch if not possible otherwise
Don't maintain your own kernel!
Out-of-tree patches = pain. Need to rebase, apply at the wrong
place, etc... Sometimes patches are bogus.
Speaker's experience :
●
Got bored with local patches in Feb 2005 (pre-Git era), started the
public “hotfix” tree for 2.4 kernels (2.4.29+)
●
Most of them were adopted by maintainer Marcelo Tosatti
●
People started to use them, proposing more fixes, sending
feedback about some of them being wrong or not working as
expected, leading to newer versions
●
Eventually all of them got merged or had an equivalent fix.
=> first “stable” tree without this name :-)
Don't maintain your own kernel(2)
●
Been shipping 2.4 in our products till 2011 (EOS 2013)
=> Very stable, but amount of efforts was becoming too high to
support new hardware (x86_64) and features (IPv6)
●
Moved to 2.6.27 and dropped many patches
●
Then 2.6.32, dropped more patches, and replaced some
=> met a handful of bugs that were already fixed upstream
●
And then 3.10 and dropped more patches
=> one regression caused by a local patch after a -stable update.
●
Now 3.14 and kept very few patches
=> less out-of-tree patches = less work and less bugs
4 types of stable kernels now
Quest for kernel quality has led to 4 types of stable kernels :
● Official kernel.org stable kernels by Greg KH, started with 2.6.11 by
Greg&Chris.
● Official kernel.org LTS kernels by Greg, started with 2.6.27 and initial
attempts with 2.6.20, 2.6.22, and 2.6.25.
● Extended LTS kernels maintained by individuals after Greg, started
with 2.6.16 by Adrian, replicated with 2.6.20, 2.6.27, 2.6.32, 2.6.34,
2.6.35, 3.4.
● Kernels picked by distro maintainers : 3.2, 3.12, 3.18
=> 8-9 stable branches in parallel now including 7 LTS
See https://kernel.org/category/releases
How to choose ?
● 7 LTS are a lot, but they offer a lot of choice.
● Do they all evolve at the same speed ?
● Are they all maintained similarly ?
● Let's see...
How 2.6 kernels evolved
How 3.x/4.x kernels evolve
Different release pacing
Analysis
● Greg's kernels are very regular, about 1 version
per week.
● Distro kernels merge more patches but space
their releases more over time.
● Maybe distros backport more features for their
users that are less of interest for your products.
=> don't be fooled by numbers, focus only on
the kernel areas relevant to your product
Patches per area of interest
The ALOHA Load balancer is mostly intested in
kernel, mm, ipc, lib, net, drivers/net, arch/x86 :
=> 3.x are pretty much all the same finally...
… but look closer!
LTS quickly stabilizes
=> 3/4 of fixes Greg takes are merged in the
first 15 months!
Try to limit the effort
●
newer kernel = less work but more care and risks
●
older kernel = less risks but more work
●
3/4 of patches in 15 months is very appealing, that leaves one year
of free maintenance for LTS kernels after we start shipping.
●
Our products ship a new major version every year, with 3 years of
support
=> 2 years of maintenance left for us.
●
3.2 and 3.4 would have saved one extra year, but we needed more
recent features.
=> We picked 3.10 in 2014, updated to 3.14 in 2015, maybe 4.1 in
2016.
Don't pick too old kernels
Very old kernels are not the cheapest ones to maintain :
● Standard fixes get painful after 2 years
● Security fixes are very hard to backport (doc replaced
some fixes in 2.4)
● Developers are not much willing to help when kernels are
too old
● Less reviewers and testers for each new release
=> regressions start to increase again past some
point (eg: 2.6.32)
Distro kernels getting really good
● Less frequent but maintained longer (4-5 years)
● Strong experience within these teams
● Most are now part of the official kernel.org trees.
=> Definitely a good choice when compatible
One regret: too bad they don't stick to the regular LTS
versions and share maintenance efforts. Debian's kernel team
has been very helpful on 2.6.32, they could have picked 3.4
instead of 3.2 and avoid duplicating efforts. Same regarding
3.16.
Post-shipping: be careful
● Always review kernel changelogs
Hint: look at -stable only, and it's linear!
● Don't upgrade if there's nothing for you, especially in
July-August!
● Very rare -stable regs but happen once in a while and can
also be caused by your own patches
● Test. Your code could rely on a bug that was recently fixed!
● Report anything suspicious as soon as possible while it's
still fresh in developers' mind.
Plan for next major upgrade
● Try to identify what next version you'll have to
upgrade to
● Try to identify if someone is willing to maintain it
for you or does another one you're fine with.
● Start to run it on your laptops then servers long
before you ship it. One more reason for distro
kernels!
● Test as often as possible and report breakage
That's all folks!
Thanks!
Questions / Comments / Jokes ?
Contact: Willy Tarreau <willy@haproxy.com>
HAProxy is hiring talented people. Contact us!

More Related Content

What's hot

Kernel Recipes 2016 - Kernel documentation: what we have and where it’s going
Kernel Recipes 2016 - Kernel documentation: what we have and where it’s goingKernel Recipes 2016 - Kernel documentation: what we have and where it’s going
Kernel Recipes 2016 - Kernel documentation: what we have and where it’s going
Anne Nicolas
 
Automotive Grade Linux and systemd
Automotive Grade Linux and systemdAutomotive Grade Linux and systemd
Automotive Grade Linux and systemd
Alison Chaiken
 
從u-boot 移植 NDS32 談 嵌入式系統開放原始碼開發的 一些經驗
從u-boot 移植 NDS32 談 嵌入式系統開放原始碼開發的 一些經驗從u-boot 移植 NDS32 談 嵌入式系統開放原始碼開發的 一些經驗
從u-boot 移植 NDS32 談 嵌入式系統開放原始碼開發的 一些經驗Macpaul Lin
 
Systemd cheatsheet
Systemd cheatsheetSystemd cheatsheet
Systemd cheatsheet
Susant Sahani
 
NetBSD and Linux for Embedded Systems
NetBSD and Linux for Embedded SystemsNetBSD and Linux for Embedded Systems
NetBSD and Linux for Embedded Systems
Mahendra M
 
How Linux Processes Your Network Packet - Elazar Leibovich
How Linux Processes Your Network Packet - Elazar LeibovichHow Linux Processes Your Network Packet - Elazar Leibovich
How Linux Processes Your Network Packet - Elazar Leibovich
DevOpsDays Tel Aviv
 
Kernel maintainance in Linux distributions: Debian
Kernel maintainance in Linux distributions: DebianKernel maintainance in Linux distributions: Debian
Kernel maintainance in Linux distributions: DebianAnne Nicolas
 
淺談 Live patching technology
淺談 Live patching technology淺談 Live patching technology
淺談 Live patching technology
SZ Lin
 
Kernel Recipes 2019 - Kernel documentation: past, present, and future
Kernel Recipes 2019 - Kernel documentation: past, present, and futureKernel Recipes 2019 - Kernel documentation: past, present, and future
Kernel Recipes 2019 - Kernel documentation: past, present, and future
Anne Nicolas
 
OpenWrt From Top to Bottom
OpenWrt From Top to BottomOpenWrt From Top to Bottom
OpenWrt From Top to Bottom
Kernel TLV
 
OffensiveCon2022: Case Studies of Fuzzing with Xen
OffensiveCon2022: Case Studies of Fuzzing with XenOffensiveCon2022: Case Studies of Fuzzing with Xen
OffensiveCon2022: Case Studies of Fuzzing with Xen
Tamas K Lengyel
 
Maintenance des branches stables du noyau
Maintenance des branches stables du noyauMaintenance des branches stables du noyau
Maintenance des branches stables du noyau
Anne Nicolas
 
Your first dive into systemd!
Your first dive into systemd!Your first dive into systemd!
Your first dive into systemd!Etsuji Nakai
 
Virtunoid: Breaking out of KVM
Virtunoid: Breaking out of KVMVirtunoid: Breaking out of KVM
Virtunoid: Breaking out of KVM
Nelson Elhage
 
Fast boot
Fast bootFast boot
Fast boot
SZ Lin
 
App container rkt
App container rktApp container rkt
App container rkt
Xiaofeng Guo
 
Seven problems of Linux Containers
Seven problems of Linux ContainersSeven problems of Linux Containers
Seven problems of Linux Containers
Kirill Kolyshkin
 
A Reimplementation of NetBSD Based on a Microkernel by Andrew S. Tanenbaum
A Reimplementation of NetBSD Based on a Microkernel by Andrew S. TanenbaumA Reimplementation of NetBSD Based on a Microkernel by Andrew S. Tanenbaum
A Reimplementation of NetBSD Based on a Microkernel by Andrew S. Tanenbaum
eurobsdcon
 
Realizing Linux Containers (LXC)
Realizing Linux Containers (LXC)Realizing Linux Containers (LXC)
Realizing Linux Containers (LXC)
Boden Russell
 
Linux containers – next gen virtualization for cloud (atl summit) ar4 3 - copy
Linux containers – next gen virtualization for cloud (atl summit) ar4 3 - copyLinux containers – next gen virtualization for cloud (atl summit) ar4 3 - copy
Linux containers – next gen virtualization for cloud (atl summit) ar4 3 - copy
Boden Russell
 

What's hot (20)

Kernel Recipes 2016 - Kernel documentation: what we have and where it’s going
Kernel Recipes 2016 - Kernel documentation: what we have and where it’s goingKernel Recipes 2016 - Kernel documentation: what we have and where it’s going
Kernel Recipes 2016 - Kernel documentation: what we have and where it’s going
 
Automotive Grade Linux and systemd
Automotive Grade Linux and systemdAutomotive Grade Linux and systemd
Automotive Grade Linux and systemd
 
從u-boot 移植 NDS32 談 嵌入式系統開放原始碼開發的 一些經驗
從u-boot 移植 NDS32 談 嵌入式系統開放原始碼開發的 一些經驗從u-boot 移植 NDS32 談 嵌入式系統開放原始碼開發的 一些經驗
從u-boot 移植 NDS32 談 嵌入式系統開放原始碼開發的 一些經驗
 
Systemd cheatsheet
Systemd cheatsheetSystemd cheatsheet
Systemd cheatsheet
 
NetBSD and Linux for Embedded Systems
NetBSD and Linux for Embedded SystemsNetBSD and Linux for Embedded Systems
NetBSD and Linux for Embedded Systems
 
How Linux Processes Your Network Packet - Elazar Leibovich
How Linux Processes Your Network Packet - Elazar LeibovichHow Linux Processes Your Network Packet - Elazar Leibovich
How Linux Processes Your Network Packet - Elazar Leibovich
 
Kernel maintainance in Linux distributions: Debian
Kernel maintainance in Linux distributions: DebianKernel maintainance in Linux distributions: Debian
Kernel maintainance in Linux distributions: Debian
 
淺談 Live patching technology
淺談 Live patching technology淺談 Live patching technology
淺談 Live patching technology
 
Kernel Recipes 2019 - Kernel documentation: past, present, and future
Kernel Recipes 2019 - Kernel documentation: past, present, and futureKernel Recipes 2019 - Kernel documentation: past, present, and future
Kernel Recipes 2019 - Kernel documentation: past, present, and future
 
OpenWrt From Top to Bottom
OpenWrt From Top to BottomOpenWrt From Top to Bottom
OpenWrt From Top to Bottom
 
OffensiveCon2022: Case Studies of Fuzzing with Xen
OffensiveCon2022: Case Studies of Fuzzing with XenOffensiveCon2022: Case Studies of Fuzzing with Xen
OffensiveCon2022: Case Studies of Fuzzing with Xen
 
Maintenance des branches stables du noyau
Maintenance des branches stables du noyauMaintenance des branches stables du noyau
Maintenance des branches stables du noyau
 
Your first dive into systemd!
Your first dive into systemd!Your first dive into systemd!
Your first dive into systemd!
 
Virtunoid: Breaking out of KVM
Virtunoid: Breaking out of KVMVirtunoid: Breaking out of KVM
Virtunoid: Breaking out of KVM
 
Fast boot
Fast bootFast boot
Fast boot
 
App container rkt
App container rktApp container rkt
App container rkt
 
Seven problems of Linux Containers
Seven problems of Linux ContainersSeven problems of Linux Containers
Seven problems of Linux Containers
 
A Reimplementation of NetBSD Based on a Microkernel by Andrew S. Tanenbaum
A Reimplementation of NetBSD Based on a Microkernel by Andrew S. TanenbaumA Reimplementation of NetBSD Based on a Microkernel by Andrew S. Tanenbaum
A Reimplementation of NetBSD Based on a Microkernel by Andrew S. Tanenbaum
 
Realizing Linux Containers (LXC)
Realizing Linux Containers (LXC)Realizing Linux Containers (LXC)
Realizing Linux Containers (LXC)
 
Linux containers – next gen virtualization for cloud (atl summit) ar4 3 - copy
Linux containers – next gen virtualization for cloud (atl summit) ar4 3 - copyLinux containers – next gen virtualization for cloud (atl summit) ar4 3 - copy
Linux containers – next gen virtualization for cloud (atl summit) ar4 3 - copy
 

Similar to Kernel Recipes 2015: How to choose a kernel to ship with a product

LCA13: Upstreaming 101
LCA13: Upstreaming 101LCA13: Upstreaming 101
LCA13: Upstreaming 101
Linaro
 
Upstreaming 1013
Upstreaming 1013Upstreaming 1013
Upstreaming 1013
Linaro
 
LCE12: Intro Training: Upstreaming 101
LCE12: Intro Training: Upstreaming 101LCE12: Intro Training: Upstreaming 101
LCE12: Intro Training: Upstreaming 101
Linaro
 
It’s 2021. Why are we -still- rebooting for patches? A look at Live Patching.
It’s 2021. Why are we -still- rebooting for patches? A look at Live Patching.It’s 2021. Why are we -still- rebooting for patches? A look at Live Patching.
It’s 2021. Why are we -still- rebooting for patches? A look at Live Patching.
All Things Open
 
ELC-E 2016 Neil Armstrong - No, it's never too late to upstream your legacy l...
ELC-E 2016 Neil Armstrong - No, it's never too late to upstream your legacy l...ELC-E 2016 Neil Armstrong - No, it's never too late to upstream your legacy l...
ELC-E 2016 Neil Armstrong - No, it's never too late to upstream your legacy l...
Neil Armstrong
 
What is the merge window?
What is the merge window?What is the merge window?
What is the merge window?
Macpaul Lin
 
LAS16-209: Finished and Upcoming Projects in LMG
LAS16-209: Finished and Upcoming Projects in LMGLAS16-209: Finished and Upcoming Projects in LMG
LAS16-209: Finished and Upcoming Projects in LMG
Linaro
 
DevOps Days Vancouver 2014 Slides
DevOps Days Vancouver 2014 SlidesDevOps Days Vancouver 2014 Slides
DevOps Days Vancouver 2014 Slides
Alex Cruise
 
Linuxcon​ 2013
Linuxcon​ 2013Linuxcon​ 2013
Linuxcon​ 2013
Sirinart Khongyadee
 
Kernel Recipes 2017 - Linux Kernel Release Model - Greg KH
Kernel Recipes 2017 - Linux Kernel Release Model - Greg KHKernel Recipes 2017 - Linux Kernel Release Model - Greg KH
Kernel Recipes 2017 - Linux Kernel Release Model - Greg KH
Anne Nicolas
 
The end of embedded Linux (as we know it)
The end of embedded Linux (as we know it)The end of embedded Linux (as we know it)
The end of embedded Linux (as we know it)
Chris Simmonds
 
Thinking inside the box (shared)
Thinking inside the box (shared)Thinking inside the box (shared)
Thinking inside the box (shared)
Joe Brockmeier
 
Release This! - Tools for a Smooth Release Cycle
Release This! - Tools for a Smooth Release CycleRelease This! - Tools for a Smooth Release Cycle
Release This! - Tools for a Smooth Release Cycle
Perforce
 
Ignite Devops Fast Moving Software
Ignite Devops Fast Moving SoftwareIgnite Devops Fast Moving Software
Ignite Devops Fast Moving Software
SpamapS
 
Select, manage, and backport the long term stable kernels
Select, manage, and backport the long term stable kernelsSelect, manage, and backport the long term stable kernels
Select, manage, and backport the long term stable kernels
SZ Lin
 
Tips for Installing Cognos Analytics 11.2.1x
Tips for Installing Cognos Analytics 11.2.1xTips for Installing Cognos Analytics 11.2.1x
Tips for Installing Cognos Analytics 11.2.1x
Senturus
 
Repositories as Code
Repositories as CodeRepositories as Code
Repositories as Code
Kris Buytaert
 
Linux field-update-2015
Linux field-update-2015Linux field-update-2015
Linux field-update-2015Chris Simmonds
 
Updating Neos – Why, When and How - 2024 edition
Updating Neos – Why, When and How - 2024 editionUpdating Neos – Why, When and How - 2024 edition
Updating Neos – Why, When and How - 2024 edition
Karsten Dambekalns
 

Similar to Kernel Recipes 2015: How to choose a kernel to ship with a product (20)

LCA13: Upstreaming 101
LCA13: Upstreaming 101LCA13: Upstreaming 101
LCA13: Upstreaming 101
 
Upstreaming 1013
Upstreaming 1013Upstreaming 1013
Upstreaming 1013
 
LCE12: Intro Training: Upstreaming 101
LCE12: Intro Training: Upstreaming 101LCE12: Intro Training: Upstreaming 101
LCE12: Intro Training: Upstreaming 101
 
It’s 2021. Why are we -still- rebooting for patches? A look at Live Patching.
It’s 2021. Why are we -still- rebooting for patches? A look at Live Patching.It’s 2021. Why are we -still- rebooting for patches? A look at Live Patching.
It’s 2021. Why are we -still- rebooting for patches? A look at Live Patching.
 
ELC-E 2016 Neil Armstrong - No, it's never too late to upstream your legacy l...
ELC-E 2016 Neil Armstrong - No, it's never too late to upstream your legacy l...ELC-E 2016 Neil Armstrong - No, it's never too late to upstream your legacy l...
ELC-E 2016 Neil Armstrong - No, it's never too late to upstream your legacy l...
 
What is the merge window?
What is the merge window?What is the merge window?
What is the merge window?
 
LAS16-209: Finished and Upcoming Projects in LMG
LAS16-209: Finished and Upcoming Projects in LMGLAS16-209: Finished and Upcoming Projects in LMG
LAS16-209: Finished and Upcoming Projects in LMG
 
DevOps Days Vancouver 2014 Slides
DevOps Days Vancouver 2014 SlidesDevOps Days Vancouver 2014 Slides
DevOps Days Vancouver 2014 Slides
 
Linuxcon​ 2013
Linuxcon​ 2013Linuxcon​ 2013
Linuxcon​ 2013
 
Kernel Recipes 2017 - Linux Kernel Release Model - Greg KH
Kernel Recipes 2017 - Linux Kernel Release Model - Greg KHKernel Recipes 2017 - Linux Kernel Release Model - Greg KH
Kernel Recipes 2017 - Linux Kernel Release Model - Greg KH
 
The end of embedded Linux (as we know it)
The end of embedded Linux (as we know it)The end of embedded Linux (as we know it)
The end of embedded Linux (as we know it)
 
Thinking inside the box (shared)
Thinking inside the box (shared)Thinking inside the box (shared)
Thinking inside the box (shared)
 
Release This! - Tools for a Smooth Release Cycle
Release This! - Tools for a Smooth Release CycleRelease This! - Tools for a Smooth Release Cycle
Release This! - Tools for a Smooth Release Cycle
 
Ignite Devops Fast Moving Software
Ignite Devops Fast Moving SoftwareIgnite Devops Fast Moving Software
Ignite Devops Fast Moving Software
 
2 b 2-hatta
2 b 2-hatta2 b 2-hatta
2 b 2-hatta
 
Select, manage, and backport the long term stable kernels
Select, manage, and backport the long term stable kernelsSelect, manage, and backport the long term stable kernels
Select, manage, and backport the long term stable kernels
 
Tips for Installing Cognos Analytics 11.2.1x
Tips for Installing Cognos Analytics 11.2.1xTips for Installing Cognos Analytics 11.2.1x
Tips for Installing Cognos Analytics 11.2.1x
 
Repositories as Code
Repositories as CodeRepositories as Code
Repositories as Code
 
Linux field-update-2015
Linux field-update-2015Linux field-update-2015
Linux field-update-2015
 
Updating Neos – Why, When and How - 2024 edition
Updating Neos – Why, When and How - 2024 editionUpdating Neos – Why, When and How - 2024 edition
Updating Neos – Why, When and How - 2024 edition
 

More from Anne Nicolas

Kernel Recipes 2019 - Driving the industry toward upstream first
Kernel Recipes 2019 - Driving the industry toward upstream firstKernel Recipes 2019 - Driving the industry toward upstream first
Kernel Recipes 2019 - Driving the industry toward upstream first
Anne Nicolas
 
Kernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMI
Kernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMIKernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMI
Kernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMI
Anne Nicolas
 
Kernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernel
Kernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernelKernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernel
Kernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernel
Anne Nicolas
 
Kernel Recipes 2019 - Metrics are money
Kernel Recipes 2019 - Metrics are moneyKernel Recipes 2019 - Metrics are money
Kernel Recipes 2019 - Metrics are money
Anne Nicolas
 
Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...
Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...
Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...
Anne Nicolas
 
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary data
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary dataKernel Recipes 2019 - GNU poke, an extensible editor for structured binary data
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary data
Anne Nicolas
 
Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...
Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...
Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...
Anne Nicolas
 
Embedded Recipes 2019 - Remote update adventures with RAUC, Yocto and Barebox
Embedded Recipes 2019 - Remote update adventures with RAUC, Yocto and BareboxEmbedded Recipes 2019 - Remote update adventures with RAUC, Yocto and Barebox
Embedded Recipes 2019 - Remote update adventures with RAUC, Yocto and Barebox
Anne Nicolas
 
Embedded Recipes 2019 - Making embedded graphics less special
Embedded Recipes 2019 - Making embedded graphics less specialEmbedded Recipes 2019 - Making embedded graphics less special
Embedded Recipes 2019 - Making embedded graphics less special
Anne Nicolas
 
Embedded Recipes 2019 - Linux on Open Source Hardware and Libre Silicon
Embedded Recipes 2019 - Linux on Open Source Hardware and Libre SiliconEmbedded Recipes 2019 - Linux on Open Source Hardware and Libre Silicon
Embedded Recipes 2019 - Linux on Open Source Hardware and Libre Silicon
Anne Nicolas
 
Embedded Recipes 2019 - From maintaining I2C to the big (embedded) picture
Embedded Recipes 2019 - From maintaining I2C to the big (embedded) pictureEmbedded Recipes 2019 - From maintaining I2C to the big (embedded) picture
Embedded Recipes 2019 - From maintaining I2C to the big (embedded) picture
Anne Nicolas
 
Embedded Recipes 2019 - Testing firmware the devops way
Embedded Recipes 2019 - Testing firmware the devops wayEmbedded Recipes 2019 - Testing firmware the devops way
Embedded Recipes 2019 - Testing firmware the devops way
Anne Nicolas
 
Embedded Recipes 2019 - Herd your socs become a matchmaker
Embedded Recipes 2019 - Herd your socs become a matchmakerEmbedded Recipes 2019 - Herd your socs become a matchmaker
Embedded Recipes 2019 - Herd your socs become a matchmaker
Anne Nicolas
 
Embedded Recipes 2019 - LLVM / Clang integration
Embedded Recipes 2019 - LLVM / Clang integrationEmbedded Recipes 2019 - LLVM / Clang integration
Embedded Recipes 2019 - LLVM / Clang integration
Anne Nicolas
 
Embedded Recipes 2019 - Introduction to JTAG debugging
Embedded Recipes 2019 - Introduction to JTAG debuggingEmbedded Recipes 2019 - Introduction to JTAG debugging
Embedded Recipes 2019 - Introduction to JTAG debugging
Anne Nicolas
 
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimedia
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimediaEmbedded Recipes 2019 - Pipewire a new foundation for embedded multimedia
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimedia
Anne Nicolas
 
Kernel Recipes 2019 - ftrace: Where modifying a running kernel all started
Kernel Recipes 2019 - ftrace: Where modifying a running kernel all startedKernel Recipes 2019 - ftrace: Where modifying a running kernel all started
Kernel Recipes 2019 - ftrace: Where modifying a running kernel all started
Anne Nicolas
 
Kernel Recipes 2019 - Suricata and XDP
Kernel Recipes 2019 - Suricata and XDPKernel Recipes 2019 - Suricata and XDP
Kernel Recipes 2019 - Suricata and XDP
Anne Nicolas
 
Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)
Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)
Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)
Anne Nicolas
 
Kernel Recipes 2019 - Formal modeling made easy
Kernel Recipes 2019 - Formal modeling made easyKernel Recipes 2019 - Formal modeling made easy
Kernel Recipes 2019 - Formal modeling made easy
Anne Nicolas
 

More from Anne Nicolas (20)

Kernel Recipes 2019 - Driving the industry toward upstream first
Kernel Recipes 2019 - Driving the industry toward upstream firstKernel Recipes 2019 - Driving the industry toward upstream first
Kernel Recipes 2019 - Driving the industry toward upstream first
 
Kernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMI
Kernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMIKernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMI
Kernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMI
 
Kernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernel
Kernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernelKernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernel
Kernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernel
 
Kernel Recipes 2019 - Metrics are money
Kernel Recipes 2019 - Metrics are moneyKernel Recipes 2019 - Metrics are money
Kernel Recipes 2019 - Metrics are money
 
Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...
Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...
Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...
 
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary data
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary dataKernel Recipes 2019 - GNU poke, an extensible editor for structured binary data
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary data
 
Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...
Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...
Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...
 
Embedded Recipes 2019 - Remote update adventures with RAUC, Yocto and Barebox
Embedded Recipes 2019 - Remote update adventures with RAUC, Yocto and BareboxEmbedded Recipes 2019 - Remote update adventures with RAUC, Yocto and Barebox
Embedded Recipes 2019 - Remote update adventures with RAUC, Yocto and Barebox
 
Embedded Recipes 2019 - Making embedded graphics less special
Embedded Recipes 2019 - Making embedded graphics less specialEmbedded Recipes 2019 - Making embedded graphics less special
Embedded Recipes 2019 - Making embedded graphics less special
 
Embedded Recipes 2019 - Linux on Open Source Hardware and Libre Silicon
Embedded Recipes 2019 - Linux on Open Source Hardware and Libre SiliconEmbedded Recipes 2019 - Linux on Open Source Hardware and Libre Silicon
Embedded Recipes 2019 - Linux on Open Source Hardware and Libre Silicon
 
Embedded Recipes 2019 - From maintaining I2C to the big (embedded) picture
Embedded Recipes 2019 - From maintaining I2C to the big (embedded) pictureEmbedded Recipes 2019 - From maintaining I2C to the big (embedded) picture
Embedded Recipes 2019 - From maintaining I2C to the big (embedded) picture
 
Embedded Recipes 2019 - Testing firmware the devops way
Embedded Recipes 2019 - Testing firmware the devops wayEmbedded Recipes 2019 - Testing firmware the devops way
Embedded Recipes 2019 - Testing firmware the devops way
 
Embedded Recipes 2019 - Herd your socs become a matchmaker
Embedded Recipes 2019 - Herd your socs become a matchmakerEmbedded Recipes 2019 - Herd your socs become a matchmaker
Embedded Recipes 2019 - Herd your socs become a matchmaker
 
Embedded Recipes 2019 - LLVM / Clang integration
Embedded Recipes 2019 - LLVM / Clang integrationEmbedded Recipes 2019 - LLVM / Clang integration
Embedded Recipes 2019 - LLVM / Clang integration
 
Embedded Recipes 2019 - Introduction to JTAG debugging
Embedded Recipes 2019 - Introduction to JTAG debuggingEmbedded Recipes 2019 - Introduction to JTAG debugging
Embedded Recipes 2019 - Introduction to JTAG debugging
 
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimedia
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimediaEmbedded Recipes 2019 - Pipewire a new foundation for embedded multimedia
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimedia
 
Kernel Recipes 2019 - ftrace: Where modifying a running kernel all started
Kernel Recipes 2019 - ftrace: Where modifying a running kernel all startedKernel Recipes 2019 - ftrace: Where modifying a running kernel all started
Kernel Recipes 2019 - ftrace: Where modifying a running kernel all started
 
Kernel Recipes 2019 - Suricata and XDP
Kernel Recipes 2019 - Suricata and XDPKernel Recipes 2019 - Suricata and XDP
Kernel Recipes 2019 - Suricata and XDP
 
Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)
Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)
Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)
 
Kernel Recipes 2019 - Formal modeling made easy
Kernel Recipes 2019 - Formal modeling made easyKernel Recipes 2019 - Formal modeling made easy
Kernel Recipes 2019 - Formal modeling made easy
 

Recently uploaded

Accelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with PlatformlessAccelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with Platformless
WSO2
 
Cyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdfCyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdf
Cyanic lab
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
Ortus Solutions, Corp
 
Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
Fermin Galan
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
Juraj Vysvader
 
How to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good PracticesHow to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good Practices
Globus
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
Globus
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
Adele Miller
 
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
Paco van Beckhoven
 
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Mind IT Systems
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Globus
 
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamOpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
takuyayamamoto1800
 
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Globus
 
GlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote sessionGlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote session
Globus
 
2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx
Georgi Kodinov
 
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
Tier1 app
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
Max Andersen
 
Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
Matt Welsh
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus
 

Recently uploaded (20)

Accelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with PlatformlessAccelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with Platformless
 
Cyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdfCyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdf
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
 
Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
 
How to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good PracticesHow to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good Practices
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
 
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume Montevideo
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
 
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
 
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamOpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
 
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
 
GlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote sessionGlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote session
 
2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx
 
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
 
Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
 

Kernel Recipes 2015: How to choose a kernel to ship with a product

  • 1. How to choose a kernel to ship with a product Willy Tarreau HAProxy Technologies Kernel Recipes 2015
  • 2. Outline ● Target – People who don’t use distro kernels – People who run their own distros – People who don’t know they’re currently at risk ● Identify your needs ● What not to do ● Remaining options ● How to improve your situation
  • 3. Background Past and present activities ● First kernel patch around 1995 on kernel 1.2.13 ● Maintainer of very old kernels (2.4, 2.6.32, ...) ● Been shipping remotely managed gateways at Exosec from 2002 to 2008 ● Been shipping HAProxy load balancers since 2006
  • 4. Challenges => Maintain systems up to date WRT bugs/vulns: ● Gateways: operate remotely without local help ● LBs: avoid regressions casting a bad image of the product and company in general
  • 5. What absolutely needs updates ? Few critical components on a system : “The ones allowing you to fix a bug and then to fix the failed attempt to fix this bug” In short (YMMV) : ● Kernel ● Libc ● sshd
  • 6. Not all of them in fact ● Libc very rarely needs to be updated in a product's life ● Most products don't depend on SSHd, pick the last one and you're OK.
  • 7. Kernel is special The kernel : ● provides drivers for your device ● provides drivers for other obscure devices ● provides various network protocols ● provides all the security layers => suffers orders of magnitude more bugs than any other component found in such an appliance.
  • 8. Kernel is sensitive! A missed kernel upgrade in field can lead to : ● System malfunction / instability / outages ● Data corruption / data loss ● Local and remote DoS ● Local root => angry customers, bad image, loss of time and money
  • 9. Kernel is too sensitive! In case of bad or failed upgrade in field : ● Have to drive there (managed gateways) ● angry customer + RMA (LBs) => Common question : “should I risk an upgrade or risk a bug?”
  • 10. No such thing as validation in lab The Linux kernel is a monster project. ● Current size around 19.5M lines ● Linux 4.2 added around 1M lines of code (5%) => Nobody can verify there's no regression. At best we can be certain that there are regs... ...and you don't want them in your product!
  • 11. More numbers Kernel 2.6.32 was released on 2009/12. Patches merged from 2009/12 to 2012/05 : 3325 Patches merged from 2012/05 to 2015/09 : 724 Uncertain fixes dropped since 2012/05 : ~3000 => The kernel is a living thing !
  • 12. Facing a difficult choice ● How long will the product live ? ● What initial level of stability is expected ? ● Does the product accept hardware extensions in field ? ● Will it be possible to update in field ? ● Will the customers see what is running ? ● Will the customers expect updates ? ● Is downtime affordable ? ● Are security issues really a problem ?
  • 13. Stick to what works ● Don't change a kernel branch in the middle of a product's life cycle if breakage is not an option. ● Backport the fixes you need only. ● Stable kernels are made for you. => OK but which one ?
  • 14. How the kernel quality evolves ● All fixes are first merged into mainline before -stable ● -stable lasts 2-3 months, + about 2 years for LTS. ● Typos / thinkos are found after a few days / weeks => they will be fixed in -stable ● More subtle bugs can take months/years to be detected => only LTS will have a chance to fix them ● Architectural shortcomings require massive rework => only a version upgrade will bring them
  • 15. First corollary on kernel quality Claim: Unmaintained EOLed kernels contain a lot of subtle bugs that are hard to detect. You don't believe me ? OK, let's see :
  • 16. First corollary on kernel quality Claim: Unmaintained EOLed kernels contain a lot of subtle bugs that are hard to detect. You don't believe me ? OK, let's see :
  • 17. First corollary on kernel quality Claim: Unmaintained EOLed kernels contain a lot of subtle bugs that are hard to detect. You don't believe me ? OK, let's see :
  • 18. Immediate conclusion If you really need them, help with their maintenance and try to get your work supported by more recent ones. NEVER EVER USE EOLed KERNELS!!!
  • 19. So what should you do ? ● Pick a kernel that lasts at least as long as your product's life (or major version's life) ● Degree of confidence should match your customers' expectations (ADSL router, load balancer, file server, power plant controller, …) ● Backport missing features (arbitration needed) ● But avoid backporting infrastructure changes!
  • 20. You're not alone! ● All distro vendors and product vendors are in the same boat. ● Use your distro's kernel if it matches your needs, it's free. ● Otherwise join forces to maintain a specific kernel for as long as you need. => But please, oh please, avoid needless effort duplication caused by adding more LTS versions.
  • 21. How to participate ● Upstream your local fixes and improvements (but not your local crap, thank you) ● Test stable kernels and report good/bad status ● Scrutinize changelogs to check for failed backports ● Maintain, publish, and advertise a stable branch if not possible otherwise
  • 22. Don't maintain your own kernel! Out-of-tree patches = pain. Need to rebase, apply at the wrong place, etc... Sometimes patches are bogus. Speaker's experience : ● Got bored with local patches in Feb 2005 (pre-Git era), started the public “hotfix” tree for 2.4 kernels (2.4.29+) ● Most of them were adopted by maintainer Marcelo Tosatti ● People started to use them, proposing more fixes, sending feedback about some of them being wrong or not working as expected, leading to newer versions ● Eventually all of them got merged or had an equivalent fix. => first “stable” tree without this name :-)
  • 23. Don't maintain your own kernel(2) ● Been shipping 2.4 in our products till 2011 (EOS 2013) => Very stable, but amount of efforts was becoming too high to support new hardware (x86_64) and features (IPv6) ● Moved to 2.6.27 and dropped many patches ● Then 2.6.32, dropped more patches, and replaced some => met a handful of bugs that were already fixed upstream ● And then 3.10 and dropped more patches => one regression caused by a local patch after a -stable update. ● Now 3.14 and kept very few patches => less out-of-tree patches = less work and less bugs
  • 24. 4 types of stable kernels now Quest for kernel quality has led to 4 types of stable kernels : ● Official kernel.org stable kernels by Greg KH, started with 2.6.11 by Greg&Chris. ● Official kernel.org LTS kernels by Greg, started with 2.6.27 and initial attempts with 2.6.20, 2.6.22, and 2.6.25. ● Extended LTS kernels maintained by individuals after Greg, started with 2.6.16 by Adrian, replicated with 2.6.20, 2.6.27, 2.6.32, 2.6.34, 2.6.35, 3.4. ● Kernels picked by distro maintainers : 3.2, 3.12, 3.18 => 8-9 stable branches in parallel now including 7 LTS See https://kernel.org/category/releases
  • 25. How to choose ? ● 7 LTS are a lot, but they offer a lot of choice. ● Do they all evolve at the same speed ? ● Are they all maintained similarly ? ● Let's see...
  • 26. How 2.6 kernels evolved
  • 29. Analysis ● Greg's kernels are very regular, about 1 version per week. ● Distro kernels merge more patches but space their releases more over time. ● Maybe distros backport more features for their users that are less of interest for your products. => don't be fooled by numbers, focus only on the kernel areas relevant to your product
  • 30. Patches per area of interest The ALOHA Load balancer is mostly intested in kernel, mm, ipc, lib, net, drivers/net, arch/x86 : => 3.x are pretty much all the same finally... … but look closer!
  • 31. LTS quickly stabilizes => 3/4 of fixes Greg takes are merged in the first 15 months!
  • 32. Try to limit the effort ● newer kernel = less work but more care and risks ● older kernel = less risks but more work ● 3/4 of patches in 15 months is very appealing, that leaves one year of free maintenance for LTS kernels after we start shipping. ● Our products ship a new major version every year, with 3 years of support => 2 years of maintenance left for us. ● 3.2 and 3.4 would have saved one extra year, but we needed more recent features. => We picked 3.10 in 2014, updated to 3.14 in 2015, maybe 4.1 in 2016.
  • 33. Don't pick too old kernels Very old kernels are not the cheapest ones to maintain : ● Standard fixes get painful after 2 years ● Security fixes are very hard to backport (doc replaced some fixes in 2.4) ● Developers are not much willing to help when kernels are too old ● Less reviewers and testers for each new release => regressions start to increase again past some point (eg: 2.6.32)
  • 34. Distro kernels getting really good ● Less frequent but maintained longer (4-5 years) ● Strong experience within these teams ● Most are now part of the official kernel.org trees. => Definitely a good choice when compatible One regret: too bad they don't stick to the regular LTS versions and share maintenance efforts. Debian's kernel team has been very helpful on 2.6.32, they could have picked 3.4 instead of 3.2 and avoid duplicating efforts. Same regarding 3.16.
  • 35. Post-shipping: be careful ● Always review kernel changelogs Hint: look at -stable only, and it's linear! ● Don't upgrade if there's nothing for you, especially in July-August! ● Very rare -stable regs but happen once in a while and can also be caused by your own patches ● Test. Your code could rely on a bug that was recently fixed! ● Report anything suspicious as soon as possible while it's still fresh in developers' mind.
  • 36. Plan for next major upgrade ● Try to identify what next version you'll have to upgrade to ● Try to identify if someone is willing to maintain it for you or does another one you're fine with. ● Start to run it on your laptops then servers long before you ship it. One more reason for distro kernels! ● Test as often as possible and report breakage
  • 37. That's all folks! Thanks! Questions / Comments / Jokes ? Contact: Willy Tarreau <willy@haproxy.com> HAProxy is hiring talented people. Contact us!