
okay, benvenuti a questo pomeriggio e
Parlerò del design
sistemi che sono reattivi in questo
traccia e ho trascorso un sacco di tempo in
finance Spears I dati di Big Data sono diversi
cose in cui dobbiamo rispondere in a
modo tempestivo che è un interessante
parte delle prestazioni quindi le prestazioni sono
tipicamente qualcosa che la gente dice ma
significa una delle due cose che posiziona
throughput o latenza quindi la latenza o
il tempo di risposta è ciò che questo è tutto andando
essere e quando progettiamo il nostro
applicazioni se non rispondiamo in a
modo tempestivo le cose non accadono così
bene quindi prendi questo per persona qui loro
non hanno reagito abbastanza in fretta e questo è
andando a causare molto dolore molto
le nostre applicazioni finiscono allo stesso modo e
un sacco di gente parla di come le cose
Devo essere in tempo reale in questi giorni che voglio
per chiarire un po ‘di ciò che è reale
il tempo significa e mi piace pensare è reale
è l’ora in uno dei tre fili
ciò che è noto come hard in tempo reale, quindi questo
è in genere ciò che troverai quando
stai programmando le cose
devi essere molto tempo limitato
così deterministico che se non lo sei
deterministico è catastrofico
fallimento questo esempio qui è una pistola che
lo troverai su una nave da guerra inglese chiamata
il portiere e il suo lavoro è un terzo
ultimo istante in cui una nave è in corso
attaccato deve difenderlo ogni volta
tutte le altre difese sono state ottenute
passato c’è un missile o un aereo
arrivando ed è molto vicino in movimento
veramente veloce cosa lo ferma non è un
la guida di questo è un pezzo di
funziona il software guidato dal radar
questo tipo di pistola ora se questa offerta su
questo non risponde alle persone che muoiono
l’estremo del tempo reale ma molte paure
non sono così estremi, ma siamo a
altre estremità dello spettro e uno di
le cose sono come le chiamo soft in tempo reale
quindi i mercati finanziari sono in genere simili
questo e in questo se non si risponde entro
un modo tempestivo si finisce per perdere soldi
forse non un sacco di soldi a volte molto
di soldi Knight Capital è stato un bene
esempio un sacco di soldi ma quindi dobbiamo
essere abbastanza reattivo in questo e se noi
non abbiamo fallito
ma più tipicamente questo è il tipo di
arte che la maggior parte di noi finisce per scrivere e
abbiamo utenti che hanno bisogno di usare il nostro
sistemi che devono essere reattivi che chiamo
questa è la fine del seccatoio, ma è così
davvero importante che abbiamo capito bene
diventiamo troppo pigri per questo finiamo
con utenti frustrati sono sicuro che tutti noi
sono una parola che se siamo frustrati
usando un’applicazione che non vogliamo
usalo molto di più che non vogliamo
esploralo in modo da iniziare bene
diventare critici come si ottiene
coinvolto in questo argomento che ho trovato spesso
che in genere gli utenti di questo tipo di
sistemi li sviluppiamo e gli utenti su
vale a dire gli sviluppatori che stanno costruendo
questo tipo di cose sono in questo tipo
di situazione le cose da costruzione e
sono molto inconsapevoli di ciò che è
proseguendo speriamo di lavorare consapevoli
e non sappiamo cosa stiamo per fare
solo scavare quando andiamo a vivere così io
voglio cercare di evitarci di entrare
questa situazione dandoti un po ‘
conoscenza per cosa essere preparati per questo
copriremo un numero di
uno dei temi è come testiamo
e misura ho intenzione di andare in a
un po ‘di teoria su cosa succede
in questo tipo di sistemi un po ‘
di pratica alcune cose che sto andando a
condividere da un mio cliente che ha permesso
io per condividere alcune di queste trappole
che la maggior parte delle persone crede che io abbia intenzione di farlo
finisci parlando di alcuni
algoritmi e tecniche che puoi prendere
via perché non voglio andarmene
questo è tutto depresso, questo è tutto
difficile la roba che possiamo togliere il
cose che possiamo migliorare in questo modo prima di
parliamo di come testiamo e
misurare questo diventa fondamentale in alcuni di
i nostri sistemi quindi iniziamo e
Immagina di essere Darth Vader che ho preso
consegna di una nuova Morte Nera come faccio
so come andrà a finire bene
devo testarlo in questo momento e così
semplicemente ho intenzione di caricarlo andando a
testarlo da alcuni tipi di agenti che sono
andando a correre contro questo potrebbe essere bello
mezzi semplici ma il nostro mondo è cambiato
radicalmente abbiamo clienti automatizzati
la notte non sono solo gli utenti a spingere
pulsanti a volte alcuni dei nostri clienti
può lanciare un sacco di sistemi caricati dentro
mondo finanziario questo succede molto
test con piccoli numeri o anche
singoli clienti molto grandi che possono
lanciare molto carico inizia il nostro sistema
diventare davvero importante è anche
importante testare con un grande noto
di utenti più piccoli che non lo fanno
spesso ma solo è un’altra dimensione così
troviamo cose come me
concentrato su un punto o in realtà
solo avendo grandi numeri di Breck o
algoritmi in altrimenti stiamo andando a
fallo in due modi diversi ma in realtà
è importante il modo in cui li misuriamo
sistemi da cui non dovremmo misurare
il lato di bassa generazione, perché se lo siamo
guardando qui e se questi ragazzi sono
generando il carico più sei anche tu
usando quelli per misurare hai sbagliato
risultati come quello che succede al loro
la selezione di GC fa una pausa e se vengono ricevute
scambiato il run out di gettare a
quanto nel sistema operativo loro
inizia a distorcere i risultati quindi abbiamo bisogno di a
osservatore di terze parti per osservare questo e
di solito è un bagno catturando la rete
il traffico ora potrebbe essere all’estremo
ti amo comprare alcuni davvero costosi
hardware che l’hardware catturerà
tutto e può timestamp tutto il
tasche e puoi in seguito analizzarlo
non c’è bisogno di andare a quella estrema
questo potrebbe essere semplice come usare
qualcosa come Wireshark un dump TCP a
cattura i pacchetti che poi analizzi
loro più tardi e puoi vedere il vero
prestazioni del tuo sistema da a
prospettiva di latenza perché siamo
catturando sul filo non siamo solo
affidandosi alle unità di bassa generazione a
fallo così per iniziare a bruciare non dentro
bada, dobbiamo anche sistemarlo
integrazione continua se vogliamo
essere test delle prestazioni che dobbiamo essere
facendolo tutto il tempo perché se lo fossimo
facendo questo tutto il tempo che poi troviamo
fuori quando le cose vanno male non appena loro
sbagliare non più tardi non sei mesi dopo
o un anno dopo ogni volta che proviamo a lavorare
come sistemiamo quello che ottiene veramente
complicato impariamo molto di più in breve
i cicli di feedback, proprio come facciamo con
resto del nostro lavoro dobbiamo farlo con
prestazioni e anche registriamo
tutto se abbiamo appena provato un sistema
nasconde tutti i tipi di birra e qui c’è a
davvero un buon esempio di quello che sto per
catturare tutto sul sistema e
memorizzalo in un istogramma e quindi cos’è
l’istogramma in questa fase bene per qualsiasi
dato il periodo di tempo che ho intenzione di registrare
il numero di osservazioni che ho visto
quella data latenza quindi questo esempio qui
è un grafico che ha una scala di registro lungo
l’asse x e quindi sta andando più in alto
in tempo ma la maggioranza dei nostri
le osservazioni sono
qui in genere questo sistema è
rispondere in meno di un millisecondo
che è grinta ma sta anche rispondendo
in un modo molto più lento più avanti così
catturare e ottenere questo revisionale
l’immagine è così potente che gli istogrammi sono un
ottimo modo per farlo in modo che registrino il
numero di osservazioni in qualsiasi dato
punto nel tempo ora diamo un’occhiata a ciao io
iniziare una stazione guarderà questo e noi
spesso usano termini come qual è la media
tempo di risposta qual è lo standard
deviazione bene questo è il modo di fare assurdità
può diventare così diamo un’occhiata alla modalità il
la modalità è l’evento più comune che
scopriamo che la nostra modalità è lì sul grafico
è interessante questo è tipico è
facile quindi una delle poche misure che è
una specie di mediana utile quindi è molto simile a
mettiamo in fila tutte le nostre osservazioni e
noi prendiamo il punto medio non lo è
in realtà mi sta dicendo che è interessante
le cose qui sono davvero stupide
il medio la media che abbiamo sempre
parlare di questo mi sta dicendo davvero
niente di quello che sta succedendo non lo fa
dimmi i bambini più tipici e questo
non mi dice cosa sta succedendo
fuori qui è in realtà nel mezzo di
una terra desolata che non mi dice nulla di utile in
tutto quindi non usare mezzi non usare
medie quando inizi a descrivere il tuo
sistema e non ne parliamo di standard
deviazione perché guarda quello che è
non è una distribuzione normale
multimodale è molto sbilanciato
alta curtosi è da così tanti livelli
non è qualcosa che vuoi standard
deviazione per descrivere in modo da catturare tutto
questi dati e metterli in istogrammi ora
prendiamo un semplice esempio da a
sistema quindi diciamo che ho un sistema I
voglio gestirlo da migliaia di persone
transazioni un secondo e il principale
tempo di risposta un punto è di 50 microsecondi
questo sarebbe un sistema di trading che potresti
facilmente basta tradurre questo in qualsiasi
altro tipo di sistema e abilità il
numero in modo che potrebbe essere cinque
in millisecondi potrebbe essere 50 millisecondi
è solo l’unità di tempo, ma in genere
in finanza stiamo guardando là
quindi stiamo guardando a 50 micros in questo
caso il tutto sembra davvero molto bene
cosa succede se stiamo generando un bel po ‘ di
spazzatura e stiamo vedendo un giovane
Garbage Collection generazionale
accadendo una volta ogni millisecondo e
ci sono ogni secondo che non ci vuole 20
Pausa di 5 millisecondi se si pensa se
li hai inseriti in uno a
millisecondo abbiamo un interessante il
infatti continua qui perché tu metti
qualcosa e sta andando a strano 25
millisecondi ma esegui quel periodo sei tu
ancora in jacked un altro carico così
qualcuno sta prendendo il 25 il prossimo ne sta prendendo 24
il prossimo è il 23 continua così
giù fino a quando non sei di nuovo al 50
ancora microsecondi, quindi 12,5 in
la media è ciò che accade durante il no
pausa si finisce con una media media
la latenza di trecento microsecondi
è una specie di pazzo che ti basta mescolare in un GC
pausa e tutto ad un tratto la tua media
non ha senso, ora, la tua offerta di Martin
questo a un cliente e tu potresti a
accordo di livello di servizio su di esso e tu sei
mi aspetto 50 microsecondi e non puoi
spiegare questi venti cinque o se
sei a conoscenza o non ci provi
spiegalo al tuo capo che non sei un tatto
un po ‘così perché non sta facendo
qualsiasi senso tu stia usando medie e
è pazzesco quindi dimentica queste medie
inizia a parlare di colpa dei percentili
Anna mi ha lasciato questo grafico ed è
un po ‘davvero interessante, piuttosto
piuttosto che guardare la nostra distribuzione
aggiungi le cose quando sono presenti i quantili
così avrò un percentile
distribuzione e così come andiamo avanti il
l’asse delle x saliremo tra le nove e novanta
per cento novantanove novantanove punto
nove e siamo in grado di vedere quello che sta succedendo a
la nostra distribuzione nel tempo c’è un
interessante di fatto qui, quindi torna indietro
al mio esempio sul GC se lo fossi
non catturare quei 24 aggiuntivi
richiede perché il tuo sistema è
generare carico è il tuo sistema
misurare questo forse anche bloccato da
cosa sta succedendo in quanto soffre di a
cosa chiamata omissione coordinata e
senza mezzi è i 24 campioni che tu
avrebbe dovuto avere non siamo noi non siamo GC
le pause in corso quando si sta eseguendo a
uno al millisecondo lo hanno perso
distorce tutti i tuoi risultati così le cose sembrano
meglio di quello che sono e il reale
omaggio in questo genere di cose sei tu
non ottenere belle curve morbide che ottieni
questi salti frastagliati e inizi
catturare cose come questa puoi vederlo
guardando i grafici ma tu hai
per misurarlo per farlo così io
consiglio di guardare una cosa chiamata
haytch dee o istogramma
e inizia a catturare i tuoi dati e mettere
questo in questo modo non ingannare te stesso
abbiamo un manager che dobbiamo conoscere
cosa sta succedendo dobbiamo essere in grado di
leggi questo e se iniziamo a fare questo noi
iniziare a comportarsi come veri scienziati
e non inganneremo noi stessi, quindi facciamolo
entrare in un po ‘di teoria ora
spiega un po ‘di cosa sta succedendo
sul perché i sistemi diventano insensibili a chi
tutti hanno visto la curva G tipicamente
tempo di risposta dei sistemi e sto cercando
qualcosa come questo dove aumentiamo
carico e usiamo il suo sistema sempre più
quindi abbiamo aumentato la risposta all’utilizzo
il tempo inizia a salire questa curva questo è
molto tipico di quello che sta succedendo
un sacco di caratteristiche interessanti ma
la maggior parte dei sistemi segue questa curva di Jack
dove la risposta non risponde più
tempo bene diamo un’occhiata a questo un po ‘
po ‘il motivo per cui succede questo e come posso
risolva bene ciò di cui stiamo parlando
circa se inizi a guardare questo è un
la cosa chiamata notazione kendall è a
buon modo di descriverlo così tu
caratterizzare il sistema per come le cose q
su di esso usando questa notazione e cosa
la notazione qui mostra che tu sei
tre parti è il tasso di arrivo al
sistema che è il M il tempo di servizio
stesso per il comportamento di quello e poi
quante istanze del tuo servizio così md
uno significa che è un tasso di arrivo di Markovian
il servizio stesso si comporta in a
modo deterministico e ne abbiamo uno
istanza di quel servizio se descrivi
i tuoi sistemi in questo tipo di fazioni
quindi scegli l’equazione necessaria
capire cosa sta per fare sotto il livello basso
che aumenti l’utilizzo di un fucile
Ritz può essere diverso che può essere
completamente uniforme che potrebbe essere
Markovian potrebbe essere il nostro insieme
potrebbe essere molto diverso
opzioni in questo ma è molto
cosa interessante da esaminare molto
quello che sto per mostrarvi nel colloquio
è il tipo di ispirazione che si spera
alcuni wiki camminano in un po ‘di google a
scoprire con alcune di queste cose io
non passare molto tempo esattamente
cosa sono queste cose, ma per un MD
Prendo questa formula così per questa formula I
può capire quale sia il mio tempo di risposta principale
sta per essere collegato a questa formula
per il tempo di servizio dell’utilizzo
e posso quindi tracciare quel grafico
cosa veramente interessante è ciò che è
l’utilizzo del bene è a
funzione di servizio
ancora una volta così la velocità del nostro servizio
corre diventa davvero fondamentale per
quanto sia reattivo che possa sembrare gentile
di ovvio ma è molto peggio di te
in realtà la penso così se torniamo a questo
grafico diciamo che sto correndo qui al
punto di utilizzo del novanta per cento
normalmente quando i miei sistemi non caricati è
rispondere lì, ma una unità di tempo
quando gestisco il novanta per cento
l’utilizzo è in esecuzione in più di 10
unità di tempo qualunque cosa accada quell’unità
essere ora se prendo il mio servizio e io
il profilo it e io lavoro fuori come farlo
più veloce e lo tolgo da qualsiasi cosa
doveva essere il cinquanta per cento di quello che
era prima che il tuo sistema non avesse un
tempo medio di generazione del cinquanta per cento
meglio perché quel tempo di risposta va
nell’utilizzo cosa succede realmente
sei arrivato proprio in questa curva
circa qui e il tuo sistema ora è dieci
tempi più reattivi quindi comprensione
la matematica dietro questo è così
potente e ti dà grandi risultati
nel tuo sistema così relativamente piccolo
i cambiamenti possono avere un impatto enorme e
questo vale per qualsiasi cosa tu faccia qualcosa
questo è un servizio che siamo un servizio per il
progetti su cui lavoriamo se veniamo usati a
utilizzo superiore al settanta percento
diventiamo insensibili quindi ce n’è uno
i responsabili di progetto nella stanza si prega di pagare
attenzione non cercare di usare la gente cento
utilizzo percentuale o anche più perché
non saranno reattivi, dobbiamo
avere del gioco nei nostri sistemi questo per funzionare
quindi dobbiamo assicurarci di averlo
capacità sufficiente questa è una parte fondamentale
e come lavoriamo ora l’originale
la teoria delle code ha cento anni
ma 50 anni fa, John ha fatto poco
osservazione interessante su questo in quanto
per qualsiasi sistema che da quando Teddy ha fatto
ed è qui che il numero di arrivi
è uguale al numero che sta lasciando
il sistema e non bello come stato
il suo scorrere attraverso queste proprietà
tenere fede indipendentemente dal tempo di servizio
indipendentemente dai tassi di arrivo e così via
possiamo facilmente lavorare arte uno di questi se
sappiamo che gli altri due sono molto
proprietà utili del sistema così alla ricerca
nel lavoro di
la legge delle piccole e piccoline ci dà un bene
dove avanti e come mi piace usare
questo è se lego i miei segnali che posso limitare
il tempo di servizio quindi se voglio avere
il nostro tempo di risposta che sto per
onore sempre se lego la mia stecca che posso allora
assicurati di non superare questa risposta
tempo il mio sistema può rimanere sensibile quando
le persone vanno bene e se tu stai ricevendo
più carico quindi hai a quel punto
rifiuterai l’input è davvero così
semplice che non vuoi continuare a prendere
input e mentre continui a prendere i tuoi input
sistema continua a crescere e crescere e
crescendo nei suoi segnali e alla fine correrà
dalla memoria e schiaccia chi è
meglio questo è dire scusa siamo occupati
per favore torna più tardi e dai un
davvero un buon servizio per tutti
già arrivato o lasciato entrare più carico
le code o le build hanno il sistema
schiantare le persone che sono dentro non ottengono un buon risultato
servizio nessuno può ottenere un buon servizio
in seguito perché i tuoi sistemi hanno cenato
questo è un approccio molto più professionale
sembra che dovremmo pensare in questo modo
così puoi separare le code nel tuo
sistema hai un vero problema quindi cosa c’è
una delle altre cose che possiamo usare
accelerare bene possiamo andare paralleli e il
comune dove le persone guardano andare
Parallelamente è la legge delle bambole cosa sia veramente
interessante su um dolls law is people
penso che le leggi siano tutte state
incoraggiando il parallelismo se leggi il nostro
carta originale delle bambole sei molto veloce
si rese conto che non era un parlatore incoraggiante
ilysm stava cercando di scoraggiarlo lui
stava dimostrando quanto fosse difficile in realtà
sì, voleva pedinare i mainframe lui
volevo venderti un suo grande uomo
forum e non comprare uno di questi nuovi
sistemi di media portata che ne avevano molti
processori in loro perché lo era
sottolineando che in realtà è molto
difficile da fare programmazione parallela e così
di cosa tratta l’argomento è se io abbia
ho qualche compito in cui posso dividerlo in alcuni
modi ora quali parti di esso posso separare
per correre e parlare così in questo caso se io
posso dividerlo e posso ottenere una bella accelerazione
se ho applicato per corso, ma se B è
l’unica cosa che posso dividere non capisco
la sim velocizza così diventa critico come
molto se il tuo algoritmo puoi effettivamente
eseguire in parallelo per fare questo lavoro
meglio e così iniziamo
grafico e guardiamo a quale velocità
come possibile guarda che inizi a salire
questi casi così anche se ne avessi solo cinque
la percentuale del mio algoritmo è la
componente sequenziale che non posso mai ottenere
maggiore di un 20x pagato in effetti lo farò
mai nemmeno arrivare a 20 expedia perché io
può anche avvicinarsi ad esso, ma io
mai arrivare lì questo rende davvero
una sfida interessante come se la tua
l’algoritmo è il 50% che non sei mai
guardare due atti accelerare non importa
quanti core ne buttiamo fuori così
diventa davvero fondamentale per capire cosa
è la componente sequenziale di tutti
di loro e molte persone non sanno nemmeno
ma sai cosa ho avuto la bambola?
vista allegra felice del mondo è
in realtà molto peggio di quel Neal
Gunther ha scoperto da mondi reali
misura che in realtà non si poteva
persino raggiungere la legge di Amdahl dall’accelerare
prospettiva ciò che ha scoperto è quello
il punto di contesa è davvero importante ma
la bambola um non ha parlato del
lato coerente delle cose quindi devi
collegare la controversia e la coerenza
valori nelle tue equazioni per risolvere
qual è la tua possibile accelerazione ora se io
applica la contesa e la coerenza cosa
finisco con questo grafico quindi se io
Supponiamo che ci vogliono due e 50 microsecondi
per rendere qualsiasi stato che ho come parte del mio
contesa coerente tra quei fili
o processi dopo un po ‘ di tempo
scopri che inizia la chiamata di coerenza
il dominante e se guardiamo a questo
grafico è tipo di aspetto gentile di a
i due e quattro processori vicini ma
guarda cosa inizia ad accadere oltre il 16
processori 32 processori iniziamo a
divergere e poi in realtà inizia a
peggiorare ora non siamo in un mondo dove
stiamo ottenendo sempre più core e
la luce è stata mostrata sugli algoritmi
al punto che queste cose sono
iniziando ad apparire e dobbiamo essere
consapevole di ciò, andare in parallelo è
non è necessariamente una cosa facile che dobbiamo
essere consapevoli di ciò che possiamo fare non possiamo fare
loro quali sono i nostri limiti e come
funziona così torniamo di nuovo a
che così abbiamo guardato possiamo fare la coda
cose che possiamo fare le cose andando Paulo
ma è tutto sul tempo di servizio
se stesso perché se il tempo di servizio
non è deterministico in sé
davvero molto difficile e questo è puramente
sugli algoritmi in questa fase che abbiamo
per tornare alla teoria algoritmica di base noi
non posso aspettare un anno e ottenere una CPU più veloce
non possiamo nemmeno con 10 anni per ottenere un
CPU significativamente più veloce lo faremo
ottenere più cpus otterremo un marginale
accelerare ma non possiamo farlo solo noi
tornare indietro e conoscere
algoritmi come abbiamo fatto in passato e
iniziare a prenderli sul serio di nuovo così
devi conoscere l’ ordine dei tuoi
algoritmi di grande notazione a
roba universitaria di nuovo e iniziare
applicando questo e se hai
algoritmi che sono al quadrato o n
cubettato o qualsiasi cosa interessante in input
stai per diventare catastrofico
Comportamento nel momento in cui iniziamo ad aumentare di livello di cui abbiamo bisogno
smettere di farlo e quello può essere come
semplice come vado al database che ho letto
fuori alcuni dati e quindi all’interno di un ciclo come
Ho incontrato davvero oltre il quale torno a
il database di nuovo si ottiene solo un N
algoritmo quadrato che le persone devono iniziare
pensa in questo modo e realizza ciò che è
succedendo altrimenti non siamo reattivi
quindi questa è la teoria finita per un po ‘
guardiamo un po ‘di pratica e vediamo
quello che può effettivamente accadere così uno dei miei
i clienti dicono gentilmente di condividerne alcuni
dati in cui sono entrato per una consulenza
impegno per una settimana e l’obiettivo era
per rendere il loro sistema commerciale più
prevedibile da una prospettiva di latenza
ma anche ridurre la latenza se possiamo
l’obiettivo principale era in realtà quello di aumentare
prevedibilità e latenza e come
è successo è stato davvero interessante
questi sono veramente buoni
gente e loro erano molto bravi a cosa
hanno fatto e la maggior parte dell’ovvio
sbaglia il collo della gente che avevano
hai già corretto che stai lavorando qui
il livello di microsecondi decine di
microsecondi per risposta non lo so
tutti lavorano su questo, ma è qui che
questi ragazzi erano ciò che trovo davvero
interessante nel tornare in questo è
quando inizi a trattare davvero
davvero brave persone non è così
devono essere migliori di loro puoi venire
in e aiutare le persone da coaching e io
scopri che il nostro settore soffre davvero
dal fatto che non ci si applica
coaching così spesso venivo da un
sfondo sportivo e ho avuto allenatori che
Ero più veloce di loro che potessi fare tutto
tipi di interessanti perché ero
più giovane e in grado di ma potrebbero ancora
divano possiamo farlo nel nostro settore come
bene e non lo facciamo abbastanza così io
mi è piaciuto molto questo fidanzamento perché io
è stato in grado di portare questi ragazzi a
meglio solo allenando e seguendo
loro attraverso roba quindi cosa abbiamo fatto noi
scoprire bene abbiamo misurato il loro sistema
il primo giorno e questa è una dispersione
trama del tempo di risposta del loro
sistema per un insieme dato di input
ed è qui che inizi a vedere di nuovo
le medie non significano assolutamente nulla
ci sono un sacco di cose davvero interessanti
qui c’è un periodo di riscaldamento finito
qui c’è tutto questo interessante
picchi e c’è molta attività
intorno quindi è piuttosto affascinante
cosa sta succedendo, così fai ciò che inizi
profilazione del tuo profilo in un numero di
diversi modi in cui inizi a realizzare dove
i tuoi costi sono e uno dei primi
le cose che abbiamo scoperto in questo sono lì
era un problema di contesa con multipli
produttori nel sistema causando thread
contesa mentre lavoro attraverso il
codebase ho scoperto che stanno usando il
disgregatore stavano usando un vecchio
versione del disruptor che aveva un
problema particolare con più
produttori so che la versione 3 in poi
ha corretto e migliorato così noi
aggiornato a quello che è quello che è successo così
boom di aggiornamento del software che abbiamo effettivamente ottenuto
un po ‘meglio e abbiamo un po’ più veloce
quindi questo è un cambiamento, ma ancora una volta
nota come misuriamo noi applichiamo le sabbie
creare un esperimento per testare qualcosa
sai che andiamo avanti e facciamo un
cambia e lo misuriamo di nuovo e così
siamo più veloci ma ne abbiamo ancora
manufatti interessanti una volta che abbiamo tirato fuori
quell’altra cosa ce n’è una molto
artefatti interessanti come quello che sta succedendo
qui scopro una specie di roba
affascinante il grande curioso vi scava dentro
impari molto bene se eseguo lo zoom
che questo è quello che sembra in alcuni
dettaglio quindi è chiaro che è normale
una sorta di bacio che alcune cose stanno prendendo
più a lungo poi all’improvviso ottengo una lacuna
salta su un altro spazio in un tempo di salto così
cosa può causare che inizi
facendo di nuovo le domande torniamo indietro
per applicare la scienza ho la teoria come
cerco qualcosa per vedere se quello
La teoria è corretta quindi disegno io
sperimentare per quello che poi misura e io
controlla i risultati quindi una delle cose che ho
aveva una teoria su era che questo era un
problema di ridimensionamento della struttura dei dati e
potenzialmente una spazzatura
alcuni problemi ora la raccolta dei rifiuti
il problema è facile perché produci il file
GC registra e correggi i log del GC
con il tempo di questi eventi e indovinare
che c’è un evento GC qui su un GC
evento qui così bene che mi ha detto
qualcosa che è stata la causa di un numero
di cose ma non mi ha detto cosa
sono andato avanti qui ho visto molti di questi
due grafici questo non è niente come gli umani a
schema di griglia che corrisponde alla visualizzazione
questa roba è così importante per te
dati messi in erba mettilo dentro
istogrammi spargono trame così il presente
brucerò così tutte le cose sono davvero
utile perché inizi a localizzare
modelli e inizi a realizzare con
questo è così questo mi grida dati
ridimensionamento della struttura, quindi come faccio a testarlo
Ho scritto un aspetto che uso orientato all’aspetto
programmazione per andare e intercettare in qualsiasi momento
presto le mie strutture hanno avuto un metodo di ridimensionamento
e se quel metodo di ricerca è stato chiamato i
l’ ho loggato e ho loggato dov’era
succede nel codice e indovina un po ‘
questi erano ridimensionamenti di hashmap e
interessante era il segno di hash mark
in realtà la causa del GC perché come
ridimensionate una mappa di attacco che crea
copia tutte le sue strutture interne
e Alec li colpisce in uno spazio più grande così
sta ridimensionando verso l’alto e così è stato
interessante perché poi ogni volta che
copia completa e tutto questo lo lascia
tutto va e finisco con un altro GC
eventi più tardi e così è solo facendo
qualche analisi che scava venerdì sera
tu capisci molto del tuo sistema
è davvero molto divertente, così abbiamo fatto
ciò che più un grafico assomiglia
in seguito, quindi non abbiamo quelli
più step-up non ne abbiamo alcuni
quei fatti bizzarri ma ancora c’è ancora
un sacco di cose interessanti in corso sul perché
abbiamo queste grandi colline simili e
picchi in macchina nella curva così proviamo
per capire che cosa fosse quello che è
la causa usa i contatori delle prestazioni ab per
scopri cosa stanno facendo i cpus e
scopri che ci sono un sacco di raffiche di denaro
mancanti ma c’erano quasi metronomici
lo scaviamo di nuovo oh sembra
sospettosamente come il tempo ogni volta che tu
prendi le quantum di fette da dare
in alto sulla CPU quindi seguiamo il contatore così
che era decisamente tutto il cache
manca secondo quanto come possiamo fermare
quello che succede succederà
se siete costantemente appena muoversi
discussioni ogni volta che le cose ti succedono
otterrà quelle mancanze di cache perché il tuo
il denaro non è caldo, quindi abbiamo scritto una sceneggiatura
che dopo l’applicazione è stata
correndo per un po ‘, quindi lo lasciamo fare
hai corso per un po ‘e poi abbiamo bloccato
discussioni a cui non è permesso
muoviti è quello che è successo dire di noi
entrare in questo oops ci mettiamo in corsa a
un po ‘poi applichiamo lo script ora
è molto più stabile di tutti quelli
migrazioni tutte queste cose qui
andato via è andato giù di nuovo questo
sembrerebbe oh c’è interessante
Fatti Kasia e cosa sta succedendo e questo
è solo un’analisi divertente che cos’è tutto questo
altre cose che non hanno preso troppo
a lungo a scavare era GC giovane
generazione GC quindi se abbiamo ripulito il GC
questo diventa quasi una linea retta e
allora hai una bella soft real-time
sistema quindi è solo come una settimana
facendo un sacco di analisi per scoprirlo
cosa sta succedendo e possiamo molto
migliorare il sistema alla fine di questo
è molto più veloce di quanto non fosse ma è un
molto più prevedibile nella sua risposta
tempo quindi questa è la seconda parte , parliamo di
insidie cosa può andare storto lungo il
Ad Ovest stai scavando lungo non vuoi
finire in quella grande pila di
roba marrone inizia in fondo il nostro
le moderne CPU stanno facendo davvero molto
cose interessanti ma più
cosa importante che stai guidando
verso è l’uso di energia che vogliono
ridurre il consumo di energia il più possibile
così come stanno correndo verranno
giù in prezzemolo più basso è loro lo faranno
accelerare la velocità cenare tutti i tipi di
cose interessanti e queste hanno un grande
impatto sulla reattività del tuo
sistema si può finire girando un po ‘di
queste date per spegnerle
ma potrebbe essere una parola che è questo
diventando sempre di più per le funzionalità così
se stai usando molte CPU molto
intensamente puoi garantire che il
la frequenza su tutto il tuo socket è
andrà giù se la maggior parte della tua CPU è
acquisito e uno o due sono in esecuzione veloce
si riequilibrerà e in realtà ti permetterà
frequenze di clock molto più elevate e cosa c’è
andando avanti puoi controllare un po ‘ di questo
roba al nostro livello più basso, quindi cose come
terribili quelli pastosi in mare Stati questi
sono tutti per
cose interessanti il controllo di ciò che è
succedendo abbiamo anche cose come
hyper threading siamo all’interno della stessa cosa
colore possiamo avere più thread in corso
attraverso lo stesso nucleo e in alcuni casi
è più veloce in alcuni casi è più lento
devi misurare il lavoro fuori cosa è
la cosa giusta per la tua applicazione ma
ancora più interessante è cose come SMI
così la gestione del sistema lo interrompe
l’hai fermato non puoi fare nulla
a proposito di un livello di sistema operativo
dove la tua CPU si fermerà di tanto in tanto
Prendi il controllo della temperatura per fare il falso
tutti i tipi di cose interessanti da vedere
in che stato è guardando alcuni
delle ultime CPU questo sta diventando uniforme
più spaventoso perché stanno facendo le cose
come forse controllare le cose e inviare
dati alla NSA in cerca di amt e
ti spaventerai questo genere di cose è
sta succedendo, ma così tante cose sono
accadendo a questo livello di livello mentre andiamo
su un livello alla scatola più grande sul
tutto vedrà che le nostre CPU e le nostre
i sistemi sono diventati molto complessi lì
in effetti le reti sanno che io ho bene
più core all’interno delle nostre macchine con
strati di cache hanno condiviso cache ma loro
possiede prese separate con memoria
collegato direttamente a loro quindi ho un
core qui e parla alla memoria
quaggiù è un costo diverso rispetto a
parlare alla memoria qui perché tu
devi attraversare una rete sul tuo
scheda madre tra prese e non aggiunge
costi aggiuntivi non siamo nel mondo
di accesso alla memoria non uniforme in modo consapevole
il modo in cui accedi alla memoria diventa davvero
importante ma una cosa da portare via
da tutto questo è come vicino alla CPU
le cose sono molto veloci più lontano
loro cominciano a ricevere
molto più lento ma sono tre pipistrelli
vengono presi uno è il pipistrello temporale
quindi se hai usato qualcosa di recente
è probabile che sia in contanti per usarlo
di nuovo presto il secondo è lo speciale
scommetti quindi cose vicine
saranno usati insieme così sono le tue CPU
facendo un sacco di cose per questo e il
il terzo pipistrello è una scommessa con schema vs retro, quindi se
usi le cose in un modello prevedibile
l’hardware preleverà la tua memoria per
tu se non fai uno di questi tre
cose che otterrai molto
di cache manca e molto poco reattivo
memoria quanto sia estremo questo è in realtà
più veloce per lo streaming di dati così caratteristico
spesso SSD allora è a caso
accedi alla mera memoria che si chiama random
la memoria di accesso è un termine improprio completo
non ti dà a caso
caratteristiche si comporta abbastanza bene
mancia più si lavora con diversi
sottosistemi di memoria che inizi a realizzare
che non importa che tipo di
sottosistema di memoria Vietminh memory be its
la memoria sia qualunque cosa non ho intenzione di
essere spinning desk potrebbe essere SSD potrebbe
sii qualsiasi cosa se ti occupi di loro in a
in modo sequenziale sono molto veloci
trattare con loro in modo casuale o
tu provi ad avere un accesso arbitrario loro
ottenere molto più lentamente tutto è di punta e
devi cominciare a pensare che così abbiamo lat
messo a punto dal hardware nella
sistema operativo così tante squadre
i programmatori non parlano due sistemi
le persone viceversa e le cose sono così
mal configurato, dobbiamo lavorare meglio
insieme perché c’è un numero di
cose a livello di sistema operativo
deve essere configurato e configurato o avere
un enorme impatto sulle prestazioni
sistemi di memoria virtuale una cosa come noi
set di buffer per il networking come impostiamo
buffer per occuparsi di archiviazione se
questi sono mal configurati è come tre
quattro atti differenza di prestazioni
a volte 10 volte la differenza nelle prestazioni
e come questa roba è stata creata e la maggior parte
la gente non lavora nemmeno in questo
area così potremmo passare settimane
ottimizzando il nostro codice ma tutto ciò di cui abbiamo bisogno è
i nostri parametri del kernel cambiano e potremmo
hanno fatto accelerare tre o quattro atti
non lo otterremo a meno che non iniziamo
lavorare insieme quindi dobbiamo iniziare
facendo ciò con i nostri team e andando
avanti ci mettiamo nelle nostre macchine virtuali e
ci sono molte cose in corso su uno di questi
le cose più orribili delle nostre VM sono
queste cose chiamate punti CF ora sono molte
la gente probabilmente sarà a conoscenza di ciò che a
il punto di salvataggio è ma le loro operazioni erano
all’interno del nostro governo MS e questo accade
attraverso altre macchine virtuali pure è
che in certe condizioni il mondo
deve essere fermato per eseguire quell’azione
in modo che in realtà forse spazzatura
raccolta potrebbe essere una specie di inflazione a
blocco da vasta serratura in un blocco completo e
ogni sorta di cose interessanti ogni volta
queste cose accadono tutte le discussioni devono
essere portato il punto di salvataggio e poi quello
l’azione va avanti che inizia a
impediscono davvero il progresso all’interno delle nostre VM
e tornando alla nostra legge sulle bambole
inizia a diventare il componente sequenziale
e i nostri algoritmi vedo sistemi per cui
butti un sacco di cose e pensi
il tuo codice è addirittura completamente parallelo
e non avendo alcuna contesa ma perché
contiene su cose all’interno del vm come
avendo un sacco di avere un sacco di
assegnazione o avere un sacco di blocchi esso
basta soffocare al punto che non lo fai
ottenere l’ utilizzo sulla scatola che dobbiamo
essere consapevoli di questo e di come andiamo avanti
la virtualizzazione è un’altra buona
ogni volta che andiamo nel mondo virtualizzato
quando facciamo una chiamata di sistema, chiamiamo
un sistema operativo ghast che deve poi
chiamare nel sistema operativo host e
a seconda di come è impostato , questo può
essere un costo enorme e cosa sta succedendo
questo è uno di quelli in cui ho
visto ad un’ascia differenza tra lettura
i dati di una rete vanno bene
configurato in un ambiente virtuale
attraverso rispetto al lavoro in un nativo
ambiente e che può essere semplice come
visto una specie di poche migliaia di messaggi
il secondo arriva per saltare in settanta
mille messaggi in secondo luogo ottenendo questo
roba configurata per farlo bene
conta davvero che la gente ti dica
virtualizzazione che il problema è quello
aggiunge solo alcuni punti percentuali
non è vero in molti casi quando inizi
uscire dalla tua macchina virtuale per andare
al banco o andare in rete o fare cose
come ottenere un lucchetto rende un enorme
differenza perché stai chiamando
attraverso più livelli e c’è a
grande tassa per quello che molti dicono devono
scrivi il codice e ci stiamo condividendo
discussioni e così ogni volta che abbiamo lavorato
su un thread dobbiamo consegnarlo a
un altro thread come lo facciamo in genere
è con un lucchetto e poi dentro il lucchetto
usiamo una variabile di condizione così in Java
quello potrebbe essere l’avviso che potrebbe essere
segnala uno strano con una variabile di condizione
se stai usando Java utilizza contemporaneamente 5
queste sono le cose accadono su tutto
le lingue che stai facendo fondamentalmente
coinvolgere il sistema operativo
notifica da un thread all’altro
questa è un’operazione molto costosa
tipicamente per quello che succede e una volta
lo fai abbastanza spesso il tuo thread lo farà
essere sospesa e non verrà eseguito per
piuttosto una grande tempo in futuro questo è
un incubo e applicazioni commerciali se
sei nei giochi o l’audio è davvero
evidente ma sta iniziando il backup
oblem solo applicazioni normali
perché di nuovo si tratta di questo
componente sequenziale soffoca
algoritmi che lega insieme i fili e
non riesci a ottenere il risultato, ma non lo farai
scalare con più nuclei voi
in pratica finiscono con la roulette semplice
la tua latenza e il tuo throughput quando
inizi a fare questo tipo di cose
ho un non udito le cose così, suppongo, Joe
lui ha questa legge dell’astrazione che è
davvero interessante l’astrazione che perde
problema e questo è diventato un problema serio
problema mentre continuiamo a stratificare queste cose
che li chiamiamo astrazioni che sono
non astrazioni i loro strati di merda
molti casi se torniamo a ciò che Dykstra
detto sull’astrazione e un’astrazione
deve essere introdotto per fare qualcosa
nota più precisa la parola precisa
ogni volta che metti uno strato di astrazione
e fare qualcosa di più vago che è
non una buona astrazione è tornata alla mia
punto di nuovo è uno strato di merda e
eppure continuiamo a farlo e continuiamo
parlando di noi siamo fuori nelle astrazioni
tutto quello che stiamo facendo è rendere le cose vaghe
non chiaro e dandoci male
prestazioni e bug in molti casi io
Ho questa cosa in cui ho colpito
quadri e penso che le biblioteche siano il
modo in cui dovremmo andare in strutture in posa
di lavoro che dobbiamo smettere di fare
così caro Thomas ha questa espressione
le strutture sono i modi di iniettare
le tue dipendenze con le altre persone
il codice non dovrebbe essere così quello che noi
dovrebbe fare è scrivere bene
biblioteche che si prendono cura di se stessi così
quando includi la libreria che crea
la tua vita migliore e tu la includi
perché vuoi ma non dovresti esserlo
costretto a farlo e alle nostre astrazioni
è un modo di guardarlo perché
molte di queste cose non sono banali e
devono affrontare la complessità in
nel modo giusto mi piace pensare a questo come
la simpatia meccanica che dobbiamo
capisci cosa sta succedendo in basso ma
solo con dettagli sufficienti in modo che possiamo ottenere
i bastardi ma non dobbiamo diventare
esperti in esso, ma dobbiamo avere un
idea ragionevole, quindi la stiamo usando nel
il modo giusto non mi nascondo dietro la scusa
quindi abbiamo un livello di astrazione che nasconde
che dovrebbe renderlo più preciso
e più facile da usare se non lo fa
lo sta facendo in modo erroneamente interessante se
vogliamo essere reattivi
cosa succede quando inizia il nostro sistema
fallire bene mentre i nostri sistemi si ingrandiscono e
più tessuto complesso e distribuito
le cose si sentono sempre in effetti
in qualsiasi sistema molto grande
c’è sempre qualcosa nello stato di
essere rotto ma devi continuare
e amo questo genere di cose e abbiamo
visto che questa scena è meravigliosa è come
continui ad andare avanti è solo una carne
la ferita perse la gamba perse un braccio
andando il nostro software ha bisogno di farlo come
bene e, si spera, non fermarsi e dare
tempo di risposta scadente come lo fa noi
entrare nei nostri algoritmi in questa fase
cosa possiamo fare cosa possiamo andare avanti
con la nostra prima cosa che dovresti fare è se
stiamo andando a fare scienza che andremo a
misurarli fare le cose bene dobbiamo
fai degli esperimenti puliti se non l’hai fatto
chimica che non useresti tutti e tre
élite nsel che sono sporchi hey voglio
per controllare una reazione chimica e sono messo
due agenti insieme non ho intenzione di fare
in una provetta sporca perché non lo è
andando a darmi i risultati giusti che abbiamo
devo iniziare a farlo nel nostro software
quindi dobbiamo capire come isolare
i nostri compiti come togliere tutto il rumore
di quello che sta succedendo, quindi stiamo misurando
il giusto tipo di cose che non sto andando
per entrare nel dettaglio di una delle diapositive
sono disponibili puoi andare via e tu puoi
google per alcuni di questi tipi di cose
ma una cosa lo raccomanderei davvero
sta guardando ja singhiozzo su questo così giusto
google per un singulto J se si ottiene il
è possibile che sia un adorabile piccolo agente
viene eseguito all’interno del processo o può essere eseguito
fuori dal tuo processo e cosa farà
è che ti dirà che un thread non lo era
in grado di funzionare in qualsiasi momento
e questo ti dice moltissimo su
perché potresti fermarti nel tuo
applicazioni che puoi iniziare a identificare
quando e dove e puoi correlare
con quali sono le tue applicazioni in realtà
facendo così abbiamo questo pulito
ambiente che ora abbiamo per eseguire attività
e dobbiamo misurare e abbastanza spesso
abbiamo un profilo che qui è usato GF
VisualVM chiunque utilizzare il kit di ottenere
profiler tutti quelli come profiler loro
essi si trovano non ti dicono cosa sta succedendo
nel tuo codice sono ragionevoli per a
certa classe di problemi I quella classe di
problemi tipicamente dove stai andando
rete o stai uscendo dal tuo
programma per fare qualcos’altro se si ottiene
qualcosa per l’utilizzo intensivo della CPU per la memoria
intensivo
non lo trovano perché di nuovo
quelli malvagi vedono se ho parlato di punti prima
ma questo è quando il tuo campione
programma che campionano solo in CF point no
nel codice altamente ottimizzato che il tuo
jet ha fatto per te non va bene a te
è necessario utilizzare profiler come il nuovo
Jrockit Mission Control con il volo
registratore di prestazioni slave integrate
analizzatore di studio intel vtune di questo tipo
dei profiler effettivamente fanno il suono giusto
aereo e vi diranno ciò che il
problemi reali sono nel codice è arrivata a
andare avanti fino a quel livello e fermarsi
usando alcuni di questi altri profiler
una delle altre cose che mi piace fare è
incorporare istogramma così come ho detto
prima che gli istogrammi siano un ottimo modo di
misurando se li metti nel tuo codice
così come ogni volta che ricevi richieste
dentro e cose registrano il tempo di cose
sono registrati in questi istogrammi
davvero a buon mercato sono davvero semplici voi
può avere una buona visione di ciò che sta succedendo
sugli hit l’istogramma di dr è uno dei migliori
per questo non è per alta gamma dinamica
funziona abbastanza come un punto mobile
numeri in modo da non dover lavorare
quello che tutti i bidoni sono in anticipo è
molto molto efficiente, quindi cosa posso fare
scendi da questa curva J proprio come la mia
l’utilizzo va bene c’è a
tecnica noiosa davvero vecchia che funziona
davvero bene è tutto incompreso e
è un pasticcio che tutti lo pensano
pasticciare è questa cosa che ti rallenta
giù e la nostra latenza bene se è fatta
bene in realtà migliora in ritardo e vedere
come può farlo che la maggior parte delle persone
supportato in attesa di una modalità ora e
quindi applicare un batch non aspettare
timeout con un batch quello che fai è
appena qualcosa sarà disponibile
eseguire l’azione si torna indietro e il prossimo
il tempo che raccogli più che puoi e
lo fai introducendo qualcosa in
tra così se voglio usare una risorsa
in questo caso diciamo che ho capito
più thread diciamo che ho l’abbronzatura
le discussioni vogliono scrivere qualcosa sulla scrivania
se iniziano a fare la coda per farlo
perché dovranno farlo
sotto un blocco di una cosa è andare a prendere
una unità di tempo per farlo la prossima cosa
sta andando a prendere due unità di tempo giusto
fino a 10 unità di volte che stai per
tempo medio di risposta o cinque unità di tempo
ora io se prendo un approccio diverso e
Li ho messi tutti su una struttura dati
e avere un thread separato scrivendoli
fino alla conservazione il mio caso peggiore
lo scenario è che raccolgo una cosa dal
fare la coda per cominciare
Lo scrivo nella memoria torno indietro
di nuovo in coda e tolgo il
il prossimo 9 e scriverli nella memoria
Ho completato l’intera operazione in
due unità di tempo la mia media è inferiore a
due unità di tempo e questo è il peggiore
caso in cui spesso si trova in questi
scoppia scenari che ti abbronzano tutti
e li metti giù in un colpo solo
migliora notevolmente l’utilizzo e
non vai sulla j-curva da nessuna parte
vicino come rapidamente così il mio suggerimento è iniziare
alla ricerca di cose che puoi amare
prova e una volta che inizi a pensare
questo si inizia a trovarli dappertutto
posto è un modo davvero utile di
guardandoli ma la cosa che
si distingue da quello è che devi
impara ad andare dove sincrono e una volta
cominci ad andare sincrono come puoi
puoi q attraverso il tuo sistema
misura i tuoi segnali e puoi iniziare
applicare una contropressione legata a loro
se la gente pensa di non avere qs dentro
il loro sistema ti sbaglia tanto perché se
hai usato i lucchetti se ne usi di più
le cose che incontrerai avranno un
bloccare di fronte ad esso avrà un muto
atti di qualche mezzo e indovina un po ‘quando
due o più thread cercano qualcosa in
nello stesso tempo si ottiene e il
resto joiner kyu Seok usare diventare
qualcosa che è dappertutto
il tuo codice li rende concetti di prima classe
iniziare a trattare con loro iniziare a misurare
loro applicano la legge delle piccole cose a quello che sta succedendo
su non ottenere una visione molto migliore di ciò che è
andando avanti nel mio sistema così indietro al mio
la cosa è quella in precedenza riprendendo
pressione e non lasciare entrare altre cose
quindi diciamo che il mio spazio di archiviazione non viene mantenuto
bene, questi fili non saranno in grado di
fare altro lavoro se non lo fanno
più lavoro da cui non prendono roba
la coda che eseguirà il backup su
rete non saremo in grado di mettere altro
dati sulla rete che eseguiranno il backup
questi fili che causeranno come te
per eseguire il backup di ciò che causerà le code
sono questi fili qui il backup che
stanno ricevendo il traffico di rete dal
i clienti in questo modo posso applicare nuovamente
pressione che indosserà attraverso il sistema
o come va, diciamo
questi ragazzi stanno facendo la retribuzione
richieste sul front end bene una volta il tuo
le discussioni sono tutte occupate sui tuoi segnali
tutti i restanti 403 server occupato ora di punta 503
server occupato in questa fase non mantenere
accettando una nuova richiesta è molto di più
amichevole dove lavorare così ora
abbiamo fatto che non abbiamo intenzione di correre
sempre sincrono ed è così importante
per eseguire il loro sincrono mi piace pensare
questo è un modo per uscire dal tuo
andando dove devi essere non
bloccando dobbiamo andare avanti abbiamo ottenuto
per mantenere le cose belle ed efficienti
fuori dal modo sincrono di lavorare e
possiamo farlo smettendo di roba così pesante
i metodi sincroni ci finiscono
hogging ci blocchiamo riusciremo a farlo
possiamo anche iniziare a funzionare in alcuni
filo interessante quindi ora che non lo sono
abbracciando ora che sto gestendo il loro
sincrono e so che non sto usando
il sistema operativo che posso iniziare a utilizzare
cose come bloccare tre tipi di algoritmi
di modi specializzati di lavorare
modi interessanti di andare avanti che possiamo
inizia a fare questo genere di cose
di una corsa attraverso un po ‘al
Finisci qui quindi diciamo ora che ho tutto
il mio stato sto correndo in questo bel dove
è tutto gratis si ottiene il bello grande paura
Diagramma di stato PCP Non ti aspetto
per sapere questo, ma la cosa importante è
per qualsiasi macchina a stato determinato cosa succede se tu
potrei solo leggere dove sei attualmente
a te rendi visibile il tuo stato
la macchina diventa osservabile, quindi puoi
facilmente fare progressi i prossimi passi da
puntando dove sei e facendo
le decisioni che puoi iniziare a guardare il tuo
operazioni che puoi iniziare a monitorare
il profilo può essere sintonizzato così come facciamo
i nostri sistemi che progettiamo il nostro codice lo fanno
osservabile metti i dati delle correnti in a
variabile volatile che si può leggere
questo ti permette di fare le tue cose
osservabile fare buoni progressi andare avanti
quindi ecco una cosa davvero semplice che noi
può fare per far passare un sacco di peccati
i nostri sistemi li rendono semplici con il collo e
veloce ogni volta che non sono un lavandino, facciamolo
Dite che conosco i dati della sequenza nel mio sistema
così ho introdotto un sequencer che ho ottenuto
di traffico in arrivo una volta quella sequenza
posso inviare la stessa sequenza a due o
più servizi questi servizi possono rispondere
se rispondi a un articolo
potente quello che succede sono i
il primo a rispondervi lo elabora se
è potente per l’oggetto che ricevi un altro messaggio
bene, è assolutamente bello
fangoso butto via il secondo che ho detto
una di queste tinture ne ho una molto
sistema reattivo perché non lo fa
importa con cui inizi a giocare
questo è possibile eseguire le cose su diversi
impostazioni di memoria diversi processori
inizia a farlo e poi tutto a
all’improvviso mi rallegro e
importa una volta più in basso più velocemente noi
ancora ottenere rapidamente le risposte
il primo ad arrivarci è lì come veloce
se vuoi leggere anche tu replichi
molti altri siti e questo ci lascia andare
avanti e ci fa andare avanti davvero
rapidamente finale le tecniche dell’Alta Leon
e gli algoritmi sono per favore tornare indietro e
impara le strutture dati c’è una cosa
quello rimarrà con noi attraverso il nostro
carriere è la struttura dei dati non andrà
consapevole che c’è di più al mondo di
mappe ed elenchi di iniziare a entrare in
un sacco di cose meravigliose come la fioritura
i filtri ottengono meno tutti i tipi di
strutture e cose interessanti sugli alberi
è là fuori che queste cose sono morte
utile per come finiremo a lavorare lo faranno
stai con te per la tua carriera molto
meglio del versetto dei leader nel
libreria di canzoni che è appena uscita e basta
alla moda quindi vado a finire velocemente
e chiudendo qualcosa sta arrivando è gentile
di un mondo interessante che siamo ora
vivere in un nome comune è inverno
venire che cosa sta veramente arrivando è il
Internet of Things lo scorso anno per il
prima volta abbiamo superato il punto in cui il
numero di dispositivi su Internet
Maggiore è il numero di persone sulla
i dispositivi collegati al pianeta sono ora più grandi
del numero di persone questo è
continuando a salire potremmo essere ovunque
fino a 75 miliardi a seconda del tuo punto
di vista entro il 2020, che si manterrà
Succedendo, quindi, ciò significa che siamo gentili
di controllo il nostro arrivo r è il fatto
che non possiamo controllarli che non vogliamo
perché vogliamo che questo business venga
dobbiamo affrontarlo e così abbiamo ottenuto
attraverso e quando progettiamo il nostro
applicazioni se non rispondiamo in a
modo tempestivo le cose non accadono così
bene quindi prendi questo per persona qui loro
non hanno reagito abbastanza in fretta e questo è
andando a causare molto dolore davvero
pensa a come iniziamo a migliorare il nostro
i tempi di servizio continueremo a mantenere
aspettando che i nostri sistemi funzionino
modo in cui erano abituati a non esibirsi o
le scelte per andare parlo ma è difficile è
davvero difficile è molto più facile da provare
e migliorare i tempi di assistenza tanto più facilmente
concentrarsi su ciò che abbiamo e su
quel punto finirò
tu
tu
Parlerò del design
sistemi che sono reattivi in questo
traccia e ho trascorso un sacco di tempo in
finance Spears I dati di Big Data sono diversi
cose in cui dobbiamo rispondere in a
modo tempestivo che è un interessante
parte delle prestazioni quindi le prestazioni sono
tipicamente qualcosa che la gente dice ma
significa una delle due cose che posiziona
throughput o latenza quindi la latenza o
il tempo di risposta è ciò che questo è tutto andando
essere e quando progettiamo il nostro
applicazioni se non rispondiamo in a
modo tempestivo le cose non accadono così
bene quindi prendi questo per persona qui loro
non hanno reagito abbastanza in fretta e questo è
andando a causare molto dolore molto
le nostre applicazioni finiscono allo stesso modo e
un sacco di gente parla di come le cose
Devo essere in tempo reale in questi giorni che voglio
per chiarire un po ‘di ciò che è reale
il tempo significa e mi piace pensare è reale
è l’ora in uno dei tre fili
ciò che è noto come hard in tempo reale, quindi questo
è in genere ciò che troverai quando
stai programmando le cose
devi essere molto tempo limitato
così deterministico che se non lo sei
deterministico è catastrofico
fallimento questo esempio qui è una pistola che
lo troverai su una nave da guerra inglese chiamata
il portiere e il suo lavoro è un terzo
ultimo istante in cui una nave è in corso
attaccato deve difenderlo ogni volta
tutte le altre difese sono state ottenute
passato c’è un missile o un aereo
arrivando ed è molto vicino in movimento
veramente veloce cosa lo ferma non è un
la guida di questo è un pezzo di
funziona il software guidato dal radar
questo tipo di pistola ora se questa offerta su
questo non risponde alle persone che muoiono
l’estremo del tempo reale ma molte paure
non sono così estremi, ma siamo a
altre estremità dello spettro e uno di
le cose sono come le chiamo soft in tempo reale
quindi i mercati finanziari sono in genere simili
questo e in questo se non si risponde entro
un modo tempestivo si finisce per perdere soldi
forse non un sacco di soldi a volte molto
di soldi Knight Capital è stato un bene
esempio un sacco di soldi ma quindi dobbiamo
essere abbastanza reattivo in questo e se noi
non abbiamo fallito
ma più tipicamente questo è il tipo di
arte che la maggior parte di noi finisce per scrivere e
abbiamo utenti che hanno bisogno di usare il nostro
sistemi che devono essere reattivi che chiamo
questa è la fine del seccatoio, ma è così
davvero importante che abbiamo capito bene
diventiamo troppo pigri per questo finiamo
con utenti frustrati sono sicuro che tutti noi
sono una parola che se siamo frustrati
usando un’applicazione che non vogliamo
usalo molto di più che non vogliamo
esploralo in modo da iniziare bene
diventare critici come si ottiene
coinvolto in questo argomento che ho trovato spesso
che in genere gli utenti di questo tipo di
sistemi li sviluppiamo e gli utenti su
vale a dire gli sviluppatori che stanno costruendo
questo tipo di cose sono in questo tipo
di situazione le cose da costruzione e
sono molto inconsapevoli di ciò che è
proseguendo speriamo di lavorare consapevoli
e non sappiamo cosa stiamo per fare
solo scavare quando andiamo a vivere così io
voglio cercare di evitarci di entrare
questa situazione dandoti un po ‘
conoscenza per cosa essere preparati per questo
copriremo un numero di
uno dei temi è come testiamo
e misura ho intenzione di andare in a
un po ‘di teoria su cosa succede
in questo tipo di sistemi un po ‘
di pratica alcune cose che sto andando a
condividere da un mio cliente che ha permesso
io per condividere alcune di queste trappole
che la maggior parte delle persone crede che io abbia intenzione di farlo
finisci parlando di alcuni
algoritmi e tecniche che puoi prendere
via perché non voglio andarmene
questo è tutto depresso, questo è tutto
difficile la roba che possiamo togliere il
cose che possiamo migliorare in questo modo prima di
parliamo di come testiamo e
misurare questo diventa fondamentale in alcuni di
i nostri sistemi quindi iniziamo e
Immagina di essere Darth Vader che ho preso
consegna di una nuova Morte Nera come faccio
so come andrà a finire bene
devo testarlo in questo momento e così
semplicemente ho intenzione di caricarlo andando a
testarlo da alcuni tipi di agenti che sono
andando a correre contro questo potrebbe essere bello
mezzi semplici ma il nostro mondo è cambiato
radicalmente abbiamo clienti automatizzati
la notte non sono solo gli utenti a spingere
pulsanti a volte alcuni dei nostri clienti
può lanciare un sacco di sistemi caricati dentro
mondo finanziario questo succede molto
test con piccoli numeri o anche
singoli clienti molto grandi che possono
lanciare molto carico inizia il nostro sistema
diventare davvero importante è anche
importante testare con un grande noto
di utenti più piccoli che non lo fanno
spesso ma solo è un’altra dimensione così
troviamo cose come me
concentrato su un punto o in realtà
solo avendo grandi numeri di Breck o
algoritmi in altrimenti stiamo andando a
fallo in due modi diversi ma in realtà
è importante il modo in cui li misuriamo
sistemi da cui non dovremmo misurare
il lato di bassa generazione, perché se lo siamo
guardando qui e se questi ragazzi sono
generando il carico più sei anche tu
usando quelli per misurare hai sbagliato
risultati come quello che succede al loro
la selezione di GC fa una pausa e se vengono ricevute
scambiato il run out di gettare a
quanto nel sistema operativo loro
inizia a distorcere i risultati quindi abbiamo bisogno di a
osservatore di terze parti per osservare questo e
di solito è un bagno catturando la rete
il traffico ora potrebbe essere all’estremo
ti amo comprare alcuni davvero costosi
hardware che l’hardware catturerà
tutto e può timestamp tutto il
tasche e puoi in seguito analizzarlo
non c’è bisogno di andare a quella estrema
questo potrebbe essere semplice come usare
qualcosa come Wireshark un dump TCP a
cattura i pacchetti che poi analizzi
loro più tardi e puoi vedere il vero
prestazioni del tuo sistema da a
prospettiva di latenza perché siamo
catturando sul filo non siamo solo
affidandosi alle unità di bassa generazione a
fallo così per iniziare a bruciare non dentro
bada, dobbiamo anche sistemarlo
integrazione continua se vogliamo
essere test delle prestazioni che dobbiamo essere
facendolo tutto il tempo perché se lo fossimo
facendo questo tutto il tempo che poi troviamo
fuori quando le cose vanno male non appena loro
sbagliare non più tardi non sei mesi dopo
o un anno dopo ogni volta che proviamo a lavorare
come sistemiamo quello che ottiene veramente
complicato impariamo molto di più in breve
i cicli di feedback, proprio come facciamo con
resto del nostro lavoro dobbiamo farlo con
prestazioni e anche registriamo
tutto se abbiamo appena provato un sistema
nasconde tutti i tipi di birra e qui c’è a
davvero un buon esempio di quello che sto per
catturare tutto sul sistema e
memorizzalo in un istogramma e quindi cos’è
l’istogramma in questa fase bene per qualsiasi
dato il periodo di tempo che ho intenzione di registrare
il numero di osservazioni che ho visto
quella data latenza quindi questo esempio qui
è un grafico che ha una scala di registro lungo
l’asse x e quindi sta andando più in alto
in tempo ma la maggioranza dei nostri
le osservazioni sono
qui in genere questo sistema è
rispondere in meno di un millisecondo
che è grinta ma sta anche rispondendo
in un modo molto più lento più avanti così
catturare e ottenere questo revisionale
l’immagine è così potente che gli istogrammi sono un
ottimo modo per farlo in modo che registrino il
numero di osservazioni in qualsiasi dato
punto nel tempo ora diamo un’occhiata a ciao io
iniziare una stazione guarderà questo e noi
spesso usano termini come qual è la media
tempo di risposta qual è lo standard
deviazione bene questo è il modo di fare assurdità
può diventare così diamo un’occhiata alla modalità il
la modalità è l’evento più comune che
scopriamo che la nostra modalità è lì sul grafico
è interessante questo è tipico è
facile quindi una delle poche misure che è
una specie di mediana utile quindi è molto simile a
mettiamo in fila tutte le nostre osservazioni e
noi prendiamo il punto medio non lo è
in realtà mi sta dicendo che è interessante
le cose qui sono davvero stupide
il medio la media che abbiamo sempre
parlare di questo mi sta dicendo davvero
niente di quello che sta succedendo non lo fa
dimmi i bambini più tipici e questo
non mi dice cosa sta succedendo
fuori qui è in realtà nel mezzo di
una terra desolata che non mi dice nulla di utile in
tutto quindi non usare mezzi non usare
medie quando inizi a descrivere il tuo
sistema e non ne parliamo di standard
deviazione perché guarda quello che è
non è una distribuzione normale
multimodale è molto sbilanciato
alta curtosi è da così tanti livelli
non è qualcosa che vuoi standard
deviazione per descrivere in modo da catturare tutto
questi dati e metterli in istogrammi ora
prendiamo un semplice esempio da a
sistema quindi diciamo che ho un sistema I
voglio gestirlo da migliaia di persone
transazioni un secondo e il principale
tempo di risposta un punto è di 50 microsecondi
questo sarebbe un sistema di trading che potresti
facilmente basta tradurre questo in qualsiasi
altro tipo di sistema e abilità il
numero in modo che potrebbe essere cinque
in millisecondi potrebbe essere 50 millisecondi
è solo l’unità di tempo, ma in genere
in finanza stiamo guardando là
quindi stiamo guardando a 50 micros in questo
caso il tutto sembra davvero molto bene
cosa succede se stiamo generando un bel po ‘ di
spazzatura e stiamo vedendo un giovane
Garbage Collection generazionale
accadendo una volta ogni millisecondo e
ci sono ogni secondo che non ci vuole 20
Pausa di 5 millisecondi se si pensa se
li hai inseriti in uno a
millisecondo abbiamo un interessante il
infatti continua qui perché tu metti
qualcosa e sta andando a strano 25
millisecondi ma esegui quel periodo sei tu
ancora in jacked un altro carico così
qualcuno sta prendendo il 25 il prossimo ne sta prendendo 24
il prossimo è il 23 continua così
giù fino a quando non sei di nuovo al 50
ancora microsecondi, quindi 12,5 in
la media è ciò che accade durante il no
pausa si finisce con una media media
la latenza di trecento microsecondi
è una specie di pazzo che ti basta mescolare in un GC
pausa e tutto ad un tratto la tua media
non ha senso, ora, la tua offerta di Martin
questo a un cliente e tu potresti a
accordo di livello di servizio su di esso e tu sei
mi aspetto 50 microsecondi e non puoi
spiegare questi venti cinque o se
sei a conoscenza o non ci provi
spiegalo al tuo capo che non sei un tatto
un po ‘così perché non sta facendo
qualsiasi senso tu stia usando medie e
è pazzesco quindi dimentica queste medie
inizia a parlare di colpa dei percentili
Anna mi ha lasciato questo grafico ed è
un po ‘davvero interessante, piuttosto
piuttosto che guardare la nostra distribuzione
aggiungi le cose quando sono presenti i quantili
così avrò un percentile
distribuzione e così come andiamo avanti il
l’asse delle x saliremo tra le nove e novanta
per cento novantanove novantanove punto
nove e siamo in grado di vedere quello che sta succedendo a
la nostra distribuzione nel tempo c’è un
interessante di fatto qui, quindi torna indietro
al mio esempio sul GC se lo fossi
non catturare quei 24 aggiuntivi
richiede perché il tuo sistema è
generare carico è il tuo sistema
misurare questo forse anche bloccato da
cosa sta succedendo in quanto soffre di a
cosa chiamata omissione coordinata e
senza mezzi è i 24 campioni che tu
avrebbe dovuto avere non siamo noi non siamo GC
le pause in corso quando si sta eseguendo a
uno al millisecondo lo hanno perso
distorce tutti i tuoi risultati così le cose sembrano
meglio di quello che sono e il reale
omaggio in questo genere di cose sei tu
non ottenere belle curve morbide che ottieni
questi salti frastagliati e inizi
catturare cose come questa puoi vederlo
guardando i grafici ma tu hai
per misurarlo per farlo così io
consiglio di guardare una cosa chiamata
haytch dee o istogramma
e inizia a catturare i tuoi dati e mettere
questo in questo modo non ingannare te stesso
abbiamo un manager che dobbiamo conoscere
cosa sta succedendo dobbiamo essere in grado di
leggi questo e se iniziamo a fare questo noi
iniziare a comportarsi come veri scienziati
e non inganneremo noi stessi, quindi facciamolo
entrare in un po ‘di teoria ora
spiega un po ‘di cosa sta succedendo
sul perché i sistemi diventano insensibili a chi
tutti hanno visto la curva G tipicamente
tempo di risposta dei sistemi e sto cercando
qualcosa come questo dove aumentiamo
carico e usiamo il suo sistema sempre più
quindi abbiamo aumentato la risposta all’utilizzo
il tempo inizia a salire questa curva questo è
molto tipico di quello che sta succedendo
un sacco di caratteristiche interessanti ma
la maggior parte dei sistemi segue questa curva di Jack
dove la risposta non risponde più
tempo bene diamo un’occhiata a questo un po ‘
po ‘il motivo per cui succede questo e come posso
risolva bene ciò di cui stiamo parlando
circa se inizi a guardare questo è un
la cosa chiamata notazione kendall è a
buon modo di descriverlo così tu
caratterizzare il sistema per come le cose q
su di esso usando questa notazione e cosa
la notazione qui mostra che tu sei
tre parti è il tasso di arrivo al
sistema che è il M il tempo di servizio
stesso per il comportamento di quello e poi
quante istanze del tuo servizio così md
uno significa che è un tasso di arrivo di Markovian
il servizio stesso si comporta in a
modo deterministico e ne abbiamo uno
istanza di quel servizio se descrivi
i tuoi sistemi in questo tipo di fazioni
quindi scegli l’equazione necessaria
capire cosa sta per fare sotto il livello basso
che aumenti l’utilizzo di un fucile
Ritz può essere diverso che può essere
completamente uniforme che potrebbe essere
Markovian potrebbe essere il nostro insieme
potrebbe essere molto diverso
opzioni in questo ma è molto
cosa interessante da esaminare molto
quello che sto per mostrarvi nel colloquio
è il tipo di ispirazione che si spera
alcuni wiki camminano in un po ‘di google a
scoprire con alcune di queste cose io
non passare molto tempo esattamente
cosa sono queste cose, ma per un MD
Prendo questa formula così per questa formula I
può capire quale sia il mio tempo di risposta principale
sta per essere collegato a questa formula
per il tempo di servizio dell’utilizzo
e posso quindi tracciare quel grafico
cosa veramente interessante è ciò che è
l’utilizzo del bene è a
funzione di servizio
ancora una volta così la velocità del nostro servizio
corre diventa davvero fondamentale per
quanto sia reattivo che possa sembrare gentile
di ovvio ma è molto peggio di te
in realtà la penso così se torniamo a questo
grafico diciamo che sto correndo qui al
punto di utilizzo del novanta per cento
normalmente quando i miei sistemi non caricati è
rispondere lì, ma una unità di tempo
quando gestisco il novanta per cento
l’utilizzo è in esecuzione in più di 10
unità di tempo qualunque cosa accada quell’unità
essere ora se prendo il mio servizio e io
il profilo it e io lavoro fuori come farlo
più veloce e lo tolgo da qualsiasi cosa
doveva essere il cinquanta per cento di quello che
era prima che il tuo sistema non avesse un
tempo medio di generazione del cinquanta per cento
meglio perché quel tempo di risposta va
nell’utilizzo cosa succede realmente
sei arrivato proprio in questa curva
circa qui e il tuo sistema ora è dieci
tempi più reattivi quindi comprensione
la matematica dietro questo è così
potente e ti dà grandi risultati
nel tuo sistema così relativamente piccolo
i cambiamenti possono avere un impatto enorme e
questo vale per qualsiasi cosa tu faccia qualcosa
questo è un servizio che siamo un servizio per il
progetti su cui lavoriamo se veniamo usati a
utilizzo superiore al settanta percento
diventiamo insensibili quindi ce n’è uno
i responsabili di progetto nella stanza si prega di pagare
attenzione non cercare di usare la gente cento
utilizzo percentuale o anche più perché
non saranno reattivi, dobbiamo
avere del gioco nei nostri sistemi questo per funzionare
quindi dobbiamo assicurarci di averlo
capacità sufficiente questa è una parte fondamentale
e come lavoriamo ora l’originale
la teoria delle code ha cento anni
ma 50 anni fa, John ha fatto poco
osservazione interessante su questo in quanto
per qualsiasi sistema che da quando Teddy ha fatto
ed è qui che il numero di arrivi
è uguale al numero che sta lasciando
il sistema e non bello come stato
il suo scorrere attraverso queste proprietà
tenere fede indipendentemente dal tempo di servizio
indipendentemente dai tassi di arrivo e così via
possiamo facilmente lavorare arte uno di questi se
sappiamo che gli altri due sono molto
proprietà utili del sistema così alla ricerca
nel lavoro di
la legge delle piccole e piccoline ci dà un bene
dove avanti e come mi piace usare
questo è se lego i miei segnali che posso limitare
il tempo di servizio quindi se voglio avere
il nostro tempo di risposta che sto per
onore sempre se lego la mia stecca che posso allora
assicurati di non superare questa risposta
tempo il mio sistema può rimanere sensibile quando
le persone vanno bene e se tu stai ricevendo
più carico quindi hai a quel punto
rifiuterai l’input è davvero così
semplice che non vuoi continuare a prendere
input e mentre continui a prendere i tuoi input
sistema continua a crescere e crescere e
crescendo nei suoi segnali e alla fine correrà
dalla memoria e schiaccia chi è
meglio questo è dire scusa siamo occupati
per favore torna più tardi e dai un
davvero un buon servizio per tutti
già arrivato o lasciato entrare più carico
le code o le build hanno il sistema
schiantare le persone che sono dentro non ottengono un buon risultato
servizio nessuno può ottenere un buon servizio
in seguito perché i tuoi sistemi hanno cenato
questo è un approccio molto più professionale
sembra che dovremmo pensare in questo modo
così puoi separare le code nel tuo
sistema hai un vero problema quindi cosa c’è
una delle altre cose che possiamo usare
accelerare bene possiamo andare paralleli e il
comune dove le persone guardano andare
Parallelamente è la legge delle bambole cosa sia veramente
interessante su um dolls law is people
penso che le leggi siano tutte state
incoraggiando il parallelismo se leggi il nostro
carta originale delle bambole sei molto veloce
si rese conto che non era un parlatore incoraggiante
ilysm stava cercando di scoraggiarlo lui
stava dimostrando quanto fosse difficile in realtà
sì, voleva pedinare i mainframe lui
volevo venderti un suo grande uomo
forum e non comprare uno di questi nuovi
sistemi di media portata che ne avevano molti
processori in loro perché lo era
sottolineando che in realtà è molto
difficile da fare programmazione parallela e così
di cosa tratta l’argomento è se io abbia
ho qualche compito in cui posso dividerlo in alcuni
modi ora quali parti di esso posso separare
per correre e parlare così in questo caso se io
posso dividerlo e posso ottenere una bella accelerazione
se ho applicato per corso, ma se B è
l’unica cosa che posso dividere non capisco
la sim velocizza così diventa critico come
molto se il tuo algoritmo puoi effettivamente
eseguire in parallelo per fare questo lavoro
meglio e così iniziamo
grafico e guardiamo a quale velocità
come possibile guarda che inizi a salire
questi casi così anche se ne avessi solo cinque
la percentuale del mio algoritmo è la
componente sequenziale che non posso mai ottenere
maggiore di un 20x pagato in effetti lo farò
mai nemmeno arrivare a 20 expedia perché io
può anche avvicinarsi ad esso, ma io
mai arrivare lì questo rende davvero
una sfida interessante come se la tua
l’algoritmo è il 50% che non sei mai
guardare due atti accelerare non importa
quanti core ne buttiamo fuori così
diventa davvero fondamentale per capire cosa
è la componente sequenziale di tutti
di loro e molte persone non sanno nemmeno
ma sai cosa ho avuto la bambola?
vista allegra felice del mondo è
in realtà molto peggio di quel Neal
Gunther ha scoperto da mondi reali
misura che in realtà non si poteva
persino raggiungere la legge di Amdahl dall’accelerare
prospettiva ciò che ha scoperto è quello
il punto di contesa è davvero importante ma
la bambola um non ha parlato del
lato coerente delle cose quindi devi
collegare la controversia e la coerenza
valori nelle tue equazioni per risolvere
qual è la tua possibile accelerazione ora se io
applica la contesa e la coerenza cosa
finisco con questo grafico quindi se io
Supponiamo che ci vogliono due e 50 microsecondi
per rendere qualsiasi stato che ho come parte del mio
contesa coerente tra quei fili
o processi dopo un po ‘ di tempo
scopri che inizia la chiamata di coerenza
il dominante e se guardiamo a questo
grafico è tipo di aspetto gentile di a
i due e quattro processori vicini ma
guarda cosa inizia ad accadere oltre il 16
processori 32 processori iniziamo a
divergere e poi in realtà inizia a
peggiorare ora non siamo in un mondo dove
stiamo ottenendo sempre più core e
la luce è stata mostrata sugli algoritmi
al punto che queste cose sono
iniziando ad apparire e dobbiamo essere
consapevole di ciò, andare in parallelo è
non è necessariamente una cosa facile che dobbiamo
essere consapevoli di ciò che possiamo fare non possiamo fare
loro quali sono i nostri limiti e come
funziona così torniamo di nuovo a
che così abbiamo guardato possiamo fare la coda
cose che possiamo fare le cose andando Paulo
ma è tutto sul tempo di servizio
se stesso perché se il tempo di servizio
non è deterministico in sé
davvero molto difficile e questo è puramente
sugli algoritmi in questa fase che abbiamo
per tornare alla teoria algoritmica di base noi
non posso aspettare un anno e ottenere una CPU più veloce
non possiamo nemmeno con 10 anni per ottenere un
CPU significativamente più veloce lo faremo
ottenere più cpus otterremo un marginale
accelerare ma non possiamo farlo solo noi
tornare indietro e conoscere
algoritmi come abbiamo fatto in passato e
iniziare a prenderli sul serio di nuovo così
devi conoscere l’ ordine dei tuoi
algoritmi di grande notazione a
roba universitaria di nuovo e iniziare
applicando questo e se hai
algoritmi che sono al quadrato o n
cubettato o qualsiasi cosa interessante in input
stai per diventare catastrofico
Comportamento nel momento in cui iniziamo ad aumentare di livello di cui abbiamo bisogno
smettere di farlo e quello può essere come
semplice come vado al database che ho letto
fuori alcuni dati e quindi all’interno di un ciclo come
Ho incontrato davvero oltre il quale torno a
il database di nuovo si ottiene solo un N
algoritmo quadrato che le persone devono iniziare
pensa in questo modo e realizza ciò che è
succedendo altrimenti non siamo reattivi
quindi questa è la teoria finita per un po ‘
guardiamo un po ‘di pratica e vediamo
quello che può effettivamente accadere così uno dei miei
i clienti dicono gentilmente di condividerne alcuni
dati in cui sono entrato per una consulenza
impegno per una settimana e l’obiettivo era
per rendere il loro sistema commerciale più
prevedibile da una prospettiva di latenza
ma anche ridurre la latenza se possiamo
l’obiettivo principale era in realtà quello di aumentare
prevedibilità e latenza e come
è successo è stato davvero interessante
questi sono veramente buoni
gente e loro erano molto bravi a cosa
hanno fatto e la maggior parte dell’ovvio
sbaglia il collo della gente che avevano
hai già corretto che stai lavorando qui
il livello di microsecondi decine di
microsecondi per risposta non lo so
tutti lavorano su questo, ma è qui che
questi ragazzi erano ciò che trovo davvero
interessante nel tornare in questo è
quando inizi a trattare davvero
davvero brave persone non è così
devono essere migliori di loro puoi venire
in e aiutare le persone da coaching e io
scopri che il nostro settore soffre davvero
dal fatto che non ci si applica
coaching così spesso venivo da un
sfondo sportivo e ho avuto allenatori che
Ero più veloce di loro che potessi fare tutto
tipi di interessanti perché ero
più giovane e in grado di ma potrebbero ancora
divano possiamo farlo nel nostro settore come
bene e non lo facciamo abbastanza così io
mi è piaciuto molto questo fidanzamento perché io
è stato in grado di portare questi ragazzi a
meglio solo allenando e seguendo
loro attraverso roba quindi cosa abbiamo fatto noi
scoprire bene abbiamo misurato il loro sistema
il primo giorno e questa è una dispersione
trama del tempo di risposta del loro
sistema per un insieme dato di input
ed è qui che inizi a vedere di nuovo
le medie non significano assolutamente nulla
ci sono un sacco di cose davvero interessanti
qui c’è un periodo di riscaldamento finito
qui c’è tutto questo interessante
picchi e c’è molta attività
intorno quindi è piuttosto affascinante
cosa sta succedendo, così fai ciò che inizi
profilazione del tuo profilo in un numero di
diversi modi in cui inizi a realizzare dove
i tuoi costi sono e uno dei primi
le cose che abbiamo scoperto in questo sono lì
era un problema di contesa con multipli
produttori nel sistema causando thread
contesa mentre lavoro attraverso il
codebase ho scoperto che stanno usando il
disgregatore stavano usando un vecchio
versione del disruptor che aveva un
problema particolare con più
produttori so che la versione 3 in poi
ha corretto e migliorato così noi
aggiornato a quello che è quello che è successo così
boom di aggiornamento del software che abbiamo effettivamente ottenuto
un po ‘meglio e abbiamo un po’ più veloce
quindi questo è un cambiamento, ma ancora una volta
nota come misuriamo noi applichiamo le sabbie
creare un esperimento per testare qualcosa
sai che andiamo avanti e facciamo un
cambia e lo misuriamo di nuovo e così
siamo più veloci ma ne abbiamo ancora
manufatti interessanti una volta che abbiamo tirato fuori
quell’altra cosa ce n’è una molto
artefatti interessanti come quello che sta succedendo
qui scopro una specie di roba
affascinante il grande curioso vi scava dentro
impari molto bene se eseguo lo zoom
che questo è quello che sembra in alcuni
dettaglio quindi è chiaro che è normale
una sorta di bacio che alcune cose stanno prendendo
più a lungo poi all’improvviso ottengo una lacuna
salta su un altro spazio in un tempo di salto così
cosa può causare che inizi
facendo di nuovo le domande torniamo indietro
per applicare la scienza ho la teoria come
cerco qualcosa per vedere se quello
La teoria è corretta quindi disegno io
sperimentare per quello che poi misura e io
controlla i risultati quindi una delle cose che ho
aveva una teoria su era che questo era un
problema di ridimensionamento della struttura dei dati e
potenzialmente una spazzatura
alcuni problemi ora la raccolta dei rifiuti
il problema è facile perché produci il file
GC registra e correggi i log del GC
con il tempo di questi eventi e indovinare
che c’è un evento GC qui su un GC
evento qui così bene che mi ha detto
qualcosa che è stata la causa di un numero
di cose ma non mi ha detto cosa
sono andato avanti qui ho visto molti di questi
due grafici questo non è niente come gli umani a
schema di griglia che corrisponde alla visualizzazione
questa roba è così importante per te
dati messi in erba mettilo dentro
istogrammi spargono trame così il presente
brucerò così tutte le cose sono davvero
utile perché inizi a localizzare
modelli e inizi a realizzare con
questo è così questo mi grida dati
ridimensionamento della struttura, quindi come faccio a testarlo
Ho scritto un aspetto che uso orientato all’aspetto
programmazione per andare e intercettare in qualsiasi momento
presto le mie strutture hanno avuto un metodo di ridimensionamento
e se quel metodo di ricerca è stato chiamato i
l’ ho loggato e ho loggato dov’era
succede nel codice e indovina un po ‘
questi erano ridimensionamenti di hashmap e
interessante era il segno di hash mark
in realtà la causa del GC perché come
ridimensionate una mappa di attacco che crea
copia tutte le sue strutture interne
e Alec li colpisce in uno spazio più grande così
sta ridimensionando verso l’alto e così è stato
interessante perché poi ogni volta che
copia completa e tutto questo lo lascia
tutto va e finisco con un altro GC
eventi più tardi e così è solo facendo
qualche analisi che scava venerdì sera
tu capisci molto del tuo sistema
è davvero molto divertente, così abbiamo fatto
ciò che più un grafico assomiglia
in seguito, quindi non abbiamo quelli
più step-up non ne abbiamo alcuni
quei fatti bizzarri ma ancora c’è ancora
un sacco di cose interessanti in corso sul perché
abbiamo queste grandi colline simili e
picchi in macchina nella curva così proviamo
per capire che cosa fosse quello che è
la causa usa i contatori delle prestazioni ab per
scopri cosa stanno facendo i cpus e
scopri che ci sono un sacco di raffiche di denaro
mancanti ma c’erano quasi metronomici
lo scaviamo di nuovo oh sembra
sospettosamente come il tempo ogni volta che tu
prendi le quantum di fette da dare
in alto sulla CPU quindi seguiamo il contatore così
che era decisamente tutto il cache
manca secondo quanto come possiamo fermare
quello che succede succederà
se siete costantemente appena muoversi
discussioni ogni volta che le cose ti succedono
otterrà quelle mancanze di cache perché il tuo
il denaro non è caldo, quindi abbiamo scritto una sceneggiatura
che dopo l’applicazione è stata
correndo per un po ‘, quindi lo lasciamo fare
hai corso per un po ‘e poi abbiamo bloccato
discussioni a cui non è permesso
muoviti è quello che è successo dire di noi
entrare in questo oops ci mettiamo in corsa a
un po ‘poi applichiamo lo script ora
è molto più stabile di tutti quelli
migrazioni tutte queste cose qui
andato via è andato giù di nuovo questo
sembrerebbe oh c’è interessante
Fatti Kasia e cosa sta succedendo e questo
è solo un’analisi divertente che cos’è tutto questo
altre cose che non hanno preso troppo
a lungo a scavare era GC giovane
generazione GC quindi se abbiamo ripulito il GC
questo diventa quasi una linea retta e
allora hai una bella soft real-time
sistema quindi è solo come una settimana
facendo un sacco di analisi per scoprirlo
cosa sta succedendo e possiamo molto
migliorare il sistema alla fine di questo
è molto più veloce di quanto non fosse ma è un
molto più prevedibile nella sua risposta
tempo quindi questa è la seconda parte , parliamo di
insidie cosa può andare storto lungo il
Ad Ovest stai scavando lungo non vuoi
finire in quella grande pila di
roba marrone inizia in fondo il nostro
le moderne CPU stanno facendo davvero molto
cose interessanti ma più
cosa importante che stai guidando
verso è l’uso di energia che vogliono
ridurre il consumo di energia il più possibile
così come stanno correndo verranno
giù in prezzemolo più basso è loro lo faranno
accelerare la velocità cenare tutti i tipi di
cose interessanti e queste hanno un grande
impatto sulla reattività del tuo
sistema si può finire girando un po ‘di
queste date per spegnerle
ma potrebbe essere una parola che è questo
diventando sempre di più per le funzionalità così
se stai usando molte CPU molto
intensamente puoi garantire che il
la frequenza su tutto il tuo socket è
andrà giù se la maggior parte della tua CPU è
acquisito e uno o due sono in esecuzione veloce
si riequilibrerà e in realtà ti permetterà
frequenze di clock molto più elevate e cosa c’è
andando avanti puoi controllare un po ‘ di questo
roba al nostro livello più basso, quindi cose come
terribili quelli pastosi in mare Stati questi
sono tutti per
cose interessanti il controllo di ciò che è
succedendo abbiamo anche cose come
hyper threading siamo all’interno della stessa cosa
colore possiamo avere più thread in corso
attraverso lo stesso nucleo e in alcuni casi
è più veloce in alcuni casi è più lento
devi misurare il lavoro fuori cosa è
la cosa giusta per la tua applicazione ma
ancora più interessante è cose come SMI
così la gestione del sistema lo interrompe
l’hai fermato non puoi fare nulla
a proposito di un livello di sistema operativo
dove la tua CPU si fermerà di tanto in tanto
Prendi il controllo della temperatura per fare il falso
tutti i tipi di cose interessanti da vedere
in che stato è guardando alcuni
delle ultime CPU questo sta diventando uniforme
più spaventoso perché stanno facendo le cose
come forse controllare le cose e inviare
dati alla NSA in cerca di amt e
ti spaventerai questo genere di cose è
sta succedendo, ma così tante cose sono
accadendo a questo livello di livello mentre andiamo
su un livello alla scatola più grande sul
tutto vedrà che le nostre CPU e le nostre
i sistemi sono diventati molto complessi lì
in effetti le reti sanno che io ho bene
più core all’interno delle nostre macchine con
strati di cache hanno condiviso cache ma loro
possiede prese separate con memoria
collegato direttamente a loro quindi ho un
core qui e parla alla memoria
quaggiù è un costo diverso rispetto a
parlare alla memoria qui perché tu
devi attraversare una rete sul tuo
scheda madre tra prese e non aggiunge
costi aggiuntivi non siamo nel mondo
di accesso alla memoria non uniforme in modo consapevole
il modo in cui accedi alla memoria diventa davvero
importante ma una cosa da portare via
da tutto questo è come vicino alla CPU
le cose sono molto veloci più lontano
loro cominciano a ricevere
molto più lento ma sono tre pipistrelli
vengono presi uno è il pipistrello temporale
quindi se hai usato qualcosa di recente
è probabile che sia in contanti per usarlo
di nuovo presto il secondo è lo speciale
scommetti quindi cose vicine
saranno usati insieme così sono le tue CPU
facendo un sacco di cose per questo e il
il terzo pipistrello è una scommessa con schema vs retro, quindi se
usi le cose in un modello prevedibile
l’hardware preleverà la tua memoria per
tu se non fai uno di questi tre
cose che otterrai molto
di cache manca e molto poco reattivo
memoria quanto sia estremo questo è in realtà
più veloce per lo streaming di dati così caratteristico
spesso SSD allora è a caso
accedi alla mera memoria che si chiama random
la memoria di accesso è un termine improprio completo
non ti dà a caso
caratteristiche si comporta abbastanza bene
mancia più si lavora con diversi
sottosistemi di memoria che inizi a realizzare
che non importa che tipo di
sottosistema di memoria Vietminh memory be its
la memoria sia qualunque cosa non ho intenzione di
essere spinning desk potrebbe essere SSD potrebbe
sii qualsiasi cosa se ti occupi di loro in a
in modo sequenziale sono molto veloci
trattare con loro in modo casuale o
tu provi ad avere un accesso arbitrario loro
ottenere molto più lentamente tutto è di punta e
devi cominciare a pensare che così abbiamo lat
messo a punto dal hardware nella
sistema operativo così tante squadre
i programmatori non parlano due sistemi
le persone viceversa e le cose sono così
mal configurato, dobbiamo lavorare meglio
insieme perché c’è un numero di
cose a livello di sistema operativo
deve essere configurato e configurato o avere
un enorme impatto sulle prestazioni
sistemi di memoria virtuale una cosa come noi
set di buffer per il networking come impostiamo
buffer per occuparsi di archiviazione se
questi sono mal configurati è come tre
quattro atti differenza di prestazioni
a volte 10 volte la differenza nelle prestazioni
e come questa roba è stata creata e la maggior parte
la gente non lavora nemmeno in questo
area così potremmo passare settimane
ottimizzando il nostro codice ma tutto ciò di cui abbiamo bisogno è
i nostri parametri del kernel cambiano e potremmo
hanno fatto accelerare tre o quattro atti
non lo otterremo a meno che non iniziamo
lavorare insieme quindi dobbiamo iniziare
facendo ciò con i nostri team e andando
avanti ci mettiamo nelle nostre macchine virtuali e
ci sono molte cose in corso su uno di questi
le cose più orribili delle nostre VM sono
queste cose chiamate punti CF ora sono molte
la gente probabilmente sarà a conoscenza di ciò che a
il punto di salvataggio è ma le loro operazioni erano
all’interno del nostro governo MS e questo accade
attraverso altre macchine virtuali pure è
che in certe condizioni il mondo
deve essere fermato per eseguire quell’azione
in modo che in realtà forse spazzatura
raccolta potrebbe essere una specie di inflazione a
blocco da vasta serratura in un blocco completo e
ogni sorta di cose interessanti ogni volta
queste cose accadono tutte le discussioni devono
essere portato il punto di salvataggio e poi quello
l’azione va avanti che inizia a
impediscono davvero il progresso all’interno delle nostre VM
e tornando alla nostra legge sulle bambole
inizia a diventare il componente sequenziale
e i nostri algoritmi vedo sistemi per cui
butti un sacco di cose e pensi
il tuo codice è addirittura completamente parallelo
e non avendo alcuna contesa ma perché
contiene su cose all’interno del vm come
avendo un sacco di avere un sacco di
assegnazione o avere un sacco di blocchi esso
basta soffocare al punto che non lo fai
ottenere l’ utilizzo sulla scatola che dobbiamo
essere consapevoli di questo e di come andiamo avanti
la virtualizzazione è un’altra buona
ogni volta che andiamo nel mondo virtualizzato
quando facciamo una chiamata di sistema, chiamiamo
un sistema operativo ghast che deve poi
chiamare nel sistema operativo host e
a seconda di come è impostato , questo può
essere un costo enorme e cosa sta succedendo
questo è uno di quelli in cui ho
visto ad un’ascia differenza tra lettura
i dati di una rete vanno bene
configurato in un ambiente virtuale
attraverso rispetto al lavoro in un nativo
ambiente e che può essere semplice come
visto una specie di poche migliaia di messaggi
il secondo arriva per saltare in settanta
mille messaggi in secondo luogo ottenendo questo
roba configurata per farlo bene
conta davvero che la gente ti dica
virtualizzazione che il problema è quello
aggiunge solo alcuni punti percentuali
non è vero in molti casi quando inizi
uscire dalla tua macchina virtuale per andare
al banco o andare in rete o fare cose
come ottenere un lucchetto rende un enorme
differenza perché stai chiamando
attraverso più livelli e c’è a
grande tassa per quello che molti dicono devono
scrivi il codice e ci stiamo condividendo
discussioni e così ogni volta che abbiamo lavorato
su un thread dobbiamo consegnarlo a
un altro thread come lo facciamo in genere
è con un lucchetto e poi dentro il lucchetto
usiamo una variabile di condizione così in Java
quello potrebbe essere l’avviso che potrebbe essere
segnala uno strano con una variabile di condizione
se stai usando Java utilizza contemporaneamente 5
queste sono le cose accadono su tutto
le lingue che stai facendo fondamentalmente
coinvolgere il sistema operativo
notifica da un thread all’altro
questa è un’operazione molto costosa
tipicamente per quello che succede e una volta
lo fai abbastanza spesso il tuo thread lo farà
essere sospesa e non verrà eseguito per
piuttosto una grande tempo in futuro questo è
un incubo e applicazioni commerciali se
sei nei giochi o l’audio è davvero
evidente ma sta iniziando il backup
oblem solo applicazioni normali
perché di nuovo si tratta di questo
componente sequenziale soffoca
algoritmi che lega insieme i fili e
non riesci a ottenere il risultato, ma non lo farai
scalare con più nuclei voi
in pratica finiscono con la roulette semplice
la tua latenza e il tuo throughput quando
inizi a fare questo tipo di cose
ho un non udito le cose così, suppongo, Joe
lui ha questa legge dell’astrazione che è
davvero interessante l’astrazione che perde
problema e questo è diventato un problema serio
problema mentre continuiamo a stratificare queste cose
che li chiamiamo astrazioni che sono
non astrazioni i loro strati di merda
molti casi se torniamo a ciò che Dykstra
detto sull’astrazione e un’astrazione
deve essere introdotto per fare qualcosa
nota più precisa la parola precisa
ogni volta che metti uno strato di astrazione
e fare qualcosa di più vago che è
non una buona astrazione è tornata alla mia
punto di nuovo è uno strato di merda e
eppure continuiamo a farlo e continuiamo
parlando di noi siamo fuori nelle astrazioni
tutto quello che stiamo facendo è rendere le cose vaghe
non chiaro e dandoci male
prestazioni e bug in molti casi io
Ho questa cosa in cui ho colpito
quadri e penso che le biblioteche siano il
modo in cui dovremmo andare in strutture in posa
di lavoro che dobbiamo smettere di fare
così caro Thomas ha questa espressione
le strutture sono i modi di iniettare
le tue dipendenze con le altre persone
il codice non dovrebbe essere così quello che noi
dovrebbe fare è scrivere bene
biblioteche che si prendono cura di se stessi così
quando includi la libreria che crea
la tua vita migliore e tu la includi
perché vuoi ma non dovresti esserlo
costretto a farlo e alle nostre astrazioni
è un modo di guardarlo perché
molte di queste cose non sono banali e
devono affrontare la complessità in
nel modo giusto mi piace pensare a questo come
la simpatia meccanica che dobbiamo
capisci cosa sta succedendo in basso ma
solo con dettagli sufficienti in modo che possiamo ottenere
i bastardi ma non dobbiamo diventare
esperti in esso, ma dobbiamo avere un
idea ragionevole, quindi la stiamo usando nel
il modo giusto non mi nascondo dietro la scusa
quindi abbiamo un livello di astrazione che nasconde
che dovrebbe renderlo più preciso
e più facile da usare se non lo fa
lo sta facendo in modo erroneamente interessante se
vogliamo essere reattivi
cosa succede quando inizia il nostro sistema
fallire bene mentre i nostri sistemi si ingrandiscono e
più tessuto complesso e distribuito
le cose si sentono sempre in effetti
in qualsiasi sistema molto grande
c’è sempre qualcosa nello stato di
essere rotto ma devi continuare
e amo questo genere di cose e abbiamo
visto che questa scena è meravigliosa è come
continui ad andare avanti è solo una carne
la ferita perse la gamba perse un braccio
andando il nostro software ha bisogno di farlo come
bene e, si spera, non fermarsi e dare
tempo di risposta scadente come lo fa noi
entrare nei nostri algoritmi in questa fase
cosa possiamo fare cosa possiamo andare avanti
con la nostra prima cosa che dovresti fare è se
stiamo andando a fare scienza che andremo a
misurarli fare le cose bene dobbiamo
fai degli esperimenti puliti se non l’hai fatto
chimica che non useresti tutti e tre
élite nsel che sono sporchi hey voglio
per controllare una reazione chimica e sono messo
due agenti insieme non ho intenzione di fare
in una provetta sporca perché non lo è
andando a darmi i risultati giusti che abbiamo
devo iniziare a farlo nel nostro software
quindi dobbiamo capire come isolare
i nostri compiti come togliere tutto il rumore
di quello che sta succedendo, quindi stiamo misurando
il giusto tipo di cose che non sto andando
per entrare nel dettaglio di una delle diapositive
sono disponibili puoi andare via e tu puoi
google per alcuni di questi tipi di cose
ma una cosa lo raccomanderei davvero
sta guardando ja singhiozzo su questo così giusto
google per un singulto J se si ottiene il
è possibile che sia un adorabile piccolo agente
viene eseguito all’interno del processo o può essere eseguito
fuori dal tuo processo e cosa farà
è che ti dirà che un thread non lo era
in grado di funzionare in qualsiasi momento
e questo ti dice moltissimo su
perché potresti fermarti nel tuo
applicazioni che puoi iniziare a identificare
quando e dove e puoi correlare
con quali sono le tue applicazioni in realtà
facendo così abbiamo questo pulito
ambiente che ora abbiamo per eseguire attività
e dobbiamo misurare e abbastanza spesso
abbiamo un profilo che qui è usato GF
VisualVM chiunque utilizzare il kit di ottenere
profiler tutti quelli come profiler loro
essi si trovano non ti dicono cosa sta succedendo
nel tuo codice sono ragionevoli per a
certa classe di problemi I quella classe di
problemi tipicamente dove stai andando
rete o stai uscendo dal tuo
programma per fare qualcos’altro se si ottiene
qualcosa per l’utilizzo intensivo della CPU per la memoria
intensivo
non lo trovano perché di nuovo
quelli malvagi vedono se ho parlato di punti prima
ma questo è quando il tuo campione
programma che campionano solo in CF point no
nel codice altamente ottimizzato che il tuo
jet ha fatto per te non va bene a te
è necessario utilizzare profiler come il nuovo
Jrockit Mission Control con il volo
registratore di prestazioni slave integrate
analizzatore di studio intel vtune di questo tipo
dei profiler effettivamente fanno il suono giusto
aereo e vi diranno ciò che il
problemi reali sono nel codice è arrivata a
andare avanti fino a quel livello e fermarsi
usando alcuni di questi altri profiler
una delle altre cose che mi piace fare è
incorporare istogramma così come ho detto
prima che gli istogrammi siano un ottimo modo di
misurando se li metti nel tuo codice
così come ogni volta che ricevi richieste
dentro e cose registrano il tempo di cose
sono registrati in questi istogrammi
davvero a buon mercato sono davvero semplici voi
può avere una buona visione di ciò che sta succedendo
sugli hit l’istogramma di dr è uno dei migliori
per questo non è per alta gamma dinamica
funziona abbastanza come un punto mobile
numeri in modo da non dover lavorare
quello che tutti i bidoni sono in anticipo è
molto molto efficiente, quindi cosa posso fare
scendi da questa curva J proprio come la mia
l’utilizzo va bene c’è a
tecnica noiosa davvero vecchia che funziona
davvero bene è tutto incompreso e
è un pasticcio che tutti lo pensano
pasticciare è questa cosa che ti rallenta
giù e la nostra latenza bene se è fatta
bene in realtà migliora in ritardo e vedere
come può farlo che la maggior parte delle persone
supportato in attesa di una modalità ora e
quindi applicare un batch non aspettare
timeout con un batch quello che fai è
appena qualcosa sarà disponibile
eseguire l’azione si torna indietro e il prossimo
il tempo che raccogli più che puoi e
lo fai introducendo qualcosa in
tra così se voglio usare una risorsa
in questo caso diciamo che ho capito
più thread diciamo che ho l’abbronzatura
le discussioni vogliono scrivere qualcosa sulla scrivania
se iniziano a fare la coda per farlo
perché dovranno farlo
sotto un blocco di una cosa è andare a prendere
una unità di tempo per farlo la prossima cosa
sta andando a prendere due unità di tempo giusto
fino a 10 unità di volte che stai per
tempo medio di risposta o cinque unità di tempo
ora io se prendo un approccio diverso e
Li ho messi tutti su una struttura dati
e avere un thread separato scrivendoli
fino alla conservazione il mio caso peggiore
lo scenario è che raccolgo una cosa dal
fare la coda per cominciare
Lo scrivo nella memoria torno indietro
di nuovo in coda e tolgo il
il prossimo 9 e scriverli nella memoria
Ho completato l’intera operazione in
due unità di tempo la mia media è inferiore a
due unità di tempo e questo è il peggiore
caso in cui spesso si trova in questi
scoppia scenari che ti abbronzano tutti
e li metti giù in un colpo solo
migliora notevolmente l’utilizzo e
non vai sulla j-curva da nessuna parte
vicino come rapidamente così il mio suggerimento è iniziare
alla ricerca di cose che puoi amare
prova e una volta che inizi a pensare
questo si inizia a trovarli dappertutto
posto è un modo davvero utile di
guardandoli ma la cosa che
si distingue da quello è che devi
impara ad andare dove sincrono e una volta
cominci ad andare sincrono come puoi
puoi q attraverso il tuo sistema
misura i tuoi segnali e puoi iniziare
applicare una contropressione legata a loro
se la gente pensa di non avere qs dentro
il loro sistema ti sbaglia tanto perché se
hai usato i lucchetti se ne usi di più
le cose che incontrerai avranno un
bloccare di fronte ad esso avrà un muto
atti di qualche mezzo e indovina un po ‘quando
due o più thread cercano qualcosa in
nello stesso tempo si ottiene e il
resto joiner kyu Seok usare diventare
qualcosa che è dappertutto
il tuo codice li rende concetti di prima classe
iniziare a trattare con loro iniziare a misurare
loro applicano la legge delle piccole cose a quello che sta succedendo
su non ottenere una visione molto migliore di ciò che è
andando avanti nel mio sistema così indietro al mio
la cosa è quella in precedenza riprendendo
pressione e non lasciare entrare altre cose
quindi diciamo che il mio spazio di archiviazione non viene mantenuto
bene, questi fili non saranno in grado di
fare altro lavoro se non lo fanno
più lavoro da cui non prendono roba
la coda che eseguirà il backup su
rete non saremo in grado di mettere altro
dati sulla rete che eseguiranno il backup
questi fili che causeranno come te
per eseguire il backup di ciò che causerà le code
sono questi fili qui il backup che
stanno ricevendo il traffico di rete dal
i clienti in questo modo posso applicare nuovamente
pressione che indosserà attraverso il sistema
o come va, diciamo
questi ragazzi stanno facendo la retribuzione
richieste sul front end bene una volta il tuo
le discussioni sono tutte occupate sui tuoi segnali
tutti i restanti 403 server occupato ora di punta 503
server occupato in questa fase non mantenere
accettando una nuova richiesta è molto di più
amichevole dove lavorare così ora
abbiamo fatto che non abbiamo intenzione di correre
sempre sincrono ed è così importante
per eseguire il loro sincrono mi piace pensare
questo è un modo per uscire dal tuo
andando dove devi essere non
bloccando dobbiamo andare avanti abbiamo ottenuto
per mantenere le cose belle ed efficienti
fuori dal modo sincrono di lavorare e
possiamo farlo smettendo di roba così pesante
i metodi sincroni ci finiscono
hogging ci blocchiamo riusciremo a farlo
possiamo anche iniziare a funzionare in alcuni
filo interessante quindi ora che non lo sono
abbracciando ora che sto gestendo il loro
sincrono e so che non sto usando
il sistema operativo che posso iniziare a utilizzare
cose come bloccare tre tipi di algoritmi
di modi specializzati di lavorare
modi interessanti di andare avanti che possiamo
inizia a fare questo genere di cose
di una corsa attraverso un po ‘al
Finisci qui quindi diciamo ora che ho tutto
il mio stato sto correndo in questo bel dove
è tutto gratis si ottiene il bello grande paura
Diagramma di stato PCP Non ti aspetto
per sapere questo, ma la cosa importante è
per qualsiasi macchina a stato determinato cosa succede se tu
potrei solo leggere dove sei attualmente
a te rendi visibile il tuo stato
la macchina diventa osservabile, quindi puoi
facilmente fare progressi i prossimi passi da
puntando dove sei e facendo
le decisioni che puoi iniziare a guardare il tuo
operazioni che puoi iniziare a monitorare
il profilo può essere sintonizzato così come facciamo
i nostri sistemi che progettiamo il nostro codice lo fanno
osservabile metti i dati delle correnti in a
variabile volatile che si può leggere
questo ti permette di fare le tue cose
osservabile fare buoni progressi andare avanti
quindi ecco una cosa davvero semplice che noi
può fare per far passare un sacco di peccati
i nostri sistemi li rendono semplici con il collo e
veloce ogni volta che non sono un lavandino, facciamolo
Dite che conosco i dati della sequenza nel mio sistema
così ho introdotto un sequencer che ho ottenuto
di traffico in arrivo una volta quella sequenza
posso inviare la stessa sequenza a due o
più servizi questi servizi possono rispondere
se rispondi a un articolo
potente quello che succede sono i
il primo a rispondervi lo elabora se
è potente per l’oggetto che ricevi un altro messaggio
bene, è assolutamente bello
fangoso butto via il secondo che ho detto
una di queste tinture ne ho una molto
sistema reattivo perché non lo fa
importa con cui inizi a giocare
questo è possibile eseguire le cose su diversi
impostazioni di memoria diversi processori
inizia a farlo e poi tutto a
all’improvviso mi rallegro e
importa una volta più in basso più velocemente noi
ancora ottenere rapidamente le risposte
il primo ad arrivarci è lì come veloce
se vuoi leggere anche tu replichi
molti altri siti e questo ci lascia andare
avanti e ci fa andare avanti davvero
rapidamente finale le tecniche dell’Alta Leon
e gli algoritmi sono per favore tornare indietro e
impara le strutture dati c’è una cosa
quello rimarrà con noi attraverso il nostro
carriere è la struttura dei dati non andrà
consapevole che c’è di più al mondo di
mappe ed elenchi di iniziare a entrare in
un sacco di cose meravigliose come la fioritura
i filtri ottengono meno tutti i tipi di
strutture e cose interessanti sugli alberi
è là fuori che queste cose sono morte
utile per come finiremo a lavorare lo faranno
stai con te per la tua carriera molto
meglio del versetto dei leader nel
libreria di canzoni che è appena uscita e basta
alla moda quindi vado a finire velocemente
e chiudendo qualcosa sta arrivando è gentile
di un mondo interessante che siamo ora
vivere in un nome comune è inverno
venire che cosa sta veramente arrivando è il
Internet of Things lo scorso anno per il
prima volta abbiamo superato il punto in cui il
numero di dispositivi su Internet
Maggiore è il numero di persone sulla
i dispositivi collegati al pianeta sono ora più grandi
del numero di persone questo è
continuando a salire potremmo essere ovunque
fino a 75 miliardi a seconda del tuo punto
di vista entro il 2020, che si manterrà
Succedendo, quindi, ciò significa che siamo gentili
di controllo il nostro arrivo r è il fatto
che non possiamo controllarli che non vogliamo
perché vogliamo che questo business venga
dobbiamo affrontarlo e così abbiamo ottenuto
attraverso e quando progettiamo il nostro
applicazioni se non rispondiamo in a
modo tempestivo le cose non accadono così
bene quindi prendi questo per persona qui loro
non hanno reagito abbastanza in fretta e questo è
andando a causare molto dolore davvero
pensa a come iniziamo a migliorare il nostro
i tempi di servizio continueremo a mantenere
aspettando che i nostri sistemi funzionino
modo in cui erano abituati a non esibirsi o
le scelte per andare parlo ma è difficile è
davvero difficile è molto più facile da provare
e migliorare i tempi di assistenza tanto più facilmente
concentrarsi su ciò che abbiamo e su
quel punto finirò
tu
tu
Please follow and like us: