我正在阅读以下内容纸。在论文中,作者在第一页的最后一段中指出,Unix/Linux“在单个节点上支持多处理器已经奋斗了十年”。我不明白这句话到底是什么意思。为什么在 Unix/Linux 中支持多处理器如此困难?是 Unix/Linux 的架构让这变得困难吗?
答案1
在引用上方几行的“年龄”段落中,论文给出了四个参考文献:
Linux 十年来一直在努力充分利用多核 [14,20,22,34]。
这些参考文献分别是:
- Linux 网络堆栈中的扩展(内核文档的一部分),它描述了提高多处理器系统上的网络性能的各种技术;
- Silas Boyd-Wickizer、Austin T. Clements、Yandong Mao、Aleksey Pesterev、M. Frans Kaashoek、Robert Morris 和 Nickolai Zeldovich。 2010。Linux 多核可扩展性分析。在第九届 USENIX 操作系统设计与实现会议论文集(加拿大不列颠哥伦比亚省温哥华)(OSDI'10)。 USENIX 协会,美国,1-16。
- Chansup Byun、Jeremy Kepner、William Arcand、David Bestor、William Bergeron、Matthew Hubbell、Vijay Gadepally、Michael Houle、Michael Jones、Anne Klein 等。 2019。优化 Xeon Phi 以进行交互式数据分析。在2019 IEEE高性能极限计算会议(HPEC)。 IEEE,1-6。
- 让-皮埃尔·洛齐、巴蒂斯特·莱珀斯、贾斯汀·芬斯顿、法比安·高德、维维安·奎玛和亚历山德拉·费多洛娃。 2016 年。Linux 调度程序:浪费核心的十年。在第十一届欧洲计算机系统会议论文集(伦敦,英国)(欧洲系统 '16)。计算机协会,美国纽约州纽约市,第 1 条,第 16 页。https://doi.org/10.1145/2901318.2901326
我并不熟悉所有四个参考文献,但第一个参考文献暗示了网络的限制,最后一个参考文献给出了调度程序错误的示例,这些错误导致可用核心保持空闲状态,即使有可运行的线程在等待。
因此,关于评论含义的问题的答案似乎是,当在具有多个处理器(或内核)的系统上运行时,Linux 内核中存在不太理想(温和地说)性能的实例。
这是一个见仁见智的问题,但我认为多处理器支持被证明很困难(在 UNIX 和 Linux 中)的主要原因是并发对于许多人来说很难推理,而且这两个系统都是从非并发系统开始的,并且添加了对并发架构的支持没有一次重大的重新设计——在 Linux 中,首先使用了臭名昭著的大内核锁。我不认为这个问题是否建筑学UNIX 或 Linux 本身引入的正确支持并发平台的基本问题已经得到解决,至少在对称多处理系统中是这样。
(你可能会发现操作系统是时候重新发现硬件了有趣的。)