# IX: A Protected Dataplane Operating System for High Throughput and Low Latency
###### paper origin: OSDI '14
###### paper: [link](https://dl.acm.org/doi/10.5555/2685048.2685053)
### Motivation
* An OS which can support datacenter application
* large concurrent TCP connections
* high packet rates with small packet size
* low tail latency
### Problem
* Network performance on commodity OS can't catch up with hardware (40Gbps, 100Gbps, ..), since it's designed based on below asumptions :
* multiple applications share a single CPU core
* packet inter-arrival times being many times higher than the latency of interrupts and system calls
* On software side, code paths are convoluted by interrupts and scheduling
### Solution
* High-level overview

* Flow consistent haching, no synchronization or coherence traffic between cores
* Run-to-completion, improve data-cache locality and remove scheduling
* Adaptive batching (any to maximum batch size)
* Zero copy between user space applications & network stack
### Implementation
* OS model
* Based on Dune, utilize VT-x virtualzation
* Each IX dataplane supports a single, multi-threaded application
* Require Intel DPDK and a supported Intel NIC :
* Intel 82599
* Intel X520
* Intel X540

* Execution flow (run-to-completion + adaptive batching)

### Evaluation
* Single flow TCP, using Netpipe (synchronously echo packets)
* IX (polling + run-to-completion) is better than Linux (interrupt)
* mTCP is the worst since it uses agressive batching

* Multiple flow TCP, using Netpipe (1 server, 18 client machines)
 
* Connection scalability, limited by multiplexing among open connections

* Memcached performance (an in-memory, key-value store framework)
* ETC workload : 20B-70B keys, 1B-1KB values, 75% GET request
* USR workload : < 20B keys, 2B values, 99% GET request

