LWN:6.6合并窗口的前半部分!
關(guān)注了就能看到更多這么棒的文章哦~
The first half of the 6.6 merge window
By Jonathan Corbet
August 31, 2023
ChatGPT assisted translation
https://lwn.net/Articles/942954/
截至目前,已經(jīng)有4588個(gè)non-merging changset合并到了6.6內(nèi)核版本的mainline 倉庫中。換句話說,6.6合并窗口剛剛開始。盡管如此也已經(jīng)合并了相當(dāng)多的重要改動(dòng),因此現(xiàn)在是總結(jié)迄今為止在這個(gè)開發(fā)周期中發(fā)生的事情的時(shí)候了。
迄今為止為6.6合并的值得關(guān)注的改動(dòng)有:
Architecture-specific
-
PA-RISC架構(gòu)增加了just-in-time BPF編譯器。
Core kernel
-
/sys/devices/system/cpu/smt/control 這個(gè)開關(guān)目前為止只能接受兩個(gè)值:on 表示啟用 simultaneous multithreading("超線程 hyperthreading"),或off表示禁用?,F(xiàn)在增強(qiáng)之后還可以接受一個(gè)數(shù)字,表示每個(gè)core上可以支持的線程數(shù)。這個(gè)功能首先將被PowerPC架構(gòu)使用,該架構(gòu)中的某些CPU可以運(yùn)行多達(dá)16個(gè)線程。
-
最早合格虛擬截止時(shí)間優(yōu)先(EEVDF, earliest eligible virtual deadline first)這個(gè)CPU調(diào)度程序已經(jīng)合并;它應(yīng)該可以在提供更好的性能和公平性的同時(shí),減少對(duì)脆弱的啟發(fā)式規(guī)則的依賴。merge message里指出,某些工作負(fù)載下可能會(huì)出現(xiàn)極少見的性能下降,開發(fā)者正在努力解決這些問題。
Filesystems and block I/O
-
mount API有了一個(gè)新flag名為FSCONFIG_CMD_CREATE_EXCL,如果這個(gè)flag存在的話,就可以避免兩個(gè)mmount在kernel里共用同一個(gè)superblock。如commit message中所解釋的,superblock共享可能會(huì)導(dǎo)致mount選項(xiàng)被忽略,從而可能導(dǎo)致安全問題。做這個(gè)工作的目的是啟用mount命令的新增的 –exclusive標(biāo)志,以便管理員可以要求不允許進(jìn)行superblock共享。
-
虛擬文件系統(tǒng)(VFS)層現(xiàn)在支持文件擁有更細(xì)粒度的時(shí)間戳了。正如這篇文章所描述的,這些時(shí)間戳允許像NFS這樣的文件系統(tǒng)可以快速檢測到發(fā)生了更改,以便正確地管理緩存,同時(shí)又最小化對(duì)時(shí)間戳維護(hù)的開銷。目前,細(xì)粒度時(shí)間戳在Btrfs、ext4、tmpfs和XFS文件系統(tǒng)中都支持。
-
tmpfs文件系統(tǒng)增加了許多功能,包括quota支持、user extended attributes、direct I/O和stable directory offsets(用來修復(fù)通過NFS export的文件系統(tǒng)的問題)。
-
內(nèi)核將不再允許更改符號(hào)鏈接的權(quán)限。
-
添加了fchmodat2()系統(tǒng)調(diào)用。當(dāng)前版本支持flags參數(shù),這根flags被定義為fchmodat()的一部分,但從未在Linux中得到支持。這個(gè)新的系統(tǒng)調(diào)用將使一些必備功能在C庫實(shí)現(xiàn)中的一些hack方法可以被移除了。merge message描述了目前支持的flags。
-
erofs文件系統(tǒng)增加了一個(gè)bloom filter,加速了negative extended-attribute 的查找,并且支持了Deflate壓縮算法。
-
XFS文件系統(tǒng)已經(jīng)能夠在page cache中使用folio,也進(jìn)行了一些相關(guān)的優(yōu)化,這些應(yīng)該能顯著提高某些工作負(fù)載的性能。
-
現(xiàn)在可以構(gòu)建一個(gè)沒有buffer-head功能的內(nèi)核,盡管這會(huì)導(dǎo)致可用的文件系統(tǒng)數(shù)量大大減小。這是為了繼續(xù)努力擺脫內(nèi)核中對(duì)buffer-head的使用,至少大幅減少使用它的地方。
-
ublk用戶空間block驅(qū)動(dòng)程序已經(jīng)獲得(尚未有文檔的)對(duì)zoned-storage設(shè)備的支持。
Hardware support
-
GPIO和引腳控制:ADI DS4520基于I2C的GPIO擴(kuò)展器。
-
硬件監(jiān)控:瑞薩HS3001濕度和溫度傳感器。
-
雜項(xiàng):龍芯SPI控制器和Cirrus Logic CS42L43 SPI控制器。
-
網(wǎng)絡(luò):Broadcom ASP 2.0以太網(wǎng)控制器,Marvell 88Q2XXX PHY,以及TI PRU ICSS工業(yè)以太網(wǎng)外圍設(shè)備。
-
穩(wěn)壓器:高通REFGEN電壓穩(wěn)壓器,ADI MAX77857/MAX77831穩(wěn)壓器,Richtek RTQ2208 SubPMIC穩(wěn)壓器,以及Awinic AW37503雙輸出電源穩(wěn)壓器。
Miscellaneous
-
內(nèi)核已經(jīng)升級(jí)到Rust 1.71.1和bindgen 0.65.1。底層的工具程序有許多改動(dòng);相關(guān)的詳細(xì)信息請(qǐng)參見merge message。
Networking
-
AF_XDP地址族(address family)已經(jīng)具備處理存儲(chǔ)在多個(gè)緩沖區(qū)中的數(shù)據(jù)包的能力;相關(guān)的changelog和文檔改動(dòng)中有關(guān)于其工作原理的詳細(xì)信息。
-
新增一個(gè)BPF hook用于進(jìn)行數(shù)據(jù)包重組(defragment),從而更容易查看(和過濾)完整的數(shù)據(jù)包;相關(guān)的merge message有更多信息。
-
新增一個(gè)BPF hook(update_socket_protocol)用來讓BPF程序更改新建socket所請(qǐng)求的協(xié)議。其主要使用場景似乎是用來透明地修改TCP連接的程序?yàn)槭褂胢ultipath TCP。MPTCP也添加了對(duì)將數(shù)據(jù)包路由到不同subflow的BPF程序的初步支持。
-
io_uring子系統(tǒng)已部分支持網(wǎng)絡(luò)操作,盡管完整的功能需要等待6.7周期。
security-related
-
seccomp()系統(tǒng)調(diào)用新增了一個(gè)標(biāo)志(SECCOMP_USER_NOTIF_FD_SYNC_WAKE_UP),表示將同步處理來自受監(jiān)視的進(jìn)程的event;這可以讓內(nèi)核更有效地來調(diào)度這兩個(gè)進(jìn)程。
-
kmalloc()隨機(jī)性patch已合并。這項(xiàng)工作在內(nèi)存分配中添加了一些熵,讓對(duì)系統(tǒng)的攻擊變得更加困難。
-
SELinux子系統(tǒng),以前稱為"NSA SELinux",已經(jīng)"去掉了品牌"。"盡管NSA是最初的主要開發(fā)者并繼續(xù)幫助維護(hù)SELinux,但SELinux早已變成了擁有廣泛的開發(fā)者和維護(hù)者社區(qū)"。
Virtualization and containers
-
userfaultfd()系統(tǒng)調(diào)用新增了一個(gè)操作,UFFDIO_POISON,可以將page標(biāo)記為受污染狀態(tài)(poisoned)。使用場景是在虛擬機(jī)遷移過程中;如果舊系統(tǒng)上的內(nèi)存頁面已損壞(因此"受污染"),則可以使用userfaultfd()在新系統(tǒng)上保留該標(biāo)記。
Internal kernel changes
-
"kunit"單元測試框架現(xiàn)在可以運(yùn)行Rust documentation test。
-
Frontswap機(jī)制于2010年添加到內(nèi)核中。到了2023年,它被徹底移除了。
-
struct ptdesc patch 已被合并。它們將struct page的page-table相關(guān)的字段拆分為一個(gè)獨(dú)立結(jié)構(gòu),從而繼續(xù)進(jìn)行拆分struct page的各種用途的大業(yè)。
-
合并了一項(xiàng)internal symbol處理的改動(dòng),使專有模塊(proprietary module)更難繞過GPL-only符號(hào)的限制。
-
dynamic software I/O TLB系列patch已被合并,為因一些原因需要使用bounce buffering 機(jī)制的設(shè)備提供更好的支持。
6.6合并窗口預(yù)計(jì)將保持開放,直到9月10日,之后開發(fā)社區(qū)將花費(fèi)七八周來穩(wěn)定所有這些工作。和往常一樣,LWN將在合并窗口關(guān)閉后繼續(xù)補(bǔ)上相關(guān)信息。
全文完
LWN 文章遵循 CC BY-SA 4.0 許可協(xié)議。
長按下面二維碼關(guān)注,關(guān)注 LWN 深度文章以及開源社區(qū)的各種新近言論~
