If-Koubou

De ce golirea spațiului pe disc accelerează computerele?

De ce golirea spațiului pe disc accelerează computerele? (Cum să)

Când aflați mai multe despre computere și cum funcționează acestea, veți întâlni ocazional ceva care nu pare să aibă sens. Cu acest lucru în minte, spațiul de golire pe disc accelerează de fapt calculatoarele? Postarea de astăzi SuperUser Q & A are răspunsul la o întrebare nedumerită a cititorului.

Sesiunea de întrebări și răspunsuri din ziua de astăzi vine de la amabilitatea SuperUser - o subdiviziune a Stack Exchange, o grupare bazată pe comunitate a site-urilor Q & A.

Imaginea de pe urma nchenga (Flickr).

Intrebarea

Cititorul SuperUser Remi.b dorește să știe de ce golirea spațiului pe disc pare să accelereze un computer:

M-am uitat la o mulțime de videoclipuri și acum înțeleg cum computerele funcționează un pic mai bine. Înțeleg ce înseamnă memoria RAM, despre memoria volatilă și nevolatilă și despre procesul de schimbare. De asemenea, înțeleg de ce creșterea RAM accelerează un computer.

Ceea ce nu înțeleg este motivul pentru care curățarea spațiului pe disc pare să accelereze calculatorul. Are viteza într-adevăr un calculator sus? Dacă da, de ce o face?

Are ceva de-a face cu căutarea spațiului de memorie pentru a salva lucruri sau pentru a face lucruri în mișcare pentru a crea un spațiu suficient de lung pentru a salva ceva? Cât spațiu gol trebuie să las liber pe un hard disk?

De ce spațiul de golire pe disc pare să accelereze un computer?

Răspunsul

Contribuabilul SuperUser Jason C are răspunsul pentru noi:

"De ce spațiul de golire pe disc accelerează computerele?"

Nu este, cel puțin nu pe cont propriu. Acesta este un mit cu adevărat comun. Motivul pentru care este un mit comun este faptul că umplerea hard disk-ului se întâmplă adesea în același timp cu alte lucruri care, în mod tradițional, ar putea încetini computerul (A). Performanța SSD tind să se degradeze pe măsură ce se umple, dar aceasta este o problemă relativ nouă, unică pentru SSD-uri și nu este cu adevărat vizibilă pentru utilizatorii ocazionali. În general, spațiul redus liber pe disc este doar o hering roșu.

De exemplu, lucruri precum:

1. Fragmentarea fișierelor. Fragmentarea fișierelor este o problemă (B), dar lipsa spațiului liber, în timp ce cu siguranță unul dintre factorii care contribuie, nu este singura cauză a acestuia. Unele puncte cheie aici:

  • Șansele de fragmentare a unui fișier sunt nu în funcție de cantitatea de spațiu liber rămasă pe unitate. Acestea sunt legate de mărimea celui mai mare bloc contiguat de spațiu liber de pe unitate (adică "găuri" de spațiu liber), care cantitatea de spațiu liber se întâmplă să pună o limită superioară. Ele sunt, de asemenea, legate de modul în care sistemul de fișiere se ocupă de alocarea fișierelor (mai jos). Considera: O unitate care este de 95% plină cu tot spațiul liber într-un singur bloc contiguu are șanse zero la sută de fragmentare a unui fișier nou (C) (și șansa de fragmentare a unui fișier atașat este independent de spațiul liber). O unitate care este de cinci procente plină, dar cu date împrăștiate uniform pe unitate are o șansă foarte mare de fragmentare.
  • Rețineți că fragmentarea fișierelor afectează performanța numai când sunt accesate fișierele fragmentate. Considera: Aveți o mașină frumoasă, defragmentată, care are în continuare o mulțime de "găuri" libere în ea. Un scenariu comun. Totul se desfășoară fără probleme. În cele din urmă, ajungeți până la un punct în care nu mai rămân blocuri de spațiu liber. Descărcați un film uriaș, fișierul ajunge să fie foarte fragmentat. Acest lucru nu va încetini calculatorul. Toate fișierele dvs. de aplicație și cele care au fost bine în trecut nu vor deveni brusc fragmentate. Acest lucru poate face ca filmul să dureze mai mult timp pentru încărcare (deși ratele de biți ale filmului sunt atât de scăzute în comparație cu ratele de citire a unității de hard disk pe care probabil că le va fi neobservată) și pot afecta performanța legată de I / O în timpul încărcării filmului altceva decât asta, nimic nu se schimbă.
  • În timp ce fragmentarea fișierelor este cu siguranță o problemă, adesea efectele sunt atenuate de tamponarea și cache-ul de nivel de hardware și de hardware. Întârziat scrie, read-ahead, strategii cum ar fi prefetcher în Windows, etc, toate ajuta la reducerea efectelor fragmentării. În general, nu de fapt experimentează un impact semnificativ până când fragmentarea devine severă (aș dori chiar să spun că atâta timp cât fișierul dvs. swap nu este fragmentat, probabil că niciodată nu veți observa).

