Bbabo NET

Wetenschap & Technologie Nieuws

Het blijkt dat Apple's eigen NVMe-schijven razendsnel zijn, tenzij je om gegevensintegriteit geeft.

Het feit dat de functie fsync() op MacOS anders werkt dan op Linux, is verre van nieuw. Maar veel mensen vergeten het. De auteurs van benchmarks lijden aan een bijzondere chronische vorm van waanzin. 17 februari Hector Martin (@marcan42) (Asahi Linux-ontwikkelaar) bevestigt dit nogmaals met zijn Twitter-bericht.

Wanneer een programma informatie op schijf opslaat, moet voor een programma dat bijzonder gevoelig is voor informatieverlies, gewacht worden tot de cache wordt vrijgegeven om er zeker van te zijn dat de informatie eerst als een feit wordt opgeslagen en vervolgens in de juiste volgorde. Hiervoor werd de functie fsync () geïmplementeerd in de eerste versies van Unix. Op Linux is deze functie geïmplementeerd in glibc. Volgens het oorspronkelijke ontwerp zou fsync() alleen een resultaat moeten opleveren nadat de schijfcache volledig is geleegd.

MacOS-ontwikkelaars hebben een iets andere kijk op dit proces. Nadat we de fsync- en fcntl-mana hebben doorgenomen, kunnen we conclusies trekken. Volgens Apple kan het legen van de cache te lang duren, zo lang hoef je niet te wachten. Om te voorkomen dat programma's vastlopen bij het opslaan van gegevens, kan de uitvoering van de functie fsync() worden genegeerd. Welnu, de firmware van de schijfcontroller zelf zal uitzoeken wanneer het de cache moet legen en of het überhaupt moet worden geleegd.

Voor integriteitsgevoelige gegevens is er de vlag F_FULLSYNC. En hij werkt. Maar er doet zich een ander probleem voor. In deze modus vindt het opslaan van informatie op Apple's eigen schijven, geïnstalleerd met M1-processors, plaats met een snelheid van ongeveer 6 Mb / s en kan tot 600 Kb / s verzakken. Moderne MicroSD-kaarten aangesloten via USB 2.0 zijn sneller. Hector Martin vergelijkt het werk zelf met de eerste USB 3.0-flashdrive die tegenkwam. Schrijven naar een flashdrive gaat natuurlijk sneller dan naar de ingebouwde NVMe-drive, omdat een flashdrive geen cache heeft. - met tonen van sarcasme merkt hij op.

Het negeren van fsync() verhoogt kunstmatig de schijnbare prestaties van de schijf. Maar aan de andere kant kan dit leiden tot onvolledige gegevensopslag of volledige gegevensopslag in geval van stroomuitval, onverwacht vastlopen van het besturingssysteem of opnieuw opstarten, of zelfs een eenvoudige segmentatiefout. En hier is niet het feit van informatieverlies dat belangrijk is, maar het feit dat het programma een bevestiging krijgt van het besturingssysteem dat de gegevens zijn opgeslagen.

Hector Martin voerde verschillende opslagtests uit, gevolgd door onverwachte herstart van het systeem. En zijn vrees werd bevestigd. Het bestand dat op schijf is opgeslagen, bevindt zich niet in het bestandssysteem na het opnieuw opstarten.

Een paar dagen later voerde een andere enthousiaste Russ Bishop (@xenadu02) een reeks soortgelijke tests uit met vier SSD-schijven van verschillende fabrikanten. De testmethode is vrij eenvoudig. Onmiddellijk nadat de gegevens zijn opgeslagen in een bestand met een vooraf bepaald pad, wordt de computer uitgeschakeld door de stekker uit het stopcontact te halen. Als resultaat van de tests verloren twee schijven gedeeltelijk of volledig gegevens, en twee schijven verloren geen gegevens in alle testfasen.

De exacte namen van de schijven die alle gegevens hebben opgeslagen:

Samsung 970 Evo Plus: MZ-V7S2T0, 2021.10

WD Rood: WDS100T1R0C-68BDK0, 04Sept2021

Namen van schijven die gegevens verliezen:

SK Hynix Gold P31 2TB SHGP31-2000GM-2, FW 31060C20

Sabrent Rocket 512 (Phison PH-SBT-RKT-303 controller, softwareversie niet gespecificeerd)

Een dag later werd een vergelijkbare test uitgevoerd op nog een aantal SSD's, ze slaagden allemaal voor de test en behielden alle gegevens:

Cruciale P5 Plus 1TB CT1000P5PSSD8, FW P7CR402

Kingston SNVS/250G, 012.A005

Seagate Firecuda 530 PCIe Gen 4 1TB ZP1000GM30013, FW SU6SM001

Intel 670p 1TB, SSDPEKNU010TZ, FW 002C

Cruciale P2 250GB CT250P2SSD8, FW P2CR046

Samsung 980 250GB MZ-V8V250, 2021/11/07

WD Zwart SN750 1TB WDS100T1B0E, 09Jan2022

WD Groen SN350 240GB WDS240G20C, 02Aug2021

Ik zal niet meer tijd nemen van de lezers. De lezer wordt uitgenodigd om zijn eigen conclusies te trekken. Als er vragen zijn over het theoretische gedeelte, zal ik graag proberen te antwoorden (waarop ik het antwoord weet).

Het blijkt dat Apple's eigen NVMe-schijven razendsnel zijn, tenzij je om gegevensintegriteit geeft.