Qual è il runtime costo delle prestazioni di un Mobile contenitore?

Mi piacerebbe comprendere completamente l’esecuzione costo di un Mobile contenitore. Ho trovato riferimenti a networking aneddoticamente sta ~100µs più lento.

Ho trovato anche riferimenti a run-time di costo con il “trascurabile” e “vicino allo zero”, ma vorrei sapere più precisamente cosa questi costi sono. Idealmente mi piacerebbe sapere cosa Mobile è l’astrazione, con un costo di prestazioni e le cose che sono astratto senza costo delle prestazioni. Di rete, CPU, memoria, ecc.

Inoltre, se ci sono astrazione costi, ci sono modi per aggirare l’astrazione costo. Per esempio, forse posso montare un disco direttamente contro praticamente in Mobile.

 

3 Replies
  1. 386

    Qui è un ottimo 2014, IBM research paper dal titolo “Un Aggiornamento di Confronto di Prestazioni delle Macchine Virtuali e dei Contenitori Linux” da Felter et al. che fornisce un confronto tra bare metal, KVM, finestra Mobile e contenitori. Il risultato complessivo è che la finestra Mobile è quasi identica a prestazioni Native e più veloce di KVM in ogni categoria.

    L’eccezione a questo è la finestra Mobile è NAT – se si usa la mappatura della porta (ad esempio docker run -p 8080:8080) quindi ci si può aspettare un successo minore latenza, come mostrato di seguito. Tuttavia, è ora possibile utilizzare l’host stack di rete (ad esempio docker run --net=host) quando il lancio di un Mobile contenitore, che consentirà di eseguire in modo identico al Native colonna (come mostrato in Redis risultati di latenza più in basso).

    Qual è il runtime costo delle prestazioni di un Mobile contenitore?

    Hanno anche eseguito prove di latenza su alcuni servizi specifici, come Redis. Si può vedere che al di sopra di 20 client thread, più alta latenza overhead va finestra Mobile NAT, quindi KVM, quindi una ruvida legame tra la finestra Mobile host/native.

    Qual è il runtime costo delle prestazioni di un Mobile contenitore?

    Solo perché si tratta di un utile di carta, qui ci sono alcune altre figure. Si prega di scaricare per l’accesso completo.

    Di dare un’occhiata a Disco IO:

    Qual è il runtime costo delle prestazioni di un Mobile contenitore?

    Ora, guardando il sovraccarico della CPU:

    Qual è il runtime costo delle prestazioni di un Mobile contenitore?

    Ora alcuni esempi di memoria (leggi il documento per i dettagli, la memoria può essere molto difficile)

    Qual è il runtime costo delle prestazioni di un Mobile contenitore?

    • Mi sarei aspettato KVM avere significativamente meno sovraccarico di rete se si utilizza PCI-IOV hardware con passthrough PCI configurato e abilitato. Che certamente non è una configurazione per i deboli di cuore, e ‘ concesso.
    • Come per il linpack i numeri indicati nella carta… francamente, io li trovo difficile da credere (non che io non credere che sono ciò che linpack emessa, ma che io non credere che il test è stato veramente di misura nulla, ma floating-point prestazioni eseguite). Le principali sovraccarico KVM è in userspace emulazione hardware componenti (che si applicano solo alla CPU hardware); c’è un overhead significativo intorno memoria di paging… ma raw in virgola mobile? Voglio vedere quello che stava succedendo lì-forse eccessivo di contesto.
    • Sembra che hanno aggiunto la finestra Mobile di numeri per la latenza di andata e ritorno. Ed è un po ‘ peggio di KVM.
    • Grazie @danuker – sempre meglio avere un pò di numeri di immaginare come stavo facendo. Ho aggiornato la risposta per includere i nuovi dati
    • Felice di aiutare, anche se ho appena collegato il lavoro di qualcun altro 😉 assicurarsi di sfogliare la carta, almeno – è molto interessante!
    • incredibile, la finestra mobile è super buona, quasi nativo.
    • Questa finestra mobile documento si parla dell’impatto di impostazione del -net=host bandiera: docs.docker.com/articles/networking/…
    • Correzione per la corrente di finestra Mobile sintassi CLI: --net=host (due trattini) e -p 8080:8080 (lower case ‘p’) per il NAT.
    • Mobile --net=host documentazione spostato a docs.docker.com/engine/reference/run/#network-settings
    • Perché non c’è il confronto del rendimento? Non dovrebbe essere di interesse?
    • È coperto collegate carta, e non ho voglia di fare copia/incolla di loro schemi 🙂 Vedere Sezione E
    • Il citato IBM carta sembra troppo concentrato sul network di IO. Non è mai indirizzi di contesto. Abbiamo guardato LXC e aveva rapidamente abbandonare a causa di aumento “non volontario” di contesto causando un degrado applicazione di elaborazione.
    • fantastica info – mi piacerebbe consiglia di prendere un momento per e-mail agli autori dell’articolo con che cosa hai trovato di così si può costruire un seguito, sulla carta, con un 3-anno di aggiornamenti e alcuni nuovi test incl. uno che mostrano il degrado è esperto
    • Sono anche curioso di sapere le operazioni sul filesystem — le ricerche di directory, per esempio, sono in un posto dove mi sarei aspettato di vedere in testa; a livello di blocco, legge, scrive e chiede che il dato grafici concentrarsi molto) non.
    • una delle risposte migliori che abbia mai visto
    • Io amo i grafici con la stessa tonalità di colore. È così facile distinguere
    • Più interessati a finestra mobile nativa di finestra mobile vs qualsiasi tipo di vm.

  2. 84

    Mobile non è di virtualizzazione, come tale,–, invece, è un’astrazione sulla parte superiore del kernel il supporto per il diverso processo di spazi dei nomi, dispositivo di spazi dei nomi, etc.; uno spazio dei nomi non è intrinsecamente più costoso, inefficiente rispetto ad un altro, così che cosa rende effettivamente Mobile hanno un impatto sulle prestazioni, è una questione di ciò che è effettivamente in quegli spazi.


    Mobile scelte in termini di come si configura spazi per i contenitori hanno dei costi, ma i costi sono direttamente associati con benefici-si può dare in su, ma in questo modo è anche dare il beneficio relativo:

    • Strati filesystem sono costosi — esattamente quali siano i costi variano con ogni uno (finestra Mobile e supporta più di backend), e con i modelli di utilizzo (l’unione di più directory di grandi dimensioni, o la fusione di una profonda serie di filesystem sarà particolarmente costoso), ma non sono libero. D’altra parte, una grande quantità di finestra Mobile, la funzionalità, l’essere in grado di costruire gli ospiti fuori gli altri ospiti in un copy-on-write modo, e ottenere i vantaggi di un magazzino implicita nella stessa — cavalcare pagare questo costo.
    • DNAT si costoso in scala, ma ti dà il vantaggio di essere in grado di configurare il vostro ospite di rete indipendentemente dal tuo host e dispone di una comoda interfaccia per la trasmissione solo le porte che si desidera tra di loro. È possibile sostituire questo con un ponte ad una interfaccia fisica, ma ancora una volta, perde il beneficio.
    • Essere in grado di eseguire ogni stack di software con le sue dipendenze installate in modo più conveniente — indipendente dall’host distro, libc, e altre versioni di libreria — è un grande vantaggio, ma ha bisogno di caricare librerie condivise più di una volta (quando le loro versioni sono diverse) ha il costo si aspetterebbe.

    E così via. Quanto questi costi effettivamente avere un impatto nel vostro ambiente-con la rete di modelli di accesso, la tua memoria vincoli, ecc … è un elemento per il quale è difficile fornire una risposta generica.

    • Questa è una buona risposta, ma sto cercando più specifici numeri e parametri di riferimento. Ho una conoscenza di con il costo di cgroups ma la finestra Mobile è più che come hai sottolineato. Grazie mille per la risposta.
    • Certo. Il mio punto è che qualsiasi generalizzata parametri di riferimento che troverete saranno molto limitata applicabilità a qualsiasi applicazione specifica-ma questo non per dire che sono in disaccordo con la gente, cercando di fornire loro, ma solo che esse devono essere assunte con un cucchiaio colmo di sale.
    • In che modo si potrebbe dire che KVM “non è una virtualizzazione è semplicemente un’astrazione in cima x86 tecnologia virtuale chiamate”.
    • c’è consenso accordo, andando indietro di decenni (per IBM primi non-x86 implementazioni hardware!), che la fornitura di astrazione direttamente sul livello di hardware è in modo inequivocabile la virtualizzazione. Consenso per la terminologia di tutto a livello di kernel sorta di spazio di nomi è molto più frammentato — potremmo ogni punto delle fonti, privilegiando i nostri punti di vista di ciascuno — ma, francamente, ci sono tecniche utili distinzioni, sia di sicurezza e caratteristiche prestazionali) che lo spostamento di un singolo termine potrebbe oscurare, così mi sono tenuta la mia posizione fino a quando e a meno che contrario industria viene raggiunto il consenso.
    • non è il cgroup che hanno un costo notevole, è molto di più i contenuti della rete e filesystem spazi dei nomi. Ma quanto tali costi sono dipende quasi interamente su come finestra Mobile è configurato, che specifica backend che si sta utilizzando. Bridging è molto, molto più economico di finestra Mobile di default di NAT, per esempio; e i vari filesystem backend’ delle prestazioni varia selvaggiamente (e, in alcuni casi, la quantità di overhead dipende dai modelli di utilizzo; overlayfs le varianti possono essere molto più costosi, con grande directory modificato attraverso più livelli f/e).
  3. 17

    Ecco alcune più parametri di riferimento per Docker based memcached server contro host native memcached server utilizzando Twemperf strumento di benchmark https://github.com/twitter/twemperf con 5000 connessioni e 20k velocità di connessione

    Tempo di connessione di overhead per mobile base memcached sembra d’accordo con sopra whitepaper a circa il doppio di velocità nativa.

    Twemperf Docker Memcached

    Connection rate: 9817.9 conn/s
    Connection time [ms]: avg 341.1 min 73.7 max 396.2 stddev 52.11
    Connect time [ms]: avg 55.0 min 1.1 max 103.1 stddev 28.14
    Request rate: 83942.7 req/s (0.0 ms/req)
    Request size [B]: avg 129.0 min 129.0 max 129.0 stddev 0.00
    Response rate: 83942.7 rsp/s (0.0 ms/rsp)
    Response size [B]: avg 8.0 min 8.0 max 8.0 stddev 0.00
    Response time [ms]: avg 28.6 min 1.2 max 65.0 stddev 0.01
    Response time [ms]: p25 24.0 p50 27.0 p75 29.0
    Response time [ms]: p95 58.0 p99 62.0 p999 65.0
    

    Twemperf Centmin Mod Memcached

    Connection rate: 11419.3 conn/s
    Connection time [ms]: avg 200.5 min 0.6 max 263.2 stddev 73.85
    Connect time [ms]: avg 26.2 min 0.0 max 53.5 stddev 14.59
    Request rate: 114192.6 req/s (0.0 ms/req)
    Request size [B]: avg 129.0 min 129.0 max 129.0 stddev 0.00
    Response rate: 114192.6 rsp/s (0.0 ms/rsp)
    Response size [B]: avg 8.0 min 8.0 max 8.0 stddev 0.00
    Response time [ms]: avg 17.4 min 0.0 max 28.8 stddev 0.01
    Response time [ms]: p25 12.0 p50 20.0 p75 23.0
    Response time [ms]: p95 28.0 p99 28.0 p999 29.0
    

    Ecco bencmarks utilizzando memtier strumento di benchmark

    memtier_benchmark docker Memcached

    4         Threads
    50        Connections per thread
    10000     Requests per thread
    Type        Ops/sec     Hits/sec   Misses/sec      Latency       KB/sec
    ------------------------------------------------------------------------
    Sets       16821.99          ---          ---      1.12600      2271.79
    Gets      168035.07    159636.00      8399.07      1.12000     23884.00
    Totals    184857.06    159636.00      8399.07      1.12100     26155.79
    

    memtier_benchmark Centmin Mod Memcached

    4         Threads
    50        Connections per thread
    10000     Requests per thread
    Type        Ops/sec     Hits/sec   Misses/sec      Latency       KB/sec
    ------------------------------------------------------------------------
    Sets       28468.13          ---          ---      0.62300      3844.59
    Gets      284368.51    266547.14     17821.36      0.62200     39964.31
    Totals    312836.64    266547.14     17821.36      0.62200     43808.90
    
    • Essi confrontare due diverse generazioni di memcached, e anche uno di loro nella finestra mobile, altri al di fuori della finestra mobile, non è vero?
    • sì sono 2 diverse generazioni
    • Sono questi i risultati con host di rete o bridge di rete nella finestra mobile?
    • Con tale grande stddevs queste misure non mostrano alcun rappresentabile dati avg 200.5 min 0.6 max 263.2 stddev 73.85

Lascia un commento