Perché lo svuotamento dello spazio su disco accelera i computer?


191

Ho guardato un sacco di video e ora capisco un po 'meglio come funzionano i computer. Comprendo meglio cos'è la RAM, la memoria volatile e non volatile e il processo di scambio. Capisco anche perché aumentare la RAM acceleri un computer.

Non capisco perché la pulizia dello spazio su disco acceleri un computer. Vero? Perché lo fa? Ha a che fare con la ricerca dello spazio disponibile per salvare le cose? O spostando le cose per creare uno spazio continuo abbastanza lungo da salvare qualcosa? Quanto spazio vuoto sul disco rigido dovrei lasciare libero?


37
non accelera davvero i PC, riduce solo le possibilità di frammentazione dei file che rallentano gli HDD. Questo è uno dei più grandi miti del PC che tutti ripetono. Per trovare i bootleneck sul PC, traccialo con xperf / WPA.
magicandre1981,

9
FWIW esso speeds up the experience of using a PC.
edthirdird

4
@ magicandre1981: c'è una piccola gemma di verità. Più sono le cose in ogni cartella, più lenta è l'attraversamento dei file, che influisce su qualsiasi cosa usando un percorso file, che è ... tutto. Ma è piccolo .
Mooing Duck,

4
@MooingDuck Se vero, è correlato al numero di file in una cartella, non alla dimensione dei file o alla quantità di spazio rimanente sul disco. Tale effetto non è correlato allo spazio su disco rimanente. L'effetto ha anche una portata limitata alla cartella stessa, non "rallenterà" l'intero computer. Alcuni filesystem, ad esempio ext3 / 4, usano alberi di directory con hash per velocizzare le ricerche (incluso l'accesso alle sottocartelle), limitando così ulteriormente l'ambito dell'effetto, ad esempio solo quando si elencano i contenuti di una directory.
Jason C

4
Quali video stavi guardando esattamente?
Loko,

Risposte:


313

Qui, ho scritto un libro per caso. Prendi un caffè prima.

Perché lo svuotamento dello spazio su disco accelera i computer?

Non lo fa, almeno non da solo. Questo è un mito molto comune. Il motivo per cui è un mito comune è perché il riempimento del disco rigido spesso accade contemporaneamente ad altre cose che tradizionalmente potrebbero rallentare il computer. Le prestazioni dell'SSD tendono a peggiorare quando l'unità si riempie , ma questo è un problema relativamente nuovo, unico per gli SSD, e non è davvero evidente per gli utenti occasionali. In genere, lo spazio libero su disco ridotto è solo un'aringa rossa .

Ad esempio, cose come:

  • Frammentazione dei file. La frammentazione dei file è un problema †† , ma la mancanza di spazio libero, sebbene sicuramente uno dei molti fattori che contribuiscono, non è l'unica causa di ciò. Alcuni punti chiave qui:

    • Le possibilità che un file venga frammentato non sono correlate alla quantità di spazio libero rimasto sull'unità. Sono legati alla dimensione del più grande blocco contiguo di spazio libero sull'unità (ad es. "Buchi" di spazio libero), a cui la quantità di spazio libero sembra imporre un limite superiore . Sono inoltre correlati a come il file system gestisce l'allocazione dei file (più sotto). Considerare: un'unità piena al 95% con tutto lo spazio libero in un singolo blocco contiguo ha lo 0% di probabilità di frammentare un nuovo file ††† (e la possibilità di frammentare un file aggiunto è indipendente dallo spazio libero). Un'unità piena del 5% ma con dati distribuiti uniformemente sull'unità ha una probabilità molto elevata di frammentazione.

    • Tenere presente che la frammentazione dei file influisce solo sulle prestazioni quando si accede ai file frammentati . Considera: hai una bella unità deframmentata che contiene ancora molti "buchi" liberi. Uno scenario comune. Tutto funziona senza intoppi. Alla fine, però, si arriva a un punto in cui non rimangono più grandi blocchi di spazio libero. Scarica un film enorme, il file finisce per essere gravemente frammentato. Questo non rallenterà il tuo computer. Tutti i file dell'applicazione e quelli che in precedenza andavano bene non verranno improvvisamente frammentati. Questo potrebbe rendere il filmimpiega più tempo a caricarsi (anche se le normali velocità in bit del film sono così basse rispetto alle velocità di lettura del disco rigido che molto probabilmente sarà impercettibile) e potrebbe influire sulle prestazioni associate agli I / O durante il caricamento del film , ma a parte questo, niente cambia.

    • Mentre la frammentazione dei file è certamente un problema, spesso gli effetti sono mitigati dal buffering e dalla cache del sistema operativo e hardware. Scritture ritardate, read-ahead, strategie come il prefetcher in Windows, ecc., Contribuiscono a ridurre gli effetti della frammentazione. In genere non si effettivamente verificano impatto significativo fino a quando la frammentazione diventa grave (Mi piacerebbe anche permetto di dire che fino a quando il file di swap non è frammentato, sarà probabilmente mai notato).

  • L'indicizzazione della ricerca è un altro esempio. Supponiamo che tu abbia attivato l'indicizzazione automatica e un sistema operativo che non lo gestisca con grazia. Man mano che si salvano sempre più contenuti indicizzabili sul computer (documenti e simili), l'indicizzazione potrebbe richiedere sempre più tempo e potrebbe iniziare a influire sulla velocità percepita del computer mentre è in esecuzione, sia in I / O che nell'uso della CPU . Questo non è legato allo spazio libero, è legato alla quantità di contenuto indicizzabile che hai. Tuttavia, esaurire lo spazio libero va di pari passo con l'archiviazione di più contenuti, quindi viene disegnata una falsa connessione.

  • Programma antivirus. Simile all'esempio di indicizzazione della ricerca. Supponiamo che tu abbia un software antivirus impostato per eseguire la scansione in background dell'unità. Dato che hai sempre più contenuti scansionabili, la ricerca richiede più risorse I / O e CPU, probabilmente interferendo con il tuo lavoro. Ancora una volta, questo è correlato alla quantità di contenuti analizzabili che hai. Più contenuti equivalgono spesso a meno spazio libero, ma la mancanza di spazio libero non è la causa.

  • Software installato. Diciamo che hai un sacco di software installato che si carica all'avvio del tuo computer, rallentando così i tempi di avvio. Questo rallentamento si verifica perché viene caricato un sacco di software. Tuttavia, il software installato occupa spazio sul disco rigido. Pertanto, lo spazio libero sul disco rigido diminuisce nello stesso momento in cui ciò accade e, di nuovo, è possibile stabilire facilmente una falsa connessione.

  • Molti altri esempi lungo quelle linee che, se presi insieme, sembrano associare strettamente la mancanza di spazio libero a prestazioni inferiori.

Quanto sopra illustra un altro motivo per cui questo è un mito così comune: mentre la mancanza di spazio libero non è una causa diretta di rallentamento, disinstallazione di varie applicazioni, rimozione di contenuti indicizzati o scansionati, ecc. A volte (ma non sempre; al di fuori dell'ambito di questo risposta) aumenta nuovamente le prestazioni per motivi non correlati alla quantità di spazio libero rimanente. Ma questo libera naturalmente anche spazio sul disco rigido. Pertanto, ancora una volta, è possibile stabilire una connessione apparente (ma falsa) tra "più spazio libero" e "computer più veloce".

Considerare: se una macchina funziona lentamente a causa di molti software installati, ecc. E si clona esattamente il disco rigido su un disco rigido più grande, quindi si espandono le partizioni per guadagnare più spazio libero, la macchina non accelera magicamente su. Viene caricato lo stesso software, gli stessi file sono ancora frammentati allo stesso modo, lo stesso indicizzatore di ricerca continua a funzionare, nulla cambia nonostante abbia più spazio libero.

Ha a che fare con la ricerca di uno spazio di memoria in cui salvare le cose?

No non lo fa. Ci sono due cose molto importanti che vale la pena notare qui:

  1. Il tuo disco rigido non cerca in giro per trovare posti dove mettere le cose. Il tuo disco rigido è stupido. Non è niente. È un grande blocco di archiviazione indirizzata che mette alla cieca le cose in cui il tuo sistema operativo lo dice e legge tutto ciò che viene richiesto. Le unità moderne dispongono di sofisticati meccanismi di memorizzazione nella cache e buffering progettati per prevedere ciò che il sistema operativo chiederà in base all'esperienza acquisita nel tempo (alcune unità sono persino a conoscenza del file system su di esse), ma essenzialmente pensano a il tuo disco come solo un grande stupido mattone di archiviazione con occasionali funzionalità di prestazioni bonus.

  2. Il tuo sistema operativo non cerca nemmeno luoghi in cui mettere le cose. Non c'è "ricerca". Sono stati fatti molti sforzi per risolvere questo problema, poiché è fondamentale per le prestazioni del file system. Il modo in cui i dati sono effettivamente organizzati sull'unità è determinato dal file system. Ad esempio, FAT32 (vecchi DOS e PC Windows), NTFS (in seguito Windows), HFS + (Mac), ext4 (alcuni Linux) e molti altri. Persino il concetto di "file" e di "directory" sono semplicemente prodotti di file system tipici: i dischi rigidi non conoscono le bestie misteriose chiamate "file". I dettagli esulano dallo scopo di questa risposta. Ma in sostanza, tutti i file system comuni hanno modi di tracciare dove lo spazio disponibile è su un'unità in modo che una ricerca di spazio libero sia, in circostanze normali (vale a dire file system in buona salute), non necessaria. Esempi:

    • NTFS ha una tabella di file master , che include i file speciali $Bitmap, ecc. E molti metadati che descrivono l'unità. Fondamentalmente tiene traccia di dove si trovano i prossimi blocchi liberi, in modo che i nuovi file possano essere scritti direttamente su blocchi liberi senza dover scansionare l'unità ogni volta.

    • Un altro esempio, ext4 ha quello che viene chiamato "allocatore bitmap" , un miglioramento rispetto a ext2 ed ext3 che sostanzialmente lo aiuta a determinare direttamente dove si trovano i blocchi liberi invece di scansionare l'elenco di blocchi liberi. Ext4 supporta anche "l'allocazione ritardata", ovvero il buffering dei dati nella RAM da parte del sistema operativo prima di scriverli sull'unità per prendere decisioni migliori su dove metterlo per ridurre la frammentazione.

    • Molti altri esempi.

o spostando le cose per creare uno spazio continuo abbastanza lungo per salvare qualcosa?

No. Questo non succede, almeno con qualsiasi file system di cui sono a conoscenza. I file finiscono per essere frammentati.

Il processo di "spostamento delle cose per creare uno spazio abbastanza lungo contiguo per salvare qualcosa" si chiama deframmentazione . Questo non succede quando i file vengono scritti. Ciò accade quando si esegue la deframmentazione del disco. Su Windows più recente, almeno, ciò avviene automaticamente secondo una pianificazione, ma non viene mai attivato scrivendo un file.

Essere in grado di evitare di spostare le cose in questo modo è la chiave per le prestazioni del file system ed è il motivo per cui si verifica la frammentazione e perché la deframmentazione esiste come un passaggio separato.

Quanto spazio vuoto sul disco rigido dovrei lasciare libero?

Questa è una domanda più complicata a cui rispondere e questa risposta si è già trasformata in un piccolo libro.

Regole pratiche:

  • Per tutti i tipi di unità:

    • Soprattutto, lasciare abbastanza spazio libero per poter utilizzare il computer in modo efficace . Se stai esaurendo lo spazio per lavorare, avrai bisogno di un'unità più grande.
    • Molti strumenti di deframmentazione del disco richiedono una quantità minima di spazio libero (penso che quello con Windows richieda il 15% del caso peggiore) per lavorare. Usano questo spazio libero per contenere temporaneamente i file frammentati mentre altre cose vengono riorganizzate.
    • Lascia spazio per altre funzioni del sistema operativo. Ad esempio, se la tua macchina non ha molta RAM fisica e hai la memoria virtuale abilitata con un file di pagina di dimensioni dinamiche, ti consigliamo di lasciare spazio sufficiente per la dimensione massima del file di pagina. Oppure, se si dispone di un laptop in modalità di ibernazione, sarà necessario spazio sufficiente per il file di stato di ibernazione. Cose del genere.
  • -SSD specifica:

    • Per un'affidabilità ottimale (e, in misura minore, prestazioni), gli SSD richiedono dello spazio libero che, senza entrare troppo nei dettagli, usano per diffondere i dati sull'unità per evitare di scrivere costantemente nello stesso posto (che li logora). Questo concetto di lasciare spazio libero è chiamato over-provisioning . È importante, ma in molti SSD esiste già spazio over-provisioning obbligatorio . Cioè, le unità hanno spesso qualche decina di GB in più rispetto a quanto riportano al sistema operativo. Le unità di fascia bassa spesso richiedono di lasciare manualmente uno spazio non partizionato , ma per le unità con OP obbligatorio, non è necessario lasciare spazio libero . Una cosa importante da notare qui è quellalo spazio con provisioning eccessivo viene spesso prelevato solo dallo spazio non partizionato . Quindi, se la tua partizione occupa l'intero disco e lasci dello spazio libero su di essa, ciò non sempre conta. Molte volte, il provisioning eccessivo manuale richiede di ridurre la partizione in modo che sia più piccola della dimensione dell'unità. Controlla il manuale utente del tuo SSD per i dettagli. TRIM e garbage collection e simili hanno anche effetti, ma quelli non rientrano nell'ambito di questa risposta.

Personalmente di solito afferro un'unità più grande quando ho circa il 20-25% di spazio libero rimanente. Questo non è correlato alle prestazioni, è solo che quando arrivo a quel punto, mi aspetto che probabilmente esaurirò presto lo spazio per i dati, ed è tempo di ottenere un'unità più grande.

Più importante della visione dello spazio libero è assicurarsi che la deframmentazione programmata sia abilitata laddove appropriato (non su SSD), in modo da non arrivare mai al punto in cui diventa abbastanza terribile da interessarti. Altrettanto importante è evitare modifiche errate e lasciare che il tuo sistema operativo faccia la sua cosa, ad esempio non disabilitare il prefetcher di Windows ( eccetto gli SSD ), ecc.


C'è un'ultima cosa che vale la pena menzionare. Una delle altre risposte qui menzionava che la modalità half-duplex di SATA impedisce la lettura e la scrittura allo stesso tempo. Sebbene sia vero, questo è notevolmente semplificato ed è principalmente non correlato ai problemi di prestazioni discussi qui. Ciò significa semplicemente che i dati non possono essere trasferiti contemporaneamente in entrambe le direzioni sul filo . Tuttavia, SATA ha una specifica abbastanza complessa che coinvolge minuscole dimensioni massime dei blocchi (circa 8 kB per blocco sul filo, credo), legge e scrive le code delle operazioni, ecc., E non preclude le scritture sui buffer mentre le letture sono in corso, interfogliate operazioni, ecc.

Qualsiasi blocco che si verificherebbe sarebbe dovuto alla competizione per le risorse fisiche, generalmente mitigata da molta cache. La modalità duplex di SATA è quasi del tutto irrilevante qui.


"Rallentamento" è un termine generico. Qui lo uso per fare riferimento a cose che sono associate a I / O (ad es. Se il tuo computer è seduto lì a sgranocchiare numeri, il contenuto del disco rigido non ha alcun impatto), o legato alla CPU e in competizione con cose tangenzialmente correlate che hanno elevato utilizzo della CPU (ad es. software antivirus che esegue la scansione di tonnellate di file).

†† Gli SSD sono interessati dalla frammentazione in quanto le velocità di accesso sequenziale sono generalmente più veloci dell'accesso casuale, nonostante gli SSD non affrontino le stesse limitazioni di un dispositivo meccanico (anche in questo caso, la mancanza di frammentazione non garantisce l'accesso sequenziale, a causa del livellamento dell'usura, ecc. , come osserva James Snell nei commenti). Tuttavia, praticamente in ogni scenario di uso generale, questo non è un problema. Le differenze di prestazioni dovute alla frammentazione degli SSD sono generalmente trascurabili per cose come il caricamento di applicazioni, l'avvio del computer, ecc.

††† Supponendo un file system sano che non frammenta i file di proposito.


Risposta molto completa, grazie. Anche grazie per il promemoria per prendere un po 'di caffè, è stato molto apprezzato.
Hashim,

22

Oltre alla spiegazione di Nathanial Meek per gli HDD, esiste uno scenario diverso per gli SSD.

Gli SSD non sono sensibili ai dati sparsi perché il tempo di accesso a qualsiasi posizione sull'SSD è lo stesso. Il tempo di accesso all'SSD tipico è di 0,1 ms rispetto a un tempo di accesso all'HDD tipico da 10 a 15 ms. Tuttavia, è sensibile ai dati già scritti sull'SSD

A differenza dei tradizionali HDD che possono sovrascrivere i dati esistenti, un SSD necessita di uno spazio completamente vuoto per scrivere i dati. Ciò viene fatto da funzioni chiamate Raccolta di rifiuti e spazzatura che eliminano i dati contrassegnati come eliminati. Garbage Collection funziona meglio in combinazione con una certa quantità di spazio libero sull'SSD. Di solito si consiglia dal 15% al ​​25% di spazio libero.

Se la garbage collection non può completare il suo lavoro in tempo, ogni operazione di scrittura è preceduta da una pulizia dello spazio in cui si suppone che i dati debbano essere scritti. Ciò raddoppia il tempo per ogni operazione di scrittura e peggiora le prestazioni complessive.

Ecco un eccellente articolo che spiega il funzionamento di Trim and Garbage Collection


Nota che gli SSD POSSONO scrivere su celle parzialmente riempite, leggendo i dati parziali e riscrivendoli con altri scritti, ma tende a farlo solo quando è inevitabile. Anche questo è ovviamente abbastanza lento e di solito indica che l'unità è così frammentata che ci vorrà molto per farla scrivere di nuovo velocemente.
soffice

Ciò dipenderà anche dal controller. E poiché ci sono così tante varianti, non volevo entrare in quel livello di dettaglio.
whs

Il 15-25% di cui parli si chiama "over-provisioning". Ad alcune unità è già assegnato uno spazio obbligatorio per questo (ad esempio, 1 TB EVO 840 ha il 9% riservato e non è segnalato al sistema operativo come gratuito), per coloro che non devono lasciare spazio libero. Credo che in alcuni casi anche lo spazio sottoposto a provisioning eccessivo debba essere non partizionato e semplicemente lasciare spazio libero sul file system non lo tagli, sarebbe necessario lasciare effettivamente spazio non allocato.
Jason C,

Il provisioning eccessivo è qualcos'altro. Quelle sono in stand-by per sostituire quelle difettose. Il 15-25% è necessario per liberare blocchi (pagine) e per livellare l'usura. Puoi leggere qui per i dettagli ==> thessdreview.com/daily-news/latest-buzz/…
whs

@whs Non lo è e l'articolo a cui ti colleghi non implica che lo sia. Lo spazio sottoposto a provisioning eccessivo (vedere anche fonti citate in quella sezione o Google) è il pool di blocchi gratuiti, i blocchi in questo pool vengono utilizzati per la raccolta dati inutili / scritture rapide, il livellamento dell'usura e la sostituzione di celle difettose. Per quanto riguarda la sostituzione delle celle difettose, è tutto nello stesso pool; una volta che è pieno di celle difettose, inizi a vedere gli errori coerenti. Vedi anche la diapositiva 12 in questa presentazione di LSI ; vale la pena esaminare tutto, affronta direttamente l'argomento.
Jason C

12

Da qualche parte all'interno di un disco rigido tradizionale si trova un piatto di metallo rotante in cui i singoli bit e byte sono effettivamente codificati. Quando i dati vengono aggiunti al piatto, il controller del disco li memorizza prima all'esterno del disco. Man mano che vengono aggiunti nuovi dati, lo spazio viene utilizzato spostandosi verso l'interno del disco per ultimo.

Tenendo presente questo, ci sono due effetti che fanno diminuire le prestazioni del disco man mano che il disco si riempie: Tempi di ricerca e Velocità di rotazione .

Cerca tempi

Per accedere ai dati, un disco rigido tradizionale deve spostare fisicamente una testina di lettura / scrittura nella posizione corretta. Questo richiede tempo, chiamato "tempo di ricerca". I produttori pubblicano i tempi di ricerca per i loro dischi, e in genere sono solo pochi millisecondi. Potrebbe non sembrare molto, ma per un computer è un'eternità. Se si deve leggere o scrivere un sacco di luoghi diversi del disco per completare un compito (che è comune), quelli tempi di ricerca per possono aggiungere fino a ritardo notevole o la latenza.

Un'unità quasi vuota avrà la maggior parte dei suoi dati nella o vicino alla stessa posizione, in genere sul bordo esterno vicino alla posizione di riposo della testina di lettura / scrittura. Ciò riduce la necessità di effettuare ricerche su tutto il disco, riducendo notevolmente il tempo dedicato alla ricerca. Un'unità quasi piena non solo dovrà cercare attraverso il disco più spesso e con movimenti di ricerca più grandi / più lunghi, ma potrebbe avere difficoltà a mantenere i dati correlati nello stesso settore, aumentando ulteriormente le ricerche del disco. Questo si chiama dati frammentati .

Liberare spazio su disco può migliorare i tempi di ricerca consentendo al servizio di deframmentazione non solo di ripulire più rapidamente i file frammentati, ma anche di spostare i file verso l'esterno del disco, in modo da ridurre il tempo medio di ricerca.

Velocità di rotazione

I dischi rigidi ruotano a una velocità fissa (in genere 5400 rpm o 7200 rpm per il computer e 10000 rpm o anche 15000 rpm su un server). Ci vuole anche una quantità fissa di spazio sull'unità (più o meno) per memorizzare un singolo bit. Per un disco che gira a una velocità di rotazione fissa, l'esterno del disco avrà una velocità lineare più rapida rispetto alla parte interna del disco. Ciò significa che i bit vicino al bordo esterno del disco si muovono oltre la testina di lettura ad una velocità maggiore rispetto ai bit vicino al centro del disco, e quindi la testina di lettura / scrittura può leggere o scrivere bit più velocemente vicino al bordo esterno del disco rispetto al interno.

Un'unità quasi vuota impiegherà la maggior parte del tempo ad accedere ai bit vicino al bordo esterno più veloce del disco. Un'unità quasi piena impiegherà più tempo ad accedere ai bit vicino alla parte interna più lenta del disco.

Ancora una volta, lo svuotamento dello spazio su disco può rendere più veloce il computer consentendo al servizio di deframmentazione di spostare i dati verso l'esterno del disco, dove le letture e le scritture sono più veloci.

A volte un disco si sposterà effettivamente troppo velocemente per la testina di lettura e questo effetto si riduce perché i settori vicino al bordo esterno saranno sfalsati ... scritti in modo che la testina di lettura possa tenere il passo. Ma nel complesso questo vale.

Entrambi questi effetti si riducono a un controller del disco che raggruppa prima i dati nella parte più veloce del disco e non utilizza le parti più lente del disco fino a quando non è necessario. Man mano che il disco si riempie, si trascorre sempre più tempo nella parte più lenta del disco.

Gli effetti si applicano anche alle nuove unità. A parità di tutto il resto, una nuova unità da 1 TB è più veloce di una nuova unità da 200 GB, poiché 1 TB memorizza i bit più vicini tra loro e non riempirà le tracce interne più velocemente. Tuttavia, il tentativo di utilizzare questo per informare le decisioni di acquisto è raramente utile, poiché i produttori possono utilizzare più piatti per raggiungere le dimensioni di 1 TB, piatti più piccoli per limitare un sistema da 1 TB a 200 GB, restrizioni del controller del software / disco per limitare un piatto da 1 TB a soli 200 GB di spazio o vendi un'unità con piatti parzialmente completati / difettosi da un'unità da 1 TB con molti settori danneggiati come un'unità da 200 GB.

Altri fattori

Vale la pena notare qui che gli effetti di cui sopra sono abbastanza piccoli. Gli ingegneri hardware del computer impiegano molto tempo a lavorare su come ridurre al minimo questi problemi e cose come i buffer del disco rigido, la cache Superfetch e altri sistemi lavorano tutti per minimizzare il problema. Su un sistema sano con molto spazio libero, probabilmente non lo noterai nemmeno. Inoltre, gli SSD hanno caratteristiche prestazionali completamente diverse. Tuttavia, gli effetti esistono e un computer diventa legittimamente più lento quando l'unità si riempie. Su un sistema non sano , in cui lo spazio su disco è molto basso, questi effetti possono creare una situazione di blocco del disco, in cui il disco è costantemente alla ricerca di dati frammentati e liberare spazio su disco può risolvere questo problema, con conseguenti miglioramenti più evidenti e notevoli .

Inoltre, l'aggiunta di dati al disco significa che alcune altre operazioni, come l'indicizzazione o le scansioni AV e i processi di deframmentazione, stanno semplicemente facendo più lavoro in background, anche se lo stanno facendo alla stessa velocità di prima.

Infine, le prestazioni del disco sono un grande indicatore delle prestazioni complessive del PC in questi giorni ... un indicatore ancora maggiore della velocità della CPU. Anche un piccolo calo della velocità del disco equivale molto spesso a un reale calo complessivo percepito delle prestazioni del PC. Ciò è particolarmente vero in quanto le prestazioni del disco rigido non hanno davvero tenuto il passo con i miglioramenti della CPU e della memoria; il disco 7200 RPM è lo standard desktop da oltre un decennio ormai. Più che mai, quel tradizionale disco rotante è il collo di bottiglia nel tuo computer.


1
L'aumento del tempo di ricerca non è il risultato di uno spazio libero ridotto, è un risultato dell'organizzazione dei dati. Liberare spazio su disco non diminuirà i tempi di ricerca se i tuoi dati sono già su tutto il disco. Allo stesso modo, esaurire lo spazio su disco non aumenterà improvvisamente i tempi di ricerca di dati non correlati che erano già ben organizzati. Ancora più importante, diffidare di associare uno di questi a "un computer lento". Ad esempio, non navigherai più velocemente sul Web solo perché l'eseguibile del browser non è frammentato e all'esterno di un'unità meccanica e i tuoi MP3 continueranno a funzionare senza problemi anche nel peggiore dei casi.
Jason C,

2
@JasonC Ognuno di questi punti è vero in isolamento, ma preso come parte dell'intero sistema può sommare a rallentamenti reali. Un esempio è questa affermazione: " Freeing disk space won't decrease seek times if your data is already all over the drive." Non posso contestare che di per sé, ma posso sottolineare il servizio di deframmentazione può ora spostare questi dati verso la parte anteriore dell'unità, e adesso quelle cose sarà migliorare i tempi di ricerca. Altri punti nel tuo commento hanno contatori simili: esaurire lo spazio su disco non aumenta la ricerca di dati ben organizzati, ma rende meno probabile che i dati rimangano organizzati.
Joel Coehoorn,

1
@JasonC Tuttavia, ho aggiunto un paio di righe alla mia risposta in base al tuo commento, per rispondere più direttamente alla domanda sul titolo.
Joel Coehoorn,

Ovviamente; ma i miei punti principali sono 1) che il rallentamento è una conseguenza di qualcos'altro , anche se lo spazio libero ridotto può essere uno dei molti fattori e 2) devi stare molto attento con questo argomento, è uno di quelli a cui le persone si aggrappano molto velocemente. Se un utente occasionale nota che il suo computer è lento, in realtà è molto insolito che, per esempio, la frammentazione (ad esempio) sia la vera causa. Ma poi leggono un sacco di cose su Internet, installano Ccleaner, 50 deframmentatori di dischi, fanno un sacco di modifiche al registro, ecc. Bisogno di soddisfare le masse qui; i più saggi non hanno bisogno delle nostre risposte.
Jason C,

Questa risposta suggerisce accarezzamenti (limitando artificialmente le dimensioni dell'HD per mantenere i dati sulle aree esterne più veloci) e alcuni potenziali problemi. Mi piace anche perché non nega che nella maggior parte dei casi, per la maggior parte degli utenti un'unità diventa più frammentata man mano che diventa più piena. Mentre vale la pena notare che lo spazio libero non è il vero problema, è inutilmente ottuso ignorare l'esperienza dell'utente generale quando si affronta una domanda generale sull'esperienza dell'utente.
Smithers,

6

Tutte le altre risposte sono tecnicamente corrette, tuttavia ho sempre scoperto che questo semplice esempio lo spiega meglio.

Ordinare le cose è davvero semplice se hai molto spazio ... ma difficile se non hai lo spazio ... anche i computer hanno bisogno di spazio !

Questo classico " 15 puzzle " è complicato / richiede tempo perché hai solo 1 quadrato libero per mescolare le tessere in giro per farle nell'ordine corretto 1-15.

difficile 15 puzzle

Tuttavia, se lo spazio fosse molto più grande, potresti risolvere questo puzzle in meno di 10 secondi.

facile 15 puzzle

Per chiunque abbia mai giocato a questo puzzle ... capire l'analogia sembra venire naturale. ;-)


2
Questo non è analogo a nessun comportamento del file system. E ' un po' assomiglia al generale processo di deframmentazione, immagino, anche se defrag, relativi a questo puzzle analogia, consente di rimuovere i numeri dalla scheda e ri-posto da nessuna parte che si desidera come a risolverlo.
Jason C,

2
Oltre al commento di Jason sopra, voglio sottolineare l'ovvio: questa risposta si riferisce all'ordinamento (deframmentazione), ma non spiega perché l' accesso a una specifica tessera casuale (diciamo, la tessera "3") sarebbe più veloce nel secondo caso che nel primo caso.
un CVn il

Perché non accedi solo a "3". Stai accedendo a "1-15". Anche se ammetto che non è chiarissimo nell'esempio, l'ho preso come capito. Potrebbe valere la pena notare in particolare qualcosa del tipo "questo puzzle è analogo a un singolo file frammentato". Ottima risposta, rende le cose abbastanza mentalmente accessibili!
Smithers,

1
Per chiarire: il problema principale con l'analogia qui è che, nel puzzle reale, puoi spostare le tessere solo negli spazi vuoti adiacenti. Cioè, nel piccolo esempio, solo 6 o 13 potrebbero essere spostati nello spazio vuoto. Questo è ciò che rende il puzzle impegnativo; è il punto del gioco delle tessere. Quando si deframmenta un disco rigido, tuttavia, è possibile spostare, ad esempio, 4 nello spazio vuoto, 1 nella posizione corretta e così via, abbastanza facile da risolvere, in tutte le mosse esattamente come nel caso con molto spazio . Quindi l'analogia si rompe davvero, dal momento che il nocciolo del puzzle non si applica: nessun file system funziona in questo modo.
Jason C

'Perché non accedi solo a "3". Stai accedendo a "1-15" '- questa è una sciocchezza. La risposta non spiega perché l'accesso a una specifica tessera casuale sia più rapido nel secondo caso che nel primo caso perché la risposta è completamente errata. Non solo la deframmentazione non è limitata come il puzzle, ma la deframmentazione "difficile / che richiede tempo" non influisce sulle prestazioni del sistema.
Jim Balter,

5

Un computer che ha pochissimo spazio su disco, su un disco rigido meccanico rotante, per un periodo di tempo significativo, generalmente rallenterà con l'aumentare della frammentazione dei file. La frammentazione aumentata significa letture lente - molto lente in casi estremi.

Una volta che un computer si trova in questo stato, liberare spazio su disco non risolverà effettivamente il problema. Dovresti anche deframmentare il disco. Prima che un computer sia in questo stato, liberare lo spazio non lo accelererà; ridurrà semplicemente le possibilità di frammentazione diventando un problema.

Questo vale solo per i computer con dischi rigidi meccanici in rotazione, poiché la frammentazione ha un effetto trascurabile sulla velocità di lettura degli SSD.


Una risposta buona, chiara e semplice che affronta anche il problema principale.
Smithers,

4

I dischi flash possono sicuramente rallentare quando sono pieni o frammentati, sebbene i meccanismi di rallentamento siano diversi da quelli che si verificherebbero con un disco rigido fisico. Un tipico chip di memoria flash sarà diviso in un numero di blocchi di cancellazione, ognuno dei quali è costituito da un numero elevato (centinaia, se non migliaia) di pagine di scrittura e supporterà tre operazioni principali:

  1. Leggi una pagina flash.
  2. Scrivi su una pagina flash precedentemente vuota.
  3. Cancella tutte le pagine flash su un blocco.

Mentre in teoria sarebbe possibile avere ciascuna scrittura su un'unità flash per leggere tutte le pagine da un blocco, cambiarne una nel buffer, cancellare il blocco e quindi riscrivere il buffer sul dispositivo flash, un tale approccio sarebbe estremamente lento; sarebbe anche probabile che causasse la perdita di dati se si perdesse energia tra il momento in cui è stata avviata la cancellazione e il completamento del writeback. Inoltre, parti del disco scritte di frequente si consumerebbero molto rapidamente. Se i primi 128 settori del FAT fossero memorizzati in un blocco flash, ad esempio, l'unità sarebbe morta dopo che il numero totale di scritture in tutti quei settori raggiungesse circa 100.000, il che non è molto, soprattutto dato che 128 settori conterrebbe circa 16.384 voci FAT.

Poiché l'approccio sopra funzionerebbe in modo orribile, l'unità lo farà identificare una pagina vuota, scrivere lì i dati e in qualche modo registrare il fatto che il settore logico in questione è archiviato in quella posizione. Finché sono disponibili abbastanza pagine vuote, questa operazione può procedere rapidamente. Se le pagine vuote diventano scarse, tuttavia, l'unità potrebbe dover trovare blocchi che contengono relativamente poche pagine "live", spostare le pagine live in quei blocchi su alcune delle rimanenti pagine vuote e contrassegnare le vecchie copie come " morto"; fatto ciò, l'unità sarà quindi in grado di cancellare i blocchi che contengono solo pagine "morte".

Se un'unità è piena solo per metà, allora ci sarà sicuramente almeno un blocco che è al massimo mezzo pieno di pagine live (e molto probabilmente ci saranno alcuni blocchi che ne contengono pochi o nessuno). Se ogni blocco contiene 256 pagine e i blocchi meno completi contengono 64 pagine live (un caso moderatamente negativo), per ogni 192 richieste di settore richieste l'unità dovrà eseguire 64 copie di settore aggiuntive e un blocco di cancellazione (quindi il costo medio di ogni settore scrivere sarebbe circa 1,34 scritture di pagine e 0,005 cancellazioni di blocchi). Anche nel peggiore dei casi, ogni 128 settori di scrittura richiederebbero 128 copie di settori aggiuntivi e una cancellazione di blocchi (costo medio per scrittura di scritture di 2 pagine e cancellazione di blocchi di 0,01)

Se un'unità è piena al 99% e i blocchi meno completi hanno 248/256 pagine live, quindi ogni 8 scritture settoriali richiederà 248 scritture di pagine aggiuntive e una cancellazione di blocco, con un conseguente costo per scrittura di 32 pagine scritte e 0,125 blocchi cancella - un rallentamento molto grave.

A seconda della quantità di spazio di archiviazione "extra" di un'unità, potrebbe non consentire alle cose di andare così male. Tuttavia, anche nel caso in cui un'unità sia piena al 75%, le prestazioni nel caso peggiore potrebbero essere più del doppio rispetto alle prestazioni nel caso peggiore quando sono piene del 50%.


3

L'hai praticamente inchiodato. Puoi pensare a un HDD SATA come un mezzo di comunicazione half duplex (ovvero, può solo accettare o trasmettere dati alla volta. Non entrambi.) Quindi quando l'unità viene trattenuta per un lungo periodo alla ricerca di una posizione libera per scrivere a, non può leggere alcun dato. Come regola generale, non dovresti caricare le tue unità con una capacità superiore all'80% per questo motivo. Più è pieno, maggiore è la probabilità che frammenti i file causando il collegamento dell'unità durante le richieste di lettura (bloccando così le richieste di scrittura).

Esistono diverse cose che puoi fare per aiutarti con questi problemi:

  • Ridurre la quantità di dati archiviati e deframmentare regolarmente l'unità.
  • Passa alla memoria basata su flash.
  • Conserva i dati in blocco archiviati su un'unità separata dal tuo sistema operativo.
  • Così via...

1
Quando si utilizza il flash, l'unità può leggere o scrivere (di nuovo, non entrambi) quasi istantaneamente (9 ms è un tempo di ricerca piuttosto standard su un HDD in cui gli SSD hanno in genere un "tempo di ricerca" nel regno di pico e nano secondi) su qualsiasi posizione sul disco. en.wikipedia.org/wiki/…
Nathanial Meek,

7
Continua poing 2: questo è ad esempio il $Bitmapfile su NTFS o l' allocatore bitmap in ext4. Vale a dire questa risposta sta diffondendo una grave disinformazione. 3. C'è un sacco di buffering in lettura e scrittura e cache in corso che rende gran parte di questo argomento. Questa risposta descrive in qualche modo gli effetti della frammentazione e, anche in questo caso, limitata ai file system meno recenti, non è certamente uno spazio libero libero. Liberare spazio su disco non accelera un computer.
Jason C

4
@JasonC, dovresti trasformare i tuoi commenti in una risposta.
Celos,

6
Ciò non accade : "quindi quando l'unità viene trattenuta per un lungo periodo alla ricerca di una posizione libera in cui scrivere, non è in grado di leggere alcun dato" , semplicemente non lo fa. Non è così che funzionano i filesystem. Modifica la tua risposta per interrompere la diffusione della disinformazione.
Roman,

2
@NathanialMeek Stai unendo un po 'i livelli. :) La modalità half-duplex di SATA significa che può trasmettere dati sul cavo solo in una direzione. Le letture e le scritture di livello superiore vengono eseguite in piccoli blocchi (chiamati FIS), nelle code di operazioni specificate da SATA. Possono essere asincroni e leggere e scrivere velocemente da e verso la cache di bordo e indirizzare alla memoria di sistema tramite DMA. I controller SATA sono inoltre liberi di riordinare i comandi per ottimizzare l'efficienza. Punto centrale: la linea non viene mantenuta occupata mentre le operazioni fisiche sono completate e la modalità half-duplex di SATA non ha l'effetto che si ritiene abbia.
Jason C

3

Seguendo l'approccio breve e dolce, la mia risposta semplificata (strettamente limitata alla tua confusione principale) è:

Finché il tuo

  1. Il sistema operativo ha spazio sufficiente (per gli scenari peggiori) per adempiere ai suoi compiti come paginazione / scambio / ecc.
  2. Altri software hanno anche spazio sufficiente per le loro rispettive esigenze.
  3. Il disco rigido è deframmentato.

Quindi non si può dire la differenza nelle prestazioni di un disco vuoto all'80% contro un disco vuoto al 30%, e non dovresti preoccuparti di nient'altro che della memorizzazione di sempre più nuovi dati.

Qualsiasi altra cosa che necessiti di più spazio di archiviazione porterà a scarse prestazioni in quanto ora potrebbe esserci una carenza di spazio disponibile.

Naturalmente la pulizia del disco tramite uno strumento è buona come:

  1. I file temporanei devono essere puliti regolarmente per ottenere prezioso spazio su disco.
  2. I vecchi file di registro non sono altro che spreco di spazio.
  3. Gli avanzi del software installato / disinstallato sono molto cattivi.
  4. I cookie devono essere cancellati se apprezzi la tua privacy online.
  5. Scorciatoie non valide, ecc.

Tutte queste (e molte altre) ragioni portano a prestazioni peggiori poiché tutte queste continuano a confondere il sistema operativo quando trovano il giusto set di bit con cui lavorare.


Un sommario decente, ma non così sicuro della sezione "MA". In particolare: 3) In genere non ha alcun impatto evidente sulle prestazioni, nonostante le anomalie comuni 4) I cookie non sono intrinsecamente problematici e, indipendentemente dall'opinione, la privacy non è correlata alle prestazioni o allo spazio sul disco rigido, 5) I collegamenti interrotti sono brutti ma generalmente altrimenti irrilevante. Niente di tutto ciò "confonde" realmente alcun sistema operativo comune. Fai molta attenzione ai "consigli" e alle "modifiche" che segui. Diffidare anche di strumenti di pulizia non necessari, in particolare i pulitori di registro spesso rischiano di danneggiarli a beneficio zero.
Jason C

