8. RIO Buffer 焔
RIO 螻 覯 焔 螻殊
RB: User螻 Kernel 螻旧 伎襦 PIN
RIODeregisterBuffer蠍 蟾讌 螻 locking
User Virtual Address
Space
App
User
Kernel
RIORegisterBuffer(buf,size)
RB ID
Physical Memory
Winsock
lock
I/O Manager
WS/Transport
RB
NIC
9. RIO RQ/CQ 焔
RIO 螻 蠍一 RQ 覦 CQ 焔
覈 I/O豌 RequestQueue (RQ)襯 牛 企伎
I/O 襭 旧 CompletionQueue (CQ)襯 牛 豌襴
App
RIOCreateCQ(size)
RIOCreateRQ(sock, CQ)
Winsock
RQ
CQ
User
Kernel
I/O Manager
WS/Transport
NIC
10. RIO 蟲譟
I/O 豌襴 螻殊
DequeueCompletion 覲旧螳 I/O襭 旧螳
覯 螻殊朱 CQ 螳 I/O 豌襴
App
RIOReceive(RQ, RBID)
Winsock
User
Kernel
RIODequeueCompletion(CQ)
RIONotify(CQ)
RQ
R
C
CQ
I/O Manager
WS/Transport
R
NIC
C
11. 焔 螳
MS 焔ロ螳
RIO Latency螳 15~30% 螳 譴企れり
RIO Throughput 豕 2覦 り (Datagrams/s)
讌 企蓋 焔ロ螳 (IOCP vs RIO)
ル
企殊伎誤: i7-4770k, 16GB RAM, 1Gbps LAN, Windows 8
覯: Mac-mini server 2012 late, Windows Server 2012
1024 byte UDP 5豌襷螳 ろ
IOCP RIO 蟆曙 覈 1Gbps full襦
蠏碁る慨 蟆曙 覈 throughput螻 UDP 襯 觜
損 讀, 覩 蟆郁骸 覈視 (10Gbps 谿願 襷 ?)
蠏碁, 螳
RIO螳 CPU襯 2覦
RIO context-switches/sec螳 6覦 螳