LWN:5.19 合并窗口第一部分!
關(guān)注了就能看到更多這么棒的文章哦~
5.19 Merge window, part 1
By Jonathan Corbet
May 27, 2022
DeepL assisted translation
https://lwn.net/Articles/896140/
在撰寫(xiě)本文時(shí),針對(duì) 5.19 開(kāi)發(fā)周期,已經(jīng)有將近 4600 個(gè) non-merge changeset 合入 mainline 倉(cāng)庫(kù)了。5.19 合并窗口進(jìn)展得很不錯(cuò)。目前合入的改動(dòng)涵蓋了很多領(lǐng)域,包括 kernel 核心、架構(gòu)支持、網(wǎng)絡(luò)、安全、虛擬化等等。繼續(xù)閱讀來(lái)了解合并窗口第一部分的情況。
目前已經(jīng)合入的有意思的改動(dòng)包括:
Architecture-specific
移除了若干 x86 特有的 boot option (nosep, nosmap, nosmep, noexec, and noclflush)。每個(gè) option 都是用來(lái)關(guān)閉掉 CPU 中一個(gè)相應(yīng)功能的,目前已經(jīng)不再需要關(guān)閉了
徹底移除了 x86 上的 a.out 可執(zhí)行格式的支持,之前在 5.1 的時(shí)候已經(jīng) deprecated 了。
x86 split-lock detection 機(jī)制得到了強(qiáng)化。不再僅僅是對(duì)進(jìn)程使用 split lock 時(shí)給出 warning (缺省行為)了,而且會(huì)盡量拖慢相應(yīng)的進(jìn)程的執(zhí)行。這樣就可以確保系統(tǒng)正常的性能,也許相應(yīng)的應(yīng)用程序就可以得到 fix 了。
新增的 Intel “in-field scan” 機(jī)制可以在正式部署的系統(tǒng)里面進(jìn)行檢測(cè)并發(fā)現(xiàn) CPU 的問(wèn)題了。相應(yīng)的文檔 commit 里面有更多信息。
xtenda 架構(gòu)支持了更多功能,包括 SMP coprocessors, KCSAN, hibernation 等等。
m68k 架構(gòu)實(shí)現(xiàn)了一個(gè)基于 android Goldfish 模擬器的虛擬機(jī)。
Arm 支持了 Scalable Matrix Extension (只支持 host mode,guest 系統(tǒng)還不支持)
Core kernel
對(duì) io_uring 子系統(tǒng)進(jìn)行了一些改善工作。新增了 IORING_RECVSEND_POLL_FIRST flag,如果在網(wǎng)絡(luò)操作里面設(shè)置上的話(huà),會(huì)讓這個(gè)操作直接進(jìn)入 polling 模式,而不是先試圖去進(jìn)行傳輸。這樣就可以在調(diào)用者不需要這個(gè)操作馬上進(jìn)行的時(shí)候能節(jié)省一些開(kāi)銷(xiāo)。還新增了一些 flag 來(lái)減輕 fixed file descriptors 的管理工作。accept() 支持了 "multi-shot" 模式,允許在一次操作里面 accept 多個(gè)連接。新增了一些操作用來(lái)修改文件的擴(kuò)展屬性。支持了 socket() 系統(tǒng)調(diào)用。最后,還支持了 "passthrough" 操作,可以把 NVMe 命令直接發(fā)送給設(shè)備。
所有這些新的 API 都完全沒(méi)有文檔。可以在 BPF maps 中存放 typed 指針了。相應(yīng)的 merge commit 里面有更多細(xì)節(jié)。不要把這個(gè)功能跟“dynamic BPF pointers”混起來(lái),后者也會(huì)被包含在 5.19 里,請(qǐng)參看相關(guān)的 merge commit。
Filesystems and block I/O
EROFS 只讀文件系統(tǒng)進(jìn)行了大量的重構(gòu),來(lái)利用 fscache 機(jī)制。實(shí)測(cè)下來(lái)可以顯著提升那些運(yùn)行了很多基于 EROFS 映像文件的 container 容器的系統(tǒng)性能。相關(guān)的 merge 描述有更多介紹。
EROFS 的工作額外為 fscache 添加了一個(gè) on-demand mode,參看相關(guān) commit
Hardware support
硬件監(jiān)測(cè)。Aquacomputer Octo 溫度傳感器和風(fēng)扇控制器,Aquacomputer Farbwerk 360 溫度傳感器,Infineon XDPE152 電壓調(diào)節(jié)器,Microchip LAN9668 溫度傳感器,以及 Nuvoton NCT6775F I2C 接口。
雜項(xiàng)。Nvidia SN2201 平臺(tái)開(kāi)關(guān),Silicon Mitus SM5703 電壓調(diào)節(jié)器,以及聯(lián)發(fā)科的 SPI NAND 閃存接口。
網(wǎng)絡(luò)。Marvell Octeon PCI 終端網(wǎng)卡,CTU CAN-FD IP 核(見(jiàn)文檔),Analog Devices 工業(yè)以太網(wǎng) T1L PHY,pureLiFi LiFi 無(wú)線(xiàn) USB 適配器,聯(lián)發(fā)科 PCIe 5G WWAN modem T7xx 適配器,德州儀器 DP83TD510 以太網(wǎng) 10Base-T1L PHY,Sunplus 雙 10M/100M 以太網(wǎng)適配器,以及 Realtek 8852CE PCI 無(wú)線(xiàn)網(wǎng)絡(luò)(Wi-Fi 6E)適配器。
另外:一些舊的網(wǎng)絡(luò)驅(qū)動(dòng)程序已經(jīng)被刪除,因?yàn)樗鼈儧](méi)有被維護(hù),而且估計(jì)也沒(méi)有被使用了。
此外:電源管理子系統(tǒng)已經(jīng)支持了那些在 "artificial" power scale 上運(yùn)行的設(shè)備。簡(jiǎn)而言之,這意味著這樣的設(shè)備提供了關(guān)于不同功率狀態(tài)的相應(yīng)效率的信息,但這些信息并不是跟現(xiàn)實(shí)世界的標(biāo)準(zhǔn)相對(duì)應(yīng)的。相應(yīng)的文檔提交中包含了更多的信息。
Networking
BIG TCP patch set 已被合并,這項(xiàng)工作允許在數(shù)據(jù)中心的網(wǎng)絡(luò)上發(fā)送巨大的 IPv6/TCP 數(shù)據(jù)包。
繼續(xù)添加 packet-drop 原因標(biāo)注,讓管理員更加容易了解網(wǎng)絡(luò)數(shù)據(jù)包為何無(wú)法通過(guò)系統(tǒng)。
multipath TCP(MPTCP)協(xié)議現(xiàn)在可以在某些無(wú)法使用 multipath 功能的情況下退回到常規(guī) TCP。
新增一個(gè)用戶(hù)空間 API 用于管理 MPTCP flow。文檔不多,但在這次的 merge commit 中有一個(gè)介紹。
Security-related
各種保密計(jì)算(confidential-computing)機(jī)制允許把機(jī)密數(shù)據(jù)推入虛擬機(jī)并且不暴露給 host 系統(tǒng)。內(nèi)核的 EFI 子系統(tǒng)現(xiàn)在可以通過(guò) securityfs 下的一個(gè)目錄(security/coco)將這些機(jī)密信息暴露給 guest。commit 中的相關(guān)文檔給出了更多信息。
kernel 的 lockdown 模式可以防止特權(quán)進(jìn)程改動(dòng)了在內(nèi)核控制之外的內(nèi)核內(nèi)存?;蛘?,至少來(lái)說(shuō)這是它的本來(lái)目的。事實(shí)證明,只要啟動(dòng)內(nèi)核調(diào)試器(kernel debugger)就可以輕松繞過(guò) lockdown 機(jī)制。有一個(gè) commit 合入了 mainline(當(dāng)然也適用于 stable update),從而填補(bǔ)了這個(gè)漏洞。
對(duì)隨機(jī)數(shù)生成器進(jìn)行了一些改進(jìn),以提高魯棒性和性能。相應(yīng)的 merge commit 包含了概述。
支持了 structure randomizaiton hardening 加固,依賴(lài) Clang 編譯器第 15 版
Landlock security module 現(xiàn)在支持了對(duì)文件進(jìn)行重命名。
Integrity Measurement Architecture (IMA) 現(xiàn)在可以使用 fs-verity 的文件摘要值來(lái)進(jìn)行驗(yàn)證了。
"unprivileged BPF "的含義有了一些變化。在當(dāng)前的內(nèi)核中,禁用 unprivileged BPF 會(huì)使得所有 bpf() 系統(tǒng)調(diào)用命令都不可用。而在 5.19 中,非特權(quán)進(jìn)程將可以訪(fǎng)問(wèn)那些實(shí)際上不會(huì)創(chuàng)建 object 的命令。這使得有特權(quán)的進(jìn)程可以加載 BPF 程序,之后無(wú)特權(quán)的進(jìn)程可以與之交互。merge commit 中有更多信息。
Virtualization and containers
支持 AMD 的 Secure Nested Paging 功能。簡(jiǎn)而言之,該功能會(huì)讓虛擬機(jī)在其加密內(nèi)存被來(lái)自外界的訪(fǎng)問(wèn)獲取到的時(shí)候得到通知。這種機(jī)制的一種用法是挫敗重放攻擊(replay attack)。
支持了英特爾可信域擴(kuò)展(TDX, Trusted Domain Extensions)機(jī)制的支持,它提供了一些類(lèi)似的功能。更多信息請(qǐng)看文檔提交。
Internal kernel changes
Objtool 是內(nèi)核構(gòu)建系統(tǒng)的一部分,用來(lái)對(duì) object 文件進(jìn)行一些轉(zhuǎn)換工作,它的接口被完全重構(gòu)了。相應(yīng)的 commit 給出了相關(guān)改動(dòng)的概述,還有一個(gè)文檔 commit 提供了 objtool 提供了的一些功能。
繼續(xù)向 memory folios 遷移。有一個(gè) pull request 將一些地址空間的操作轉(zhuǎn)換為新的(類(lèi)似的)操作。
SLUB 內(nèi)存分配器的調(diào)試基礎(chǔ)設(shè)施已經(jīng)得到了改進(jìn);更多信息請(qǐng)參見(jiàn)文檔提交。
將內(nèi)核信息的打印轉(zhuǎn)移到 per-console 的 thread(LWN 2019 年的文章中有描述)的工作終于被合并了。這應(yīng)該可以避免那些緩慢的 console 來(lái)阻塞日志記錄或?qū)ο到y(tǒng)產(chǎn)生日常延遲。另外,printk()的 indexing 功能現(xiàn)在也被記錄到了文檔里。
5.19 合并窗口剛剛開(kāi)始;可以預(yù)計(jì)它將一直開(kāi)放到 6 月 5 日。窗口關(guān)閉的時(shí)候 LWN 會(huì)對(duì)后半部分的內(nèi)容進(jìn)行總結(jié),敬請(qǐng)關(guān)注。
全文完
LWN 文章遵循 CC BY-SA 4.0 許可協(xié)議。
長(zhǎng)按下面二維碼關(guān)注,關(guān)注 LWN 深度文章以及開(kāi)源社區(qū)的各種新近言論~