2

Un effetto sulle unità di spinning che non ho mai visto menzionato: la velocità di accesso e la velocità di trasferimento dei dati è diversa su diverse parti di un disco.

Un disco ruota a velocità fissa. Le tracce all'esterno di un disco sono più lunghe e quindi possono contenere più dati per traccia rispetto alle tracce all'interno. Se l'unità è in grado di leggere 100 MB / sec dalle tracce più esterne, la velocità sulle tracce più interne sarà inferiore a 50 MB / sec.

Allo stesso tempo, ci sono meno tracce tra 1 GB di dati sulle tracce esterne del disco rispetto a 1 GB di dati sulle tracce più interne. Quindi, in media, per i dati memorizzati all'esterno sarà necessario meno movimento della testa rispetto ai dati sulle tracce più interne.

Il sistema operativo tenterà di utilizzare le tracce più esterne, se possibile. Ovviamente non è possibile se il disco è pieno. L'eliminazione dei dati renderà disponibile lo spazio in cui la velocità di trasferimento è maggiore e accelererà le cose. Per lo stesso motivo, è necessario acquistare dischi rigidi rotanti più grandi del necessario se si desidera la velocità (purché sia ​​conveniente), perché si finirà per utilizzare solo le parti più veloci del disco.


Aggiunta: en.wikipedia.org/wiki/Zone_bit_recording , che colpisce su questo con alcuni dettagli. Vale la pena notare: i dati esistenti non verranno spostati. Ciò può influire sulla memorizzazione di nuovi dati (a seconda della posizione sull'unità, non direttamente sullo spazio libero), ma non "rallenterà" i file esistenti a cui si accedeva felicemente prima delle scritture all'interno. In seguito, l'unità da 3,5 "da 1 TB da 7200 RPM più economica che ho trovato su Amazon ha una velocità di lettura media di 144 MB / s basata su benchmark dell'utente; anche tenendo conto delle differenze sulle tracce interne ed esterne, potrebbe non essere un collo di bottiglia durante l'uso occasionale.
Jason C

Le prestazioni di I / O di @JasonC in termini di throughput sequenziale non sono quasi mai un problema pratico; anche un lento drive da 4900 rpm sarà abbastanza veloce per quasi ogni singolo utente. Le prestazioni di I / O in termini di operazioni di lettura / scrittura al secondo saranno ciò che uccide le prestazioni nella maggior parte dei casi; chiedi al tuo amministratore di sistema locale preferito gli IOPS di archiviazione rotazionale nei sistemi multiutente qualche volta, se sei così incline. Questo è il motivo principale per cui praticamente nessuno sta implementando l'archiviazione rotazionale per sistemi multiutente in questi giorni; non puoi nemmeno avvicinarti agli IOPS degli SSD.
un CVn del
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.