如果首先想到的是流行的應用程序,該應用程序允許您通過torrent協議查看內容,那麼恐怕會告訴您不,不是那樣,我們正在談論的是關於 弗吉尼亞理工大學的開發人員 誰最近做了一個 與Linux內核開發人員討論的建議 在一組補丁上 爆米花系統的實施 (分佈式線程執行)以分發線程。
這個系統 允許您通過分發和遷移來組織多台計算機上應用程序的執行 主機之間的透明流。 使用Popcorn,可以在一個主機上啟動應用程序,然後可以將它們傳輸到另一主機而不會中斷。 在多線程程序中,允許遷移到其他單線程主機。
關於爆米花
與CRIU項目不同,CRIU項目允許您保存流程狀態並在另一個系統上恢復執行, Popcorn提供了透明而動態的遷移 在應用程序執行期間主機之間 無需用戶採取措施並確保虛擬內存的一致性 在線程同時運行的所有主機上。
爆米花 提供Linux內核的補丁程序堆棧 以及帶有測試的庫,該測試顯示瞭如何在遷移的可執行應用程序中使用從遷移流中調用Popcorn系統。
在內核級別,提出了對虛擬內存子系統的擴展 與分佈式共享內存的實現, 允許不同主機上的進程訪問公共且一致的虛擬地址空間。 通過協議可以確保虛擬內存頁面的一致性,該協議可在訪問內存頁面以讀取時將內存頁面複製到主機,並在寫入時使內存頁面無效。
主機之間的交互是使用通過TCP套接字傳輸的內核級消息處理程序進行的。 可以看出,TCP / IP用於簡化開發過程中的調試和測試。 開發人員了解,就安全性和性能而言,TCP / IP並不是在主機之間傳輸內核結構和內存頁面內容的最佳方法。 運行分佈式應用程序的所有主機必須具有相同的信任級別。 在基本算法穩定之後,將應用更有效的傳輸方式。
自2014年以來,爆米花已發展成為一項研究項目 研究創建分佈式應用程序的可能性,這些應用程序的線程可以在異構計算機系統的不同節點中執行,並且可以基於各種命令集體系結構(Xeon / Xeon-Phi,ARM / x86,CPU / GPU / FPGA)。
向Linux內核開發人員提出的補丁集僅支持在具有x86 CPU的主機上運行,但也 還有功能更強大的Popcorn Linux 允許應用程序在主機上運行 具有不同的CPU架構(x86和ARM).
要在異構環境中使用Popcorn,必須使用基於LLVM的特殊編譯器。 在具有相同體系結構的主機上執行分佈式執行時,不需要通過單獨的編譯器進行重建。
還,我們會注意到宣布了與Telefork項目類似的事情 最初的原型API實現 在群集中的其他計算機上啟動子進程 (類似於fork(),但將分支過程轉移到另一台計算機上)。
該代碼是用Rust編寫的,到目前為止,僅允許克隆不使用系統資源的最簡單的進程(例如文件)。 進行電話叉呼叫時,與該過程相關的內存和結構將克隆到運行服務器控制器(電話墊)的另一台主機上。
使用ptrace,進程內存鏡像將被序列化,並與進程狀態和日誌一起傳輸到另一台主機。 該API還允許您將進程狀態保存到文件中並通過該文件進行還原。