Popcorn 正在為 Linux 核心開發一個分散式執行緒執行系統。

維吉尼亞理工大學 предложил 供 Linux 核心開發人員討論的一組實作分散式執行緒執行系統的補丁 爆米花 (分散式執行緒執行),它允許您透過主機之間執行緒的分散和透明遷移來組織應用程式在多台電腦上的執行。 使用 Popcorn,應用程式可以在一台主機上啟動,然後不間斷地轉移到另一台主機。 在多執行緒程式中,允許將單一執行緒遷移到其他主機。

與專案不同 搶救透過允許保存進程狀態並在另一個系統上恢復執行,Popcorn 在應用程式執行期間​​提供主機之間的無縫動態遷移,無需用戶操作並確保運行並發線程的所有主機之間的虛擬記憶體一致性。

爆米花軟體堆疊形式 補丁 Linux 核心和 библиотека 測試示範如何使用 Popcorn 系統呼叫來遷移分散式應用程式中的執行緒。 在核心級別,透過分散式共享記憶體的實現提出了對虛擬記憶體子系統的擴展,它允許不同主機上的進程存取公共且一致的虛擬位址空間。 虛擬記憶體頁面一致性由協定確保,該協定在讀取記憶體頁面時將其複製到主機,並在寫入時使記憶體頁面無效。

主機之間的互動是使用核心級處理程序來執行的,該處理程序透過 TCP 套接字傳輸訊息。 值得注意的是,TCP/IP用於簡化開發過程中的調試和測試。 開發人員明白,從安全性和效能的角度來看,TCP/IP 並不是在主機之間傳輸核心結構和記憶體頁面內容的最佳方式。 所有運行分散式應用程式的主機必須具有相同的信任等級。 主要演算法穩定後,將使用更有效率的運輸方式。

Popcorn 自 2014 年以來一直作為研究項目進行開發,旨在研究創建分散式應用程式的可能性,其線程可以在不同節點上執行 異質 可以組合基於不同指令集架構(Xeon/Xeon-Phi、ARM/x86、CPU/GPU/FPGA)的核心的運算系統。 向Linux核心開發人員提出的這組補丁僅支援在具有x86 CPU的主機上執行,但Popcorn Linux還有功能更多的版本,它允許應用程式在具有不同CPU架構(x86和ARM)的主機上運行。 要在異質環境中使用 Popcorn,必須使用特殊的 編譯器 基於LLVM。 當在具有相同架構的主機上分散式運行時,不需要使用單獨的編譯器進行重建。

Popcorn 正在為 Linux 核心開發一個分散式執行緒執行系統。

此外,還可以注意到 公告 有點類似的項目 電叉 實作初始原型 API,用於在叢集中的其他電腦上啟動子進程(如 fork(),但將分叉進程傳輸到另一台電腦)。
該程式碼是用 Rust 編寫的,到目前為止只允許克隆不使用檔案等系統資源的非常簡單的進程。 當進行 telefork 呼叫時,記憶體和進程相關的結構將被複製到另一個執行伺服器處理程序(telepad)的主機。 使用 ptrace,進程的記憶體反射被序列化,並與進程和暫存器的狀態一起傳送到另一個主機。 該 API 還允許您將進程狀態保存到檔案中並透過它恢復它。

來源: opennet.ru

添加評論