I/O Operations per second aktueller CPUs

muzik

Lt. Junior Grade
Registriert
März 2011
Beiträge
393
I/O Operations per second aktueller Systeme

Hallo allerseits,

ich versuche im Moment heraus zu finden, wieviele I/O Operations pro Sekunde eine CPU verarbeiten kann.
Ok die Frage macht so allgemein gestellt natürlich keinen Sinn, weil es natürlich auch davon abhängt, was das für Operations sind. Aber es wäre sehr interessant im Bereich 4k-Read/Write-Werte mal eine Größenordnung heraus zu finden für ein einigermaßen realistisches Szenario in einem Desktop-PC!

Der Hintergrund ist, dass im Moment viel über SSDs diskutiert wird und einem dort die IOPS nur so um die Ohren fliegen. Dabei kann aber keiner sagen, wieviel IOPS tatsächlich noch Sinn machen - im Moment wird einfach argumentiert: Je mehr desto besser.
Irgendwann wird aber definitiv die CPU begrenzen und was ich mich frage: Tut sie dies vielleicht jetzt schon?

Insofern wäre es sehr interessant zu untersuchen, was aktuelle CPUs in diesem Bereich überhaupt zu leisten im stande sind.
Ich habe bis jetzt nur wissenschaftliche Arbeiten dazu gefunden, die sich mit Servern beschäftigt haben und die man somit nicht direkt auf Desktop-PCs anwenden konnte. Leider weiß ich zu wenig um so eine Rechnung selbst aufstellen zu können.

Aber es gibt hier bestimmt Leute, die sich damit genauer auskennen ;)
 
Zuletzt bearbeitet:
Es ist wohl relativ schwer bei einer CPU zu sagen wieviel IOPS bezogen auf 4k-Read/Write es sind, es spielt ja beim Zugriff auf den Datenträger (SSD) nicht nur die CPU eine Rolle, sondern viele andere Komponenten auf dem Board.

Aber in meinem jugendlichen Leichtsinn :p behaupte ich jetzt mal, dass eine aktuelle CPU aktuell sicher nicht der Flaschenhals ist und es auch nicht so schnell wird.

Einfach mal ein paar Zahlen zur Info: Ein i7-975 schafft zwischen 42,56 GFLOPS (@ 2,66 GHz) und 55,36 GFLOPS (@ 3,46 GHz im Boost-Modus). Also ganz grob ~ 50.000.000.000 Gleitkommaoperationen pro Sekunde!!! Dem gegenüber sehen die 50.000 IOPS eines SF1500 fast ein wenig lächerlich aus, auch wenn man beides nicht 1:1 vergleichen kann.
Ein DDR-XDrive ca. 300.000 => http://www.ddrdrive.com/ddrdrive_press.pdf das wird offenbar auch nicht ausgebremst.

EDIT: Danke Angel ;)
 
Zuletzt bearbeitet:
Die CPU sollte im Idealfall nicht so sehr das begrenzende Element sein.
Fusion IO Karten machen > 1 Million IOPs, bei 512 byte Operationen.
Der Flaschenhals ist vermutlich eher der PCI Link, wenn alle anderen Sachen wie SATA/SAS
Controller aus dem Weg geraeumt sind, und das OS.
Das ist bislang nicht auf so hohen Durchsatz im IO System
getrimmt, im Gegensatz zum Netzwerkstack z.B.
Infiniband Karten schaffen mehrere 10 Millionen Packete die Sekunde, das heisst wenn das OS davor schnell genug ist, und der Flash Controller dahinter, dann gibt das heutiges PCI-E solche Raten schon her.

Linus hat sich bzgl Linux dazu mal geaeussert, er sieht einen mehrjaehrigen Tuningaufwand kommen, um den Blocklayer und die Filesysteme fuer die Low-Latency Geraete fit zu machen.
Bislang spielte das einfach keine Rolle wieviele Caches Misses und Context Wechsel der IO bereich des OS verursacht hat, es war eh durch die Mechanik beschraenkt.
Was im Netzwerkbereich im Rythmus von einiges Jahren von 10mbit ueber 100mbit ueber 1 Gbit zu 10Gbit optimiert wurde muss jetzt im IO Bereich nachgeholt werden - bei einer Explosionder HW Leistung > Faktor 10.
 
