Anslut till Senaste Tekniska Nyheter, Bloggar, Recensioner

Samsung SSD 845DC EVO/PRO Performance Preview & Utforska IOPS-konsistens

Traditionellt har Samsungs företags-SSD endast varit tillgängliga för stora server-OEM (t.ex. Dell, EMC och IBM). Med andra ord, om du inte köpte tiotusentals enheter, skulle Samsung inte sälja några till dig. Detta är en ganska vanlig strategi i branschen eftersom det minskar valideringstiden eftersom du bara behöver arbeta med en handfull partners och system, medan kanalprodukter måste valideras för en mängd olika konfigurationer och kan kräva mer eftermarknadsstöd också.

Men redan i juni gjorde Samsung en förändring i sin strategi och släppte 845DC EVO, Samsungs första företags-SSD för kanalen. 845DC EVO åtföljdes av 845DC PRO en månad senare, som riktar sig till de mer skrivintensiva arbetsbelastningarna, medan EVO är mer inriktad på blandade och läscentrerade arbetsbelastningar. Samsung skickade oss även PM853T, som är en OEM-version av 845DC EVO och vi har nu chansen att se om det är någon skillnad mellan kanal- och OEM-versionerna.

På grund av mitt hektiska reseschema under de senaste månaderna har jag bara en förhandsvisning av prestanda idag. Jag håller på att testa diskarna genom vår nya företagssvit, så en fullständig recension kommer snart, men jag har redan en tjuvtitt på vad vi kommer att göra i framtiden. Eller egentligen har jag inga nya tester att dela med mig av, utan ett nytt sätt att se på våra befintliga testdata.

Tidigare har vårt IO-konsistenstest bara tittat på den genomsnittliga IOPS i en sekunds intervall, vilket är en industristandard och ett ganska exakt sätt att beskriva prestanda. Ett genomsnitt är dock fortfarande ett genomsnitt. Moderna SSD:er kan enkelt bearbeta tiotusentals IO:er per sekund, så redan inom en sekund kan variationen i prestanda vara enorm, vilket är något som genomsnittet inte visar.

Det vi gör är att rapportera ytterligare två mätvärden som ger oss en uppfattning om vad som händer varje sekund. Dessa två är lägsta IOPS och standardavvikelse. Det förra är helt enkelt maximal svarstid översatt till IOPS och det ger oss den sämsta möjliga IOPS som enheten ger vid varje given tidpunkt. Det senare ger oss å andra sidan en inblick i prestandavariationen för varje sekund.

Förklara genomströmning, IOPS och latens

Innan vi kommer till våra nya benchmarks är det något jag vill diskutera angående lagringsbenchmarking i allmänhet som har stört mig ett tag nu. Genomströmning, IOPS och latens är de tre huvudmåtten för lagringsprestanda, men förhållandet mellan de tre är inte så väl förstått. Om du tar en titt på något av företagets SSD-specifikationer kommer du med stor sannolikhet att se alla tre mätvärdena som används, men vad många inte vet är att det inte behöver vara så. Allt skulle kunna rapporteras i megabyte eller IO per sekund, eller genom latens, och jag kommer snart att förklara hur; Samtidigt har tillverkarna valt att använda alla tre eftersom det passar dem bättre för marknadsföring. För att se sambandet mellan de tre måtten måste vi först förstå vad varje måttenhet egentligen är.

Låt oss börja med latens eftersom det i slutändan är moder till alla andra mätvärden och den enklaste att förstå. Ibland hänvisas till IO-latens som svars- eller servicetid, men i slutändan mäter alla tre termerna samma sak: tiden det tar för en IO att slutföra. I princip startar mätningen när operativsystemet skickar en begäran till enheten och slutar när enheten avslutar bearbetningen av begäran. I fallet med en läsning anses begäran vara avslutad när operativsystemet tar emot data, och med skrivningskomplettering uppnås när enheten informerar operativsystemet att den har tagit emot data. Observera att mottagning av data inte betyder att enheten har skrivit data till sitt slutliga medium – enheten kan skicka kompletteringskommandot även om data finns i en DRAM-cache (vilket är anledningen till att även hårddiskar kan ha mycket höga burst-hastigheter ).

Nu när vi förstår latens kan vi ta en titt på IOPS, som helt enkelt är en förkortning för IOs per sekund. IOPS beskriver hur många IO-operationer frekvensomriktaren kan hantera per sekund och det är direkt relaterat till latens. Till exempel, om din enhet har en konstant latens på 1ms (0,001s), kan din enhet bearbeta 1 000 IOs per sekund. Ganska enkelt, eller hur? Men saker och ting blir lite mer komplicerade när vi införlivar ködjupet i ekvationen.

Låt oss anta att det fortfarande tar 1 ms för vår enhet att bearbeta en IO, men nu finns det två IO i kön. Eftersom det fortfarande tar 1 ms att bearbeta den första IO, kan latensen för den andra IO inte vara 1 ms eftersom operativsystemet redan skickade IO-begäran för båda, men den andra begäran placerades i en kö eftersom enheten inte hade avslutat behandlingen av den tidigare IO . Om man antar att båda IO:erna skickades samtidigt, skulle latensen för den andra IO:n vara 2ms.

