Profiling ¡Network ¡Performance ¡ in ¡Mul5-‑5er ¡Datacenter ¡Applica5ons ¡ Minlan ¡Yu ¡ Scalable ¡ ¡ Princeton ¡University ¡ Net-‑App ¡ ¡ Profiler ¡ Joint ¡work ¡with ¡Albert ¡Greenberg, ¡Dave ¡Maltz, ¡Jennifer ¡Rexford, ¡ Lihua ¡Yuan, ¡Srikanth ¡Kandula, ¡Changhoon ¡Kim ¡ ¡ 1 ¡
Applica5ons ¡inside ¡Data ¡Centers ¡ …. …. …. …. Front ¡end ¡ Aggregator ¡ Workers ¡ Server ¡ 2 ¡
Challenges ¡of ¡Datacenter ¡Diagnosis ¡ • Large ¡complex ¡applica5ons ¡ – Hundreds ¡of ¡applica5on ¡components ¡ – Tens ¡of ¡thousands ¡of ¡servers ¡ • New ¡performance ¡problems ¡ – Update ¡code ¡to ¡add ¡features ¡or ¡fix ¡bugs ¡ – Change ¡components ¡while ¡app ¡is ¡s5ll ¡in ¡opera5on ¡ • Old ¡performance ¡problems ¡(Human ¡factors) ¡ – Developers ¡may ¡not ¡understand ¡network ¡well ¡ ¡ – Nagle’s ¡algorithm, ¡delayed ¡ACK, ¡etc. ¡ 3 ¡
Diagnosis ¡in ¡Today’s ¡Data ¡Center ¡ Packet ¡trace: ¡ App ¡logs: ¡ Filter ¡out ¡trace ¡for ¡ Host ¡ #Reqs/sec ¡ long ¡delay ¡req. ¡ Response ¡5me ¡ App ¡ Too ¡expensive ¡ 1% ¡req. ¡>200ms ¡delay ¡ Applica5on-‑specific ¡ Packet ¡ OS ¡ sniffer ¡ SNAP: ¡ Switch ¡logs: ¡ Diagnose ¡net-‑app ¡interac5ons ¡ #bytes/pkts ¡per ¡minute ¡ Too ¡coarse-‑grained ¡ Generic, ¡fine-‑grained, ¡and ¡lightweight ¡ 4 ¡
SNAP: ¡A ¡Scalable ¡Net-‑App ¡Profiler ¡ ¡ ¡ ¡ ¡ ¡ ¡ that ¡runs ¡everywhere, ¡all ¡the ¡5me ¡ 5 ¡
SNAP ¡Architecture ¡ At ¡each ¡host ¡for ¡every ¡connec5on ¡ ¡ Collect ¡ data ¡ 6 ¡
Collect ¡Data ¡in ¡TCP ¡Stack ¡ • TCP ¡understands ¡net-‑app ¡interac5ons ¡ – Flow ¡control: ¡How ¡much ¡data ¡ apps ¡want ¡to ¡read/write ¡ – Conges5on ¡control: ¡ Network ¡delay ¡and ¡conges5on ¡ • Collect ¡TCP-‑level ¡sta5s5cs ¡ – Defined ¡by ¡RFC ¡4898 ¡ – Already ¡exists ¡in ¡today’s ¡Linux ¡and ¡Windows ¡OSes ¡ 7 ¡
TCP-‑level ¡Sta5s5cs ¡ • Cumula5ve ¡counters ¡ – Packet ¡loss: ¡#FastRetrans, ¡#Timeout ¡ – RTT ¡es5ma5on: ¡#SampleRTT, ¡#SumRTT ¡ – Receiver: ¡RwinLimitTime ¡ – Calculate ¡the ¡difference ¡between ¡two ¡polls ¡ • Instantaneous ¡snapshots ¡ – #Bytes ¡in ¡the ¡send ¡buffer ¡ – Conges5on ¡window ¡size, ¡receiver ¡window ¡size ¡ – Representa5ve ¡snapshots ¡based ¡on ¡Poisson ¡sampling ¡ 8 ¡
SNAP ¡Architecture ¡ At ¡each ¡host ¡for ¡every ¡connec5on ¡ ¡ Collect ¡ Performance ¡ data ¡ Classifier ¡ 9 ¡
Life ¡of ¡Data ¡Transfer ¡ Sender ¡ • Applica5on ¡generates ¡the ¡data ¡ App ¡ Send ¡ • Copy ¡data ¡to ¡send ¡buffer ¡ Buffer ¡ • TCP ¡sends ¡data ¡to ¡the ¡network ¡ ¡ Network ¡ • Receiver ¡receives ¡the ¡data ¡and ¡ACK ¡ Receiver ¡ ¡ 10 ¡
Taxonomy ¡of ¡Network ¡Performance ¡ Sender ¡ – No ¡network ¡problem ¡ App ¡ ¡ ¡ Send ¡ – Send ¡buffer ¡not ¡large ¡enough ¡ Buffer ¡ – Fast ¡retransmission ¡ ¡ Network ¡ – Timeout ¡ ¡ – Not ¡reading ¡fast ¡enough ¡(CPU, ¡disk, ¡etc.) ¡ Receiver ¡ – Not ¡ACKing ¡fast ¡enough ¡(Delayed ¡ACK) ¡ 11 ¡
Iden5fying ¡Performance ¡Problems ¡ – Not ¡any ¡other ¡problems ¡ Sender ¡App ¡ – #bytes ¡in ¡send ¡buffer ¡ Send ¡Buffer ¡ Sampling ¡ ¡ – #Fast ¡retransmission ¡ Network ¡ – #Timeout ¡ Direct ¡ ¡ measure ¡ – RwinLimitTime ¡ Inference ¡ Receiver ¡ – Delayed ¡ACK ¡ diff(SumRTT) ¡> ¡diff(SampleRTT)*MaxQueuingDelay ¡ 12 ¡
SNAP ¡Architecture ¡ Management ¡ System ¡ Topology, ¡rou5ng ¡ Conn ¡ à ¡proc/app ¡ At ¡each ¡host ¡for ¡every ¡connec5on ¡ ¡ Cross-‑ connec5on ¡ Collect ¡ Performance ¡ data ¡ Classifier ¡ correla5on ¡ Offending ¡app, ¡ ¡ host, ¡link, ¡or ¡switch ¡ 13 ¡
Pinpoint ¡Problems ¡via ¡Correla5on ¡ • Correla5on ¡over ¡shared ¡switch/link/host ¡ – Packet ¡loss ¡for ¡all ¡the ¡connec5ons ¡going ¡through ¡ one ¡switch/host ¡ – Pinpoint ¡the ¡problema5c ¡switch ¡ ¡ 14 ¡
Pinpoint ¡Problems ¡via ¡Correla5on ¡ • Correla5on ¡over ¡applica5on ¡ – Same ¡applica5on ¡has ¡problem ¡on ¡all ¡machines ¡ – Report ¡aggregated ¡applica5on ¡behavior ¡ 15 ¡
SNAP ¡Architecture ¡ Offline, ¡cross-‑conn ¡ Online, ¡lightweight ¡ Management ¡ diagnosis ¡ processing ¡& ¡diagnosis ¡ System ¡ Topology, ¡rou5ng ¡ Conn ¡ à ¡proc/app ¡ At ¡each ¡host ¡for ¡every ¡connec5on ¡ ¡ Cross-‑ connec5on ¡ Collect ¡ Performance ¡ data ¡ Classifier ¡ correla5on ¡ Offending ¡app, ¡ ¡ host, ¡link, ¡or ¡switch ¡ 16 ¡
Reducing ¡SNAP ¡Overhead ¡ • SNAP ¡overhead ¡ – Data ¡volume: ¡120 ¡Bytes ¡per ¡connec5on ¡per ¡poll ¡ – CPU ¡overhead: ¡ ¡ • 5% ¡for ¡polling ¡1K ¡connec5ons ¡with ¡500 ¡ms ¡interval ¡ ¡ • Increases ¡with ¡#connec5ons ¡and ¡polling ¡freq. ¡ • Solu5on: ¡Adap5ve ¡tuning ¡of ¡polling ¡frequency ¡ – Reduce ¡polling ¡frequency ¡to ¡stay ¡within ¡a ¡target ¡CPU ¡ – Devote ¡more ¡polling ¡to ¡more ¡problema5c ¡connec5ons ¡ ¡ 17 ¡
SNAP ¡in ¡the ¡Real ¡World ¡ ¡ ¡ ¡ ¡ 18 ¡
Key ¡Diagnosis ¡Steps ¡ • Iden5fy ¡performance ¡problems ¡ – Correlate ¡across ¡connec5ons ¡ – Iden5fy ¡applica5ons ¡with ¡severe ¡problems ¡ • Expose ¡simple, ¡useful ¡informa5on ¡to ¡developers ¡ – Filter ¡important ¡sta5s5cs ¡and ¡classifica5on ¡results ¡ • Iden5fy ¡root ¡cause ¡and ¡propose ¡solu5ons ¡ ¡ – Work ¡with ¡operators ¡and ¡developers ¡ – Tune ¡TCP ¡stack ¡or ¡change ¡applica5on ¡code ¡ 19 ¡
SNAP ¡Deployment ¡ • Deployed ¡in ¡a ¡produc5on ¡data ¡center ¡ – 8K ¡machines, ¡ 700 ¡applica5ons ¡ – Ran ¡SNAP ¡for ¡a ¡week, ¡collected ¡terabytes ¡of ¡data ¡ • Diagnosis ¡results ¡ – Iden5fied ¡ 15 ¡major ¡performance ¡problems ¡ – 21% ¡ applica5ons ¡have ¡network ¡performance ¡problems ¡ 20 ¡
Characterizing ¡Perf. ¡Limita5ons ¡ #Apps ¡that ¡are ¡limited ¡ for ¡> ¡50% ¡of ¡the ¡5me ¡ Send ¡ – Send ¡buffer ¡not ¡large ¡enough ¡ 1 ¡App ¡ Buffer ¡ – Fast ¡retransmission ¡ ¡ Network ¡ 6 ¡Apps ¡ – Timeout ¡ – Not ¡reading ¡fast ¡enough ¡(CPU, ¡disk, ¡etc.) ¡ 8 ¡Apps ¡ Receiver ¡ – Not ¡ACKing ¡fast ¡enough ¡(Delayed ¡ACK) ¡ 144 ¡Apps ¡ 21 ¡
Three ¡Example ¡Problems ¡ • Delayed ¡ACK ¡affects ¡delay ¡sensi5ve ¡apps ¡ ¡ • Conges5on ¡window ¡allows ¡sudden ¡burst ¡ • Significant ¡5meouts ¡for ¡low-‑rate ¡flows ¡ 22 ¡
Problem ¡1: ¡Delayed ¡ACK ¡ ¡ • Delayed ¡ACK ¡affected ¡many ¡delay ¡sensi5ve ¡apps ¡ – even ¡#pkts ¡per ¡record ¡ à ¡1,000 ¡records/sec ¡ ¡ ¡ ¡odd ¡#pkts ¡per ¡record ¡ à ¡5 ¡records/sec ¡ – Delayed ¡ACK ¡was ¡used ¡to ¡reduce ¡bandwidth ¡usage ¡and ¡ server ¡interrupts ¡ B A D a t a ACK every ACK other packet Proposed ¡solu5ons: ¡ …. D a t Delayed ¡ACK ¡ a should ¡be ¡disabled ¡ in ¡data ¡centers ¡ 200 ms ACK 23 ¡
Send ¡Buffer ¡and ¡Delayed ¡ACK ¡ • SNAP ¡diagnosis: ¡ Delayed ¡ACK ¡and ¡zero-‑copy ¡send ¡ Applica5on ¡buffer ¡ Applica5on ¡ With ¡Socket ¡Send ¡Buffer ¡ ¡ ¡ 1. ¡Send ¡complete ¡ Socket ¡send ¡buffer ¡ Receiver ¡ ¡ ¡ Network ¡ ¡ ¡ Stack ¡ 2. ¡ACK ¡ Applica5on ¡buffer ¡ Applica5on ¡ Zero-‑copy ¡send ¡ ¡ ¡ Receiver ¡ 2. ¡Send ¡complete ¡ ¡ Network ¡ ¡ Stack ¡ 1. ¡ACK ¡ 24 ¡
Recommend
More recommend