最近興味を持った論文リスト
1996
The effectiveness of affinity-based scheduling in multiprocessor networking
An Evaluation of Network Stack Parallelization Strategies in Modern Operating Systemsと近い内容らしい
2000
End-System Optimizations for High-Speed TCP
Zerocopy, Offloading, RDMA, Jumbo packetなどを使ったスタックの最適化の効果を定量的に評価
2001
Alpine: A User-Level Infrastructure for Network Protocol Development
ユーザモードで動作するNetwork stackの実装と評価。
FreeBSDで実装されたが後にLinuxへ移植された。
2002
Increasing Web Server Throughput with Network Interface Data Caching
頻繁にアクセスされるコンテンツをNIC上にキャッシュする事で負荷を削減
TCP Servers: Offloading TCP Processing in Internet Servers. Design, Implementation and Performance
ネットワークプロセッシングをオフロードするアーキテクチャを実装した。
これは、SMP環境のあるCPUでも実行できるし、クラスタのあるノードでも実行できる。
Queue Pair IP: a hybrid architecture for system area networks
Socket API・EthernetをInfiniBandに似たQueue Pairで置き換え、IP/GbE・IP/Myrinetと比較、性能が高い事を確認した。
Myrinet SAN&LANai 9 programmable network interfaceで実験を実施。
2003
Implementing a Clonable Network Stack in the FreeBSD Kernel
FreeBSDのネットワークスタックを多重化するパーティショニング機構「VIMAGE」の解説。
2004
Demultiplexed Architectures: A Solution for Efficient STREAMS Based Communication Stacks
STREAM Stackをdemultiplexedする事によってBSD Stackに近いMP性能を得た。
2005
Architectural Characterization of Processor Affinity in Network Processing
Affinityによるネットワークプロセッシングパフォーマンスへの影響について
Direct Cache Access for High Bandwidth Network I/O
DCAの仕組みと効果について。
2006
An Evaluation of Network Stack Parallelization Strategies in Modern Operating Systems
Network stackのMP最適化方法に、Message based parallelismとConnection based parallelismの2つがあって、Connection based parallelismの方が性能を出しやすい。
Supra-linear Packet Processing Performance with Intel Multi-core Processors
パケットプロセスを行うユーザプログラムをマルチコア環境へ最適化する。
Evaluating Network Processing Efficiency with Processor Partitioning and Asynchronous I/O
Asynchronous I/O用の新しいカーネル構造・インタフェースとその性能評価。
2007
Interactivity vs. fairness in networked Linux systems
スケジューリングと通信性能に関する解析
2009
Helios: heterogeneous multiprocessing with satellite kernels
x86とARMのヘテロ環境にて、ARMで動く「サテライトカーネル」にてネットワークスタックとNICドライバを動かし、x86の「コーディネータカーネル」とリモートチャンネルで通信してデータの受け渡しを行う、と言うようなヘテロでマルチカーネルなOSを作った。
サテライトカーネルを使うことによりパケット処理をオフローディングして性能を稼ぐことが出来る事を実測値で検証した。
Characterization of Direct Cache Access on multi-core systems and 10GbE
DCAによって最後まで残っていたメモリパフォーマンスの悪さの問題が解決し10Gでも十分なパフォーマンスが得られるようになるが、マルチコアにおいてはコアへの適切な分散が行われている事が重要で、これが正しく行われていればDCAでかなりのパフォーマンス向上を得ることが出来る。
将来、40GbE, 100GbEになると更に追加の改良が必要になるが、そのような改良の一例としてユーザーモードネットワークスタックやiWARPのようなオフローディングが考えられる。
Sorting reordered packets with interrupt coalescing
リオーダが必要なパケットをソートする。
EINIC: an architecture for high bandwidth network I/O on multi-core processors
EINIC(Enhanced Integrated NIC)を提案。
共有キャッシュ(2次か3次)を分割し一部をIO用の領域として用い、パケットデータのキャッシュに使う。
A Multi-Threaded Network Interface Using Network Processors
IXP28xx Network ProcessorをPCIボードとして使用し、マルチスレッド化されたネットワークインタフェースを実装した。
Improved Forwarding Architecture and Resource Management for Multi-Core Software Routers
multiqueueへ最適化する事でsoftware routerを高速化
Environmental Independence: BSD Kernel TCP/IP in Userspace
NetBSD rumpによるネットワークスタックのユーザ空間実装について
2010
On-chip FIFO cache for network I/O: A feasibility study
メインプロセッサのキャッシュに頼らず、ネットワークデータをキャッシュする分離されたFIFOキャッシュを用意し性能の向上を図る。
High Speed Network Traffic Analysis with Commodity Multi-core Systems
Multiqueue packet capturing on Linux
A Study of Hardware Assisted IP over InfiniBand andits Impact on Enterprise Data Center Performance
IP over InfiniBandに関する調査
2011
Why Can Some Advanced Ethernet NICs Cause Packet Reordering?
何故Intel Ethernet Flow DirectorがTCPパケットの受信においてpacket reorderingを発生させてしまうのか、その原因を説明する。
Flow DirectorではRSSのハッシュテーブルの先にリンクドリストを持つことにより、各フローの情報を確実に管理し、かつフローが属するCPUを追跡出来るようにしている。
Flow DirectorではOSからアプリケーションの実行されているCPUを教える事で配達先CPUを追跡出来るのだが、Process Migrationの度にキューが変わってしまい、ここでPacket reorderが発生する余地が出来てしまう。これが著しくパフォーマンスをデグレートさせる。
プロセスをpinningするのは有効な対処法だが、もっと根本的にはNICの構造を改良する必要があると考える。
A Transport‐Friendly NIC for Multicore/Multiprocessor System
A-TFNと呼ぶ新しいNICを提案する。
これは、RSSやFlow Directorが持つaffinityの制御の不完全性を解決する。
ServerSwitch: A Programmable and High Performance Platform for Data Center Networks
汎用な部品だけを使ってL3スイッチをNIC上に実装した。
ClearStream: Prototyping 40 Gbps transparent end-to-end connectivity
40 GbEの性能評価を行った。
8コアのIntelマシンの性能に40コアのAMDマシンの性能が追いつかなかった。
これは、NUMAアーキテクチャになっていてメモリリソースの距離が均一でない事に起因する。
コアにpinningしてiperfを試すと、ある特定のコアが速くある特定のコアが遅い事が分かる。
netmap: fast and safe access to network adapters for user programs
multiqueueの各Ringをmmapしてユーザランドへ直接見せ、RAWパケットの受信能力を桁違いに引き上げる実装。
プロトコルスタックを迂回して届き、ユーザランドでそれを処理するスタックは同時に提供されていないので、既存のネットワークアプリがそのまま動く訳ではない。