kenn die zahlen nicht genau im kopf, dazu müsstest die spec deiner aktuellen CPU mal anschauen.
der pentium I brauchte zb für eine integer-addition einen takt. eine division kostete 49 takte. diverse andere befehle wie wurzel etc könnten noch mehr takte kosten.
 
Raptor2063 schrieb:
Ein i7-975 schafft zwischen 42,56 GFLOPS (@ 2,66 GHz) und 55,36 GFLOPS (@ 3,46 GHz im Boost-Modus). Also ganz grob ~ 50.000.000.000 Gleitkommaoperationen pro Sekunde!!!

So isses richtig ;)
 
[GP] mino schrieb:
kenn die zahlen nicht genau im kopf, dazu müsstest die spec deiner aktuellen CPU mal anschauen.
der pentium I brauchte zb für eine integer-addition einen takt. eine division kostete 49 takte. diverse andere befehle wie wurzel etc könnten noch mehr takte kosten.

Das nutzt dir alles nix, da du nicht weisst wieviele Millonen Instruktionen das OS ausfuehrt
um Daten von Deiner Anwendung durch das Filesystem in einen Block auf der SSD zu schleusen.
Und dort und in dem SATA Controller steckt die Zeit.
 
Bei CPUs spricht man hier einfach von OPs, Operations per second.
Wenn es um Gleitkomma geht spricht man von FLOPs.

Diese haben aber noch weniger Aussagekraft über die Leistungsfähigkeit eines Prozessors als die Festplattenbenchmarks, weil verschiedene Prozessoren ganz andere Befehlssätze haben.

Weil die Befehlssätze so unterschiedlich sind, sind standardisierte Benchmarks nicht sinnvoll, und man rechnet nur noch theoretische, aber dementsprechend nichtssagende Werte aus. Diese werden gemittelt aus dem verfügbaren Befehlen samt derer Verarbeitungsdauer.

Ein Prozessor mit einem kompakten Befehlssatz mit wenig Takten erreicht dementsprechend sehr gute Werte, ein Prozessor mit umfangreichen Befehlssatz mit Befehlen, die mitunter eben sehr lange gehen, schneidet dann schlechter ab - wie schnell die in der Praxis dann sind kann man daraus aber nicht ableiten...
 
1668mib schrieb:
Bei CPUs spricht man hier einfach von OPs, Operations per second.
Wenn es um Gleitkomma geht spricht man von FLOPs.

Diese haben aber noch weniger Aussagekraft über die Leistungsfähigkeit eines Prozessors als die Festplattenbenchmarks, weil verschiedene Prozessoren ganz andere Befehlssätze haben.

Weil die Befehlssätze so unterschiedlich sind, sind standardisierte Benchmarks nicht sinnvoll, und man rechnet nur noch theoretische, aber dementsprechend nichtssagende Werte aus. Diese werden gemittelt aus dem verfügbaren Befehlen samt derer Verarbeitungsdauer.

Ein Prozessor mit einem kompakten Befehlssatz mit wenig Takten erreicht dementsprechend sehr gute Werte, ein Prozessor mit umfangreichen Befehlssatz mit Befehlen, die mitunter eben sehr lange gehen, schneidet dann schlechter ab - wie schnell die in der Praxis dann sind kann man daraus aber nicht ableiten...

Ok, das Problem kennt man ja schon lange - ich erinnere mich daran, wie AMD immer äquivalent-MHZ-Zahlen zu Intel auf die Packung schrieb...

Man muss ja nicht die OP/s der CPUs anschauen, sondern könnte ja die resultierenden IOPS, die auf einer Festplatte sinnvoll genutzt werden können untersuchen! (Es geht mir in diesem Zusammenhang wirklich nicht um die Leistung der CPU, sondern um die nutzbaren IOPS z.B. einer SSD und darum welche Rolle die CPU und andere Komponenten dabei spielen.)
Dabei spielen tatsächlich noch wesentlich mehr Faktoren eine Rolle, aber das muss man doch irgendwie mal abschätzen / austesten können?
Im Serverbereich wird das doch auch ganz genau kalkuliert und berechnet, ob der Flaschenhals die CPU oder das Plattensystem ist. Habe dazu vorhin eine Rechnung gefunden.... muss ich nochmal suchen.
Immerhin gibt es spezielle Server-CPUs und auch die reale Performance der SSDs unterscheidet sich kaum, obwohl die eine 10000 IOPS und die andere 60000 IOPS liefert. Insofern muss hier irgendwo entweder ein Flaschenhals sein, oder aber man brauchts einfach nicht. Interessant wären halt Größenordnungen.
 
