2Sep

Waarom versnelt het leegmaken van de schijfruimte computers?

Wanneer u meer leert over computers en hoe ze werken, zult u af en toe iets tegenkomen dat niet lijkt te kloppen. Met dat in gedachten, versnelt het leegmaken van de schijfruimte de computers werkelijk? De SuperUser Q & A-post van vandaag heeft het antwoord op de vraag van een verbaasde lezer.

De vraag van vandaag &Antwoord sessie komt naar ons met dank aan SuperUser-een onderverdeling van Stack Exchange, een community-gestuurde groepering van Q & A-websites.

Screenshot met dank aan nchenga( Flickr).

De vraag

SuperUser-lezer Remi.b wil weten waarom het legen van schijfruimte een computer lijkt te bespoedigen:

Ik heb veel video's bekeken en begrijp nu hoe computers een beetje beter werken. Ik begrijp wat RAM is, over vluchtig en niet-vluchtig geheugen en het proces van swappen. Ik begrijp ook waarom het vergroten van het RAM-geheugen een computer sneller maakt.

Wat ik niet begrijp, is waarom het opruimen van schijfruimte een computer sneller lijkt te maken. Is het echt een computer sneller? Zo ja, waarom doet het dat?

Heeft het iets te maken met het zoeken naar geheugenruimte om dingen te bewaren of met het verplaatsen van dingen om een ​​voldoende lange ononderbroken ruimte te maken om iets te redden? Hoeveel lege ruimte moet ik vrijlaten op een harde schijf?

Waarom lijkt het legen van schijfruimte een computer sneller te maken?

Het antwoord

SuperUser-bijdrager Jason C heeft het antwoord voor ons:

"Waarom versnelt het leegmaken van schijfruimte computers?"

Dat doet het niet, althans niet op zichzelf. Dit is een heel gewone mythe. De reden dat het een veel voorkomende mythe is, is omdat het vullen van je harde schijf vaak gebeurt op hetzelfde moment als andere dingen die traditioneel je computer ( A) zouden kunnen vertragen. SSD-prestaties worden doorgaans slechter naarmate ze worden gevuld, maar dit is een relatief nieuw probleem, uniek voor SSD's, en is niet echt merkbaar voor incidentele gebruikers. Over het algemeen is weinig vrije schijfruimte slechts een rode haring.

Bijvoorbeeld dingen als:

1. Bestandsfragmentatie. Bestandsfragmentatie is een probleem ( B) , maar gebrek aan vrije ruimte, hoewel zeker een van de vele bijdragende factoren, is niet de enige oorzaak. Enkele belangrijke punten hier:

  • De kans dat een bestand wordt gefragmenteerd, is niet met betrekking tot de hoeveelheid vrije ruimte die nog op de schijf is. Ze zijn gerelateerd aan de grootte van het grootste aaneengesloten blok vrije ruimte op de schijf( d.w.z. "gaten" van vrije ruimte), waarvan de hoeveelheid vrije ruimte toevallig een bovengrens op legt. Ze hebben ook te maken met hoe het bestandssysteem bestandstoewijzing afhandelt( meer onder ). Beschouw: Een schijf die voor 95 procent gevuld is met alle vrije ruimte in een enkel aangrenzend blok, heeft nul procent kans op fragmentatie van een nieuw bestand ( C) ( en de kans op fragmentering van een bijgevoegd bestand is onafhankelijk van de vrije ruimte).Een schijf die voor vijf procent gevuld is maar met gegevens die gelijk over de schijf worden verdeeld, heeft een zeer hoge kans op fragmentatie.
  • Houd er rekening mee dat bestandsfragmentatie alleen invloed heeft op de prestaties wanneer toegang heeft tot de gefragmenteerde bestanden. Beschouw: Je hebt een mooie, gedefragmenteerde schijf die nog steeds veel gratis "gaten" bevat. Een veelvoorkomend scenario. Alles loopt soepel. Uiteindelijk kom je op een punt dat er geen grote blokken vrije ruimte meer overblijven. Je downloadt een enorme film, het bestand wordt uiteindelijk erg gefragmenteerd. Dit zal uw computer niet vertragen. Al uw applicatiebestanden en dergelijke die eerder goed waren, zullen niet plotseling gefragmenteerd raken. Hierdoor kan het laden van de film langer duren( hoewel de standaard filmbit snelheden zo laag zijn in vergelijking met de lees snelheden van de harde schijf dat deze waarschijnlijk niet opgemerkt worden), en het kan de I / O-gebonden prestaties beïnvloeden terwijl de film wordt geladen, maarbehalve dat, verandert er niets.
  • Hoewel bestandsfragmentatie zeker een probleem is, worden de effecten vaak beperkt door buffering van besturingssystemen en hardwarenniveaus en caching. Vertraagde schrijft, read-ahead, strategieën zoals de prefetcher in Windows, enz., Allemaal helpen de effecten van fragmentatie te verminderen. Over het algemeen ervaart , in feite , geen significante impact totdat de fragmentatie ernstig wordt( ik zou zelfs durven zeggen dat zolang uw wisselbestand niet gefragmenteerd is, u dit waarschijnlijk nooit zult opmerken).

