精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Mercury為高性能計算啟用遠程過程調用(RPC)

存儲 網絡
我們首先在第二部分討論相關工作,然后在第三部分討論構建接口的網絡抽象層,以及為高效傳輸小型和大型數據而定義的架構。 第 IV 節概述了 API 并展示了其支持使用流水線技術的優勢。 然后我們描述了我們接口的網絡傳輸插件的開發以及性能評估結果。 第五節提出結論和未來的工作方向

摘要

遠程過程調用(RPC)是分布式服務廣泛使用的一種技術。 這種技術現在越來越多地用于高性能計算 (HPC) 的上下文中,它允許將例程的執行委托給遠程節點,這些節點可以留出并專用于特定任務。 然而,現有的 RPC 框架采用基于套接字的網絡接口(通常在 TCP/IP 之上),這不適合 HPC 系統,因為此 API 通常不能很好地映射到這些系統上使用的本機網絡傳輸,從而導致網絡性能較低。 此外,現有的 RPC 框架通常不支持處理大數據參數,例如在讀取或寫入調用中發現的參數。我們在本文中提出了一個異步 RPC 接口,專門設計用于 HPC 系統,允許參數和執行請求的異步傳輸和直接支持大數據參數。 該接口是通用的,允許傳送任何函數調用。 此外,網絡實現是抽象的,允許輕松移植到未來的系統并有效使用現有的本地傳輸機制

1、簡介

當在異構環境中工作時,工程師或科學家能夠分配應用程序工作流程的各個步驟通常非常有用; 尤其是在高性能計算中,通常會看到嵌入不同類型資源和庫的系統或節點,這些資源和庫可以專用于特定任務,例如計算、存儲或分析和可視化。 遠程過程調用 (RPC) [1] 是一種遵循客戶端/服務器模型并允許對遠程資源透明地執行本地調用的技術。 它包括將本地函數參數序列化到內存緩沖區并將該緩沖區發送到遠程目標,遠程目標反過來反序列化參數并執行相應的函數調用。 實現該技術的庫可以在各種領域中找到,例如使用 Google Protocol Buffers [2] 或 Facebook Thrift [3] 的 Web 服務,或者使用 GridRPC [4] 的網格計算等領域。 RPC 也可以使用更面向對象的方法和框架來實現,例如 CORBA [5] 或 Java RMI [6],其中抽象對象和方法可以分布在一系列節點或機器上。

但是,在 HPC 系統上使用這些標準和通用的 RPC 框架有兩個主要限制:1. 無法利用本地傳輸機制有效地傳輸數據,因為這些框架主要是在 TCP/IP 協議之上設計的; 2. 并且無法傳輸非常大量的數據,因為 RPC 接口施加的限制通常是兆字節(MB)的數量級。 此外,即使沒有強制限制,通常也不鼓勵通過 RPC 庫傳輸大量數據,主要是由于序列化和編碼帶來的開銷,導致數據在到達遠程節點之前被多次復制。

本論文組織如下: 我們首先在第二部分討論相關工作,然后在第三部分討論構建接口的網絡抽象層,以及為高效傳輸小型和大型數據而定義的架構。 第 IV 節概述了 API 并展示了其支持使用流水線技術的優勢。 然后我們描述了我們接口的網絡傳輸插件的開發以及性能評估結果。 第五節提出結論和未來的工作方向

2、相關工作

網絡文件系統 (NFS) [7] 是使用 RPC 處理大量數據傳輸的一個很好的例子,因此非常接近在 HPC 系統上使用 RPC。 它利用 XDR [8] 序列化任意數據結構并創建獨立于系統的描述,然后將生成的字節流發送到遠程資源,遠程資源可以反序列化并從中取回數據。 它還可以使用單獨的傳輸機制(在最新版本的 NFS 上)通過 RDMA 協議傳輸數據,在這種情況下,數據在 XDR 流之外進行處理。 我們在本文中介紹的接口遵循類似的原則,但另外直接處理批量數據。 它還不限于使用 XDR 進行數據編碼,這可能會影響性能,尤其是當發送方和接收方共享一個公共系統架構時。 通過提供網絡抽象層,我們定義的 RPC 接口使用戶能夠使用小消息或遠程內存訪問 (RMA) 類型的傳輸有效地發送小數據和大數據,這些傳輸完全支持最近 HPC 系統上存在的單邊語義。 此外,所有呈現的接口都是非阻塞的,因此允許異步操作模式,防止調用者等待一個操作執行后再發出另一個操作

I/O 轉發可擴展性層 (IOFSL) [9] 是另一個項目,本文介紹的部分工作基于該項目。 IOFSL 使用 RPC 專門轉發 I/Ocalls。 它定義了一個名為 ZOIDFS 的 API,它在本地序列化函數參數并將它們發送到遠程服務器,在那里它們可以依次映射到文件系統特定的 I/O 操作。 擴展 IOFSL 中已經存在的工作的主要動機之一是能夠不僅發送一組特定的調用(如通過 ZOIDFS API 定義的調用),而且能夠發送各種調用,這些調用可以動態和通用地定義。 同樣值得注意的是,IOFSL 建立在并行虛擬文件系統 (PVFS) [11] 中使用的 BMI [10] 網絡傳輸層之上。它允許支持動態連接和容錯,還定義了兩種類型的消息傳遞, 意外和預期(在第 III-B 節中描述),可以啟用異步操作模式。 然而,BMI 在其設計中受到限制,因為它沒有直接公開顯式實現從客戶端內存到服務器內存的 RDMA 操作所需的 RMA 語義,這可能是一個問題和性能限制(使用 RMA 方法的主要優點在第 III 節中描述 - B). 此外,雖然 BMI 不提供單邊操作,但它確實提供了一組相對較高級別的網絡操作。 這使得將 BMI 移植到新的網絡傳輸(例如 CrayGemini 互連 [12])成為一項重要的工作,并且比它應該更耗時,因為在我們的上下文中實現 RPC 只需要 BMI 提供的功能的一個子集