@muzik: Da wäre ich gerne auf Details gespannt...
Denn dank DMA-Techniken dürfte es den Prozessor gar nicht groß interessieren, was gerade an Festplattenaktivität herrscht...

Und wenn die CPU zum Flaschenhals wird, dann merkt man das schnell an der CPU-Last... bei heutigen Prozessoren, die die meiste Zeit ihres Daseins mit langweilen beschäftigt sind halte ich das im Privatkundenbereich für eine nicht mal theoretisch interessante Frage...
 
1668mib schrieb:
@muzik: Da wäre ich gerne auf Details gespannt...
Denn dank DMA-Techniken dürfte es den Prozessor gar nicht groß interessieren, was gerade an Festplattenaktivität herrscht...

Und wenn die CPU zum Flaschenhals wird, dann merkt man das schnell an der CPU-Last... bei heutigen Prozessoren, die die meiste Zeit ihres Daseins mit langweilen beschäftigt sind halte ich das im Privatkundenbereich für eine nicht mal theoretisch interessante Frage...
Ok. Ich habe leider selbst keine SSD hier, weshalb ich das mit der CPU-Last nicht testen kann.
Hast du denn evlt. dann eine Vermutung, warum gemessene IOPS-Werte bei SSDs keinen direkt Einfluss auf reale Szenarien im PC-Bereich haben?
Das war quasi der Grund warum ich annahm, dass eventuell die CPU hier begrenzt. Deshalb die Frage und der Thread in diesem Unterforum.
Im SSD-Unterforum wird darüber heftig gestritten, aber die echten Argumente sind sehr spärlich gesäht, weil auf der einen Seite müsste theoretisch dies und jenes eintreten.... tut es aber nicht - und auf der anderen Seite ist kein Flaschenhals bekannt.
 
muzik schrieb:
Ok, das Problem kennt man ja schon lange - ich erinnere mich daran, wie AMD immer äquivalent-MHZ-Zahlen zu Intel auf die Packung schrieb...

Man muss ja nicht die OP/s der CPUs anschauen, sondern könnte ja die resultierenden IOPS, die auf einer Festplatte sinnvoll genutzt werden können untersuchen! (Es geht mir in diesem Zusammenhang wirklich nicht um die Leistung der CPU, sondern um die nutzbaren IOPS z.B. einer SSD und darum welche Rolle die CPU und andere Komponenten dabei spielen.)
Dabei spielen tatsächlich noch wesentlich mehr Faktoren eine Rolle, aber das muss man doch irgendwie mal abschätzen / austesten können?
Im Serverbereich wird das doch auch ganz genau kalkuliert und berechnet, ob der Flaschenhals die CPU oder das Plattensystem ist. Habe dazu vorhin eine Rechnung gefunden.... muss ich nochmal suchen.
Immerhin gibt es spezielle Server-CPUs und auch die reale Performance der SSDs unterscheidet sich kaum, obwohl die eine 10000 IOPS und die andere 60000 IOPS liefert. Insofern muss hier irgendwo entweder ein Flaschenhals sein, oder aber man brauchts einfach nicht. Interessant wären halt Größenordnungen.

einfach ausprobieren...

Kleine Messung:

288688 IO/s auf ein raid5 4+P random in ein 10GB file, bei 24GB ram
16637 IO/s selbes Raid, ein fsync() nach jedem 4K write, das ist also obiges, aber ohne OS Cache Einfluss
469208 IO/s in ein 10GB file in einer 12GB ramdisk (tmpfs)

gemessen auf 2x2.4 ghz 4core intel cpu, unter linux.
Also auch wenn keine Mechanischen Teile oder eine SSD mit Flash im Spiel ist geht das nicht endlos durch die Decke - weil das OS zu langsam ist.

