Gibt es eine Möglichkeit, die Performance von Linux-Pipes zu verbessern?

9

Ich versuche, extrem schnelle Daten von einer Anwendung zur nächsten zu übertragen, indem ich CentOS 6 verwende. Ich habe die folgenden Benchmarks mit dd durchgeführt, um festzustellen, dass die Pipes mich zurückhalten und nicht den Algorithmus in meinem Programm. Mein Ziel ist es, irgendwo rund 1,5 GB / s zu erreichen.

Erstens, ohne Pfeifen:

%Vor%

Als nächstes eine Pipe zwischen zwei dd-Prozessen:

%Vor%

Gibt es irgendwelche Optimierungen, die ich am Kernel vornehmen kann, oder irgendetwas anderes, das die Leistung beim Ausführen von Daten durch eine Pipe verbessert? Ich habe auch Named Pipes ausprobiert und ähnliche Ergebnisse erhalten.

    
KyleL 27.09.2012, 16:45
quelle

1 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 nach 100%.

Wie sich herausstellen sollte, scheinen wirklich kleine Blockgrößen den Trick zu erfüllen:

Ich habe es versucht

%Vor%

Und mit deinem Original

%Vor%

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

    
opaque 27.09.2012, 19:58
quelle