另一個項目,桑迪亞國家實驗室的 NEtworkScalable 服務接口 (Nessie) [13] 系統提供了一個簡單的 RPC 機制,最初是為 LightweightFile Systems [14] 項目開發的。 它提供了一個異步RPC的解決方案,主要是為了重疊計算和I/O而設計的。 Nessie 的 RPC 接口直接依賴于 Sun XDR 解決方案,該解決方案主要設計用于異構架構之間的通信,即使實際上所有高性能計算系統都是同構的。Nessie 提供了一種單獨的機制來處理批量數據傳輸,它可以使用 RDMA 從一個高效地傳輸數據 內存到另一個,并支持多種網絡傳輸。 Nessie 客戶端使用 RPC 接口將控制消息推送到服務器。 此外,Nessie 公開了一個不同的、單方面的 API(類似于 Portals [15]),用戶可以使用它在客戶端和服務器之間推送或拉取數據。Mercury 不同,因為它的接口本身也支持 RDMA,可以透明地處理 通過自動生成代表遠程大數據參數的抽象內存句柄為用戶提供批量數據,這些句柄更易于操作,不需要用戶做任何額外的工作。如果需要,Mercury 還提供對數據傳輸的細粒度控制(例如,實現流水線)。 此外,Mercury 提供了比 Nessie 更高級的接口,大大減少了實現 RPC 功能所需的用戶代碼量

另一種類似的方法可以在 Decoupledand Asynchronous Remote Transfers (DART) [16] 項目中看到。雖然 DART 未定義為顯式 RPC 框架,但它允許使用客戶端/服務器模型從計算節點上運行的應用程序傳輸大量數據 HPC 系統到本地存儲或遠程位置,以實現遠程應用程序監控、數據分析、代碼耦合和數據歸檔。 DART 試圖滿足的關鍵要求包括最小化應用程序的數據傳輸開銷、實現高吞吐量、低延遲數據傳輸以及防止數據丟失。 為了實現這些目標,DART 的設計使得專用節點(即與應用程序計算節點分離)使用 RDMA 從計算節點的內存中異步提取數據。 通過這種方式,從應用程序計算節點到專用節點的昂貴數據 I/O 和流操作被卸載,并允許應用程序在數據傳輸的同時進行。雖然使用 DART 是不透明的,因此需要用戶發送明確的請求,但有 在我們的網絡抽象層中集成此類框架并沒有固有限制,因此將其包裝在我們定義的 RPC 層中,從而允許用戶在其支持的平臺上使用 DART 傳輸數據。

3、架構

如前一節所述,Mercury 的接口依賴于三個主要組件:網絡抽象層NA、能夠以通用方式處理調用的 RPC 接口和批量數據接口(Bulk),它補充了 RPC 層,旨在輕松傳輸大量數據 通過抽象內存段的數據量。 我們在本節中介紹了整體架構及其每個組件。

A概述

RPC 接口遵循客戶端/服務器架構。 如圖 1 中所述,發出遠程調用會導致不同的步驟,具體取決于與調用關聯的數據的大小。 我們區分兩種類型的傳輸:包含典型函數參數的傳輸,通常很小,稱為元數據(metadata),以及描述大量數據的函數參數的傳輸,稱為批量數據(bulk)。

通過接口發送的每個 RPC 調用都會導致函數參數的序列化 進入內存緩沖區(其大小通常限制為 1 KB,具體取決于互連),然后使用網絡抽象層接口將其發送到服務器。 關鍵要求之一是在傳輸的任何階段限制內存副本,尤其是在傳輸大量數據時。 因此,如果發送的數據很小,它會被序列化并使用小消息發送,否則將在同一條小消息中將要傳輸的內存區域的描述發送到服務器,然后服務器可以開始拉取數據(如果數據 是遠程調用的輸入)或推送數據(如果數據是遠程調用的輸出)。 限制對服務器的初始 RPC 請求的大小也有助于可伸縮性,因為它避免了在大量客戶端同時訪問同一服務器的情況下不必要的服務器資源消耗。 根據所需的控制程度,所有這些步驟都可以由 Mercury 透明地處理或直接暴露給用戶

圖片

圖1, 架構概述:每一方都使用一個RPC處理器來序列化和反序列化通過接口發送的參數。調用具有較小參數的函數導致使用網絡抽象層暴露的短消息機制,而包含大數據參數的函數額外使用RMA機制

B. 網絡抽象層

網絡抽象層的主要目的是顧名思義,抽象暴露給用戶的網絡協議,允許通過插件系統集成多種傳輸。 這種架構強加的一個直接后果是提供一個輕量級的接口,為此只需要合理的努力來實現一個新的插件。 接口本身必須定義三種主要類型的數據傳輸機制:意外消息傳遞unexpect預期消息傳遞expected遠程內存訪問rma;以及在客戶端和服務器之間動態建立連接所需的額外設置(盡管動態連接可能并不總是可行,具體取決于底層 使用的網絡實現)。意外和預期的消息傳遞僅限于短消息的傳輸,并使用雙向方法。出于性能原因,最大消息大小由互連決定,可以小至幾千字節。 意外消息傳遞的概念用于其他通信協議,例如 BMI [10]。 通過網絡抽象層發送意外消息不需要在完成之前發布匹配的接收。 通過使用這種機制,客戶端不會被阻塞,并且服務器可以在每次發出意外接收時獲取已發布的新消息。 預期消息和意外消息之間的另一個區別是意外消息可以從任何遠程源到達,而預期消息需要知道遠程源。遠程內存訪問 (RMA) 接口允許訪問遠程內存塊(連續和非連續)。 在大多數單向接口和 RDMA 協議中,內存必須先注冊到網絡接口控制器 (NIC) 才能使用。 在網絡抽象層中定義接口的目的是創建一級抽象并定義與大多數 RMA 協議兼容的 API。 將內存段注冊到 NIC 通常會導致創建該段的句柄,其中包含虛擬地址信息等。創建的本地句柄需要在遠程節點可以開始放置或獲取操作之前傳達給遠程節點。 網絡抽象負責確保這些內存句柄可以序列化并通過網絡傳輸。交換句柄后,可以啟動非阻塞放置或獲取。 在大多數互連上,put 和 get 將映射到互連提供的特定 API 提供的 put 和 get 操作。 網絡抽象接口旨在允許在雙向發送和接收網絡協議(例如僅支持雙向消息傳遞方法的 TCP/IP)之上模擬單向傳輸。有了這個網絡抽象層,Mercury 可以很容易地成為 移植以支持新的互連。 網絡抽象提供的相對有限的功能(例如,沒有無限大小的雙向消息)確保接近本機性能