2717482 IO/s bekomme ich allerdings, wenn ich mit 8 Prozessen gleichzeitig in 8 Files
die Random writes mache.
Das Raid dagegen mit 11253 IO/s degradiert sogar etwas unter den parallelen Zugriffen.
fast 3 millionen IOPs sind also drinne auf einer starken modernen Maschine - wobei der
IO hier nicht ueber den PCI-e geht, sondern direkt ins Memory.
Die ~10GB/s werden natuerlich fuer PCI-e knapp, aber mit PCI-E-v3 wird das naechstes Jahr auch machbar sein.
Ergänzung ()

Nachtrag:
die 3 Millionen knacke ich mit 16 Threads (HT ist an...)
und beim Lesen schaffe ich manchmal die 5 Millionen.
Denke wir warten noch eine Weile bis das eine normale Consumer SSD schafft.
Fusion-IO wie gesagt soll > 1 Millioen liegen, hatte aber so ein Ding noch nicht in den Fingern.
Aus einem File geht das lesen uebrigens mit 16 Threads auch nur mit ca. 1 Millions 4Ks die Sekunde,
also skaliert das tmpfs Filesystem nicht so wirklich gut fuer parallele Zugriffe auf ein File.
 
muzik schrieb:
Immerhin gibt es spezielle Server-CPUs

Echt? Aber die kann sich hier im Forum wahrscheinlich keiner leisten und damit sollte auch klar sein, daß ich keine normalen Xeons/Opterons meine.

muzik schrieb:
Ok. Ich habe leider selbst keine SSD hier, weshalb ich das mit der CPU-Last nicht testen kann.
Hast du denn evlt. dann eine Vermutung, warum gemessene IOPS-Werte bei SSDs keinen direkt Einfluss auf reale Szenarien im PC-Bereich haben?

Vielleicht langweilt sich die SSD bei den realen Szenarien. Immerhin kommt man ja real kaum über eine QD von 4 hinaus.

Blickt man über den PC Tellerrand gibt es Lösungen für mehrere 10k Euros, die 300-500k IOPS und rund 8GB/sec leisten. Und bei solchen Preisen muß sich sowas schon lohnen, sonst wären die Leute nicht bereit solche Preise zu zahlen.

Aber vielleicht liegt das ja auch an dem anderen OS und den speziellen Server-CPUs. ;)
 
muzik schrieb:
Immerhin gibt es spezielle Server-CPUs und auch die reale Performance der SSDs unterscheidet sich kaum, obwohl die eine 10000 IOPS und die andere 60000 IOPS liefert. Insofern muss hier irgendwo entweder ein Flaschenhals sein, oder aber man brauchts einfach nicht. Interessant wären halt Größenordnungen.

solange die SSD am SATA Controller haengt hat der einen grossen Einfluss - in der Vergangenheit waren die nicht auf hohe IOP Raten ausgelegt, weil ja nur Platten dahinter waren.
Ein Enterprise SAS Controller wird mehr hergeben als der Onboard SATA Port.
 
Also bevor hier wieder so ein Streit entsteht, wie in den SSD-Foren. Ich möchte keinen angreifen oder irgendeine These aufstellen. Ich frage, weil ich tatsächlich an Argumenten und einfach an dem Thema interessiert bin. (Das mag jetzt etwas deplaziert klingen, ist nur damit keine Missverständnisse aufkommen.)

CHAOSMAYHEMSOAP schrieb:
Vielleicht langweilt sich die SSD bei den realen Szenarien. Immerhin kommt man ja real kaum über eine QD von 4 hinaus.
Naja, das tut sie in jedem Fall - die Frage ist halt nur warum und wie stark langweilt sie sich?
Ich kaufe ja keine extra teure SSD mit bestimmten Werten (in diesem Fall zum Beispiel IOPS), damit diese sich langweilt.
Genau darauf zielen meine Fragen im prinzip auch ab. Bis zu welchen Werten kann ich davon ausgehen, dass ich das auch überhaupt nutzen kann...

CHAOSMAYHEMSOAP schrieb:
Blickt man über den PC Tellerrand gibt es Lösungen für mehrere 10k Euros, die 300-500k IOPS und rund 8GB/sec leisten. Und bei solchen Preisen muß sich sowas schon lohnen, sonst wären die Leute nicht bereit solche Preise zu zahlen.

