Spiegazioni · tre

Come collaudiamo, per esteso

Pubblichiamo confronti con il software di altre persone, quindi il metodo dev'essere verificabile. Eccolo per intero: le macchine, il contenuto, le impostazioni che riceve ogni client, e le regole che decidono se un'esecuzione conta come risultato o va buttata.

Il banco di prova

Stessa macchina, stessa linea, stesso contenuto

Ogni client di un confronto gira su una sola macchina, verso gli stessi provider, sullo stesso contenuto, nella stessa tornata. Nulla viene riportato da un giorno precedente.

La regola che decide tutto

Un client si giudica sul file, non sul suo messaggio di stato

È la cosa più importante di questa pagina. Ogni prova finisce cercando il file più grande prodotto dal client, ovunque si trovi nel suo output, e calcolandone l'hash contro una copia di riferimento. Dimensione e MD5, a ogni prova, non su un campione.

Lo facciamo perché il rapporto di successo di un client non è una prova affidabile. Abbiamo misurato un client che segnalava done su un lavoro la cui cartella di uscita era vuota. Ne abbiamo misurato un altro che segnalava Completed avendo consegnato volumi d'archivio grezzi che non aveva mai scompattato. Uno strumento di riparazione molto diffuso esce con un codice di errore dopo una riparazione riuscita. Nessuno di quei client mentiva; le stringhe di stato semplicemente significano cose diverse per autori diversi, e un benchmark che si fida di loro misura lessico anziché comportamento.

Il traguardo è quindi lo stesso per tutti: il contenuto esiste, della dimensione giusta, con l'hash giusto. Se un client si ferma prima, non ottiene un tempo, e l'intera colonna viene segnalata anziché omessa in silenzio. Un client lento che finisce sta facendo meglio di uno veloce che non finisce, e la tabella deve dirlo.

Il corollario è che un mancato arrivo è un risultato, non un nostro errore. Quando ne pubblichiamo uno descriviamo lo stato finale in termini semplici, compreso tutto ciò che suggerisce che sia specifico di quel lavoro anziché generale, e diciamo cosa ha fatto il client invece di finire.

Ordine e ripetizione

Perché le prove si alternano, e perché le esecuzioni singole non si pubblicano

La velocità dei provider varia di minuto in minuto, a volte di un fattore due o tre. Due misure prese in momenti diversi misurano in parte il meteo.

I client girano quindi uno dopo l'altro e alternati, e l'ordine si inverte tra le ripetizioni, così nessun client è sempre quello che entra per primo su una linea calda o fredda. Un risultato è l'andamento su tutte le ripetizioni, non la corsa migliore. Quando la dispersione è ampia, pubblichiamo l'intervallo invece di una media che lo nasconderebbe, e se non sappiamo perché i numeri di un client sono dispersi, lo diciamo invece di inventare una causa.

I confronti tra tornate diverse si evitano ovunque possibile. Se un'affermazione richiede due numeri, preferiamo rifar correre entrambi in un'unica tornata piuttosto che sottrarre la cifra di un giorno a quella di un altro, perché lo stato del banco, le condizioni dei provider e le versioni dei client vanno tutti alla deriva. Quando confrontiamo due nostre build, entrambe girano nella stessa tornata, alternandosi, sullo stesso contenuto.

I controlli poco appariscenti

Cosa gira prima e durante ogni prova

La maggior parte esiste perché un guasto silenzioso una volta ha prodotto un numero dall'aria sana, pubblicabile e sbagliato. Ognuno ora gira in automatico e ferma la tornata invece di avvisare.

Dove un client ha bisogno di impostazioni particolari per rendere bene, le riceve, e la tornata dice quali. Esempi: pipelining delle richieste attivato dove un client lo consegna spento, controllo dei duplicati disattivato quando lo stesso lavoro viene scaricato ripetutamente, e ausiliari di scompattamento presi dal pacchetto del client anziché da una copia di sistema. Lo scopo è che ogni client sia misurato al suo meglio anziché ai suoi valori predefiniti, dato che i predefiniti sono una discussione separata dalla capacità.

Cosa non faremo

I limiti di questi numeri