C. RPC 接口和元數據

發送一個只涉及小數據的調用使用了 III-B 中定義的意外/預期消息傳遞。 然而,在更高的層次上,向服務器發送函數調用具體意味著客戶端必須知道如何在開始發送信息之前對輸入參數進行編碼,并且在收到服務器的響應后知道如何解碼輸出參數。 在服務器端,服務器還必須知道在收到 RPC 請求時要執行什么,以及如何對輸入和輸出參數進行解碼和編碼。 描述函數調用和編碼/解碼參數的框架是我們接口操作的關鍵

圖片

圖 2:RPC 調用的異步執行流程。 接收緩沖區是預先發布的,允許客戶端在遠程執行調用并發回響應的同時完成其他工作

其中一個要點是能夠支持一組可以以通用方式發送到服務器的函數調用,從而避免一組硬編碼例程的限制。通用框架如圖 2 所示。在初始化階段, 客戶端和服務器通過使用映射到每個操作的唯一 ID 的唯一函數名稱注冊編碼和解碼函數,由客戶端和服務器共享。 服務器還注冊了在通過函數調用接收到操作 ID 時需要執行的回調。 要發送不涉及批量數據傳輸的函數調用,客戶端將輸入參數與該操作 ID 一起編碼到緩沖區中,并使用非阻塞的非預期消息傳遞協議將其發送到服務器。 為了確保完全異步,用于從服務器接收響應的內存緩沖區也由客戶端預先發布。 出于效率和資源消耗的原因,這些消息的大小受到限制(通常為幾千字節)。但是,如果元數據超過意外消息的大小,客戶端將需要在單獨的消息中傳輸元數據,從而透明地使用批量數據 III-D 中描述的接口,用于向服務器公開額外的元數據

當服務器收到一個新的請求 ID 時,它會查找相應的回調、解碼輸入參數、執行函數調用、對輸出參數進行編碼并開始將響應發送回客戶端。 將響應發送回客戶端也是非阻塞的,因此,在接收新的函數調用時,服務器還可以測試響應請求列表以檢查它們是否完成,并在操作完成時釋放相應的資源。 一旦客戶端知道已經收到響應(使用等待/測試調用)并且函數調用已經遠程完成,它就可以解碼輸出參數和用于傳輸的免費資源。有了這個機制,它 變得易于擴展以處理大量數據

D. 大塊數據接口

除了前面的接口,一些函數調用可能需要傳輸更大量的數據。 對于這些函數調用,使用了批量數據接口,它建立在網絡抽象層中定義的遠程內存訪問協議之上。 只有 RPC 服務器啟動單向傳輸,以便它可以在控制數據流的同時保護其內存免受并發訪問。

圖片

如圖 3 中所述,批量數據傳輸接口使用單向通信方法。 RPC 客戶端通過創建批量數據描述符(包含虛擬內存地址信息、正在公開的內存區域的大小以及可能取決于底層網絡實現的其他參數)向 RPC 服務器公開內存區域。 然后可以將批量數據描述符序列化并與 RPC 請求參數一起發送到 RPC 服務器(使用 III-C 節中定義的 RPC 接口)。 當服務器對輸入參數進行解碼時,它反序列化批量數據描述符并獲取必須傳輸的內存緩沖區的大小

在RPC請求消耗大數據參數的情況下,RPC服務器可能會分配需要接收的數據大小的緩沖區,通過創建批量數據塊描述符暴露其本地內存區域并發起異步讀取/ 獲取對該內存區域的操作。 RPC 服務器然后等待/測試操作的完成,并在數據完全接收后執行調用(如果執行調用支持它,則部分接收)。 然后將響應(即調用的結果)發送回 RPC 客戶端并釋放內存句柄

通過此過程傳輸數據對用戶來說是透明的,尤其是因為 RPC 接口還可以負責序列化/反序列化內存句柄以及其他參數。 當必須傳輸非連續的內存段時,這一點尤為重要。 在這兩種情況下,內存段都會自動注冊到 RPC 客戶端,并由創建的內存句柄抽象出來。 然后內存句柄與 RPC 函數的參數一起序列化,并使用非連續內存區域傳輸大數據,因此導致與上述相同的過程。 請注意,在這種情況下,句柄可能是可變大小的,因為它可能包含更多信息,并且還取決于可以支持直接注冊內存段的底層網絡實現

IV.評估

先前定義的體系結構使通用 RPC 調用能夠與句柄一起傳送,這些句柄可以在需要批量數據傳輸時描述連續和非連續的內存區域。 我們將在本節介紹如何利用此體系結構來構建可以輕松按需請求數據塊的流水線機制。 流水線批量數據傳輸流水線傳輸是一個典型的用例,當人們想要重疊通信和執行時。 在我們描述的架構中,請求處理大量數據會導致從 RPC 客戶端向 RPC 服務器發送 RPC 請求以及批量數據傳輸。

A. 流水線批量數據傳輸

在一個常見的用例中,服務器可能會在執行請求的調用之前等待接收到全部數據。 然而,通過流水線傳輸,實際上可以在數據傳輸時開始處理數據,避免為整個 RMA 傳輸支付延遲成本。 請注意,盡管我們在下面的示例中重點關注這一點,但如果 RPC 服務器沒有足夠的內存來處理需要發送的所有數據,使用此技術也可能特別有用,在這種情況下,它還需要在處理時傳輸數據

RPC 客戶端代碼的簡化版本如下所示

#define BULK_NX 16
#define BULK_NY 128