2. Zoekindexering is een ander voorbeeld. Stel dat u automatische indexering hebt ingeschakeld en een besturingssysteem dat dit niet sierlijk verwerkt. Naarmate u meer en meer indexeerbare inhoud opslaat op uw computer( documenten en dergelijke), kan indexering langer en langer duren en mogelijk invloed hebben op de waargenomen snelheid van uw computer terwijl deze wordt uitgevoerd, zowel in I / O- als CPU-gebruik..Dit is niet gerelateerd aan vrije ruimte, het is gerelateerd aan de hoeveelheid indexeerbare inhoud die je hebt. Het tekort aan vrije ruimte gaat echter hand in hand met het opslaan van meer inhoud, daarom wordt een valse verbinding getrokken.

3. Antivirussoftware( vergelijkbaar met het zoekindexeringsvoorbeeld).Stel dat u antivirussoftware hebt ingesteld om achtergrondscans van uw schijf te maken. Omdat je steeds meer scanbare inhoud hebt, kost het zoeken meer I / O- en CPU-bronnen, wat je werk mogelijk verstoort. Nogmaals, dit is gerelateerd aan de hoeveelheid scanbare inhoud die je hebt. Meer inhoud komt vaak overeen met minder vrije ruimte, maar het gebrek aan vrije ruimte is niet de oorzaak.

4. Geïnstalleerde software. Stel dat er veel software is geïnstalleerd die wordt geladen wanneer uw computer opstart, waardoor de opstarttijd wordt vertraagd. Deze vertraging treedt op omdat er veel software wordt geladen. Geïnstalleerde software neemt echter ruimte op de harde schijf in beslag. Daarom neemt de vrije schijfruimte op de harde schijf af op hetzelfde moment dat dit gebeurt, en opnieuw kan er een valse verbinding worden gemaakt.

5. Vele andere voorbeelden in deze zin die lijken wanneer ze samen worden weergegeven om gebrek aan vrije ruimte en lagere prestaties nauw met elkaar te associëren.

Het bovenstaande illustreert nog een andere reden dat dit zo'n algemene mythe is: hoewel het gebrek aan vrije ruimte geen directe oorzaak is van vertraging, het verwijderen van verschillende applicaties, het verwijderen van geïndexeerde of gescande inhoud, enz. Soms( maar niet altijd; buiten het bereikvan dit antwoord) verhoogt de prestaties opnieuw om redenen die niets te maken hebben met de resterende hoeveelheid vrije ruimte. Maar hierdoor wordt ook de ruimte op de harde schijf vrijgemaakt. Daarom kan opnieuw een schijnbare( maar valse) verbinding tussen "meer vrije ruimte" en een "snellere computer" worden gemaakt.

Overweeg: Als je een machine langzaam laat draaien door veel geïnstalleerde software, enz., Kloont je harde schijf( precies) naar een grotere harde schijf, en breid je partities uit om meer vrije ruimte te krijgen, zal de machine niet magisch snelheid makenup. Dezelfde software wordt geladen, dezelfde bestanden zijn nog steeds op dezelfde manier gefragmenteerd, dezelfde zoekindexatie draait nog steeds, niets verandert ondanks dat er meer vrije ruimte is.

"Heeft het iets te maken met het zoeken naar geheugenruimte om dingen op te slaan?"

Nee. Dat doet het niet. Er zijn twee zeer belangrijke dingen die de moeite waard zijn om hier te vermelden:

1. Uw harde schijf zoekt niet rond om plaatsen te vinden om dingen te plaatsen. Uw harde schijf is stom. Het is niets. Het is een groot blok van geadresseerde opslag die blindelings dingen plaatst waar je OS het vertelt en leest wat er van wordt gevraagd. Moderne schijven beschikken over geavanceerde caching- en buffermechanismen die zijn ontworpen om te voorspellen waar het besturingssysteem naar zal vragen op basis van de ervaring die we in de loop van de tijd hebben opgedaan( sommige stations zijn zich zelfs bewust van het bestandssysteem dat erop staat), maar denk vooral aan uwRijden als gewoon een grote domme baksteen van opslag met af en toe bonusprestaties.

