Perché lo svuotamento dello spazio su disco accelera i computer?
Quando si impara di più sui computer e su come funzionano, occasionalmente si imbattono in qualcosa che non sembra avere senso. Con questo in mente, lo svuotamento dello spazio su disco accelera effettivamente i computer? Il post di Q & A di SuperUser di oggi ha la risposta alla domanda di un lettore perplesso.
La sessione di domande e risposte di oggi ci viene fornita per gentile concessione di SuperUser, una suddivisione di Stack Exchange, un raggruppamento di siti Web di domande e risposte basato sulla comunità.
Schermata per gentile concessione di nchenga (Flickr).
La domanda
Il lettore SuperUser Remi.b vuole sapere perché vuotare lo spazio su disco sembra velocizzare un computer:
Ho guardato molti video e ora capisco come i computer funzionino un po 'meglio. Capisco cos'è la RAM, la memoria volatile e non volatile e il processo di scambio. Capisco anche perché l'aumento della RAM acceleri un computer.
Quello che non capisco è perché pulire lo spazio su disco sembra accelerare un computer. Accelera davvero un computer? Se è così, perché lo fa?
Ha qualcosa a che fare con la ricerca di spazio di memoria per salvare le cose o con lo spostamento delle cose per creare uno spazio continuo abbastanza lungo per salvare qualcosa? Quanto spazio vuoto dovrei lasciare libero su un disco rigido?
Perché lo svuotamento dello spazio su disco sembra accelerare un computer?
La risposta
Il collaboratore di SuperUser Jason C ha la risposta per noi:
"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é riempire il tuo disco rigido spesso accade nello stesso momento di altre cose che tradizionalmente potrebbero rallentare il tuo computer (UN). Le prestazioni dell'SSD tendono a peggiorare mentre si riempiono, ma si tratta di un problema relativamente nuovo, unico per gli SSD, e non è particolarmente evidente per gli utenti occasionali. Generalmente, lo spazio libero su disco insufficiente è solo una falsa pista.
Ad esempio, cose come:
1. Frammentazione dei file La frammentazione dei file è un problema (B), ma la mancanza di spazio libero, anche se sicuramente uno dei tanti fattori che contribuiscono, non è l'unica causa di ciò. Alcuni punti chiave qui:
- Le possibilità di un file frammentato sono non in relazione alla quantità di spazio libero rimasto sul disco. Sono correlati alla dimensione del più grande blocco contiguo di spazio libero sul disco (cioè "buchi" di spazio libero), che è la quantità di spazio libero succede a mettere un limite superiore su. Sono anche correlati al modo in cui il file system gestisce l'allocazione dei file (più sotto). Tenere conto: Un'unità che è piena al 95 percento con tutto lo spazio libero in un singolo blocco contiguo ha una probabilità pari a zero percento di frammentare un nuovo file (C) (e la possibilità di frammentare un file aggiunto è indipendente dallo spazio libero). Un'unità piena al cinque percento ma con dati distribuiti in modo uniforme sull'unità presenta una possibilità di frammentazione molto elevata.
- Tieni presente che la frammentazione dei file influisce solo sulle prestazioni quando si accede ai file frammentati. Tenere conto: Hai un bel disco deframmentato che ha ancora un sacco di "buchi" gratuiti. Uno scenario comune. Tutto funziona senza intoppi. Alla fine, però, arrivi ad un punto in cui non ci sono più grandi blocchi di spazio libero rimanenti. Si 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 prima erano precisi non verranno improvvisamente frammentati. Ciò potrebbe rendere più lungo il caricamento del film (sebbene i bit rate tipici del film siano così bassi rispetto alle velocità di lettura del disco rigido che molto probabilmente saranno impercettibili) e potrebbe influire sulle prestazioni legate all'I / O mentre il film si sta caricando, ma a parte questo, nulla cambia.
- Mentre la frammentazione dei file è certamente un problema, spesso gli effetti vengono mitigati dal sistema operativo e dal buffering e dalla memorizzazione nella cache a livello di hardware. Scritture ritardate, read-ahead, strategie come il prefetcher in Windows, ecc., Aiutano a ridurre gli effetti della frammentazione. In genere no in realtà sperimentare un impatto significativo fino a quando la frammentazione diventa grave (oserei anche dire che finché il file di swap non è frammentato, probabilmente non si noterà mai).
2. L'indicizzazione della ricerca è un altro esempio. Supponiamo che tu abbia l'indicizzazione automatica attivata e un sistema operativo che non gestisce questo con garbo. Man mano che si salvano sempre più contenuti indicizzabili sul tuo computer (documenti e simili), l'indicizzazione potrebbe richiedere più tempo e più tempo e potrebbe iniziare a influire sulla velocità percepita del tuo computer mentre è in esecuzione, sia nell'I / O che nell'utilizzo della CPU . Questo non è legato allo spazio libero, è correlato alla quantità di contenuto indicizzabile che hai. Tuttavia, l'esaurimento dello spazio libero va di pari passo con la memorizzazione di più contenuti, quindi viene disegnata una connessione falsa.
3. Software antivirus (simile all'esempio di indicizzazione della ricerca). Supponiamo che tu abbia un software anti-virus configurato per fare una scansione in background del tuo disco. Poiché il tuo contenuto è sempre più scansionabile, la ricerca richiede più risorse di I / O e CPU, interferendo potenzialmente con il tuo lavoro. Di nuovo, questo è correlato alla quantità di contenuto scansionabile che hai. Più contenuti spesso equivalgono a meno spazio libero, ma la mancanza di spazio libero non è la causa.
4. Software installato Supponiamo di avere installato un sacco di software che viene caricato all'avvio del computer, rallentando così i tempi di avvio. Questo rallentamento si verifica perché viene caricato molto software. Tuttavia, il software installato occupa spazio sul disco rigido. Pertanto, lo spazio libero del disco rigido diminuisce allo stesso tempo in cui ciò accade, e di nuovo una connessione falsa può essere facilmente realizzata.
5. Molti altri esempi su questa linea che, se presi insieme, apparire associare strettamente la mancanza di spazio libero con prestazioni inferiori.
Quanto sopra illustra un'altra ragione per cui questo è un mito così comune: mentre la mancanza di spazio libero non è una causa diretta del rallentamento, la disinstallazione di varie applicazioni, la rimozione di contenuti indicizzati o scansionati, ecc. A volte (ma non sempre, al di fuori dell'ambito questa risposta) aumenta nuovamente le prestazioni per motivi non correlati alla quantità di spazio libero rimanente. Ma anche questo naturalmente libera lo spazio del disco rigido. Quindi, di nuovo, può essere fatta una connessione apparente (ma falsa) tra "più spazio libero" e un "computer più veloce".
Tenere conto: Se hai una macchina che funziona lentamente a causa di un sacco di software installato, ecc., Clona il tuo disco rigido (esattamente) su un disco rigido più grande, quindi espandi le tue partizioni per guadagnare più spazio libero, la macchina non magicamente aumenterà. Lo stesso software viene caricato, gli stessi file sono ancora frammentati nello stesso modo, lo stesso indicizzatore di ricerca continua a funzionare, non cambia nulla nonostante abbia più spazio libero.
"Ha qualcosa a che fare con la ricerca di spazio di memoria per 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 memoria indirizzata che mette ciecamente le cose a cui il tuo sistema operativo glielo dice e legge tutto ciò che gli viene chiesto. Le unità moderne hanno meccanismi sofisticati di memorizzazione nella cache e buffering progettati per prevedere ciò che il sistema operativo chiederà in base all'esperienza che abbiamo acquisito nel tempo (alcune unità sono anche a conoscenza del file system su di esse), ma in sostanza, pensate al vostro guidare come un grande mattone di memoria con caratteristiche di prestazioni occasionali bonus.
2. Il tuo sistema operativo non cerca neanche i posti dove mettere le cose. Non c'è ricerca. Sono stati fatti molti sforzi per risolvere questo problema in quanto è 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 PC DOS e Windows), NTFS (edizioni successive di Windows), HFS + (Mac), ext4 (alcuni sistemi Linux) e molti altri. Persino il concetto di "file" e di "directory" sono semplicemente prodotti di file system tipici - i dischi rigidi non sanno nulla delle misteriose bestie chiamate File. I dettagli non rientrano nell'ambito di questa risposta. Ma in sostanza, tutti i file system comuni hanno il modo di tracciare dove si trova lo spazio disponibile su un disco in modo che la ricerca di spazio libero sia, in circostanze normali (ad esempio, i file system in buona salute), non necessaria. Esempi:
- NTFS ha una tabella di file principale, che include i file speciali $ Bitmap, ecc., e un sacco di metadati che descrivono l'unità. In sostanza tiene traccia di dove sono i prossimi blocchi liberi in modo che i nuovi file possano essere scritti direttamente su blocchi liberi senza dover eseguire la scansione dell'unità ogni volta.
- Un altro esempio: Ext4 ha quello che viene chiamato l'allocatore di bitmap, un miglioramento rispetto a ext2 e ext3 che fondamentalmente aiuta a determinare direttamente dove sono liberi i blocchi invece di scansionare l'elenco di blocchi liberi. Ext4 supporta anche allocazione ritardata, vale a dire il buffering dei dati nella RAM del sistema operativo prima di scriverlo sul disco per prendere decisioni migliori su dove collocarlo per ridurre la frammentazione.
- Molti altri esempi.
"O spostando le cose per creare uno spazio continuo abbastanza lungo per salvare qualcosa?"
No. Questo non accade, almeno non con qualsiasi file system di cui sono a conoscenza. I file finiscono per essere frammentati.
Viene chiamato il processo di "spostare le cose in giro per creare uno spazio contiguo abbastanza lungo per salvare qualcosa" deframmentazione. Questo non succede quando i file sono scritti. Questo succede quando si esegue l'utilità di deframmentazione del disco. Nelle ultime versioni di Windows, almeno, ciò avviene automaticamente in base a una pianificazione, ma non viene mai attivato scrivendo un file.
Essere capace di evitare spostare le cose in questo modo è fondamentale per le prestazioni del file system, ed è il motivo per cui la frammentazione avviene e perché la deframmentazione esiste come passaggio separato.
"Quanto spazio vuoto dovrei lasciare libero su un disco rigido?"
Questa è una domanda più complicata a cui rispondere (e questa risposta è già diventata un piccolo libro).
Regole empiriche:
1. Per tutti i tipi di unità:
- Soprattutto, lascia abbastanza spazio libero per di usare il computer in modo efficace. Se stai esaurendo lo spazio per lavorare, vorrai un disco più grande.
- Molti strumenti di deframmentazione del disco richiedono una quantità minima di spazio libero (penso che quello con Windows richieda il 15%, il caso peggiore) su cui lavorare. Utilizzano questo spazio libero per conservare temporaneamente i file frammentati mentre altri sono riorganizzati.
- 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 abbastanza spazio per la dimensione massima del file di pagina. Oppure, se hai un laptop che metti in modalità di sospensione, avrai bisogno di abbastanza spazio libero per il file di stato di ibernazione. Cose del genere.
2. -SSD specifica:
- Per un'affidabilità ottimale (e in misura minore, le prestazioni), gli SSD richiedono uno spazio libero, che, senza entrare troppo nel dettaglio, utilizza per diffondere i dati attorno all'unità per evitare di scrivere costantemente nello stesso punto (che li logora) . Questo concetto di lasciare spazio libero è chiamato over-provisioning. È importante, ma in molti SSD, lo spazio obbligatorio sovradosato esiste già. Cioè, le unità hanno spesso qualche dozzina di GB in più di quelli che segnalano al sistema operativo. Le unità di fascia bassa spesso richiedono la partenza manuale non partizionato spazio, ma per unità con OP obbligatorio, non è necessario lasciare spazio libero. Una cosa importante da notare qui è quella lo spazio sovraccosto viene spesso preso solo dallo spazio non partizionato. Quindi se la tua partizione occupa l'intero disco e lasci dello spazio libero su di esso, ciò non avviene sempre contare. Molte volte, il sovra-provisioning 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, garbage collection e simili hanno anche effetti, ma quelli non rientrano nell'ambito di questa risposta.
Personalmente, di solito prendo un disco più grande quando ho circa il 20-25% di spazio libero rimanente. Questo non è legato alle prestazioni, è solo che quando arriverò a quel punto, mi aspetto che presto avrò a corto di spazio per i dati ed è ora di ottenere un disco più grande.
Più importante del guardare lo spazio libero è assicurarsi che la deframmentazione pianificata sia abilitata, se del caso, (non su SSD) in modo da non arrivare mai al punto in cui diventa così terribile da influire su di te.
C'è un'ultima cosa che vale la pena menzionare. Una delle altre risposte ha menzionato che la modalità half-duplex di SATA impedisce la lettura e la scrittura allo stesso tempo. Se è vero, questo è molto semplificato e per lo più non è correlato ai problemi di prestazioni discussi qui. Ciò significa, semplicemente, che i dati non possono essere trasferiti in entrambe le direzioni sul filo allo stesso tempo. Tuttavia, SATA ha una specifica abbastanza complessa che coinvolge minuscole dimensioni massime dei blocchi (circa 8kB per blocco sul filo, penso), leggere e scrivere le code di operazioni, ecc. E non preclude le scritture ai buffer che si verificano mentre le letture sono in corso, intercalate operazioni, ecc.
Qualsiasi blocco che si verifica è dovuto alla competizione per risorse fisiche, solitamente mitigate da un sacco di cache. La modalità duplex di SATA è quasi del tutto irrilevante qui.
(UN) "Slow down" è un termine generico. Qui lo uso per riferirsi a cose che sono vincolate all'I / O (cioè se il tuo computer è seduto lì a scricchiolare numeri, il contenuto del disco rigido non ha impatto) o legato alla CPU e in competizione con cose legate tangenzialmente ad alta Utilizzo della CPU (ovvero software anti-virus che esegue la scansione di tonnellate di file).
(B) Gli SSD sono influenzati dalla frammentazione in quanto le velocità di accesso sequenziali sono generalmente più veloci dell'accesso casuale, nonostante gli SSD non si trovino ad affrontare le stesse limitazioni di un dispositivo meccanico (anche in questo caso, la mancanza di frammentazione non garantisce l'accesso sequenziale a causa dell'usura, ecc.). Tuttavia, praticamente in ogni scenario di utilizzo generale, questo è un non-problema. Le differenze di prestazioni dovute alla frammentazione su SSD sono in genere trascurabili per cose come il caricamento di applicazioni, l'avvio del computer, ecc.
(C) Supponendo un file system sensato che non stia frammentando i file di proposito.
Assicurati di leggere il resto della vivace discussione su SuperUser tramite il link sottostante!
Hai qualcosa da aggiungere alla spiegazione? Audio disattivato nei commenti. Vuoi leggere più risposte dagli altri utenti di Stack Exchange esperti di tecnologia? Controlla la discussione completa qui.