In che modo DaisyDisk è così veloce?


4

DaisyDisk analizza HD del mio Mac velocissimo rispetto, per esempio, du. Mi chiedo quale sia il trucco. Sospetto che non sarebbe così veloce su filesystem non Mac, ma non ci ho provato. Qualche indizio?

Risposte:


3

Non ho mai usato DaisyDisk, ma a giudicare dalla demo video sul loro sito, sembra che stiano usando alcuni trucchi per renderlo veloce.

Prima di tutto, sei sicuro che dusia più lento? Prova a correre du / >/dev/nulle vedi se è più veloce di DaisyDisk .. badate bene, il filesystem potrebbe essere stato memorizzato nella cache dopo quello che è andato per primo per scopi di temporizzazione, quindi la seconda esecuzione avrà quel vantaggio.

duè piuttosto veloce poiché esamina solo le voci della directory e riporta il percorso e le dimensioni del file. L'unico modo in cui potresti sapere cos'è un file sarebbe fare un'ipotesi dall'estensione del file o guardare il file per determinarne il tipo (ad esempio byte "magici" di UNIX). Il percorso di estensione del file è veloce, l'esame del file è ovviamente molto più lento poiché devi recuperare il file.

Con l' duoutput, è possibile determinare rapidamente la vista delle directory di livello superiore; puoi filtrarlo nel codice e creare una rappresentazione come fa DaisyDisk e mostrare solo sezioni di torta di dimensioni. Se eseguono il drill-down nelle directory (ad es. / Users), ripeti il ​​processo ma ti concentri solo su quel livello. Poiché DaisyDisk mostra solo i primi 10 o 20 maiali spaziali, non è necessario entrare nei dettagli per capire quali sono i file più piccoli (si noti che li raggruppa convenientemente in "File più piccoli da 750 MB" o in qualche etichetta). A questo punto, non aveva ancora bisogno di scavare così in profondità nei file reali e forse se non indovinasse per estensione doveva solo determinare la "magia" di alcuni file di grandi dimensioni che va molto veloce.

Quindi quello che stiamo probabilmente vedendo è che ha determinato rapidamente il nome, il percorso e le dimensioni di ogni file sull'unità (come si dupuò dimostrare), ma mostrando abilmente solo i principali autori di reato per aiutarti a ottenere ciò che ti interessa dal momento che la maggior parte la gente non utilizzerà uno strumento come questo per ottenere i piccoli file nitidi; andrai al Finder per esaminare i file se ti preoccupi anche a quel livello . Qui non sembra esserci nulla di speciale, tranne che deve solo esaminare il tipo di file o il contenuto quando l'utente lo richiede espressamente e il programma evita di fare quel lavoro pesante per la maggior parte del tempo.

Cosa rende speciale DaisyDisk rispetto a (diciamo) l'applicazione gratuita "Grand Perspective" per OSX? Interfaccia semplice per uno (mi piace il file esamina e trascino per raccogliere / eliminare la funzione), ma penso anche che GP esamini i file mentre scansiona poiché mostra tutto nella sua vista grafica e colori per tipo di file. Puoi anche usare il colore per tipo meccanismo con un duapproccio, ma stai solo indovinando in base all'estensione del file e / o dove hai trovato il file.

Tutto sommato, si tratta di un'applicazione elegante con un'interfaccia intelligente. Perché è veloce? Perché sembrano aver preso scorciatoie per evitare un sollevamento pesante fino a quando non sarebbe assolutamente necessario. Per me, sto bene con Grand Perspective :-)


Sospettavo che stessero prendendo delle scorciatoie, ma di nuovo non avevo tenuto conto dell'output dello schermo, il che è molto probabilmente ciò che sta impiegando più tempo (continuo a dimenticarlo, maledetto IO! :)
Morpheu5,

9

Sono lo sviluppatore di DaisyDisk. Dovrei fare di tutto per spiegare come lo realizziamo dal punto di vista ingegneristico, ma posso rassicurarti sul fatto che l'app non crea "scorciatoie" o "trucchi". La scansione è reale e completa.

Come già accennato, è difficile effettuare una misurazione precisa a causa della memorizzazione nella cache del disco. Ogni esperimento ti darà un tempo diverso, a seconda di molti fattori. Ma è vero che DaisyDisk è di gran lunga più veloce di qualsiasi altro scanner per dischi. Ciò è particolarmente evidente nelle unità SSD. Non ho provato a confrontarlo con "du" però.


