2Sep
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? Oggi il post di SuperUser Q & A ha la risposta alla domanda di un lettore perplesso.
Today's Question &La sessione di risposta ci viene fornita per gentile concessione di SuperUser, una suddivisione di Stack Exchange, un raggruppamento di Q & A basato su community.
Schermata per gentile concessione di nchenga( Flickr).
La domanda
SuperUser reader Remi.b vuole sapere perché vuotare lo spazio su disco sembra accelerare un computer:
Ho visto 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 accelera 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 devo lasciare libero su un hard disk?
Perché lo spazio su disco vuoto sembra velocizzare un computer?
La risposta Contribuente
SuperUser Jason C ha la risposta per noi:
"Perché vuotare lo 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 contemporaneamente ad altre cose che tradizionalmente potrebbero rallentare il tuo computer ( A) .Le prestazioni dell'SSD tendono a peggiorare mentre si riempiono, ma questo è 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 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. Alcuni punti chiave qui:
- Le possibilità di un file frammentato sono non relative alla quantità di spazio libero rimasto sull'unità.Sono legati alla dimensione del più grande blocco contiguo di spazio libero sul disco( cioè "buchi" di spazio libero), che la quantità di spazio libero capita di mettere un limite superiore su .Sono anche correlati al modo in cui il file system gestisce l'allocazione dei file( più sotto ). Considerare: Un'unità piena al 95 percento con tutto lo spazio libero in un singolo blocco contiguo ha una percentuale zero di possibilità di frammentare un nuovo file ( C) ( e la possibilità di frammentare un file aggiunto è indipendente dallo spazio disponibile).Un'unità piena al cinque percento ma con dati distribuiti in modo uniforme sull'unità presenta un'elevata probabilità di frammentazione.
- Tenere presente che la frammentazione dei file influisce solo sulle prestazioni quando si accede ai file frammentati . Considerate: Avete una bella unità deframmentata 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 in precedenza erano soddisfacenti 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 durante il caricamento del film, maa 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 hardware. Scritture ritardate, read-ahead, strategie come il prefetcher in Windows, ecc., Aiutano a ridurre gli effetti della frammentazione. In genere non in realtà l' ha un impatto significativo fino a quando la frammentazione diventa grave( oserei anche dire che fino a quando il file di swap non è frammentato, probabilmente non lo noterete mai).
2. L'indicizzazione della ricerca è un altro esempio. Supponiamo di avere l'indicizzazione automatica attivata e un sistema operativo che non gestisce questo con garbo. Man mano che salvi 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 effettuare 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 contenuti scansionabili che hai. Più contenuti spesso equivalgono a meno spazio libero, ma la mancanza di spazio libero non è la causa.
4. Software installato .Supponiamo che tu abbia 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 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 lungo queste linee che, quando messi insieme, appaiono per 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;di 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".
Considerare: Se si dispone di una macchina in esecuzione lentamente a causa di un sacco di software installato, ecc., Clonare il disco rigido( esattamente) su un disco rigido più grande, quindi espandere le partizioni per guadagnare più spazio libero, la macchina non magicamente velocitàsu. 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. No. 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 sistema operativo glielo dice e legge tutto ciò che gli viene chiesto. Le unità moderne dispongono di sofisticati meccanismi di memorizzazione nella cache e di buffering progettati per prevedere ciò che il sistema operativo richiederà in base all'esperienza acquisita nel tempo( alcune unità sono anche a conoscenza del file system su di esse), ma in sostanza, pensate al vostroguidare come un grande mattone di stoccaggio con caratteristiche di prestazioni occasionali bonus.
2. Il sistema operativo non cerca neanche i posti dove 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 PC DOS e Windows), NTFS( edizioni successive di Windows), HFS +( Mac), ext4( alcuni sistemi Linux) e molti altri. Anche il concetto di "file" e di "directory" sono semplicemente prodotti di file system tipici: i dischi rigidi non conoscono le misteriose bestie chiamate file .I dettagli non rientrano nell'ambito di questa risposta. Ma in sostanza, tutti i comuni file system hanno dei modi per rintracciare dove lo spazio disponibile si trova su un disco in modo tale che una 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 esaminare l'elenco di blocchi liberi. Ext4 supporta anche di allocazione ritardata , ovvero il buffering dei dati nella RAM da parte del sistema operativo prima di scriverlo sull'unità per prendere decisioni migliori su dove collocarlo per ridurre la frammentazione.
- Molti altri esempi.
"O con lo spostamento delle 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.
Il processo di "spostare le cose in giro per creare uno spazio contiguo abbastanza lungo per il salvataggio di qualcosa" si chiama che deframmenta .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 in grado di evitare spostare le cose in giro come questo è la chiave per le prestazioni del file system, ed è il motivo per cui avviene la frammentazione e perché la deframmentazione esiste come un passaggio separato.
"Quanto spazio vuoto devo lasciare libero su un disco rigido?"
Questa è una domanda più complicata a cui rispondere( e questa risposta è già stata trasformata in un piccolo libro).
Regole pratiche:
1. Per tutti i tipi di unità:
- Soprattutto, lasciare abbastanza spazio libero per per utilizzare 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 vengono 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 paging 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 così.
2. SSD-specifici:
- Per l'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 sulo stesso posto( che li logora).Questo concetto di lasciare spazio libero è chiamato over-provisioning.È importante, ma in molti SSD, lo spazio overprovisioning obbligatorio esiste già .Cioè, le unità hanno spesso qualche dozzina di GB in più rispetto a quanto riportano al sistema operativo. Le unità di fascia bassa richiedono spesso di lasciare manualmente lo spazio non partizionato , ma per le unità con OP obbligatorio, non è necessario lasciare spazio libero .Una cosa importante da notare qui è che lo spazio sovrastampato è 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 vale conteggio .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 della visione dello spazio libero è assicurarsi che la deframmentazione pianificata sia abilitata, ove appropriato( 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. Sebbene sia 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 contemporaneamente in entrambe le direzioni sul filo .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, intercalateoperazioni, ecc.
Qualsiasi blocco che si verifica sarebbe dovuto alla competizione per risorse fisiche, solitamente mitigate da un sacco di cache. La modalità duplex di SATA è quasi del tutto irrilevante qui.
( A) "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 che hannoUtilizzo della CPU( ad es. Software anti-virus che esegue la scansione di tonnellate di file).
( B) Gli SSD sono interessati 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,eccetera.).Tuttavia, praticamente in ogni scenario di uso 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) Assumendo un file system sano che non stia frammentando i file di proposito.
Assicurati di leggere il resto della vivace discussione su SuperUser tramite il link qui sotto!
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.