Ser du vad som hände där? Vi placerade två IO:er i kön (dvs. fördubblade ködjupet) och plötsligt fördubblades vår latens, men vår enhet gjorde fortfarande 1 000 IOPS. I grund och botten bad vi enheten att bearbeta fler IO:er genom att lägga till dem i kön, men i det här fallet kunde vår hypotetiska enhet bara bearbeta 1 000 IO:er per sekund. Om vi ​​lade till ännu fler IO:er i kön, skulle latensen fortsätta att öka eftersom det skulle finnas fler IO:er som väntade i kön och det skulle fortfarande ta 1 ms att bearbeta var och en av dem.

Lyckligtvis kan SSD:er dra fördel av parallellitet genom att skriva till flera dies och plan samtidigt, så i den verkliga världen skulle inte vilken anständig SSD som helst vara begränsad till 1 000 IOPS över alla ködjup, vilket innebär att latensen inte skulle skalas upp som en galning som i vårt exempel ovan.

En sak som IOPS inte tar hänsyn till är överföringsstorleken. Uppenbarligen tar det längre tid att överföra och bearbeta 128KB data än det tar att göra detsamma för 4KB data, så IOPS kan vara vilseledande. Med andra ord, 1 000 IOPS i sig säger inte dig något användbart eftersom det kan vara med en överföringsstorlek på 512 byte, vilket betyder att din enhet kanske bara klarar bara 125 IOPS med 4KB överföringsstorlek, vilket skulle vara ganska hemskt för en modernt driv.

Vi behöver genomströmning för att få in överföringsstorleken i ekvationen. Genomströmningen mäter hur många byte som överförs per sekund och vanligen mäts genomströmningen i mega- eller gigabyte per sekund givet hastigheten på dagens lagring. Matematiskt är genomströmningen helt enkelt IOPS gånger överföringsstorleken eftersom IOPS redan talar om för oss hur många IO:er som händer per sekund, så allt vi behöver är storleken på dessa IO:er för att veta hur många byte som överförs.

Att sätta ihop den hemliga marknadsföringssåsen

Vad vi just lärde oss är att alla tre specifikationerna – latens, IOPS och genomströmning – i slutändan är desamma. Du kan översätta IOPS till MB/s och MB/s till latens så länge du känner till ködjupet och överföringsstorleken. Som jag nämnde i början är anledningen till att vi “behöver” alla tre marknadsföring.

Ta 128KB sekventiell prestanda till exempel. 500MB/s låter mycket bättre än ~4 000 IOPS eftersom 4KB slumpmässig skriv-IOPS för samma SSD kan vara 90 000. Å andra sidan är 90 000 IOPS med 4KB överföringsstorlek bara ~370MB/s, så ur ett marknadsföringsperspektiv är det mycket bättre att säga att enheten gör 500MB/s 128KB sekventiell och 90 000 IOPS 4KB slumpmässigt.

Latensen är inte annorlunda. Det är bara ytterligare en siffra i bästa fall som tillverkarna vill rapportera för att få sin produkt att se bättre ut. 20µs latens låter briljant tills du läser själva databladet och inser att det ofta sker med en sekventiell överföring på 4KB på ett ködjup av ett. Det är det bästa scenariot eftersom latensen för en slumpmässig överföring på 4KB vid ködjup på 32 lätt kan vara flera millisekunder, vilket är långt ifrån den angivna 20µs latensen. Om latensen verkligen var 20µs för en slumpmässig överföring på 4KB vid ködjup på 32, då kunde enheten göra 1 600 000 IOPS!

Anledningen till att jag ville täcka detta är att hjälpa alla att förstå vad lagringsmåtten verkligen betyder och förhållandet mellan dem. Jag har tyckt att detta är ganska dåligt förstått och jag vill fixa det. Vi behöver inte nödvändigtvis alla tre mätvärdena eftersom de bara tillåter vilseledande marknadsföring (som latensexemplet ovan) och jag tror att det bästa sättet att fixa marknadsföringen är att utbilda köparna att ta marknadsföringen med en nypa salt (eller åtminstone läs det finstilta för att se om figuren överhuvudtaget är meningsfull).

Testuppsättning

CPU

Intel Core i7-4770K körs på 3,3 GHz (Turbo & EIST aktiverat, C-tillstånd inaktiverat)

Moderkort

ASUS Z87 Deluxe (BIOS 1707)

Chipset

Intel Z87

Drivrutiner för chipset

Intel 9.4.0.1026 + Intel RST 12.9

Minne

Corsair Vengeance DDR3-1866 2x8GB (9-10-9-27 2T)

Grafik

Intel HD Graphics 4600

Drivrutiner för grafik

15.33.8.64.3345

Skrivbordsupplösning

1920 x 1080

OS

Windows 7 x64