快科技7月14日消息,騰訊工程師Kairui Song近日向Linux內核提交了一組RFC補丁,旨在徹底重構多個交換設備的I/O分配機制。
對于使用交換分層或分層交換處理的復雜服務器場景,這套方案有望顯著改善系統性能與可擴展性。
![]()
這套補丁引入了一種全新的方法來公平分配多交換設備的I/O負載。其核心改動是完全移除可變的plist和全局鎖,進而取消了全局集群緩存。這樣一來,分配和輪換可以更加自由地進行。
作為依賴項,該系列還清理并重構了交換設備管理的鎖定模式。
此前,每個交換設備都有自己的percpu集群緩存。后來一個提交將集群緩存移到了全局作用域,讓所有設備共享同一個全局緩存,以減少對plist的頻繁修改。
快速交換分配直接使用每個CPU的集群緩存,設備輪換仍由plist處理。這種設計雖然可行,卻引發了多個長期存在的問題。
其中最關鍵的是,位于設備選擇之上的全局CPU集群緩存,與交換分層和分層交換分配等概念存在根本沖突。
plist本身需要plist_requeue()函數來輪換設備以實現輪詢,這需要持有swap_avail_lock鎖,所有CPU都會爭用這把鎖。
此外,輪換被認為是慢速路徑,為了不觸碰plist而采用快慢路徑設計,導致了諸多變通方案和設計局限。
新補丁將所有交換設備和新引入的percpu讀取器優先級隊列,統一由percpu rwsem保護,從而大幅提高了可擴展性。這一設計也為未來的交換分層等新想法做好了鋪墊。
![]()
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.