int main(int argc, char *argv[])
{
hg_id_t rpc_id;
write_in_t in_struct;
write_out_t out_struct;
hg_request_t rpc_request;
int buf[BULK_NX][BULK_NY];
hg_bulk_segment_t segments[BULK_NX];
hg_bulk_t bulk_handle = HG_BULK_NULL;

/* Initialize the interface */
[...]
/* Register RPC call */
rpc_id = HG_REGISTER("write",
write_in_t, write_out_t);

/* Provide data layout information */
for (i = 0; i < BULK_NX ; i++) {
segments[i].address = buf[i];
segments[i].size = BULK_NY * sizeof(int);
}

/* Create bulk handle with segment info */
HG_Bulk_handle_create_segments(segments,
BULK_NX, HG_BULK_READ_ONLY, &bulk_handle);

/* Attach bulk handle to input parameters */
[...]
in_struct.bulk_handle = bulk_handle;

/* Send RPC request */
HG_Forward(server_addr, rpc_id,
&in_struct, &out_struct, &rpc_request);

/* Wait for RPC completion and response */
HG_Wait(rpc_request, HG_MAX_IDLE_TIME,
HG_STATUS_IGNORE);

/* Get output parameters */
[...]
ret = out_struct.ret;

/* Free bulk handle */
HG_Bulk_handle_free(bulk_handle);
/* Finalize the interface */
[...]
}

客戶初始化時,它會注冊RPC調用它想要發送。 因為此調用涉及非連續的批量數據轉換器,所以記憶段描述了創建和注冊的內存區域。 由此產生的Bulk_handle Isthen與其他CallParameter一起傳遞給HG_Forward調用。 然后,可以在請求完成后等待響應并免費的thebulk句柄(將來也會發送通知可能允許較早的散裝句柄,因此可以取消內存的內存)。管道上的機制發生在服務器上。 ,要照顧批量轉移。 管道本身具有HEREA固定管道尺寸和管道緩沖區大小。 RPC服務器代碼簡化了

#define PIPELINE_BUFFER_SIZE 256
#define PIPELINE_SIZE 4

int rpc_write(hg_handle_t handle)
{
write_in_t in_struct;
write_out_t out_struct;
hg_bulk_t bulk_handle;
hg_bulk_block_t bulk_block_handle;
hg_bulk_request_t bulk_request[PIPELINE_SIZE];
void *buf;
size_t nbytes, nbytes_read = 0;
size_t start_offset = 0;

/* Get input parameters and bulk handle */
HG_Handler_get_input(handle, &in_struct);
[...]
bulk_handle = in_struct.bulk_handle;

/* Get size of data and allocate buffer */
nbytes = HG_Bulk_handle_get_size(bulk_handle);
buf = malloc(nbytes);

/* Create block handle to read data */
HG_Bulk_block_handle_create(buf, nbytes,
HG_BULK_READWRITE, &bulk_block_handle);

/* Initialize pipeline and start reads */
for (p = 0; p < PIPELINE_SIZE; p++) {
size_t offset = p * PIPELINE_BUFFER_SIZE;
/* Start read of data chunk */
HG_Bulk_read(client_addr, bulk_handle,
offset, bulk_block_handle, offset,
PIPELINE_BUFFER_SIZE, &bulk_request[p]);
}

while (nbytes_read != nbytes) {
for (p = 0; p < PIPELINE_SIZE; p++) {
size_t offset = start_offset +
p * PIPELINE_BUFFER_SIZE;
/* Wait for data chunk */
HG_Bulk_wait(bulk_request[p],
HG_MAX_IDLE_TIME, HG_STATUS_IGNORE);
nbytes_read += PIPELINE_BUFFER_SIZE;

/* Do work (write data chunk) */
write(buf + offset, PIPELINE_BUFFER_SIZE);

/* Start another read */
offset += PIPELINE_BUFFER_SIZE * 51 PIPELINE_SIZE;
if (offset < nbytes) {
HG_Bulk_read(client_addr,
bulk_handle, offset,
bulk_block_handle, offset,
PIPELINE_BUFFER_SIZE,
&bulk_request[p]);
} else {
/* Start read with remaining piece */
}
}
start_offset += PIPELINE_BUFFER_SIZE
* PIPELINE_SIZE;
}

/* Free block handle */
HG_Bulk_block_handle_free(bulk_block_handle);
free(buf);

/* Start sending response back */
[...]
out_struct.ret = ret;
HG_Handler_start_output(handle, &out_struct);
}

int main(int argc, char *argv[])
{
/* Initialize the interface */
[...]
/* Register RPC call */
HG_HANDLER_REGISTER("write", rpc_write,
write_in_t, write_out_t);

while (!finalized) {
/* Process RPC requests (non-blocking) */
HG_Handler_process(0, HG_STATUS_IGNORE);
}

/* Finalize the interface */
[...]
}

每個RPC服務器初始化后,都必須繞過HG_HANDLER_PROCESS調用,該調用將等待新的RPCRequests并執行相應的注冊回調(在同一線程或新線程中取決于用戶需求)。 必經請求的請求,用于獲取要傳輸的數據的總尺寸的Bulk_handle參數可以分配適當大小的緩沖區并啟動批量的DataTransfers。 在此示例中,管道尺寸設置為4,并且Pipeline緩沖區大小設置為256,這意味著啟動了4個256個字節的RmareQuests。 然后,可以等待第一個256個字節到達并進行處理。 當它處理時,其他零件可能會到達。 一旦一件被處理了一件,就開始了iSAT階段4的新的RMA轉移,并且可以等待下一個件,然后對其進行處理。 請注意,雖然在客戶端上注冊的內存區域是不合格的,但hg_bulk_read呼叫theserver將其顯示為連續區域,簡化了服務器代碼。 此外,可以給出邏輯偏移(相對于數據的開頭)單獨移動數據片,而大量數據接口將映射從連續邏輯偏移到非連接的客戶端內存區域。我們繼續此過程,直到所有過程 數據已被讀取 /處理,響應(即功能調用的結果)可以發送回。 同樣,我們僅通過調用HG_HANDLER_START_OUTPUT調用來開始發送響應,并且僅通過調用HG_HANDLER_PROCESS來測試其完成,在這種情況下,與響應相關的資源將受到影響。 請注意,所有函數都支持異步執行,如果需要,可以在事件驅動的代碼中使用Mercury(HG)

B.網絡插件和測試環境

截至本文撰寫的日期已經開發了兩個插件,以說明網絡抽象層的功能。 此時,尚未優化插件的性能。 一個建立在BMI頂部[10]。 但是,AS我們已經在第二節中指出的是,BMI并未有效利用已定義的網絡行動層和單方面的批量數據傳輸結構。 另一個建立在MPI [17]的頂部,該[17]僅提供完整的RMA語義[18]最近的MPI3 [19]。 許多MPI實現,特別是已經安裝的機器的Thosedelas,尚無ProvideAll MPI3功能。 由于尚未將BMI移植到室內HPC系統,以說明功能和測量性能結果,因此我們僅考慮MPI插件本文。 該插件能夠在現有的HPCSystems上運行,僅限于MPI-2功能(例如Cray Systems),在兩面消息的頂部實現批量數據傳輸。在實踐中,這意味著對于每個批量數據傳輸, 需要將控制消息發送到theclient,以請求發送或接收數據。 然后,可以使用進度線程輸入進度功能來實現轉移的進度。對于測試,我們使用兩個不同的HPC系統。 onis是一個Infiniband QDR 4X群集,帶有mvapich [20] 1.8.1,另一個是帶有Cray MPT的Cray Xe6 [21] 5.6.0

C. 性能評估

圖片

圖片


作為第一個實驗的性能評估,我們測量了為空函數(即,即將返回的函數)所花費的小時RPC調用(沒有任何批量數據傳輸)。 在Cray XE6機器上,測量了20個RPC調用的雜種時間,每個呼叫花費了23 μ。 但是,正如前面指出的那樣,大多數HPC系統都是均勻的,因此不需要XDR提供的數據可移植性。 禁用Xdrencoding(改為執行簡單的存儲器副本)時,THETIME會降至20 μs。 這種不可忽略的改進(15%)證明了針對HPC環境設計RPC框架的好處。 第二個實驗包括測試以前在客戶端和一臺服務器之間解釋的批量數據傳輸的管道技術傳輸。 如表I所示,在cray xe6訪問轉移時,當請求刀片已經完成時,在進行其他管道階段時,可以特別有效地效率,從而使我們獲得很高的帶寬。 但是,該系統上的高注入帶寬使得很難為小數據包(例如,由于單側功能的模擬,該系統的批量數據控制消息)很難獲得良好的性能),特別是當數據流不連續的情況下

最后,我們評估了RPC Serverby的可伸縮性,在增加客戶端時數時評估了總數據吞吐量。 圖4和5分別顯示了AQDR Infiniband系統(使用MVAPICH)和CRAY XE6SYSTEM的結果。 在這兩種情況下,部分由于服務器sidebulk數據流控制機制,HG顯示出卓越的性能,并且吞吐量增加或剩余stableas,并發客戶的數量增加。 為了進行比較,顯示了每個系統上的點消息帶寬。在Infiniband系統中,Mercury達到了最大網絡帶寬的70%。 考慮到HG時間代表了數據傳輸的RPC調用,這是一個很好的結果,與發送OSU基準的Asingle消息的時間相比。 在Cray系統上,性能不佳(約占峰值的40%)。 我們期望這主要是由于該系統的較小信息性能,以及由單方面仿真引起的額外控制措施。 然而,低性能也可能是由系統限制引起的,考慮到 Nessie 的類似操作(讀取)[22] 的性能顯示相同的低帶寬,即使它通過繞過 MPI 并使用真正的 RDMA interconnect 的原生 uGNI API

V.結論和未來的工作

在本文中,我們介紹了Mercury框架。 Mercury專門設計用于在高性能計算環境中提供RPC服務。 Mercury構建了與當代HPC網絡環境的功能相匹配的小型,易于移植的網絡抽象層。 與大多數其他RPC框架不同,Mercury為處理遠程呼叫的大型數據參數提供了直接支持。 Mercury的網絡協議旨在擴展到數千個客戶。 我們通過實施遠程寫入功能(包括大型數據參數的管道)來證明框架的力量。 我們隨后在兩個不同的 HPC 系統上評估了我們的實施,展示了單客戶端性能和多客戶端可擴展性。

在Mercury提供的高性能,便攜式,通用的RPC功能的可用性中,IOFSL可以通過替換內部,硬codediofsl代碼來替換和現代化 通過水Mercury Call。 由于網絡抽象的層面頂部已經構建了HG的頂部,因此已經使用BMI Fornetwork連接性支持IOFSL Continueto的現有部署,同時利用了Mercury的NetworkProtocol的改進性可伸縮性和性能。 RPC呼叫。 取消對節點或網絡可能失敗的彈性非環境很重要。 未來的工作將包括對取消的支持。雖然 Mercury 已經支持高效執行 RPC 調用所需的所有功能,但可以進一步減少每次調用所需的用戶代碼量。 Mercury 的未來版本將提供一組預處理器宏,通過自動生成盡可能多的樣板代碼來減少用戶的工作量, 網絡抽象層當前具有用于BMI,MPI-2和MPI-3的插件。 但是,作為在客戶端/服務器上下文中使用的MPI RMA功能[23],我們打算增加對Infiniband網絡的支持,以及Cray XT andibm BG/P和Q網絡

致謝,本文介紹的工作得到了 Exascale FastForward 項目的支持,LLNS 分包合同號。 B599860,由美國能源部科學辦公室高級科學計算機研究辦公室根據合同 DE-AC02-06CH11357 提供。

參考

論文鏈接: https://www.mcs.anl.gov/papers/P4082-0613_1.pdf。

[1] A. D. Birrell and B. J. Nelson, “Implementing Remote Procedure Calls,” ACM Trans. Comput. Syst., vol. 2, no. 1, pp. 39–59, Feb. 1984。

[2] Google Inc, “Protocol Buffers,” 2012. [Online]. Available: https://developers.google.com/protocol-buffers。

[3] M. Slee, A. Agarwal, and M. Kwiatkowski, “Thrift: Scalable CrossLanguage Services Implementation,” 2007。

[4] K. Seymour, H. Nakada, S. Matsuoka, J. Dongarra, C. Lee, and H. Casanova, “Overview of GridRPC: A Remote Procedure Call API for Grid Computing,” in Grid Computing—GRID 2002, ser. Lecture Notes in Computer Science, M. Parashar, Ed. Springer Berlin Heidelberg, 2002, vol. 2536, pp. 274–278。

