ゼロコピー 通 信 処 理 を 可 能 にする 実 メモリ 交 換 機 能 の 提 案 門 直 史 1 田 端 利 宏 1 谷 口 秀 夫 1 Ethernet 通 信 環 境 において 1GbEthernet や 10GbEthernet のような 高 速 な 通 信 路 が 普 及 した 結 果, 分 散 処 理 環 境 を 構 成 する 計 算 機 間 のデータ 通 信 処 理 全 体 における プロセッサ 処 理 の 比 率 は 高 くなってきている.このため, 各 パケットに 対 する 送 受 信 処 理, 特 にデータ 複 写 処 理 を 削 減 することが 全 体 の 速 度 向 上 に 大 きな 意 味 を 持 つ. 既 存 手 法 によるゼロコピー 通 信 では,データ 受 信 時 のゼロコピー 通 信 の 実 現 は 難 しい. 本 稿 では, 実 メモリ 交 換 機 能 を 提 案 し,データ 送 信 処 理 に 加 えデータ 受 信 処 理 もゼロコ ピー 通 信 とすることができることを 示 す.また,T ender の 資 源 の 分 離 と 独 立 化 を 利 用 してデータ 送 信 処 理 とデータ 受 信 処 理 においてゼロコピー 通 信 を 実 現 した Ethernet 通 信 機 構 の 実 現 方 式 について 述 べ, 評 価 を 行 う. A proposal of physical memory exchange function to enable Zero-copy communication processing Naofumi Kado, 1 Toshihiro Tabata 1 and Hideo Taniguchi 1 The ratio of the processor processing in the whole data communication processing between a computer constituting distributed processing environment rises as a result that high-speed channels such as 1GbEthernet and 10GbEthernet spread in Ethernet communication environment. Thus reducing data copy processing contribute for total speedup transmission and receiving processing for each packet. As for the realization of Zero-copy communication at the time of the data receiving, it is difficult to be Zero-copy communication by the existing technique. In this paper, we propose physical memory exchange function and show what we can do with Zero-copy communication processing using separation and the independence of resources of T ender. We also describe and evaluate data transmission and receiving a realization method of the Ethernet communication mechanism that realized Zero-copy communication. 1. は じ め に 計 算 機 間 の 通 信 路 の 高 速 化 が 進 み, 計 算 機 間 を 高 速 な 通 信 路 で 結 んだ 分 散 処 理 環 境 の 構 築 が 容 易 となってきている.このような 分 散 処 理 環 境 では, 計 算 機 同 士 の 協 調 した 動 作 のため に,データの 送 受 信 を 行 う 必 要 がある.このため, 各 計 算 機 間 のデータ 通 信 性 能 が 全 体 の 処 理 性 能 に 与 える 影 響 は 大 きく, 分 散 処 理 環 境 下 におけるデータ 通 信 は 高 速 である 必 要 がある. 分 散 処 理 環 境 の 場 合, 遠 隔 の 計 算 機 とのデータ 通 信 を 行 うために Ethernet を 用 いることが 多 い.Ethernet 通 信 環 境 では,1GbEthernet や 10GbEthernet のような 高 速 な 通 信 路 の 普 及 に 伴 い,データ 通 信 処 理 全 体 におけるプロセッサ 処 理 の 比 率 が 高 くなっている.このた め,TCP/IP のプロトコル 処 理 を H/W が 肩 代 わりする TOE(TCP/IP Offload Engine) の 研 究 1),および TCP/IP 通 信 処 理 中 のプロセッサ 処 理 時 間 の 削 減 が 進 められている 2). 一 方 で,シンクライアントシステムやネットワークストレージシステムが 普 及 して 大 容 量 データに 対 する 送 受 信 処 理 が 頻 発 するようになり,メモリ 間 データ 複 写 処 理 によるオー バヘッドが 増 加 している. 大 容 量 データに 対 するデータ 送 受 信 処 理 時 間 を 削 減 する 手 法 の 1 つとしてゼロコピー 通 信 がある.PM/Ethernet 3)4)5) や OPEN-MX 6) といった 高 速 なデー タ 通 信 機 構 では, 送 信 対 象 データを 格 納 した 領 域 を 物 理 メモリにピンダウンしておくこと でカーネル 空 間 を 介 さずに NIC への 直 接 の DMA 転 送 を 可 能 にし,データ 送 信 時 のゼロコ ピー 通 信 を 実 現 している.しかし,データ 受 信 処 理 の 場 合 には 同 様 の 手 法 でゼロコピー 通 信 を 実 現 することはできない.これは, 受 信 したパケットは 最 初 にカーネル 空 間 にマッピング された 受 信 バッファに 格 納 されるためである. ここでは, 実 メモリ 交 換 機 能 を 提 案 する. 実 メモリ 交 換 機 能 は,2 つの 仮 想 メモリ 空 間 上 の 領 域 の 間 で 仮 想 メモリに 割 り 当 てている 実 メモリを 交 換 することでメモリ 間 データ 授 受 を 複 写 レスで 実 現 する 機 能 である.これにより,データ 送 信 時 だけでなくデータ 受 信 時 でも ゼロコピー 通 信 を 実 現 してデータ 送 受 信 処 理 時 間 の 削 減 を 実 現 する. T ender オペレーティングシステム 7) ( 以 下 T ender と 略 す)では,OS の 操 作 する 対 象 を 資 源 として, 分 離 し 独 立 化 している.これにより, 資 源 実 メモリ のように 既 存 OS では 単 体 で 存 在 できない 資 源 を 管 理 して 操 作 することが 可 能 である. 本 稿 では,この 資 源 の 分 離 と 独 立 化 を 利 用 して 実 メモリ 交 換 機 能 を T ender に 実 現 し,データ 送 受 信 ともにゼロ 1 岡 山 大 学 大 学 院 自 然 科 学 研 究 科 Graduate School of Natural Science and Technology, Okayama University 1 c2010 Information Processing Society of Japan
コピー 通 信 を 可 能 とした Ethernet 通 信 機 構 の 実 現 方 式 について 述 べ, 評 価 を 行 う. 2. 既 存 手 法 の 問 題 点 2.1 データ 送 信 時 のゼロコピー 通 信 OPEN-MX では, 送 信 対 象 データのサイズに 応 じてデータ 複 写 による 送 信 とゼロコピー 送 信 を 使 い 分 けている. 送 信 対 象 データが 128 バイト 未 満 の 場 合, 送 信 バッファ(skbuff) のデータ 格 納 領 域 へ 送 信 対 象 データを 複 写 する. 送 信 対 象 データが 129 バイト 以 上 32KB 未 満 の 場 合,ユーザプロセスとカーネルの 共 有 領 域 をピンダウンしておき,この 共 有 領 域 へ 送 信 対 象 データを 複 写 する. 複 写 を 行 った 後, 共 有 領 域 を skbuff にアタッチしてデータ 送 信 を 行 う. 送 信 対 象 データが 32KB 以 上 の 場 合, 送 信 対 象 データを 格 納 する 領 域 に 対 して ピンダウンを 行 い,skbuff にアタッチすることでゼロコピーでの 送 信 を 行 う. SCore では,クラスタを 構 成 する 計 算 機 間 での 高 速 なデータ 通 信 を 提 供 する PM ライブ ラリの 1 つとして PM/Ethernet が 実 装 されている.PM/Ethernet では,データ 送 信 に 利 用 するバッファを 確 保 し,この 送 信 バッファ 上 の 送 信 対 象 メッセージを 構 築 した 後 にデータ 送 信 を 行 う. 上 記 のように, 特 殊 なハードウェアを 利 用 しない 一 般 的 な Ethernet 通 信 環 境 でのゼロコ ピー 通 信 を 可 能 にするために 送 信 対 象 データを 格 納 している 領 域 を 物 理 メモリにピンダウ ンしておき,カーネル 空 間 を 介 さずに NIC へ DMA 転 送 を 行 うことでゼロコピー 通 信 を 実 現 している. 2.2 データ 受 信 時 のゼロコピー 通 信 OPEN-MX では,データ 受 信 時 のゼロコピー 通 信 は 実 現 されておらず,1 回 以 上 のデー タ 複 写 が 発 生 する. 受 信 データが 32KB 未 満 の 場 合,ユーザプロセスとカーネルの 共 有 領 域 をピンダウンしておき, 受 信 バッファ(skbuff)からこの 共 有 領 域 へ 受 信 データを 複 写 し, その 後 受 信 データ 格 納 領 域 へデータ 複 写 を 行 う. 受 信 データが 32KB 以 上 の 場 合, 受 信 デー タを 格 納 する 領 域 に 対 してピンダウンを 行 い,skbuff から 受 信 領 域 へデータ 複 写 を 行 う. PM/Ethernet では,PACS-CS でのデータ 通 信 用 に 設 計 された PM/Ethernet-HXB で ゼロコピー 受 信 の 手 法 が 提 案 されている.これは, 受 信 用 skbuff に ID を 与 えておき,デー タ 受 信 前 に 全 ての skbuff をユーザ 空 間 にマッピングしておく.デバイスドライバでの 受 信 処 理 終 了 後, 受 信 データを 格 納 した skbuff の ID をユーザプロセスに 通 知 することでゼロ コピーで 受 信 データを 参 照 することが 可 能 になる. 2.3 問 題 点 1 仮 想 メモリ 空 間 2 図 1 アドレス 変 換 表 実 メモリ 仮 実 想 メモリを アドレスに 交 換 する 対 応 付 ける 実 メモリ 交 換 機 能 ピンダウンを 用 いる 手 法 では,データ 受 信 時 にはゼロコピー 通 信 を 行 うことができない. この 理 由 を Linux を 例 に 述 べる.NIC がパケットを 受 信 すると 最 初 に 受 信 用 skbuff に 格 納 される.この skbuff は,カーネルによって 確 保 されており,カーネル 用 の 仮 想 空 間 にマッ ピングされている.このため,ピンダウンした 受 信 領 域 を 用 意 しても NIC から 受 信 データ 格 納 先 領 域 への 直 接 の DMA 転 送 を 行 うことはできない. RDMA(Remote Direct Memory Access) 8) のようにデータ 送 受 信 処 理 ともに NIC と ユーザプロセスの 仮 想 メモリ 空 間 上 の 領 域 間 で DMA 転 送 を 行 う 手 法 も 提 案 されている.し かし,RDMA に 対 応 した NIC が 必 要 になりコストが 高 くなる. 3. 実 メモリ 交 換 機 能 3.1 考 え 方 実 メモリ 交 換 機 能 は, 仮 想 メモリ 空 間 上 の n ページの 大 きさの 2 つの 領 域 について, 仮 想 メモリに 対 応 する 実 ページを 交 換 する 機 能 である. 実 メモリ 交 換 機 能 の 様 子 を 図 1 に 示 す. 仮 想 メモリ 空 間 上 の 領 域 は,アドレス 変 換 表 によって 仮 想 アドレスと 実 メモリを 対 応 付 けられており, 領 域 のデータを 参 照 する 際 はアドレス 変 換 表 によって 仮 想 アドレスを 実 アド レスに 変 換 して 参 照 する. 本 機 能 では, 仮 想 メモリ 空 間 上 の 2 つの 領 域 について,それぞれ の 領 域 に 対 応 するアドレス 変 換 表 を 参 照 して 各 ページの 仮 想 アドレスに 対 応 する 実 アドレ スを 交 換 し,アドレス 変 換 表 を 更 新 する.これにより,2 つの 領 域 間 で 複 写 レスでのメモリ 間 データ 授 受 を 実 現 する.この 時, 複 数 ページ 分 の 実 メモリに 対 しても 交 換 を 行 うことが 可 能 である.また,2 つの 領 域 は 異 なる 仮 想 メモリ 空 間 上 に 存 在 していても 良 い. 2 c2010 Information Processing Society of Japan
なお, 本 機 能 は,アドレス 変 換 表 の 実 メモリの 内 容 を 変 更 するのみであるため, 仮 想 アド レスに 対 しての 変 更 は 発 生 しない. 3.2 期 待 される 効 果 実 メモリ 交 換 機 能 を 利 用 することで 期 待 される 効 果 として, 以 下 のものがある. ( 1 ) 複 写 レスでのメモリ 間 データ 授 受 を 実 現 OS 処 理 にとって,メモリ 間 複 写 は 非 常 に 大 きなオーバヘッドであり,データサイズ に 比 例 して 処 理 時 間 が 増 加 する.このため, 複 写 レスでのメモリ 間 データ 授 受 を 実 現 することによって,OS 処 理 全 体 の 処 理 時 間 を 削 減 することが 期 待 できる.このため, データ 複 写 処 理 が 主 となる 処 理, 例 えばプロセス 間 通 信 や 計 算 機 間 での LAN 通 信 に 関 しては, 実 メモリ 交 換 を 実 現 することによる 効 果 は 特 に 大 きいと 考 えられる. ( 2 ) 仮 想 アドレスの 再 マッピングと 比 べ, 領 域 の 解 放 確 保 を 削 減 複 写 レスでのメモリ 間 データ 授 受 を 行 う 他 の 手 法 としては, 仮 想 アドレスの 再 マッピ ングがある.この 処 理 では, 仮 想 メモリ 空 間 上 の 領 域 の 移 動 を 伴 うため, 領 域 の 解 放 や 再 確 保 といった 処 理 が 必 要 になる 場 合 がある. 一 方, 実 メモリ 交 換 機 能 の 場 合 は, 仮 想 メモリ 空 間 上 の 領 域 の 移 動 は 発 生 しないため, 領 域 の 解 放 や 再 確 保 といった 処 理 は 不 要 である. 次 に 欠 点 について 述 べる. ( 1 ) 実 メモリ 交 換 を 行 う 単 位 は,ページの 整 数 倍 実 メモリ 交 換 を 行 った 場 合, 交 換 対 象 のページに 格 納 されているデータ 全 てが 交 換 さ れてしまう.このため, 交 換 を 行 うページの 実 メモリ 領 域 内 に 交 換 を 望 まないデータ を 格 納 しておくことはできず, 内 部 断 片 化 が 発 生 しやすくなる. ( 2 ) TLB フラッシュが 必 要 ページ 変 換 テーブルの 更 新 を 行 うため,TLB フラッシュが 必 要 になる. 4. T ender への 実 装 と 評 価 4.1 資 源 の 分 離, 独 立 化 T ender では,OS の 操 作 する 対 象 を 資 源 として, 分 離 し 独 立 化 している. 資 源 には, 資 源 名 と 資 源 識 別 子 を 付 与 し, 資 源 操 作 のインタフェースを 統 一 している. 更 に, 各 資 源 を 操 作 するプログラム 部 品 ( 資 源 管 理 処 理 部 と 呼 ぶ)を 資 源 ごとに 分 離 し, 共 有 プログラムを 排 除 している.また, 各 資 源 の 管 理 情 報 も 資 源 ごとに 分 離 し, 各 資 源 の 管 理 表 の 間 の 参 照 関 係 を 禁 止 している. ユーザ 用 カーネル 用 領 空 域 間 カーネル 資 源 仮 想 ユーザ 空 空 間 間 図 2 T ender のメモリ 管 理 機 構 メモリ 外 部 記 憶 装 置 資 源 仮 永 実 想 続 メモリ ユニット ユニット 資 源 プレート このように, 資 源 の 分 離 と 独 立 化 を 行 うことで, 資 源 の 事 前 用 意 や 保 留 により, 資 源 の 作 成 や 削 除 を 伴 う 処 理 を 高 速 化 している.さらに,プログラムを 部 品 化 できるため, 機 能 の 追 加 や 変 更 が 容 易 になっている. 4.2 メモリ 管 理 機 構 T ender のメモリ 管 理 機 構 を 図 2 に 示 す. 資 源 仮 想 空 間 とは, 特 定 のアドレス 領 域 を 持 つ 仮 想 的 な 空 間 であり, 仮 想 アドレスから 実 アドレスへのアドレス 変 換 表 に 相 当 する. 資 源 仮 想 領 域 は,メモリイメージを 仮 想 化 した 資 源 であり, 実 体 は 実 メモリもしくは 外 部 記 憶 装 置 に 存 在 する. 仮 想 領 域 管 理 のインタフェースを 表 1 に 示 す. 資 源 仮 想 領 域 を 作 成 する 際 に 資 源 実 メモリ を 割 り 当 てる 場 合, 作 成 する 資 源 仮 想 領 域 のサイズに 応 じてページ 単 位 で 資 源 実 メモリ を 作 成 して 割 り 当 てる.T ender での 1 ページは 4KB である. 資 源 仮 想 ユーザ 空 間 は,メモリイメージを 仮 想 化 した 領 域 である 資 源 仮 想 領 域 をユーザ 用 の 資 源 仮 想 空 間 に 貼 り 付 けることで 作 成 できる. 貼 り 付 ける とは, 仮 想 アドレスを 実 アドレスに 対 応 付 けすることであり, 具 体 的 には, 当 該 の 仮 想 アドレスに 対 応 するアドレス 変 換 表 のエントリに, 実 アドレスまたは 外 部 記 憶 装 置 のアドレスを 設 定 する. 一 方, 仮 想 アドレスと 実 アドレスの 対 応 付 け 解 除 を 剥 がし と 呼 ぶ. 資 源 仮 想 領 域 の 実 体 は, 資 源 実 メモリ または 外 部 記 憶 装 置 上 に 存 在 する.なお, 外 部 記 憶 装 置 上 3 c2010 Information Processing Society of Japan
表 1 仮 想 領 域 管 理 の 提 供 インタフェース 形 式 create vr(size, mem, dk, vr op, name) delete vr(vrid) size で 指 定 された 大 きさの 仮 想 領 域 を 確 保 する.mem=1 の 場 合, 実 メモリを 確 保 しない.mem=2 の 場 合,vr op にしたがって 実 メモリを 確 保 する. vrid で 指 定 した 仮 想 領 域 を 削 除 する. read vr(vrid, vaddr, offset) vrid で 指 定 した 仮 想 領 域 に 対 応 するディスク 領 域 の offset からのデータをメモリ 上 の vaddr で 指 定 するアドレスに 読 み 込 む. write vr(vrid, vaddr, offset) vrid で 指 定 したメモリ 上 の vaddr で 指 定 するアドレスのデータを vrid で 指 定 した 仮 想 領 域 に 対 応 するディスク 領 域 の offset から 書 き 出 す. ctrl vr(vrid, vr op, offset, size, *name, vr op=0x1 の 場 合,vrid で 指 定 した 仮 想 領 域 のサイズを 返 す.vr op=0x2 の 場 合,vrid で 指 定 した 仮 想 領 域 の offset からの 実 アドレスを 返 す.vr op=0x100 の 場 合, vaddr, reserve, *buff, change size, offset1, 仮 想 領 域 の offset から size 分 の 実 メモリを 割 り 当 てる.vr op=0x200 の 場 合,vrid で 指 定 した 仮 想 領 域 の offset から size 分 の 実 メモリを 解 放 する. vrid2, offset2, pagesize, *raddr1, *raddr2) vr op=0x8000 の 場 合,vrid で 指 定 した 仮 想 領 域 の offset1 から pagesize 分 の 実 メモリと vrid2 で 指 定 した 仮 想 領 域 の offset2 から pagesize 分 の 実 メモリを 交 換 する. 機 能 表 2 実 メモリ 交 換 機 能 の 提 供 インタフェース 形 式 機 能 exchange pmem(vrid1,vrid2, 仮 想 領 域 vrid1 の offset1 からの 実 メモリと 仮 想 領 域 vrid2 の offset1,offset2,pagesize) offset2 からの 実 メモリを pagesize 分 交 換 する の 領 域 の 種 類 として, 資 源 永 続 ユニット と 資 源 仮 想 ユニット の 2 種 類 がある. 資 源 仮 想 カーネル 空 間 は, 資 源 仮 想 領 域 をカーネル 用 の 資 源 仮 想 空 間 に 貼 り 付 け ることにより 作 成 される. 4.3 実 メモリ 交 換 機 能 T ender で 実 現 した 実 メモリ 交 換 機 能 の 提 供 インタフェースを 表 2 に 示 す. 実 メモリ 交 換 機 能 は,vrid1 と vrid2 に 対 応 付 けられている 資 源 実 メモリ を 交 換 することで 仮 想 空 間 1 と 仮 想 空 間 2 の 間 のデータ 授 受 を 実 現 する.この 時, 仮 想 領 域 を 特 定 する 情 報 として カーネルに 対 して 仮 想 領 域 の 資 源 識 別 子 を 渡 す.カーネルは,この 仮 想 領 域 識 別 子 から 仮 想 領 域 を 特 定 し, 対 応 付 けられている 実 メモリ 情 報 を 参 照 する.この 際, 仮 想 領 域 に 対 応 付 け ている 実 メモリの 先 頭 からのオフセットと 交 換 するページ 数 を 指 定 することで 複 数 ページの 交 換 も 可 能 である. 4.4 資 源 入 出 力 T ender では,NIC を 含 む 入 出 力 デバイスを 統 一 的 に 管 理 する 資 源 として 資 源 入 出 力 を 持 つ 9). 資 源 入 出 力 は 入 出 力 管 理 によって 管 理 制 御 され, 入 力 領 域 と 出 力 領 域 を 用 い てデータの 入 出 力 を 行 う 機 能 を 提 供 する 資 源 である. 資 源 入 出 力 は,HDD,Myrinet, および Ethernet といった 入 出 力 デバイスを 抽 象 化 してどの 入 出 力 デバイスに 対 しても 統 一 的 なインタフェースを 提 供 する. 資 源 入 出 力 では, 入 出 力 を 生 成 して 各 入 出 力 ごとに 出 力 (データ 送 信 に 相 当 )と 入 力 (データ 受 信 に 相 当 )を 行 う.この 時, 入 出 力 の 生 成 時 に 出 力 の 個 数 と 入 力 の 個 数 を 決 定 し ており, 複 数 のデータを 連 続 して 送 受 信 する 場 合 に 逐 次 的 に 送 受 信 処 理 を 行 うのではなく 一 括 して 送 受 信 処 理 を 行 うことができる.これにより,カーネルへの 処 理 依 頼 回 数 や 受 信 待 ち 状 態 のプロセスを 起 床 させる 処 理 を 削 減 できる.また,T ender では,データ 送 信 時 に 使 用 する mbuf は T ender の 初 期 化 処 理 時 に 確 保 しておき 繰 り 返 して 使 用 する. 入 出 力 管 理 の 提 供 インタフェースを 表 3 に 示 し,その 機 能 を 以 下 に 説 明 する. ( 1 ) 生 成 入 出 力 の 種 類 により 指 定 された 入 出 力 デバイスに 対 する 資 源 入 出 力 を 生 成 する. 入 出 力 識 別 子 を 返 却 する. ( 2 ) 削 除 指 定 された 資 源 入 出 力 を 削 除 する. ( 3 ) 入 力 指 定 された 入 出 力 識 別 子 に 対 応 する 資 源 入 出 力 の 入 力 領 域 へデータを 入 力 する. ( 4 ) 出 力 指 定 された 入 出 力 識 別 子 に 対 応 する 資 源 入 出 力 の 出 力 領 域 からデータを 出 力 する. ( 5 ) 入 出 力 への 入 出 力 領 域 の 登 録, 入 出 力 相 手 装 置 のアドレス 情 報 登 録 指 定 された 入 出 力 識 別 子 に 対 応 する 資 源 入 出 力 に 対 し, 入 力 領 域 と 出 力 領 域 の 登 録, 入 出 力 相 手 装 置 へのアドレス 情 報 登 録 を 行 う. 入 出 力 の 種 類 として, 通 信 相 手 を 特 定 する 情 報 ( 通 信 路 の 種 類 など)に 加 え, 入 出 力 装 置 を 特 定 する 情 報 も 含 めている. 資 源 入 出 力 によるデータ 送 受 信 処 理 の 流 れを 以 下 に 説 明 する.なお,データ 送 受 信 処 理 を 行 う 前 に 入 出 力 領 域 の 登 録 を 行 い, 入 力 領 域 と 出 力 領 域 の 実 アドレスと 仮 想 領 域 識 別 子 を 登 録 しておく 必 要 がある. 4 c2010 Information Processing Society of Japan
表 3 入 出 力 管 理 の 提 供 インタフェース 形 式 get io(dev no,numofinput,numofoutput,ioid) free io(ioid) input io(ioid, size, position) output io(ioid, vars, size, position) 入 出 力 の 種 類, 入 力 の 個 数, 出 力 の 個 数, 入 出 力 識 別 子 を dev no,numofinput,numofoutput,ioid で 指 定 して 入 出 力 を 生 成 する. ioid で 指 定 した 入 出 力 を 削 除 する. 機 能 ioid で 指 定 した 入 出 力 に 対 して 入 力 を 行 う. 入 力 の 位 置 を 指 定 する 場 合,position で 指 定 した 配 列 に 格 納 する.size には 入 力 したデータサイズを 格 納 する. ioid で 指 定 した 入 出 力 から 出 力 を 行 う. 出 力 の 位 置 を 指 定 する 場 合,position で 指 定 した 配 列 に 格 納 する.size には 出 力 するデータサイズを 格 納 する. ctrl io(ioid,io op, buff, input vmid, input vrid, io op=0x01 の 場 合,ioid で 指 定 した 入 出 力 に 対 して 入 力 領 域 と 出 力 領 域 の 仮 想 空 間 識 別 子 vmid, 仮 想 領 域 識 別 子 vrid, 仮 想 アドレス addr を 登 録 する. input addr, input size, output vmid, output vrid, io op=0x10 の 場 合,ioid で 指 定 した 入 出 力 に 対 して 入 出 力 相 手 装 置 番 号 machine num と buff に 格 納 したアドレス 情 報 を 対 応 付 ける. output addr, output size,machine num) ( 1 ) データ 送 信 処 理 ( A ) データ 送 信 プロセスは,カーネルに 対 してデータの 出 力 を 依 頼 する. ( B ) カーネルは,データ 送 信 用 mbuf のデータ 格 納 領 域 へのポインタを 繋 ぎ 変 えて 出 力 領 域 の 実 アドレスを 登 録 し,パケットヘッダを 生 成 する. 出 力 の 個 数 分 の 10 12 14 16 18 20 データに 送 信 処 理 を 終 えた 後 に NIC に 対 してパケット 送 信 処 理 を 依 頼 する. 処 理 時 間 (μ 秒 ) 02468 ( C ) NIC は,mbuf のデータ 格 納 領 域 へのポインタを 参 照 する.これにより,ユー ザ 用 仮 想 空 間 上 に 存 在 するデータをカーネル 用 仮 想 空 間 に 複 写 することなく 直 接 NIC へと DMA 転 送 を 行 うことができる.その 後, 送 信 パケットを 生 成 し て 通 信 路 上 に 送 信 する. ( 2 ) データ 受 信 処 理 0 1000 2000 3000 ( A ) データサイズ(バイト) 4000 5000 6000 7000 8000 9000 データ 受 信 プロセスは,カーネルに 対 してデータの 入 力 を 依 頼 する. ( B ) カーネルは, 受 信 パケットが 未 だ 到 着 していない 場 合 は 受 信 プロセスを 休 眠 さ せ,パケット 受 信 待 ち 状 態 にする. 図 3 実 メモリ 交 換 とデータ 複 写 の 処 理 時 間 比 較 ( C ) NIC は,パケットを 受 信 するとデータ 受 信 用 mbuf に 受 信 パケットを DMA 転 送 し, 受 信 割 り 込 みを 発 生 させる. ( D ) カーネルは,パケット 受 信 処 理 を 開 始 する.この 時 に 受 信 割 り 込 み 発 生 を 禁 止 し, 以 降 はポーリングによる 受 信 パケット 検 出 を 行 う.パケット 受 信 処 理 とし てパケットヘッダの 解 析 を 行 い, 受 信 データ 格 納 先 の 入 力 領 域 と mbuf のデー タ 格 納 領 域 に 対 して 実 メモリ 交 換 によるデータ 授 受 を 行 う. 入 力 の 個 数 分 のパ ケットを 受 信 すると 受 信 割 り 込 みを 許 可 し, 受 信 プロセスを 起 床 させる. 上 記 のようにデータ 送 受 信 処 理 を 行 うことで 送 受 信 処 理 ともにゼロコピー 通 信 を 実 現 す ることができる. 4.5 評 価 4.5.1 評 価 環 境 データ 複 写 実 メモリ 交 換 実 メモリ 交 換 機 能 を T ender に 実 現 し,Linux でのデータ 送 受 信 処 理 と 比 較 する.Linux は Fedora 10(2.6.30 カーネル)であり,Packet Socket を 用 いる. 測 定 は, 計 算 機 2 台 を 直 結 して 行 った. 4.5.2 データ 複 写 との 比 較 実 メモリ 交 換 とデータ 複 写 でのメモリ 間 データ 授 受 に 要 するプロセッサ 処 理 時 間 を T ender で 測 定 した. 測 定 結 果 を 図 3 に 示 す. ( 1 ) データサイズが 小 さい 場 合, 実 メモリ 交 換 よりもデータ 複 写 の 方 が 処 理 時 間 が 短 い. 5 c2010 Information Processing Society of Japan
IPSJ SIG Technical カーネル Report NIC T0 T1 T2 送 信 側 計 算 機 受 信 側 計 算 機 Xバイト 128 個 1バイト (A)Linux 図 4 T0 T1 T2 測 定 処 理 の 流 れ カーネル 送 信 側 計 算 NIC 機 受 信 側 計 算 機 Xバイト 128 個 1バイト (B)Tender これは, 実 メモリ 交 換 処 理 のオーバヘッドがデータ 複 写 処 理 のオーバヘッドを 上 回 る ためである. ( 2 ) データ 複 写 はデータサイズに 比 例 して 処 理 時 間 が 増 加 するが, 実 メモリ 交 換 は,デー タサイズが 4KB 以 下 の 場 合 に 処 理 時 間 の 変 化 はない.これは, 実 メモリ 交 換 の 処 理 時 間 はページ 数 に 依 存 するためであり,ページ 数 が 一 定 であればデータサイズに 変 更 が 生 じても 処 理 時 間 への 影 響 はない. ( 3 ) データサイズが 大 きくなるほど 実 メモリ 交 換 とデータ 複 写 の 処 理 時 間 差 は 大 きくな り,データサイズが 4KB の 場 合 には 約 2.8 倍,8KB の 場 合 には 約 4.8 倍 の 処 理 時 間 差 となる. 以 上 のことから, 実 メモリ 交 換 は 大 容 量 データ 授 受 に 対 して 大 きな 効 果 を 発 揮 することが 分 かる. 4.5.3 スループット スループット 測 定 処 理 の 流 れを 図 4 に 示 す. 送 信 側 計 算 機 から 128 個 のパケットを 受 信 側 計 算 機 に 対 して 連 続 で 送 信 し, 受 信 側 計 算 機 では 全 ての 受 信 パケットを 処 理 した 後 に 1 バ イトのデータを 持 つパケットを 送 信 側 計 算 機 に 対 して 返 信 する.この 処 理 に 要 する 処 理 時 間 を 測 定 してスループットを 算 出 した.ここで,T 0 は 送 信 側 計 算 機 がデータ 送 信 処 理 を 開 始 した 時 間 から 受 信 側 計 算 機 からの 返 信 パケットの 受 信 処 理 を 完 了 するまでの 時 間,T 1 は, 送 信 側 計 算 機 がデータ 送 信 処 理 に 要 するプロセッサ 処 理 時 間,T 2 は, 送 信 側 計 算 機 がデー 100 200 300 400 500 600 700 800 900 スループット(Mbps) Tender Linux 00 1000 2000 3000送 信 データサイズ(バイト) 4000 5000 6000 7000 8000 9000 図 5 スループット タ 送 信 処 理 中 のプロセッサ 処 理 を 終 了 した 時 間 から 返 信 パケットの 受 信 処 理 を 完 了 するまで の 時 間 である. T 0 から 算 出 したスループットを 図 5 に 示 し,T 1 と T 2 の 時 間 を 図 6 に 示 す. ( 1 ) データサイズが 小 さい 場 合,T ender より Linux の 方 がスループットが 高 い.これ は,パケット 受 信 時 の 実 メモリ 交 換 処 理 のオーバヘッドがデータ 複 写 処 理 のオーバ ヘッドを 上 回 るためである. ( 2 ) T ender と Linux の 両 者 ともスループットの 上 昇 は 800Mbps 前 後 で 停 止 しており. 通 信 路 の 提 供 するスループットの 8 割 程 度 しか 性 能 を 発 揮 できていない.これは,T 0 に 返 信 パケットの 送 受 信 処 理 に 要 する 時 間 を 含 んでいるためであり, 一 方 向 の 転 送 能 力 はさらに 高 いと 考 えられる. ( 3 ) T ender の T 1 はデータサイズを 増 加 させても 変 化 がなく,Linux と 比 較 して 非 常 に 短 い(データサイズが 8KB の 場 合 には Linux の 約 3.4% 程 度 ).これは,データ 送 信 時 にゼロコピー 通 信 を 実 現 していること,および 送 信 対 象 のデータ 全 てに 対 して カーネルの 送 信 処 理 を 終 えてから NIC にパケット 送 信 処 理 を 依 頼 しているためであ る.このようにデータ 送 信 処 理 を 行 う 場 合,カーネルの 送 信 処 理 と NIC の 送 信 処 理 6 c2010 Information Processing Society of Japan
12000 情 報 処 理 学 会 研 究 報 告 10000 8000 処 理 時 間 (μ 秒 ) 6000 4000 2000 0 返 信 パケット 処 理 までの 時 間 (T2) データ 送 信 処 理 のプロセッサ 時 間 (T1) Tender Linux Tender Linux Tender Linux Tender Linux Tender Linux Tender Linux 256 512 データサイズ(バイト) 1024 2048 4096 8192 図 6 処 理 時 間 (スループット) 1000 100 200 300 400 500 600 700 800 900 処 理 時 間 (μ 秒 ) 0 返 信 パケット 処 理 までの 時 間 (T2) データ 送 信 処 理 のプロセッサ 時 間 (T1) Tender Linux Tender Linux Tender Linux Tender Linux Tender Linux Tender Linux 256 512 データサイズ(バイト) 1024 2048 4096 8192 図 7 処 理 時 間 (ラウンドトリップタイム) を 並 列 に 行 えないという 欠 点 がある.しかし,プロセッサ 処 理 を 早 期 に 終 了 させるこ とでプロセッサ 負 荷 を 大 きく 軽 減 できる 点 は 大 きな 利 点 である. 4.5.4 ラウンドトリップタイム 図 4 での 送 信 パケットを 1 個 とし, 受 信 側 計 算 機 からの 返 信 パケットのデータサイズを 送 信 パケットと 同 じサイズにした 場 合 の 処 理 時 間 (ラウンドトリップタイム:RTT)を 測 定 した.T 1 と T 2 の 時 間 を 図 7 に 示 す. ( 1 ) データサイズが 小 さい 場 合,T ender より Linux の 方 が T 0 が 短 い.これは,パケッ ト 受 信 時 の 実 メモリ 交 換 処 理 のオーバヘッドがデータ 複 写 処 理 のオーバヘッドを 上 回 るためである. ( 2 ) Linux はデータサイズが 大 きくなるにつれて T 1 が 増 加 するのに 対 し,T ender は データサイズを 増 加 させても 変 化 がない.これは,T ender はデータ 送 信 時 にゼロ コピー 通 信 を 実 現 しており,データサイズの 影 響 を 受 けないためである. ( 3 ) データサイズが 大 きい 場 合,T ender の 方 が Linux よりも T 0 が 短 くなり,データサ イズが 大 きくなるほど T ender と Linux の 処 理 時 間 差 は 大 きくなる.これは,Linux ではデータ 複 写 に 要 する 処 理 時 間 が 増 大 するためである.データサイズが 8KB の 場 合 には Linux と 比 較 して T 0 を 約 63% 程 度 削 減 できており, 計 算 機 間 で 大 容 量 デー タに 対 して 逐 次 応 答 処 理 を 実 行 する 場 合 に 非 常 に 大 きな 効 果 を 発 揮 することが 期 待 で きる. 5. お わ り に 仮 想 メモリ 空 間 上 の 2 つの 領 域 に 対 して 対 応 付 ける 実 メモリを 交 換 することでデータ 授 受 を 実 現 する 実 メモリ 交 換 機 能 を 提 案 した. 実 メモリ 交 換 機 能 を 実 現 することにより, 複 写 レスでのメモリ 間 データ 授 受 を 行 うことが 可 能 になる.T ender における 資 源 の 分 離 と 独 立 化 を 利 用 して 実 メモリ 交 換 機 能 を 実 現 することでデータ 送 信 時 のみでなくデータ 受 信 時 もゼロコピー 通 信 とすることを 可 能 にした. データ 複 写 と 実 メモリ 交 換 の 処 理 時 間 の 評 価 により,データサイズが 8KB の 時 にはデー タ 複 写 処 理 よりも 約 4.8 倍 高 速 になることを 示 し, 大 容 量 データ 授 受 に 対 して 非 常 に 大 き な 効 果 があることを 示 した.また,Linux とのラウンドトリップタイムの 評 価 により, 処 理 時 間 を 約 37% 削 減 した.しかし,データサイズが 小 さい 場 合 には, 実 メモリ 交 換 のオーバ 7 c2010 Information Processing Society of Japan
ヘッドがデータ 複 写 のオーバヘッドを 上 回 るため,データサイズに 応 じてデータ 複 写 と 実 メ モリ 交 換 を 使 い 分 けるといった 対 処 を 行 う 必 要 がある. 残 された 課 題 として, 送 受 信 対 象 データのサイズに 応 じて 実 メモリ 交 換 とデータ 複 写 を 使 い 分 けるといった 対 処 を 行 い,データサイズに 適 した 送 受 信 方 式 を 実 現 することがある. 参 考 文 献 1) Feng,W.,Balaji,P.,Baron,C.,Bhuyan,L.N. and Panda,D.K.:Performance characterization of a 10-Gigabit Ethernet TOE,Proc. 13th Symposium on High Performance Interconnects,pp.58-63,(2005). 2) Menon,A. and Zwaenepoel,W.:Optimizing TCP Receive Performance,Proc. USENIX 2008 Annual Technical Conference on Annual Technical Conference, pp.85-98,(2008) 3) 住 元 真 司, 堀 敦 史, 手 塚 宏 史, 原 田 浩, 高 橋 俊 行, 石 川 裕,: 既 存 OS の 枠 組 を 用 いたクラスタシステム 向 け 高 速 通 信 機 構 の 提 案, 情 報 処 理 学 会 論 文 誌,Vol.41,No.6, pp.1688-1696,(2000). 4) 住 元 真 司, 堀 敦 史, 手 塚 宏 史, 原 田 浩, 高 橋 俊 行, 石 川 裕,: 高 速 通 信 機 構 PM2 の 設 計 と 評 価, 情 報 処 理 学 会 論 文 誌,Vol.41,No.SIG 5(HPS 1),pp.80-90,(2000). 5) 住 元 真 司, 大 江 和 一, 久 門 耕 一, 朴 泰 祐, 佐 藤 三 久, 宇 川 彰,: 複 数 Gigabit Ethernet を 用 いた PACS-CS のための 高 性 能 通 信 機 構 の 設 計 と 評 価, 情 報 処 理 学 会 論 文 誌 コン ピューティングシステム,Vol.49,No.SIG 12(ACS 15),pp.25-34,(2006). 6) Goglin,B.:Design and Implementation of Open-MX: High-Performance Message Passing over generic Ethernet hardware,workshop on Communication Architecture for Clusters, held in conjunction with IPDPS 2008,(2008). 7) 谷 口 秀 夫, 青 木 義 則, 後 藤 真 孝, 村 上 大 介, 田 端 利 宏,: 資 源 の 独 立 化 機 構 による T ender オペレーティングシステム, 情 報 処 理 学 会 論 文 誌,Vol.41,No.12,pp.3363-3374(2000) 8) Pinkerton,J.:The Case for RDMA,RDMA Consortium(online),available from http://www.rdmaconsortium.org/home/. 9) 門 直 史, 田 端 利 宏, 谷 口 秀 夫,:T ender における 資 源 入 出 力 を 用 いた Ethernet 通 信 の 設 計, 電 子 情 報 通 信 学 会 2008 年 総 合 大 会 講 演 論 文 集,Vol.2008, pp.94,(2008) 8 c2010 Information Processing Society of Japan