Non intendevo "scorciatoie" o "trucchi" in alcun senso negativo :-) Quello a cui mi riferivo è che non sembrava che DD stesse scansionando il tipo di ogni file esaminando il contenuto durante l'esecuzione; sta solo guardando le voci catalog / dir (che è la stessa cosa du) per creare l'output veloce. Il tipo di esame dovrebbe essere assunto rapidamente dall'estensione del file (o dove è stato trovato, ad es. Dir musica di iTunes) o esaminando il file (più lentamente). Vedendo come i tempi di bmike corrispondessero strettamente dua DD, suppongo che DD non stia esaminando il contenuto del file. Ad ogni modo, bella app e ottima interfaccia utente!
Bjb,

Nessun problema, e grazie per il complimento :) Naturalmente, DaisyDisk non ha bisogno di scansionare il contenuto dei file, solo il catalogo (nome, dimensione) è sufficiente per il compito di trovare i maiali spaziali più grandi. Questo è esattamente ciò che fa anche "du", solo in modo meno ottimale (immagino). Volevo solo notare che è impossibile trovare i più grandi "trasgressori" fino a quando non li scansiona tutti, quindi non ci sono scorciatoie. Inoltre, finora non utilizziamo le informazioni sull'estensione (tipo) in DaisyDisk, ma solo le dimensioni. (Forse lo aggiungeremo più tardi.).
swa16,

1
Inoltre, che differenza fa "Scansione come amministratore"? Sembra essere molto più veloce!
Morpheu, 5

2
Il comando "Scansiona come amministratore" include semplicemente le cartelle con restrizioni nella scansione. Quando DaisyDisk rileva una cartella con restrizioni, utilizza uno strumento di supporto privilegiato per eseguirne la scansione con autorizzazioni elevate. Ma il numero di tali cartelle è piccolo rispetto al numero complessivo di cartelle, quindi non dovrebbe influire in modo significativo sul tempo di scansione.
swa16,

2
Ma quando hai già scansionato un disco in modalità normale, puoi selezionare il comando "Quick Rescan as Administrator", quindi verranno scansionate solo le cartelle con restrizioni (precedentemente ignorate). Questo è davvero molto più veloce rispetto alla scansione completa del disco come amministratore (o alla scansione iniziale come amministratore).
swa16,

3

Non sono in grado di misurare alcuna grande differenza in duo DaisyDisk diverso dall'app nativa è più lento in alcuni casi rispetto allo strumento da riga di comando.

time du ~ > /dev/null 2>&1

La prima manche è dustata 0m7.947s e la seconda era 0m5.465s e DaisyDisk è stata di circa 8 secondi con un cronometro entrambe le volte.

Suppongo che tu stia riscontrando ritardi dovuti all'output dello schermo degli strumenti della riga di comando che misura più del disco. Stai usando DaisyDisk per scansionare come amministratore?


In effetti, questa è probabilmente la risposta. Inoltre, cosa ha detto @bjb :)
Morpheu5,

3

Ho notato che duutilizza getattrlist()in una modalità a thread singolo. Avevo trovato un po 'di codice aperto da Apple qualche volta con la versione High Sierra. Daisydisk probabilmente utilizza getattrlistbulk()più thread, poiché ho notato un utilizzo più uniforme del core della CPU.

Sul mio Mac, daisydisk è sempre 2x - 3x più veloce di du. Ho provato questo con la mia cartella home di 100G, directory 20K, file 350K. Il file system esegue un po 'di memorizzazione nella cache, quindi è meglio testarlo su un sistema freddo o con una directory di grandi dimensioni per ridurre i vantaggi della memorizzazione nella cache.

Ho trovato utile questo frammento di codice per getattrlistbulk- https://www.snip2code.com/Snippet/526248/A-sample-on-how-to-properly-use-getattrl

Questo frammento utilizza ancora un singolo thread e il thread era associato a IO, il mio utilizzo della CPU era solo del 35% circa. Se in qualche modo distribuisci il lavoro su più thread, mi aspetto che questo sia super veloce.


Risposta eccellente e informazioni API. Sto trovando ncdu piacevolmente veloce anche. Assicurati di leggere tutti i commenti dallo sviluppatore di DaisyDisk - dettagli piuttosto interessanti apple.stackexchange.com/a/263198/5472
bmike
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.