Un glitch audio e una pausa VPN cadono negli stessi dieci secondi, e un'utilità riporta una cifra alta etichettata come latenza DPC. La tentazione è concludere che il driver stia rallentando il tunnel, o che il tunnel stia stressando il driver. Nessuna delle due conclusioni deriva da quella cifra.

Qui entrano in gioco tre misurazioni, e non condividono lo stesso confine.

Tre numeri, tre confini

Una chiamata di procedura differita è lavoro che un driver rinvia dal suo gestore degli interrupt, e il tempo trascorso dentro quelle routine è una misurazione locale al processore attribuita a moduli e funzioni. Un viaggio di andata e ritorno dell'eco è un'osservazione temporale al socket, prodotta da uno stack di rete e da un risponditore remoto. Un evento di disconnessione è una transizione di stato registrata dal client. Ognuna risponde a una domanda a cui le altre non possono rispondere, e unità identiche non le rendono intercambiabili.

La disciplina utile è nominare il confine prima di leggere il valore. Scrivi l'unità e il confine uno accanto all'altro. Se uno strumento riporta millisecondi, chiedi millisecondi di cosa: tempo dentro una routine, tempo in attesa di eseguire o tempo fino all'arrivo di una risposta.

Una cifra alta in una categoria è un indizio, mai una diagnosi.

Leggi la definizione dietro il titolo

Le utilità differiscono in ciò che chiamano latenza. Alcune riportano la durata delle routine del driver, altre riportano il ritardo di pianificazione, e le due grandezze possono muoversi in direzioni opposte sulla stessa macchina. Un cruscotto che chiama una di esse semplicemente latenza DPC ti ha detto meno di quanto sembri. Due cruscotti possono quindi non essere d'accordo su una macchina che non è affatto cambiata.

La stessa cautela vale all'interno di un singolo strumento di analisi. La durata inclusiva segue una routine dall'ingresso all'uscita, mentre la durata esclusiva somma solo i frammenti in cui la routine stessa stava eseguendo. Scegliere la colonna sbagliata trasforma un chiamante in un colpevole.

Il lavoro locale del driver e il ritardo di rete interagiscono anch'essi senza fondersi. Un'attività eccessiva legata agli interrupt può ritardare il lavoro sensibile al tempo sulla macchina, e un percorso congestionato può ritardare i pacchetti, e entrambe le cose possono essere vere durante un'unica pausa visibile.

Metti ogni osservazione in un'unica finestra

Una traccia è utile solo se leggi l'intervallo che contiene il sintomo. Registra la traccia, l'evento del client e il guasto dell'applicazione con marche temporali, poi guarda gli stessi secondi in tutte e tre. Un massimo di una traccia di un'ora e una disconnessione più tardi quel pomeriggio sono due fatti non correlati.

wpr -start CPU -filemode
wpr -stop vpn-trace.etl
xperf -i vpn-trace.etl -a dpcisr -o dpc.txt

Poi apri la traccia nello strumento di analisi e ordina per durata all'interno di quella finestra, invece che per l'intera cattura. La guida all'analisi della CPU descrive la vista di durata DPC/ISR che attribuisce il tempo a moduli e funzioni.

Conferma cosa è successo davvero al tunnel mentre sei lì. Perdere brevemente il traffico dell'applicazione non significa che il client abbia iniziato una nuova negoziazione, e il successo di una piccola sonda non prova che tutto il resto abbia continuato a funzionare.

Cambia il componente che le prove indicano

Un modulo occupato è un luogo da indagare, non un verdetto. Può stare svolgendo lavoro causato da un altro componente o dal carico che hai generato. Tieni insieme il nome del modulo, il dispositivo, la versione del driver e l'intervallo osservato, perché questo insieme è ciò su cui un fornitore può agire.

Una modifica per esperimento è l'unico modo per imparare dal risultato. Un confronto via cavo restringe l'ambito, ma cambia contemporaneamente il percorso radio e l'attività del driver, quindi trattalo come un indizio e non come una prova.

Tratta la traccia come sensibile. Può contenere nomi di processi e dettagli dell'ambiente, quindi appartiene al canale di acquisizione supportato e non a un allegato pubblico. Dì a quale osservazione la traccia doveva rispondere.

Articoli correlati