2. Indexarea căutării este un alt exemplu. Spuneți că ați activat indexarea automată și un sistem de operare care nu se ocupă de acest lucru grațios. Pe măsură ce salvați conținut mai indexabil și mai mult pe computer (documente și altele), indexarea poate dura mai mult și poate începe să aibă un efect asupra vitezei percepute a computerului în timp ce rulează, atât în ​​ceea ce privește I / O, cât și utilizarea procesorului . Acest lucru nu este legat de spațiul liber, este legat de cantitatea de conținut indexabil pe care îl aveți. Cu toate acestea, lipsa spațiului liber merge mână în mână cu stocarea mai multor conținuturi, de aici rezultă o conexiune falsă.

3. Software antivirus (similar cu exemplul de indexare a căutării). Spuneți că ați instalat software anti-virus pentru a face scanarea în fundal a unității. Pe măsură ce aveți mai mult conținut scanabil, căutarea necesită mai multe resurse de I / O și CPU, eventual interferând cu munca dvs. Din nou, aceasta este legată de cantitatea de conținut scanabil pe care îl aveți. Mai mult conținut adesea echivalează cu mai puțin spațiu liber, dar lipsa spațiului liber nu este cauza.

4. Software instalat. Spuneți că aveți o mulțime de software instalat care se încarcă atunci când computerul dvs. cizme, încetinind astfel timpii de pornire. Această încetinire se întâmplă deoarece se încarcă o mulțime de software. Cu toate acestea, software-ul instalat ocupă spațiu pe hard disk. Prin urmare, spațiul liber al unității de disc scade în același timp cu acest lucru și, din nou, se poate face o conexiune falsă.

5. Multe alte exemple în acest sens, care, luate împreună, apărea pentru a asocia îndeaproape lipsa spațiului liber cu performanțe mai scăzute.

Cele de mai sus ilustrează un alt motiv că acest lucru este un mit comun: în timp ce lipsa spațiului liber nu este o cauză directă a încetinirii, dezinstalarea diverselor aplicații, eliminarea conținutului indexat sau scanat etc. uneori (dar nu întotdeauna; acest răspuns) crește din nou performanța din motive independente de spațiul liber rămas. Dar acest lucru, de asemenea, în mod natural, eliberează spațiu pe hard disk. De aceea, din nou, se poate face o conexiune aparentă (dar falsă) între "spațiul liber mai mult" și un "calculator mai rapid".

Considera: Dacă aveți o mașină care rulează lent din cauza multor software instalate etc., clonați hard disk-ul (exact) pe un hard disk mai mare, apoi extindeți partițiile pentru a obține mai mult spațiu liber, mașina nu va accelera magic. Aceleași încărcări de software, aceleași fișiere sunt încă fragmentate în aceleași moduri, același indexer de căutare încă rulează, nimic nu se schimbă în ciuda faptului că are mai mult spațiu liber.

"Are ceva de-a face cu căutarea spațiului de memorie pentru a salva lucrurile?"

Nu, nu face. Există două lucruri foarte importante care merită notate aici:

1. Hard disk-ul dvs. nu caută în jur pentru a găsi locuri pentru a pune lucrurile. Hard-ul dvs. este prost. Nu-i nimic. Este un bloc mare de stocare adresat, care pune orbește lucrurile acolo unde sistemul tău spune și citește orice i se cere. Unitățile moderne au mecanisme sofisticate de memorare în cache și tamponare proiectate în jurul prezenței a ceea ce cere sistemul de operare pe baza experienței dobândite de-a lungul timpului (unele unități sunt chiar conștiente de sistemul de fișiere care este pe ele), dar, în esență, conduceți doar ca o cărămidă mare de depozitare cu caracteristici de performanță bonus ocazionale.

