scp
遅いアップロード接続(〜100 kb / s)を使用してファイルをアップロードしようとするたびに、次の内容が表示されます。
test 27% 2208KB 2.2MB/s 00:02 ETA
最初の瞬間に私は始めました。
明らかに2208 KBを送信せず、確かに2.2 MB / sで転送しません。数秒後に正しい速度で遅くなりますが、前の位置に戻りません。代わりに、転送が完了すると、転送が完了するまで数秒(または数分)停止します。 。本物完全な。
私はすべてのLinuxでscpを使用するたびに転送速度が1MB / s未満であることを発見しました。
SCPはどうなりましたか?
答え1
scp
データが通過する速度測定それ。
デフォルトでは、scp
ディスクからいくつかのデータを読み込みますssh
。その後、ssh
暗号化されカーネルに渡され、ネットワーク経由で送信されます。このバッファはかなり大きくてもよい。
すべてのバッファリングはアプリケーションにかなり透過的です。write
パイプやソケットを呼び出すだけです。カーネルはデータを受け入れ、そのデータがバッファにあるのか、実際にリモート側で送信され承認されたのかをアプリケーションに示しません。アプリケーションが尋ねる方法があります。しかし、同じことが実際にソケットを使って行われるので、scp
そうするのは難しいです。ssh
これにより、すべてのバッファ(主にTCP転送バッファ)の初期塗りつぶしが非常に速く発生し、scpがそれを転送速度で表示することがわかります。最後に、scp
ファイルの読み取りが完了し、ssh
パイプに送信された後にSSHが完了するのを待ちます。転送完了をssh
確認し、カーネルがTCPバッファフラッシュを完了するのを待ちます。scp
これが最後の一時停止です。
私の考えでは、「無視」を除く唯一の2つの解決策は、より高速なリンクを取得するか、TCP転送バッファサイズを減らすことです。