andrew deason sine nomine associates european afs and
play

Andrew Deason Sine Nomine Associates European AFS and Kerberos - PowerPoint PPT Presentation

OpenAFS Out-of-Band TCP Andrew Deason Sine Nomine Associates European AFS and Kerberos Conference 2012 Agenda Why is AFS so slow? Project Background OOB Design Current Status (numbers!) Future Directions 2 Why is AFS so


  1. OpenAFS Out-of-Band TCP Andrew Deason Sine Nomine Associates European AFS and Kerberos Conference 2012

  2. Agenda • Why is AFS so slow? • Project Background • OOB Design • Current Status (numbers!) • Future Directions 2

  3. Why is AFS so slow? • Define “performance” / “slow” • AFS-specific factors (cache, CBs, etc) • Inherent UDP restrictions – Firewalls, checksum offloading, etc 3

  4. Why is AFS so slow? • Rx implementation and protocol – See Simon’s talk(s) • Rx window size – (32 * 1400) / RTT – 1ms RTT: ~43 MiB/s – 10ms RTT: ~4 MiB/s 4

  5. Project Background • AFS too slow for customer – Need fix quickly • Declined approaches: – RxOSD vicep-access – RxOSD non-vicep-access – RxTCP – RxUDP improvements 5

  6. Project Background • Compromise on TCP OOB – Rx handles args, aborts, auth, etc – No long-lived TCP conns – Tie TCP conn to Rx call • Rapid development • First pass not public 6

  7. Project Background • Started in August/September 2011 • 1.4 client/server delivered in October • 1.6 client in February • Production deployment in March/April • 1.6 server in May 7

  8. OOB Design • Designed for rapid dev • FTP-like control/data channels • Very similar to existing FetchData64 • Not just for TCP 8

  9. OOB Design (protocol) Say a client wants to fetch a file… Server Client 9

  10. OOB Design (protocol) Client starts split FetchDataTCP call FetchDataTCP IN arguments Server Client 10

  11. OOB Design (protocol) Server sends TCP information FetchDataTCP union AFSOOB_Challenge Server Client 11

  12. OOB Design (protocol) Client creates TCP connection FetchDataTCP Server Client 12

  13. OOB Design (protocol) Client send conn metadata (IDs Rx call) FetchDataTCP Server Client Note: data over TCP still in XDR union AFSTCP_Response 13

  14. OOB Design (protocol) Server associates connection FetchDataTCP Server Client 14

  15. OOB Design (protocol) Server sends file data FetchDataTCP Server Client Note: Rx call is idle union AFSTCP_FileData raw file data 15

  16. OOB Design (protocol) Server ends FetchDataTCP call FetchDataTCP OUT arguments Server Client 16

  17. OOB Design (protocol) Transfer is complete – TCP conn reused for 10 mins Server Client 17

  18. OOB Design (client) • Cache-bypass-like threshold – sysctl afs.oob_tcp_thresh • RXGEN_OPCODE server detection • Parameters tweakable via sysctl 18

  19. OOB Design (server) • libevent • Async connection receipt • TCP conns handed to Rx thread • TCP conn always after Rx call 19

  20. OOB Design (limitations) • Extra round-trip • Not extensible well • Client code organization 20

  21. Implementation Details • rx_FlushWriteNotLast • rxkad_Encrypt • rx_SetErrorProc • Linux configurable readahead • osi_BlockSignals 21

  22. Current Status • 1.4, 1.6, client, server • Linux now, but portable • Cache bypass • Zero-copy fetch • Non-standard protocol published • Source available on request 22

  23. Performance 23

  24. Performance • 10GigE – Write: 300s MiB/s (~3gbps) memcache – Read: 500s MiB/s (~4-5gbps) memcache – Read: 700s MiB/s (~6gbps) bypass • afscp even higher with high chunksize • Same results when capped at 7gbps 24

  25. Performance • Major limiting factors: – Chunksize (or bypass readahead size) – Cache overhead – Extra RTT • Benchmarks are “remote” 25

  26. Future Directions • Standardize new OOB protocol – Extra RTT, UUIDs, cap bit, ext-union • Platform support • Volserver OOB 26

  27. Questions? 27

  28. Thanks! Andrew Deason Sine Nomine Associates adeason@sinenomine.net 28

Recommend


More recommend