SSD snelheid > SATA3

Pagina: 1
Acties:

Verwijderd

jayvol09 schreef op donderdag 23 oktober 2014 @ 03:36:
Sorry voor de resurrect, maar dit is een leuk onderwerp. Ik vond wat Cipher zei heel interessant. Ik ging er altijd vanuit dat CPUs van vandaag veel meer dan 6Gbps data konden doorpompen. Dat blijkt ook uit de post van AHBdV (tenminste 2 GB/s).
Welke post bedoel je precies? Want sequential I/O gaat natuurlijk veel sneller dan random I/O omdat de CPU hierbij veel minder werk heeft. 300MB/s aan sequential I/O is peanuts voor een CPU, maar 300MB/s aan random I/O is dat zeker niet.
Ik neem aan dat een ssd benchmark programma nooit last krijgt van een te trage CPU omdat het 'simpele' dingen doet.
Bij oudere laptop CPUs met energiebesparing kun je al een CPU bottleneck krijgen enkel van de random reads; ook omdat bij Windows de storage backend single threaded is. Maar normaliter is de CPU geen bottleneck bij synthetische storage benchmarks. In de praktijk is dat natuurlijk anders omdat de data die wordt ingelezen, ook moet worden verwerkt door de applicatie. Een compressieprogramma zou bij 1MB/s datarate al de CPU kunnen verzadigen, terwijl andere applicaties minder verwerking nodig hebben en dus ook meer data kunnen verwerken.
Dus wanneer is SATA III (en up) overbodig? Boot een computer met een i5 net zo snel op met een 500MB/s SSD als met een 20GB/s SSD?
Er zal zeker wat verschil zijn, maar omdat bij booten een groot gedeelte non-contiguous I/O is, zal het niet bijster veel verschil uitmaken. Vooral bij een gebruikte installatie en dus niet een superverse installatie waar er relatief meer sequential I/O is. De zogenaamde 'trace' benchmarks die veelal gebruikt worden - ook door Tweakers.net - verhullen dit omdat ze bij een verse installatie de I/O opdrachten capturen en deze vervolgens in maximale snelheid naar de SSD sturen tijdens de benchmark. Dat is zeker synthetisch te noemen, en zal leiden tot grotere performanceverschillen tussen SSDs dan een echte praktijktest zou opleveren.

Maar booten bijvoorbeeld is zeker niet enkel beperkt door de SSD. Er kunnen drivers zijn die simpelweg 'wachten' of de boel blokkeren. Daarom dat men zegt dat bij een nieuwe SSD het booten zoveel sneller gaat. Dat is vooral omdat men vers heeft geïnstalleerd en dan is ook de bootprocedure minder rommelig qua drivers en meuk.
Welke operaties zijn dusdanig simpel dat een CPU niet een begrensing is? Booten? Bestanden kopieren/installeren? Een word document opslaan? Game opstarten?
Game starten denk ik dat je bij SATA/600 wel voordeel hebt. En kopiëren. De rest is vrijwel altijd 99%+ een CPU-bottleneck met een moderne SSD.
johnkeates schreef op donderdag 23 oktober 2014 @ 04:29:
CPU's kunnen prima heel hard data verwerken, tenminste 100Gbit/s over bijv. 100Gb Ethernet verbindingen.
Dat is natuurlijk een héél slecht voorbeeld. Om de volgende redenen:
  • Ethernet is super-geoptimaliseerd.
  • Ethernet gebruikt offloading-technieken om de CPU te ontlasten, dat is cruciaal voor 10Gbps+ ethernet
  • 1Gbps Ethernet kan al een dualcore tot de 100% krijgen; daar is in dit forum ook praktijkervaring mee in de vorm van de 1GHz Dualcore Zacate CPU (AMD Brazos) als ZFS server. Op een geheugenshare (tmpfs) via het netwerk streamen kost je daar beide cores en verzadigd de 1Gbps ethernet niet. En dat is mét offloading (TSO, RXSUM, TXSUM) .
  • Je hebt het nu enkel over een datastroom; niet verwerking van die datastroom. Bijvoorbeeld als je files wilt streamen over 100Gbps tegen 100Gbps dan heb je ook overhead van het filesystem en Samba/NFS.
Stel dat je het heel precies wil weten kan je de specs er bij pakken. Bijvoorbeeld:

http://ark.intel.com/prod...r-6M-Cache-up-to-4_00-GHz

Die kan 25.6GB/s doen (Bytes dus, niet bits). Dat is dan wel vannuit DRAM chips en niet via PCIe of een andere bus. Je kan dat met 8 vermenigvuldigen als je bits wil hebben, dan kom je op ruwweg 205Gbits/sec.
Dat kan enkel bereikt worden als de geheugenbus voortdurend belast wordt en geen enkel programma iets met de data doet. Kortom, dit is het theoretische maximum. Je kunt ook naar de L1-cache snelheden kijken in de CPU die liggen nog veel hoger. Maar dit soort informatie is vrij nutteloos als je de performance van een praktijksituatie wilt weten. Allereerst komt het vaak voor dat je dan memory copies moet doen, en knip- en plakwerk. Anderzijds moet er ook wat met de data gedaan worden, en dat is veel intensiever dan enkel data naar de RAM pompen of andersom.
Volgende item: hoe hard zou je met storage kunnen gaan? Nou, daar kunnen we ook wel e.e.a. over speculeren. Stel wat de de snelste desktop uitbreidingsbus pakken, PCIe 3.0 x16. Die kan maximaal 985MByte per lane doen, waar er dus 16 van zijn: 15760MByte/sec. Dat is ~15.4 Gigabyte per seconde als je het ruwweg berekent, incl. overhead.
Dat is enkel overhead van de PCI-express bus zelf, niet van de payload. Zie hier een schema voor efficiencies bij verschillende applicaties:

PCI-express payload efficiency
Een volgende stap die ik me kan voorstellen is dat flash wat directer aanspreekbaar wordt en dat je een wat minder harde FTL tussen je flash en je OS krijgt.
Softwaredrivers voor 'ruw' flash zitten al in BSD en volgens mij Linux. Dan doet de host dus bijna alles, zoals write remapping en dus ook de management van de mapping tables. Het is ook volgens de UNIX filosofie om een opslagapparaat niet te ingewikkeld maken maar de extra intelligentie juist in softwaremodules onder te brengen waarbij elke module een simpele taak verricht. Doordat SSDs kleine computers zijn geworden, zijn er ook zoveel problemen mee geweest in het verleden qua firmwarebugs. En nog steeds; zoals recent de Samsung EVO bug.

De rest maar niet op gereageerd maar kan me in het grootste gedeelte van je verhaal aardig vinden. :)
Pagina: 1