LXDs: Towards Isolation of Kernel Subsystems

Narayanan, Balasubramanian, Jacobsen, Spall, Bauer, Quigley, Hussain, Younis, Shen, Bhattacharyya, Burtsev (2019)

What kind of paper is this?

The Story

Comparisons to prior work

Architecture

Their IDL

Use Cases

  1. Network Device Drivers: dummy and the Intel 82599 10Gpbs Ethernet Driver
  2. Multi-Queue Null Block Driver

Eval

  1. Async Runtime (What should I take away from this???)
    1. create and teardown minimal async block: 36 cycles
    2. Switch between pair of async threads: 29 cycles (20 CPU instructions of which 16 touch memory).
    3. Single blocking ASYNC: 124 cycles
    4. Four blocking ASYNC: 374 (93.5 per block)
  2. Same-core v cross-core IPC: LXD v seL4 -- I have no idea what to make of these numbers?! The numbers in the prose do not seem to match those in the tables!
  3. Message Batching: batching helps.
  4. Dummy Device Driver: Example of a fast driver (iperf2)
    1. one kernel/driver crossing per packet: non-isolated: 956 K IOPS isolate: 730K (76%)
    2. two crossings per packet: adds 1794 cycles (to the 3009 from last experiment) -- that makes crossings look really expensive!
    3. Async communication induced by 4KB packets: async non-isolated 534 K IOPS; sync non-isolated: 236 K (44%); async isolated: 341 K (64%)
  5. IXGBE driver (only real driver in the study): within 13% of the native drivers on the send path; within 18% on the receive path.
  6. Multi-Queue Block Driver (fio) -- gets baout 79% of the non-isolated performance.