2012-09-27 23 views
9

64 bit CentOS kullanarak son derece yüksek hızlı veriyi bir uygulamadan diğerine aktarmaya çalışıyorum 6. Borularımı programımda değil algoritmamda tuttuğunu keşfetmek için dd kullanarak aşağıdaki karşılaştırmaları yaptım. Amacım 1,5 GB/s civarında bir yere ulaşmaktır.Linux borularının performansını iyileştirmenin bir yolu var mı?

Birincisi, boru olmadan:

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 

Sonraki iki dd süreçler arasında bir boru:

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 

Ben kernel, performansını artıracağını başka bir şey yapabilirsiniz herhangi ince ayarlar var mı veriyi bir borudan geçiriyor musunuz? Ben de adlandırılmış borular denedim ve benzer sonuçlar elde ettik.

cevap

5

Daha küçük bloklarla denediniz mi?

Kendi iş istasyonuma girdiğimde, blok boyutunu düşürürken art arda iyileştirme yapıyorum. Testimde sadece% 10'luk bir alanda, ancak yine de bir gelişme. % 100 arıyorsun. Orijinal

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 ile

Ben

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 

çalıştı Ve: daha da test bakılırsa

, gerçekten küçük blok boyutları hile yapmak gibi görünüyor Böylece bu büyük bir faktördür.

+1

Bunun için teşekkürler! Bazı ek testler yaptım ve gerçekten sadece önemli olan yazma hızının olduğunu buldum. – KyleL

+0

IMO, soru, soru metni veya cevapla eşleşmiyor. Asıl soruyu cevaplamak istiyorum, kendim. : D –