[5] Object Management Group, “Common Object Request Broker Architecture (CORBA),” 2012. [Online]. Available: http://www.omg.org/ spec/CORBA。

[6] A. Wollrath, R. Riggs, and J. Waldo, “A Distributed Object Model for the JavaTMSystem,” in Proceedings of the 2nd conference on USENIX Conference on Object-Oriented Technologies (COOTS) - Volume 2, ser. COOTS’96. Berkeley, CA, USA: USENIX Association, 1996, pp.17–17。

[7] R. Sandberg, D. Golgberg, S. Kleiman, D. Walsh, and B. Lyon, “Innovations in internet working,” C. Partridge, Ed. Norwood, MA, USA: Artech House, Inc., 1988, ch. Design and Implementation of the Sun Network Filesystem, pp. 379–390。

[8] Sun Microsystems Inc, “RFC 1014—XDR: External Data Representation Standard,” 1987. [Online]. Available: http://tools.ietf.org/html/rfc1014。

[9] N. Ali, P. Carns, K. Iskra, D. Kimpe, S. Lang, R. Latham, R. Ross, L. Ward, and P. Sadayappan, “Scalable I/O forwarding framework for high-performance computing systems,” in IEEE International Conference on Cluster Computing and Workshops 2009, ser. CLUSTER ’09, 2009, pp. 1–10。

[10] P. Carns, I. Ligon, W., R. Ross, and P. Wyckoff, “BMI: a networkabstraction layer for parallel I/O,” in 19th IEEE International Parallel and Distributed Processing Symposium, 2005。

[11] P. H. Carns, W. B. Ligon, III, R. B. Ross, and R. Thakur, “PVFS: A Parallel File System for Linux Clusters,” in In Proceedings of the 4th Annual Linux Showcase and Conference. USENIX Association, 2000, pp. 317–327。

[12] R. Alverson, D. Roweth, and L. Kaplan, “The Gemini System Interconnect,” in IEEE 18th Annual Symposium on High-Performance Interconnects, ser. HOTI, 2010, pp. 83–87。

[13] J. Lofstead, R. Oldfield, T. Kordenbrock, and C. Reiss, “Extending Scalability of Collective IO Through Nessie and Staging,” in Proceedings of the Sixth Workshop on Parallel Data Storage, ser. PDSW ’11. New York, NY, USA: ACM, 2011, pp. 7–12。

[14] R. Oldfield, P. Widener, A. Maccabe, L. Ward, and T. Kordenbrock,“Efficient Data-Movement for Lightweight I/O,” in Cluster Computing,2006 IEEE International Conference on, 2006, pp. 1–9。

[15] R. Brightwell, T. Hudson, K. Pedretti, R. Riesen, and K. Underwood, “Implementation and Performance of Portals 3.3 on the Cray XT3,” in Cluster Computing, 2005. IEEE International, 2005, pp. 1–10。

[16] C. Docan, M. Parashar, and S. Klasky, “Enabling High-speed Asynchronous Data Extraction and Transfer Using DART,” Concurr. Comput. : Pract. Exper., vol. 22, no. 9, pp. 1181–1204, Jun. 2010。

[17] W. Gropp, E. Lusk, and R. Thakur, Using MPI-2: Advanced Features of the Message-Passing Interface. Cambridge, MA: MIT Press, 1999。

[18] W. Gropp and R. Thakur, “Revealing the Performance of MPI RMA Implementations,” in Recent Advances in Parallel Virtual Machine and Message Passing Interface, ser. Lecture Notes in Computer Science, F. Cappello, T. Herault, and J. Dongarra, Eds. Springer Berlin / Heidelberg, 2007, vol. 4757, pp. 272–280。

[19] “Message Passing Interface Forum,” September 2012, MPI-3: Extensions to the message-passing interface. [Online]. Available: http://www.mpi-forum.org/docs/docs.html。

[20] The Ohio State University, “MVAPICH: MPI over InfiniBand, 10GigE/iWARP and RoCE.” [Online]. Available: http://mvapich.cse. ohio-state.edu/index.shtml。

[21] H. Pritchard, I. Gorodetsky, and D. Buntinas, “A uGNI-Based MPICH2 Nemesis Network Module for the Cray XE,” in Recent Advances in the Message Passing Interface, ser. Lecture Notes in Computer Science, Y. Cotronis, A. Danalis, D. Nikolopoulos, and J. Dongarra, Eds. Springer Berlin / Heidelberg, 2011, vol. 6960, pp. 110–119。

[22] R. A. Oldfield, T. Kordenbrock, and J. Lofstead, “Developing integrated data services for cray systems with a gemini interconnect,” Sandia National Laboratories, Tech. Rep., 2012。

[23] J. A. Zounmevo, D. Kimpe, R. Ross, and A. Afsahi, “On the use of MPI in High-Performance Computing Services,” p. 6, 2013。

本文轉載自微信公眾號「云原生云」,可以通過以下二維碼關注。轉載本文請聯系云原生云公眾號。

責任編輯:姜華 來源: 云原生云
相關推薦

2015-06-09 13:31:29

Hadoop RPC遠源碼解析

2009-06-15 10:00:08

FluorineFx庫Silverlight

2022-06-04 11:12:12

RPCREST協議

2024-08-01 17:20:55

2019-02-21 10:35:44

Windows10遠程過程調用錯誤

2022-08-15 08:01:35

微服務框架RPC

2024-06-20 08:06:51

2009-08-18 14:41:54

高性能計算HPC曙光

2022-09-14 14:41:21

RPC框架RPC協議

2012-05-04 10:21:52

亞馬遜彈性計算云EC2高性能計算

2012-05-14 17:22:38

ibmdw

2020-01-16 10:48:21

HTTPRPC協議

2019-06-17 08:21:06

RPC框架服務

2025-07-30 02:11:00

SpringgRPC代碼

2022-10-19 14:30:59

2024-04-25 10:09:02

2019-03-01 11:03:22

Lustre高性能計算

2021-10-13 08:21:52

Java websocket Java 基礎

2024-05-31 08:45:24

2014-09-02 10:43:45