2. Sistemul dvs. de operare nu caută nici locuri pentru a pune lucrurile. Nu există căutare. S-au depus multe eforturi în rezolvarea acestei probleme, deoarece este esențială pentru performanța sistemului de fișiere. Modul în care datele sunt efectiv organizate pe unitatea dvs. este determinată de sistemul dvs. de fișiere. De exemplu, FAT32 (vechile DOS și Windows PC-uri), NTFS (ediții ulterioare de Windows), HFS + (Mac), ext4 (unele sisteme Linux) și multe altele. Chiar conceptul de "fișier" și de "director" sunt doar produse ale sistemelor de fișiere tipice - hard-driverele nu știu nimic despre fiarele misterioase numite fișiere. Detaliile sunt în afara scopului acestui răspuns. Dar, în mod esențial, toate sistemele de fișiere comune au modalități de urmărire unde spațiul disponibil este pe o unitate, astfel încât o căutare a spațiului liber este, în circumstanțe normale (adică sisteme de fișiere în stare bună de sănătate) inutile. Exemple:

  • NTFS are o masă de fișiere master, care include fișierele speciale $ Bitmap, etc, și o mulțime de meta date care descriu unitatea. În esență, acesta urmărește unde sunt următoarele blocuri libere, astfel încât fișierele noi pot fi scrise direct în blocuri libere fără a fi nevoie de scanarea unității de fiecare dată.
  • Un alt exemplu: Ext4 are ceea ce se numește alocator bitmap, o îmbunătățire față de ext2 și ext3 care în principiu îl ajută să determine direct unde sunt blocurile libere în loc de a scana lista blocurilor libere. Ext4 sprijină, de asemenea întârzierea alocării, adică tamponarea datelor în memoria RAM de către sistemul de operare înainte de a-l scrie la unitate, pentru a lua decizii mai bune cu privire la locul unde să-l pună pentru a reduce fragmentarea.
  • Multe alte exemple.

"Sau cu lucrurile în mișcare pentru a face un spațiu suficient de lung pentru a salva ceva?"

Nu. Acest lucru nu se întâmplă, cel puțin nu cu niciun sistem de fișiere despre care știu. Fișierele sfârșesc doar fragmentate.

Procesul de "mișcare a lucrurilor în jur pentru a crea un spațiu suficient de lung pentru a salva ceva" este numit defragmentarea. Acest lucru nu se întâmplă când fișierele sunt scrise. Acest lucru se întâmplă atunci când executați defragmentarea discului. La edițiile mai noi ale Windows, cel puțin aceasta se întâmplă automat într-un program, însă nu este declanșată niciodată prin scrierea unui fișier.

A fi capabil să evita lucrurile care se mișcă în jurul valorii de acest lucru sunt cheia performanței sistemului de fișiere și de ce se întâmplă fragmentarea și de ce defragmentarea există ca un pas separat.

"Cât spațiu gol trebuie să las liber pe un hard disk?"

Aceasta este o întrebare mai dificilă de răspuns (și acest răspuns sa transformat deja într-o carte mică).

Reguli de bază:

1. Pentru toate tipurile de unități:

  • Cel mai important, lăsați suficient spațiu liber pentru să utilizați computerul în mod eficient. Dacă vă lipsiți de spațiu pentru a lucra, veți dori o mișcare mai mare.
  • Multe instrumente de defragmentare a discului necesită o cantitate minimă de spațiu liber (cred că cel cu Windows necesită 15%, cel mai rău caz) pentru a lucra. Ei folosesc acest spațiu liber pentru a păstra temporar fișierele fragmentate, deoarece alte lucruri sunt rearanjate.
  • Lăsați spațiu pentru alte funcții ale sistemului de operare. De exemplu, dacă mașina dvs. nu are o mulțime de memorie RAM fizică și aveți activată memoria virtuală cu un fișier de pagină cu dimensiune dinamică, veți dori să lăsați suficient spațiu pentru dimensiunea maximă a fișierului paginii. Sau dacă aveți un laptop pe care îl puneți în modul de hibernare, veți avea nevoie de suficient spațiu liber pentru fișierul de stare de hibernare. Lucruri de genul acela.

2. SSD-specifice:

  • Pentru o fiabilitate optimă (și într-o măsură mai mică, performanța), SSD-urile necesită un spațiu liber, care, fără a intra în prea multe detalii, utilizează pentru a împrăștia date în jurul unității, pentru a evita scrierea constantă în același loc (care le poartă) . Acest concept de a lăsa spațiul liber se numește supra-provizionare. Este important, dar în multe SSD există deja spațiu obligatoriu supra-rezervat. Asta este, driverele au adesea câteva duzini de GB mai mult decât le raportează OS. Unitățile de tip low-end necesită de multe ori să ieșiți manual nepartiționat spațiu, dar pentru unitățile cu OP obligatoriu, nu trebuie să lăsați niciun spațiu liber. Un lucru important care trebuie menționat aici este acela spațiul supra-provizionat este adesea luat doar din spațiul nepartiționat. Deci, dacă partiția dvs. va prelua întreaga dvs. unitate și veți lăsa un spațiu liber pe ea, nu-i așa mereu numara. De multe ori, supra-provizionarea manuală vă impune să micșorați partiția dvs. pentru a fi mai mică decât dimensiunea unității. Verificați manualul de utilizare SSD pentru detalii. TRIM, colectarea deșeurilor și altele asemenea au efecte, dar acestea nu intră în sfera acestui răspuns.

Personal, eu, de obicei, apuc un drive mai mare atunci când am aproximativ 20-25% spațiu liber rămase. Acest lucru nu este legat de performanță, este doar că atunci când ajung la acest punct, mă aștept că probabil voi fi în curând spațiu pentru date în curând și este timpul pentru a obține o unitate mai mare.

Mai important decât să urmăriți spațiul liber este să vă asigurați că defragmentarea programată este activată acolo unde este cazul (nu pe SSD-uri), astfel încât să nu ajungeți niciodată în punctul în care devine destul de groaznic să vă afecteze.

Există un ultim lucru care merită menționat. Unul dintre celelalte raspunsuri mentionate aici a mentionat ca modulul semi-duplex SATA previne citirea si scrierea in acelasi timp. Deși este adevărat, acest lucru este mult prea simplificat și nu are legătură cu problemele de performanță discutate aici. Ce înseamnă, pur și simplu, că datele nu pot fi transferate în ambele direcții pe fir in acelasi timp. Cu toate acestea, SATA are o specificație destul de complexă, care implică dimensiuni mici de blocuri (aproximativ 8kB per bloc pe fir, cred), citește și scrie cozi de operare etc, și nu exclude scrierea bufferelor care se întâmplă în timp ce citirile sunt în desfășurare, intercalate operațiuni etc.

Orice blocare care se produce ar fi datorată concurenței pentru resursele fizice, de obicei atenuate de o mulțime de cache. Modul duplex al SATA este aproape în întregime irelevant aici.

(A) "Slow down" este un termen larg. Aici îl folosesc pentru a se referi la lucruri care sunt fie legate de I / O (adică dacă computerul dvs. este așezat acolo, ciocnirea numerelor, conținutul hard disk-ului nu are nici un impact) sau legate de CPU și care concurează cu lucruri legate tangențial, Utilizarea CPU (adică software anti-virus scanând tone de fișiere).

(B) SSD-urile sunt afectate de fragmentare prin faptul că vitezele de acces secvențiale sunt în general mai rapide decât accesul aleatoriu, în ciuda faptului că SSD-urile nu se confruntă cu aceleași restricții ca un dispozitiv mecanic (chiar și atunci, lipsa fragmentării nu garantează accesul secvențial datorită nivelului de uzură etc.). Cu toate acestea, în aproape orice scenariu de utilizare generală, aceasta este o problemă non-problemă. Diferențele de performanță datorate fragmentării pe SSD-uri sunt de obicei neglijabile pentru lucruri precum încărcarea aplicațiilor, pornirea calculatorului etc.

(C) Presupunând un sistem de fișiere sănătos, care nu înseamnă fragmentarea fișierelor.

Asigurați-vă că ați citit în restul discuțiilor pline de viață la SuperUser prin intermediul link-ului de mai jos!

Aveți ceva de adăugat la explicație? Sunați în comentarii. Doriți să citiți mai multe răspunsuri de la alți utilizatori de tehnologie Stack Exchange? Check out discuția completă aici.