Co ogranicza wydajność scp?

13

Mam dwie maszyny Debian Linux podłączone przez 1 Gbit LAN. Mogę to zmierzyć za pomocą surowego transferu plików HTTP, z wgetktórym uzyskuje się około 100 MB / s w dowolnym kierunku.

Kiedy teraz używam scp, maksimum bez kompresji, które otrzymuję, wynosi około 15 MB / s . Włączenie kompresji za pomocą -Cflagi daje mi, w zależności od zawartości, do 50 MB / s .

Mimo to, istnieje wiele przepustowość zmarnowany tutaj wydaje. Długo się nie przejmowałem, aż naprawdę musiałem pomyśleć o bardzo dużych transferach plików dziennika i po prostu zdałem sobie sprawę, jak dziwnie wolno scp. Naturalnie mogę z niego korzystać scp, nawet w środowisku firmowym, ponieważ cała infrastruktura jest dla niego skonfigurowana.

Co tak bardzo ogranicza wydajność scp? Czy procesor jest związany z powodu szyfrowania? Kiedy używam htop, wydaje się, że nie wykorzystuje procesorów wielordzeniowych, tylko jeden z czterech procesorów jest maksymalnie obciążony.

Czy istnieje sposób na zwiększenie przepustowości? Mam dostępne serwery HTTP i sambę, ale do przenoszenia plików między maszynami z Linuksem zwykle używam tylko SSH, tak właśnie dorastałem. Ale teraz myślę o tym, wydaje mi się, że muszę rozważyć inne sposoby przesyłania dużych ilości danych.

HTTP jest używany tylko do określonych aplikacji w PHP / Java / cokolwiek, a samba jest używana z pewnych szczególnych powodów, dla których potrzebujemy dostępu z maszyn z systemem Windows.

znak
źródło
Odpowiedź od JooMinga była dla mnie fantastyczna, ale -Copcja kompresji sprawiła, że ​​była wolniejsza (21 MB / s zamiast 112 MB / s). Więc proszę o ostrożność -C.
matematyka

Odpowiedzi:

7

Prawdopodobnie jest to szyfrowanie. Możesz spróbować scp z różnymi szyframi, na przykład:

scp -c arcfour src dest

Sprawdź stronę podręcznika ssh_config pod kątem dostępnych szyfrów. RC4 (arcfour) to szybki szyfr, ale prawdopodobnie nie tak bezpieczny, jak niektóre alternatywy.

JooMing
źródło
Należy zauważyć, że korzystanie z RC4 nie jest bezpieczne, a komunikacja może być łatwo zerwana.
Evan Darwin
6

Część tego może mieć związek z wewnętrzną implementacją OpenSSH. Spójrz na HPN-SSH, aby znaleźć dobre wyjaśnienie jednego z powodów wąskich gardeł i łatek do OpenSSH, które mogą go rozwiązać (jeśli chcesz łatać i przebudowywać ze źródła).

James Sneeringer
źródło