Linux 内核复杂又难懂,到底有啥用?

泥瓦匠BYSocket

共 2340字,需浏览 5分钟

 ·

2020-08-21 04:13


但凡你经历过公司业务迅速增长的阶段,就一定遇到过服务稳定性的挑战,比如:TCP 重传该怎么分析,如何在不打断运行任务的情况下排查内存泄漏问题,怎样快速解决 CPU sys 利⽤率过⾼等等。


以上面提到的 TCP 重传为例,服务器上一般都会有 TCP 重传率的监控,如图所示:


              


像上图中这么高的 TCP 重传率,必然会导致系统 QPS 减小。然而,当你真正去排查时,会发现根本不知从哪里入手。因为网络数据量非常大,只记录 TCP 头部信息也会产生很大存储开销,所以发生重传的现场信息无法被记录下来。


其实,定位类似 TCP 重传这样复杂的稳定性问题,不仅要从开发⼈员的视⻆分析,还要更多从系统、内核的视角出发,这样你才能追本溯源、一劳永逸地解决问题。


而大家之所以觉得这些问题难,本质上还是对 Linux 内核理解不到位


比如,我接触过的业务开发者,基本都被业务的性能毛刺困扰过,但大多数人只能分析到是哪些系统调用引起的毛刺,而业务专家却可以深入底层,看到引发业务毛刺的系统资源。再比如,当发生 TCP 重传时,有人可以从 tcpdump 里的信息看出是哪个 TCP 连接进行重传,高手们却可以通过这些信息看到为什么会发生重传。


能深入到 Linux 内核分析问题的人,看问题能直击本质,定位、分析问题的能力都更强,往往能解决别人解决不了的问题。


然而,在互联网公司普遍“996”的大环境下,大部分做应用的开发者,大都将精力集中在业务代码的优化和调配上,忽略了对 Linux 内核的学习。而且,这部分知识本身就很复杂,所以学习成本也比较高。


事实上,如果你不是内核开发者,没有必要去搞懂它的每个细节,掌握它的每个机制,只要能通过掌握 Linux 内核知识,解决实际应用层的问题就够了,极客时间刚上线的《Linux 内核技术实战课》正好满足大部分开发者这样的需求。


专栏是从生产环境中 4 类典型问题(Page Cache 管理、内存泄漏、TCP 重传、内核态 CPU 利用率飙高)入手,带你了解:应用程序是怎样跟系统资源打交道的;如何选择业务类型的配置更好;棘手问题出现时该如何一步步排查等等,让 Linux 内核更好地服务你的应用程序。

 

?扫码免费试读

结算输入优惠口令「gogolinux」

再减 5 元,到手仅 ¥50

仅限「前 100 人」有效



专栏作者是谁?


这门课的作者是邵亚方,他是前蘑菇街技术专家,Linux Kernel 活跃贡献者。他在 Linux 内核领域深耕了 10 余年,先后在华为、蘑菇街、Juniper Networks 等知名互联网企业从事内核研发工作。


他擅长从 Linux 系统内核层⾯来分析解决实际疑难问题、提高业务性能。在华为和蘑菇街,经历了公司从 0 到 1 切换 Linux 或开发部署私有云的过程,通过改造 Linux 内核保障了业务的平滑切换、稳定性和性能;在 Juniper Networks 则一直致力于提升网络性能,保障业务网络的稳定性,经验可以说相当丰富。


目前亚方主要活跃在 Linux 内核的内存管理子系统(linux-mm),如果你有关注这个邮件列表的话,应该经常能看到他的名字。



他是如何讲解 Linux 内核的?

 

在专栏中,他结合自己的工作经验,总结出了开发者在生产环境中经常会遇到的四类问题:Page Cache 管理、内存泄漏、TCP 重传、内核态 CPU 利用率飙高。每类问题对应一个模块,按照基础篇、案例篇和分析篇的方式来呈现。

 

1、Page Cache 管理模块,带你了解如何更好地利用 Page Cache 来减少无谓的 I/O 开销,Page Cache 管理不当会引起的哪些问题,以及怎样分析和解决。


2、内存泄漏模块,重点分析应用程序是如何从系统中申请和释放内存。通过内存泄露这类案例,带你了解应用程序使用内存的细节,以及由内存使用不当而引发问题的解决方案。


3、TCP 重传模块,为你讲解 TCP 连接的建立、传输和断开的过程,分析这个过程究竟会受哪些配置项的影响,以及配置不当会引起的网络问题。从 TCP 重传这类具体案例出发,带你掌握必要的网络细节知识,以及遇到相关问题时,你该如何去分析和解决。


4、内核态 CPU 利用率飙高模块,带你分析应用程序该如何高效使用 CPU,以及哪些情况会导致 CPU 使用低效,比如内核态 CPU 利用率过高等。针对内核态 CPU 利用率高的这个案例,侧重讲解哪些 Linux 内核的特性或系统配置项会引起这种问题,以及怎样分析和解决。


在每个模块的最后,亚方都会总结这些常见问题的一般分析思路,让你在面对同类型问题时有一个大致的分析方向。


Linux 底层知识的学习并不是一蹴而就的,但跟邵亚方学完这个专栏,我相信你不仅可以很好地掌握必备的 Linux 内核基础知识,也能学到很多解决实际问题的技巧,让 Linux 内核真正有效服务于你的应用程序。




订阅福利


早鸟 + 口令「gogolinux」到手仅 ¥50

原价 ¥68,仅限「前 100 人」有效。


订阅后生成海报发给好友,

每成功邀请 1 位,得 ¥18 返现。

?扫码免费试读


温馨提示:

订阅后可通过「极客时间 App」或「极客时间小程序」我的-已购,学习已订阅的专栏。


?点击「阅读原文」,

输入优惠口令「gogolinux」,

以最低价 ¥50 入手,仅限前 100 人。

浏览 77
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报