RedisRPC
點贊
收藏

51CTO技術棧公眾號

91久久精品无码一区二区| 中文字幕人妻熟女人妻a片| 成人免费在线观看| 麻豆高清免费国产一区| 北条麻妃99精品青青久久| 黄色a级三级三级三级| 成人黄色动漫| 亚洲欧美怡红院| 国产视频一区二区三区四区| 中文精品久久久久人妻不卡| 国产又粗又硬又长又爽| 电影亚洲精品噜噜在线观看| 中文字幕一区二区在线播放| 国产乱码精品一区二区三区中文 | 综合欧美亚洲日本| 狠狠色伊人亚洲综合网站色 | 欧美xxxxxxxxx| 日韩免费高清在线| 国产美女一区视频| 国产精品久久久久久久浪潮网站 | 国产999精品久久久| 手机在线免费看毛片| 九九视频精品全部免费播放| 精品久久久影院| 国产三级生活片| 午夜精品久久久久久久久久蜜桃| 亚洲制服丝袜一区| 亚洲欧美精品在线观看| 亚洲AV成人无码一二三区在线| 国产一区二区在线免费观看| 国产精品久久久久久久电影| 久久免费激情视频| 最新国产乱人伦偷精品免费网站| 精品国产网站地址| 少妇的滋味中文字幕bd| 免费精品国产的网站免费观看| 日韩欧美一二三| 999这里有精品| 久久xxx视频| 91国偷自产一区二区三区观看| 国产免费黄色av| 国产后进白嫩翘臀在线观看视频| 亚洲欧美电影一区二区| 综合视频免费看| 69久久夜色| 中文av一区二区| 日韩偷拍一区二区| 欧美精品少妇| 久久久久久97三级| 免费在线国产精品| 国产精品秘入口| 国产人妖乱国产精品人妖| 欧美连裤袜在线视频| 日韩大胆人体| 久久青草国产手机看片福利盒子 | av男人的天堂在线| 国产精品无人区| 亚洲成人一区二区三区| 一级日本在线| 综合av第一页| 第九区2中文字幕| 国产盗摄一区二区| 精品国产91久久久久久| 少妇高潮喷水久久久久久久久久| 在线观看爽视频| 色婷婷精品大视频在线蜜桃视频| 午夜欧美福利视频| 欧美成a人片免费观看久久五月天| 欧美美女黄视频| 伊人五月天婷婷| 亚洲精品福利| 日韩av在线网页| 扒开jk护士狂揉免费| 成人羞羞动漫| 日韩视频免费播放| 初高中福利视频网站| 欧美视频精品| 欧美一区二区视频网站| 丰满熟女人妻一区二区三区| 国产 日韩 欧美 综合 一区| 国产手机视频精品| 四虎国产成人精品免费一女五男| 国产精品久久占久久| 欧美成aaa人片免费看| 国产极品在线播放| 久久精品123| 国产这里只有精品| 黄色av中文字幕| 国产亚洲一区字幕| 国产精品无码乱伦| av2020不卡| 在线看一区二区| 国产欧美精品一二三| 精品国产导航| 视频在线一区二区| 日韩aaaaaa| 日韩精品视频网站| 成人免费看片网站| 黄色大片在线看| 一区二区三区高清在线| 日本xxxxxxx免费视频| 欧美成人高清视频在线观看| 337p日本欧洲亚洲大胆色噜噜| 一区二区三区久久久久| 欧美日韩 国产精品| 日本中文字幕不卡免费| 国内精品久久久久久久久久久| 91伊人久久大香线蕉| 日本特级黄色大片| 国产免费不卡| 亚洲成人av中文字幕| 国产亚洲精品久久久久久豆腐| 亚洲激情黄色| 亚洲永久免费观看| jzzjzzjzz亚洲成熟少妇| 亚洲综合色视频| 天天干天天操天天做| 亚洲第一福利社区| 久久免费视频在线| 国产精品久久久久久无人区| 欧美经典一区二区三区| 国产综合av在线| 亚洲三级av| 久久久国产精品视频| 五月婷婷激情五月| 91一区二区在线| 日韩av新片网| 97se亚洲| 久久99精品久久久久久琪琪 | 欧美69视频| 国产精品丝袜久久久久久高清| 台湾av在线二三区观看| 亚洲一区二区精品久久av| xxxx在线免费观看| 四虎成人av| 国产精品专区第二| avtt亚洲| 欧美日韩国产精品成人| 精品一区二区三区蜜桃在线| 手机精品视频在线观看| 欧美日韩国产三区| 日韩电影免费观看高清完整版| 日韩成人在线电影网| 日本一区二区不卡在线| 国产sm精品调教视频网站| 国产日韩欧美大片| 我要色综合中文字幕| 色综合老司机第九色激情 | 国产盗摄女厕一区二区三区| 伊人久久青草| 伊人久久精品| 欧美乱人伦中文字幕在线| 国产按摩一区二区三区| 一区二区三区免费网站| 在线播放av网址| 亚洲每日在线| 蜜桃麻豆91| 国产精品毛片久久久久久久久久99999999 | 少妇人妻互换不带套| 国产精品片aa在线观看| 国产精品999999| 日韩在线免费电影| 91麻豆精品91久久久久久清纯| 玖玖爱这里只有精品| 国产成人精品免费在线| 日韩欧美国产综合在线| 少妇高潮一区二区三区| 国产精品第3页| 久久77777| 精品国产电影一区二区| 黄色在线视频网址| 国产精品久久久久9999吃药| 日韩欧美理论片| 日韩视频一区二区三区在线播放免费观看| 精品国产乱码久久久久久88av| 日韩电影av| 欧美精品在线观看91| 色婷婷在线视频| 在线观看日韩av先锋影音电影院| 久久嫩草捆绑紧缚| 成人精品视频.| 99免费视频观看| 亚洲精品极品少妇16p| 精品卡一卡二| 欧美日韩va| 97视频免费看| 香蕉视频国产在线观看| 精品久久久影院| 中文字幕乱码人妻二区三区| 一区二区三区在线免费| 中文字幕 自拍| 国产麻豆精品在线| caopor在线视频| 国产一区二区中文| 亚洲蜜桃在线| 欧美有码在线| 91精品视频一区| 92国产精品| 欧美日韩成人在线视频| 国产有码在线| 日韩欧美国产综合| 中文字幕777| 午夜av一区二区| 色婷婷在线视频观看| 久久先锋影音av| 少妇熟女视频一区二区三区| 日本sm残虐另类| 欧美老熟妇喷水| 欧美在线1区| 午夜精品视频在线观看一区二区| 粉嫩精品导航导航| 国产综合在线观看视频| 欧美xx视频| 久久免费视频网| 亚洲综合影视| 久久久999国产| 高h视频在线| 亚洲精品一二区| 免费看av毛片| 日韩精品中午字幕| 97超碰人人模人人人爽人人爱| 色就色 综合激情| 亚洲一区 视频| 亚洲综合一区二区精品导航| 国产精品三区在线观看| 国产精品国产精品国产专区不蜜 | 久久人人88| 日韩精品久久一区二区三区| 欧亚精品一区| 激情欧美一区二区三区中文字幕| 亚洲经典视频| 91视频免费进入| 国产色99精品9i| 亚洲综合av影视| 精品久久久久久久久久岛国gif| 国产精品视频99| 成人在线视频播放| 国产精品69久久久久| 日本免费久久| 国产成人免费av电影| 美女写真久久影院| 国产第一区电影| www.26天天久久天堂| 国产精品国语对白| 国产精品麻豆成人av电影艾秋| 国产精品扒开腿做爽爽爽的视频| 欧美黑人粗大| 国产精品美女999| 亚洲国产综合在线观看| 91九色综合久久| 国产精品18| 成人动漫在线观看视频| 第四色中文综合网| 久久国产精品高清| 国产99久久精品一区二区300| 欧美日韩一区在线观看视频| av中字幕久久| 爱爱爱视频网站| 欧美午夜一区二区福利视频| www.亚洲视频.com| 久久99伊人| 波多野结衣天堂| 国产裸体歌舞团一区二区| 精品人妻无码中文字幕18禁| av在线综合网| 亚洲精品午夜视频| 国产精品久久久久一区二区三区| 91精品国产闺蜜国产在线闺蜜| 樱花草国产18久久久久| 久久不卡免费视频| 欧美性猛交xxxx乱大交极品| 中文字幕欧美在线观看| 日韩一区二区精品| 亚洲欧美日韩免费| 在线播放国产一区二区三区| 黄色在线播放网站| 久久免费视频在线| 国产综合色激情| 国产二区不卡| 精品国产一区二区三区噜噜噜| 91社在线播放| 中文在线不卡| 污污网站在线观看视频| 成人av网站免费| 国产黄色片在线| 亚洲国产日韩a在线播放性色| 狠狠狠狠狠狠狠| 日韩无一区二区| 国产一区电影| 欧美激情精品久久久久久久变态| 免费成人美女女| wwwxx欧美| 日韩欧美二区| 18禁免费观看网站| 国产一区二区三区日韩| 中文字幕在线观看的网站| 中文字幕视频一区二区三区久| 日韩黄色三级视频| 欧美猛男男办公室激情| 色视频在线观看福利| 欧美猛男性生活免费| 国产资源一区| 狼狼综合久久久久综合网| 亚洲一区二区日韩| 日韩福利视频在线| 播五月开心婷婷综合| 三级av在线免费观看| 色88888久久久久久影院按摩| 亚洲精品97久久中文字幕| 色av吧综合网| 神马久久资源| 国产一级精品aaaaa看| 在线观看国产精品入口| 牛夜精品久久久久久久| 97aⅴ精品视频一二三区| 欧美成欧美va| 欧美美女视频在线观看| 成人免费在线电影| 日本精品一区二区三区在线播放视频| 91成人噜噜噜在线播放| 正在播放一区二区三区| 日韩激情一二三区| 瑟瑟视频在线观看| 午夜精品爽啪视频| 六月丁香综合网| 欧美成年人网站| 亚洲我射av| 亚洲午夜精品福利| 麻豆精品一区二区| 国产美女永久免费无遮挡| 日韩欧美成人网| 四虎永久在线观看| 97碰碰碰免费色视频| 福利片一区二区| 国产一线二线三线女| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 国产精品高潮呻吟AV无码| 中文字幕欧美日韩精品| av免费在线一区| 色女孩综合网| 美女视频网站久久| 五月天免费网站| 欧美日韩精品是欧美日韩精品| 成年人在线观看视频| 国产精品欧美日韩久久| 成人嫩草影院| 在线观看免费av网址| 亚洲视频综合在线| 国产熟女精品视频| 欧美第一黄色网| 国产精品调教| 欧美一级在线看| 国产日韩三级在线| 亚洲熟妇无码久久精品| 日韩视频免费看| 狂野欧美xxxx韩国少妇| 妞干网视频在线观看| av一本久道久久综合久久鬼色| 亚洲国产精一区二区三区性色| 国产视频亚洲精品| 成人免费视频观看| 国产对白在线播放| 成人一区在线看| 手机看片久久久| 在线性视频日韩欧美| 玖玖玖视频精品| 日日鲁鲁鲁夜夜爽爽狠狠视频97| 久久久久久毛片| 亚洲一卡二卡在线| 久久99热精品| 一本久久青青| 拔插拔插华人永久免费| 亚洲国产cao| 韩国精品视频| 亚洲一区免费网站| 日韩一级精品| 永久免费观看片现看| 日韩一级大片在线观看| 色偷偷偷在线视频播放| 亚洲欧美久久234| www.欧美日韩| 在线观看不卡的av| 国内外成人免费激情在线视频| 中文有码一区| 原创真实夫妻啪啪av| 色综合久久久久网| 黄色精品在线观看| 裸模一区二区三区免费| 九一久久久久久| 在线能看的av| 久久天天躁狠狠躁夜夜爽蜜月| 欧美黑人巨大videos精品| 911福利视频| 欧美香蕉大胸在线视频观看 | 日韩av在线播放网址| www.欧美com| 欧美日韩色一区| 成人免费观看在线观看| 人人妻人人澡人人爽精品欧美一区| 94色蜜桃网一区二区三区|