2. Uw besturingssysteem zoekt ook niet naar plaatsen om dingen te plaatsen. Er is geen zoeken. Er is veel energie gestoken in het oplossen van dit probleem, omdat het van cruciaal belang is om de systeemprestaties te registreren. De manier waarop gegevens daadwerkelijk op uw schijf worden georganiseerd, wordt bepaald door uw bestandssysteem. Bijvoorbeeld FAT32( oude DOS- en Windows-pc's), NTFS( latere edities van Windows), HFS +( Mac), ext4( sommige Linux-systemen) en vele anderen. Zelfs het concept van een "bestand" en een "map" zijn slechts producten van typische bestandssystemen - harde schijven weten niets over de mysterieuze beesten die -bestanden worden genoemd. Details vallen buiten het bestek van dit antwoord. Maar in wezen hebben alle gangbare bestandssystemen manieren om bij te houden waar de beschikbare ruimte zich op een station bevindt, zodat een zoektocht naar vrije ruimte, onder normale omstandigheden( dat wil zeggen bestandssystemen in goede gezondheid), onnodig is. Voorbeelden:

  • NTFS heeft een hoofdbestandstabel, die de speciale bestanden $ Bitmap , enz. Bevat, en veel metagegevens die de schijf beschrijven. In wezen houdt het bij waar de volgende vrije blokken zijn, zodat nieuwe bestanden direct naar vrije blokken kunnen worden geschreven zonder de schijf steeds opnieuw te moeten scannen.
  • Nog een voorbeeld: Ext4 heeft de zogenaamde bitmap allocator, een verbetering ten opzichte van ext2 en ext3, die het in principe helpt om direct te bepalen waar vrije blokken zijn in plaats van de lijst met vrije blokken te scannen. Ext4 ondersteunt ook vertraagde toewijzing , dat wil zeggen buffering van gegevens in RAM door het besturingssysteem voordat het naar de schijf wordt geschreven om betere beslissingen te nemen over waar het moet worden geplaatst om fragmentatie te verminderen.
  • Nog vele andere voorbeelden.

"Of met het verplaatsen van dingen om een ​​voldoende lange doorlopende ruimte te maken om iets te redden?"

Nee. Dit gebeurt niet, althans niet met een bestandssysteem dat ik ken. Bestanden eindigen gewoon gefragmenteerd.

Het proces van "dingen verplaatsen om een ​​voldoende lange aaneengesloten ruimte te maken voor het opslaan van iets" wordt genoemd en wordt gedefragmenteerd. Dit gebeurt niet wanneer bestanden worden geschreven. Dit gebeurt wanneer u uw schijfdefragmentatie uitvoert. Op nieuwere edities van Windows gebeurt dit tenminste automatisch volgens een schema, maar het wordt nooit geactiveerd door een bestand te schrijven.

kunnen vermijden om dingen op deze manier te verplaatsen, is de sleutel tot bestandssysteemprestaties, en waarom fragmentatie optreedt en waarom defragmentatie als een afzonderlijke stap bestaat.

"Hoeveel lege ruimte moet ik vrij achterlaten op een harde schijf?"

Dit is een moeilijkere vraag om te beantwoorden( en dit antwoord is al veranderd in een klein boekje).

Vuistregels:

1. Voor alle soorten schijven:

  • Laat vooral voldoende vrije ruimte over voor om uw computer effectief te laten gebruiken. Als u onvoldoende ruimte hebt om te werken, wilt u een grotere schijf.
  • Veel hulpprogramma's voor het defragmenteren van schijven vereisen een minimale hoeveelheid vrije ruimte( ik denk dat die met Windows 15 procent, het slechtste geval vereist) om in te werken. Ze gebruiken deze vrije ruimte om gefragmenteerde bestanden tijdelijk te houden terwijl andere dingen opnieuw worden gerangschikt.
  • Laat ruimte over voor andere OS-functies. Als uw machine bijvoorbeeld niet veel fysiek RAM-geheugen heeft en virtueel geheugen is ingeschakeld met een paginabestand van dynamische grootte, wilt u voldoende ruimte vrijlaten voor de maximale grootte van het paginabestand. Of als u een laptop hebt die u in de sluimerstand zet, hebt u voldoende vrije ruimte nodig voor het slaapstandbestand. Dat soort dingen.

2. SSD-specifiek:

  • Voor optimale betrouwbaarheid( en in mindere mate voor prestaties) vereisen SSD's enige vrije ruimte, die, zonder in te gaan op te veel details, wordt gebruikt voor het verspreiden van gegevens rond de schijf om te voorkomen dat er voortdurend wordt geschreven naardezelfde plaats( die ze verslijt).Dit concept van het laten van vrije ruimte wordt over-provisioning genoemd. Het is belangrijk, maar in veel SSD's bestaat al een verplichte overbevoorradingsruimte .Dat wil zeggen, de schijven hebben vaak een paar dozijn meer GB dan ze rapporteren aan het besturingssysteem. Voor Lower-end-schijven moet u vaak niet-gepartitioneerde -ruimte handmatig achterlaten, maar voor stations met verplichte OP, hoeft u geen vrije ruimte te hebben. Een belangrijk ding om op te merken is dat over-provisioned ruimte vaak alleen uit niet-gepartitioneerde ruimte wordt gehaald. Dus als je partitie je hele schijf in beslag neemt en je wat vrije ruimte overlaat, telt dat niet altijd .Vaak vereist handmatige overprovisioning dat u uw partitie verkleint om kleiner te zijn dan het formaat van de schijf. Raadpleeg de gebruikershandleiding van uw SSD voor meer informatie. TRIM, garbage collection, en dergelijke hebben ook effecten, maar die vallen buiten de reikwijdte van dit antwoord.

Persoonlijk pak ik meestal een grotere schijf als ik nog ongeveer 20-25 procent vrije ruimte over heb. Dit is niet gerelateerd aan prestaties, het is alleen dat wanneer ik op dat punt kom, ik verwacht dat ik waarschijnlijk binnenkort te weinig ruimte voor gegevens zal hebben en het tijd is om een ​​grotere schijf te krijgen.

Belangrijker dan het kijken naar vrije ruimte is ervoor zorgen dat geplande defragmentatie is ingeschakeld waar van toepassing( niet op SSD's), zodat u nooit op het punt komt dat het dringend genoeg wordt om u te beïnvloeden.

Er is nog een laatste ding dat het vermelden waard is. Een van de andere antwoorden hier vermeldde dat de half-duplexmodus van SATA het lezen en schrijven op hetzelfde moment verhindert. Hoewel het waar is, is dit enorm versimpeld en heeft het meestal niets te maken met de prestatieproblemen die hier worden besproken. Wat dit eenvoudig betekent, is dat gegevens niet gelijktijdig in beide richtingen op de draad kunnen worden overgedragen. SATA heeft echter een vrij complexe specificatie met kleine maximale blokgroottes( ongeveer 8 kB per blok op de draad, denk ik), lees- en schrijfbewerkingswachtrijen, enz., En sluit niet uit dat schrijfbewerkingen naar buffers plaatsvinden tijdens het lezen, interleavedoperaties, enz.

Elke blokkering die optreedt, zou te wijten zijn aan het concurreren om fysieke bronnen, meestal beperkt door veel cache. De duplexmodus van SATA is hier bijna helemaal niet relevant.

( A) "Vertragen" is een brede term. Hier gebruik ik het om te verwijzen naar dingen die ofwel I / O-gebonden zijn( dat wil zeggen dat als je computer daar zit te kraken, de inhoud van de harde schijf geen impact heeft) of CPU-gebonden is en concurreert met tangentieel gerelateerde dingen die een hoge waarde hebbenCPU-gebruik( dat wil zeggen, antivirussoftware die tonnen bestanden kan scannen).

( B) SSD's worden beïnvloed door fragmentatie doordat sequentiële toegangssnelheden over het algemeen sneller zijn dan random access, ondanks dat SSD's niet dezelfde beperkingen hebben als een mechanisch apparaat( zelfs dan garandeert fragmentatie geen sequentiële toegang vanwege slijtage-egalisatie,enz.).In vrijwel elk scenario voor algemeen gebruik is dit echter een probleem. Prestatieverschillen als gevolg van fragmentatie op SSD's zijn meestal verwaarloosbaar voor zaken als het laden van toepassingen, het opstarten van de computer, enz.

( C) Uitgaande van een gezond bestandssysteem dat bestanden niet doelgericht fragmenteert.

Lees de rest van de levendige discussie op SuperUser via de onderstaande link!

Heeft u iets toe te voegen aan de uitleg? Geluid uit in de reacties. Wilt u meer antwoorden van andere technisch onderlegde Stack Exchange-gebruikers lezen? Bekijk de volledige discussiethread hier.