Aber vielleicht liegt das ja auch an dem anderen OS und den speziellen Server-CPUs. ;)
Ich weiß sehr wohl, dass es Anwendungen dafür gibt zum Beispiel im Serverbereich. Ich wollte das ja extra im Bereich des PCs wissen. Ich kaufe mir ja wie du richtig sagtest auch keine ServerCPU - genauso will ich bei SSDs unterscheiden können welche IOPS-Werte noch für einen PC interessant sind und ab wann ich darauf eigentlich nicht mehr zu achten brauche. So viel erstmal zur Erklärung der Fragestellung.



@leboh: Hmm, dein Test in dem Beitrag davor ist allerdings auch mit 8 Prozessoren gemacht, oder? (und sogar mit HT) Das ist natürlich schon ziemlich heftig. Aber selbst wenn ein einzelner Quadcore nur die Hälfte davon schafft wären das immernoch massiv ausreichend IOPS für eine aktuelle SSD. Sehe ich das richtig, dass das zumindest zeigt, dass die CPU nicht der Flaschenhals ist?
leboh schrieb:
solange die SSD am SATA Controller haengt hat der einen grossen Einfluss - in der Vergangenheit waren die nicht auf hohe IOP Raten ausgelegt, weil ja nur Platten dahinter waren.
Ein Enterprise SAS Controller wird mehr hergeben als der Onboard SATA Port.
Ist das eine Vermutung, oder weiß man das? Ich meine, das wäre natürlich eine recht einleuchtende Erklärung. Aber wie stark schränkt der SATA-Controller denn ein? Reicht es um den heutigen SSD mit hohen IOPS-Werten in Benchmarks den Vorteil zu nehmen?
 
Zuletzt bearbeitet:
muzik schrieb:
Naja, das tut sie in jedem Fall - die Frage ist halt nur warum und wie stark langweilt sie sich?
Ich kann hier nur Vermutungen anstellen, aber ich würde mal auf Windows tippen. ;)

Seit Win95 hat sich natürlich einiges verändert, aber damals war z.B. BeOS deutlich flotter, weil es von Anfang an konsequent auf Multithreading ausgelegt war.
Inzwischen kann man bei Windows zwar auch mehrere CPUs beim Start ansprechen, aber man müsste das mal mit mehr als 4 od. 8 Kernen/Threads testen, um zu sehen wie gut Windows skaliert und was da limitiert.

Im Thread zu den Intel SSDs sieht man ja, daß sich die Bootzeit kaum unterscheidet bzw. die D510 leicht vorne liegt, obwohl die IOPS niedriger sind.
muzik schrieb:
Sehe ich das richtig, dass das zumindest zeigt, dass die CPU nicht der Flaschenhals ist?
Ja
muzik schrieb:
Aber wie stark schränkt der SATA-Controller denn ein?
Naja, spätestens bei einem größerem RAID wird die Anbindung limitieren, da ein guter SAS Controller mit einem PCIe2.0 8x Interface die doppelte Bandbreite bietet.
 
CHAOSMAYHEMSOAP schrieb:
Im Thread zu den Intel SSDs sieht man ja, daß sich die Bootzeit kaum unterscheidet bzw. die D510 leicht vorne liegt, obwohl die IOPS niedriger sind.
Eben. Das ist genau das, was ich versuche einigermaßen zufriedenstellend zu verstehen.
CHAOSMAYHEMSOAP schrieb:
Naja, spätestens bei einem größerem RAID wird die Anbindung limitieren, da ein guter SAS Controller mit einem PCIe2.0 8x Interface die doppelte Bandbreite bietet.
Hmm, ich meinte eigentlich eine Limitierung der IOPS, oder verstehe ich grad etwas falsch?
 
Ich hab das auf den Enterprise SAS Controller bezogen.
Der Cache auf dem Controller kann die Schreibrate steigern und das dürfte auch den IOPS zugute kommen.
 
Ok, verstehe. Aber ob SATA jetzt tatsächlich schon aktuelle SSDs limitiert? (in Bezug auf IOPS) Wäre zumindest interessant und würde einiges erklären.
Andererseites könnte es natürlich auch das Betriebssystem sein... wie kriegt man das jetzt wohl am besten raus?
 
Zurück
Oben