高手问答第 316 期 —— 开发者进阶之深入理解 Linux 内核底层技术原理

发布于 08/27 10:33
阅读 6K+
收藏 4

国内大部分的开发者和公司都从事的是应用层的开发,平时大家更多关注的是应用层的开发技术。但应用层是建立在CPU和内存等硬件、操作系统内核、语言运行时的基础之上的。

如果缺乏对这些底层知识的理解,驾驭技术的能力就无法精进,也很难开发出高性能、高稳定性的应用。

本期高手问答邀请到了张彦飞老师@张彦飞allen )作为嘉宾,一起探讨 Linux 内核底层技术相关的问题。

张彦飞,著有畅销技术书《深入理解 Linux 进程和内存》和《深入理解 Linux 网络》。有十多年大型互联网公司项目经验。善于归纳总结内核等底层技术原理。他的技术文帮助很多读者提升了对底层的理解,深受广大技术爱好者好评。个人公众号「开发内功修炼」(ID:kfngxl)在全网有超过十万读者。

上周,张彦飞老师的第二本新书《深入理解Linux进程与内存》正式发布。

第二本560页新书《深入理解Linux进程与内存》今天正式发布啦!

本书主要包括CPU和内存硬件、进程创建和调度原理、虚拟内存底层机制、Go 用户态协程实现、容器cgroup资源限制,以及throttle、CPU利用率和负载等性能指标统计原理等内容,最后过渡到性能优化手段,带领大家修炼底层内功,掌握高性能原理。

此外,在 Linux 内核版本方面,本书使用的是比较新的 6.1.33 长期稳定支持版本。

购买地址:https://item.jd.com/14739950.html


为了鼓励踊跃提问,本期高手问答结束后将从提问者中抽取 3 名幸运会员赠予《深入理解Linux进程与内存》一书。

欢迎各位围绕本期主题向张彦飞老师提问,直接回帖即可。

加载中
0
局

高手问答第 316 期 —— 开发者进阶之深入理解 Linux 内核底层技术原理

@开源博客 @希声2014 @风啸雪 

恭喜上面三名用户获赠张彦飞老师新书《深入理解 Linux 进程与内存》,请于9月10日前私信@局 告知邮寄信息(格式:姓名+电话+地址),逾期视为自动放弃。

希声2014
希声2014
回复 @局 : 应该是手机号审核有问题,发不过去
开源博客
开源博客
私信发不出去,OSC的审核让人抓不着头脑
开源博客
开源博客
Thanks
下一页
2
开源博客
开源博客

@张彦飞allen 张老师您好,请教几个问题。
请问Linux kernel的Rust编程目前是什么进度了?
若使用Rust进行Linux kernel编程,是否会增加工作量,即是否需同时理解相应的Linux C代码与Rust API?

开源博客
开源博客
回复 @张彦飞allen : 好的,谢谢
张彦飞allen
张彦飞allen
Rust目前还没看到在核心子系统上的进展。但是Rust未来的占比应该会慢慢起来的。 Rust进行编程,我觉得是会增加工作量的。Rust语言中很多的机制特性和C差异很大,需要不小的学习和理解成本。
1
风啸雪
风啸雪

@张彦飞allen 在当今内存越来越大的场景下,能否讲一下linux系统下对大内存的管理

风啸雪
风啸雪
回复 @张彦飞allen : 感谢解答
张彦飞allen
张彦飞allen
2)大页:传统的四级页表会加剧TLB缓存负担导致过多的虚拟地址到物理地址转换开销,linux提供了多种大页管理来缓解这个问题
张彦飞allen
张彦飞allen
Linux对内存的管理一直还都是四级页表的机制。你问的大内存我理解细化成两个问题。 1)是多numa内存管理:每个CPU都是访问自己直连的内存速度更多,跨片访问性能会打折。但单台服务器为了提供内存量,numa也是实现方式之一。所以linux在初始化的时候,会记录每段物理内存地址对应的numa信息,供管理者调优使用。
1
贺小皮蛋
贺小皮蛋

@张彦飞allen 张老师您好,就是比如一个多核的服务器的cpu 使用率达到100%了,这个是单核达到100%了还是所有核都到了呢,以java为例,如果没有并发逻辑,是不是不会出现cpu到100%的情况呢  不知道问的对不对 感谢

贺小皮蛋
贺小皮蛋
回复 @大熊小鸽鸽 :谢谢老师
张彦飞allen
张彦飞allen
1)先说CPU利用率,linux内核对CPU利用率的统计既可以看全局的平均利用率,也可以看每一个核的利用率。使用top等命令就可以简单办到,按+号就能看每一个核的了。 2)用Java举例不太好举,因为他有后台线程。用C举例,如果只是单线程运行,那么任何CPU密集型的计算都撑死只会跑慢一个核。
贺小皮蛋
贺小皮蛋
回复 @大熊小鸽鸽 : 谢谢 讲解:+1:
大熊小鸽鸽
大熊小鸽鸽
您说的Java程序的事儿,虽然代码上是没有多线程并发逻辑的,但是通常GC都是并行的(除非指定使用串行GC,但服务器上都不这么干)。如果内存不足,导致频繁触发full gc,一样会打满CPU。
大熊小鸽鸽
大熊小鸽鸽
CPU使用率100%这种情况,基本就是全核心满了。
0
大熊小鸽鸽
大熊小鸽鸽

@张彦飞alle 张彦飞老师您好,随着物联网设备的普及,越来越多的设备开始采用Linux内核。想跟您探讨Linux内核在物联网领域的挑战和机遇,以及如何针对不同场景进行定制化优化。

张彦飞allen
张彦飞allen
在物联网领域里,和其他应用场景不同的主要是设备多样化、实时性、安全性等几个挑战。如何能支持多种多样的设备,如何能更低延时地处理和传输,如何能避免数据泄露是Linux在物联网领域里需要重点优化的问题。
0
大熊小鸽鸽
大熊小鸽鸽

@张彦飞allen 张彦飞老师您好,随着物联网设备的普及,越来越多的设备开始采用Linux内核。想跟您探讨Linux内核在物联网领域的挑战和机遇,以及如何针对不同场景进行定制化优化。

0
wleoi
wleoi

@张彦飞allen 如果想学习linux内核的话,应该从哪些方面开始入手呢,毕竟内核的知识面太广了

张彦飞allen
张彦飞allen
从实践入手。看那块和你当前工作或未来的关联度最大,就从哪里入手。
0
赤脚小子
赤脚小子

@张彦飞allen 你好,在您的书中,您提到了CPU调度原理,能否详细解释一下在高负载情况下,Linux内核是如何进行进程调度的?

0
赤脚小子
赤脚小子

@张彦飞allen 你好,能否详细解释一下在高负载情况下,Linux内核是如何进行进程调度的?

0
赤脚小子
赤脚小子

@张彦飞allen 你好,对高负载比较感兴趣,尤其是cpu的进程调度是如何决策的

OSCHINA
登录后可查看更多优质内容
返回顶部
顶部