2012-09-27 11 views
9

Próbuję przesyłać dane o wyjątkowo dużej szybkości z jednej aplikacji do drugiej przy użyciu 64-bitowego CentOS 6. Zrobiłem następujące testy porównawcze, używając dd, aby odkryć, że rury mnie powstrzymują, a nie algorytm w moim programie. Moim celem jest osiągnięcie około 1,5 GB/s.Czy istnieje sposób na zwiększenie wydajności przewodów linuxowych?

Po pierwsze, bez rur:

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 

Następny, rurę pomiędzy dwoma procesami DD:

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 

Czy istnieją jakieś szczypie mogę zrobić do jądra lub cokolwiek innego, co przyczyni się do poprawy wydajności uruchamianie danych przez potok? Próbowałem również nazwanych potoków i uzyskałem podobne wyniki.

Odpowiedz

5

Czy próbowałeś z mniejszymi blokami?

Kiedy próbuję na własnej stacji roboczej, zauważam sukcesywną poprawę przy obniżaniu rozmiaru bloku. To tylko 10% w moim teście, ale wciąż jest to poprawa. Szukasz 100%.

Jak się okazuje testowanie dalej, bardzo małe rozmiary bloku wydaje się rade:

próbowałem

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 

I z oryginalnym

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 więc jest to spory czynnik.

+1

Dzięki za zrozumienie tego! Zrobiłem kilka dodatkowych testów i odkryłem, że tak naprawdę liczy się tylko szybkość zapisu. – KyleL

+0

IMO, pytanie nie pasuje do tekstu pytania ani odpowiedzi. Chcę poznać odpowiedź na to samo pytanie. :RE –

Powiązane problemy