2012-09-27 9 views
9

Ich versuche, extrem hohe Geschwindigkeit Daten von einer Anwendung zur anderen mit 64-Bit CentOS 6. Ich habe die folgenden Benchmarks mit dd getan, um zu entdecken, dass die Rohre mich zurückhalten und nicht den Algorithmus in meinem Programm. Mein Ziel ist es, irgendwo rund 1,5 GB/s zu erreichen.Gibt es eine Möglichkeit, die Leistung von Linux-Pipes zu verbessern?

Zunächst ohne Rohre:

dd if=/dev/zero of=/dev/null bs=8M count=1000 
1000+0 records in 
1000+0 records out 
8388608000 bytes (8.4 GB) copied, 0.41925 s, 20.0 GB/s 

Als nächstes wird ein Rohr zwischen zwei dd Prozesse:

dd if=/dev/zero bs=8M count=1000 | dd of=/dev/null bs=8M 
1000+0 records in 
1000+0 records out 
8388608000 bytes (8.4 GB) copied, 9.39205 s, 893 MB/s 

es irgendwelche Tweaks ich an den Kernel oder so etwas machen kann anderes, dass die Leistung von verbessern Daten durch eine Pipe laufen lassen? Ich habe auch Named Pipes ausprobiert und ähnliche Ergebnisse erhalten.

Antwort

5

Haben Sie es mit kleineren Blöcken versucht?

Wenn ich meine eigene Workstation anwende, bemerke ich eine sukzessive Verbesserung, wenn die Blockgröße verringert wird. Es ist nur in dem Bereich von 10% in meinem Test, aber immer noch eine Verbesserung. Sie suchen 100%.

Wie es weitere Tests stellt sich heraus, wirklich kleine Blockgrößen scheinen den Trick zu tun:

Ich versuchte

dd if=/dev/zero bs=32k count=256000 | dd of=/dev/null bs=32k 
256000+0 records in 
256000+0 records out 
256000+0 records in 
256000+0 records out 
8388608000 bytes (8.4 GB) copied8388608000 bytes (8.4 GB) copied, 1.67965 s, 5.0 GB/s 
, 1.68052 s, 5.0 GB/s 

Und mit Ihrem ursprünglichen

dd if=/dev/zero bs=8M count=1000 | dd of=/dev/null bs=8M 
1000+0 records in 
1000+0 records out 
1000+0 records in 
1000+0 records out 
8388608000 bytes (8.4 GB) copied8388608000 bytes (8.4 GB) copied, 6.25782 s, 1.3 GB/s 
, 6.25203 s, 1.3 GB/s 

5,0/1,3 = 3,8 Das ist ein beträchtlicher Faktor.

+1

Vielen Dank für das herauszufinden! Ich habe einige zusätzliche Nachfolgetests durchgeführt und festgestellt, dass es nur auf die Schreibgeschwindigkeit ankommt. – KyleL

+0

IMO, die Frage stimmt nicht mit dem Fragetext oder der Antwort überein. Ich möchte die Antwort auf die eigentliche Frage selbst lernen. : D –