欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  运维

linux为什么要升级内核

程序员文章站 2022-03-26 20:18:12
...

linux升级内核的原因:docker应用容器引擎之类的新技术的部分功能在低版本的linux内核中是不支持的,如namespace、cgroup等,所以升级内核是很有必要的。

linux为什么要升级内核

由于现在需要使用docker,部分功能在低版本的linux不支持,如namesapce,cgroup等 。因此需要升级内核。

为什么要升级内核?

是的,非常多人并不允许这样的观点。可能他们觉得使用内核提供的最持久最稳定的接口就已经足够,多数的定制特性须要自己在用户空间开发。当然这也符合UNIX的哲学,而且,他们觉得用户态写自己的so而不是bash。python脚本会提高自己软件的竞争力。由于你看不到源码。一个so就能实现OpenVPN的负载均衡,你又不知道他是怎么做的,所以这样的神奇感的背后,人们会觉得其技术及其高深。反之。假设使用了内核提供的特性,他们便会觉得这样的技术谁都能够使用,并非自己独占独享的。做出来的东西便失去了竞争力。

这样的观点是彻头彻尾错误而且及其错误且幼稚的。

关键不是你保留了多少别人不知道的技术细节。关键在于你能多快推出一个能够使用的五脏俱全的最简版本号,而且能以多快的频率持续更新,持续优化,而这一切非常大的分量上并非你自己闭门顿悟的。而是来自使用者的反馈。快。才是根本!
怎么才干快?

简单,能不自己写的就直接拿来,能利用的现成特性就直接用。这样就节省了自己非常大的工作量。要把心思花在怎样简单地扩展功能满足需求上,而不是花在钻研某个技术细节上。

难道你用C写so的时候,不也是调用了人家C库以及第三方(甚至是你的同事写的)库提供的API么?这不也是拿来?你隐藏的不过怎样组装这一切的细节,而这不过一条路而已,没人在乎你是怎样将组件组装成功能的,用户在乎的是能够使用。
举例来讲。

我在Linux 2.6.32内核上吭哧几个星期也搞不定怎样让多个OpenVPN进程共享一块TUN网卡,其实我改写过TUN驱动,可是没有经过稳定性压力測试,所以能不能用还不知道。我所完毕的可能不过可行性预研罢了,后来由于没有项目或者个人原因推动,这样的成果也只能停留在纸面上。可是那毕竟消耗了我的时间和精力,尽管我没有占用我的工作时间(到了后期就不一样了),那个时候老婆和女儿又长期不在身边。就我自己在家,我下班后或者周末有的是时间。可是毕竟由于搞这个东西让我直到如今还欠了几部关于古罗马的纪录片没有看!我花了非常长时间研究怎样实现UDP服务的并发,《UNIX网络编程》上的方案也看过,对于OpenVPN这样的服务而言根本不切实际,我想过通过fork让子进程继承父进程的UDP描写叙述符,可是会有惊群问题,我知道有SO_REUSEPORT这个option,可是Linux的实现并不能满足我的需求(这是实现问题,而不是接口问题),于是我又花了非常长实现写出了UDP多port的负载均衡内核模块,同一时候想出了利用iptables的random DNAT方案。然而只要我将内核版本号升级到3.9.6这个版本号或者以上,全部问题都攻克了,我只须要在UDP socket上设置一个SO_REUSEPORT选项就可以,同一时候我也不再须要写代码了。
高版本号的内核具有三方面的效用,更高效,很多其它新的特性。

以前bug的修复,可是对于新引入的特性,可能会引入新的bug。不过你只须要谨慎使用新特性就能够了。举例来讲。我实际中会使用到的功能,比方TCP的Fast open,网络的命名空间,多队列的TUN网卡,这些在2.6.32内核上就不支持(命名空间有是有。可是接口使用时太不方便)。你是想花一月时间自己写一个多队列的TUN驱动呢?还是希望有一个直接能够用的呢?诚然,高版本号内核自带的TUN驱动不是你写的,不能代表你的实力。不能给你带来竞争力,可是你的目的决不不过用上一个多队列的TUN而已,你的目标可能是搞一个另类的OpenVPN。别人不曾想到的那些易用的功能,你自己提炼出来的可能的新的需求。这些才是竞争力,而不是其实现。我通过阿皮亚大道到达罗马。而你辗转阿尔卑斯山,是的,你比我更能体现什么是力量和毅力。可是。我先到了。

以上就是linux为什么要升级内核的详细内容,更多请关注其它相关文章!

相关标签: linux 内核