Я передаю файлы между двумя серверами Linux в одной сети. Это конфигурация сети для них обоих:
сервер 1:
Настройки для eth0:
Supported ports: [ TP ] Supported link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full Supported pause frame use: No Supports auto-negotiation: Yes Advertised link modes: 1000baseT/Full Advertised pause frame use: No Advertised auto-negotiation: Yes Speed: 1000Mb/s Duplex: Full Port: Twisted Pair PHYAD: 1 Transceiver: internal Auto-negotiation: on MDI-X: on Supports Wake-on: pumbag Wake-on: g Current message level: 0x00000001 (1) drv Link detected: yes
сервер 2:
Настройки для eth0: Поддерживаемые порты: [TP]
Supported link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full Supported pause frame use: Symmetric Supports auto-negotiation: Yes Advertised link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full Advertised pause frame use: Symmetric Advertised auto-negotiation: Yes Speed: 1000Mb/s Duplex: Full Port: Twisted Pair PHYAD: 1 Transceiver: internal Auto-negotiation: on MDI-X: Unknown Supports Wake-on: pumbg Wake-on: g Current message level: 0x00000007 (7) drv probe link Link detected: yes
Оба сервера подключены к одному и тому же коммутатору, который поддерживает 1 гигабайт, с Cat5e / Cat6.
Я действительно не знаю, что могло вызвать такую скорость. Я читал, что, может быть, конфигурация «автосогласования» может это сделать? Могу я тогда как-нибудь проверить, какая скорость согласована?
Чтобы добавить к ответу iwaseatenbyagrue, здесь, вероятно, происходит несколько вещей, и важно следить за тем, что вы тестируете.
Во-первых, первый запуск rsync
включает накладные расходы на запись в месте назначения. Когда копируется небольшое количество больших файлов, это довольно дешево, если у вас есть полуприличные диски, хотя это может сделать работу медленнее, чем предлагает ваша сеть. Когда копируется большое количество небольших файлов, это может быть чрезвычайно дорого: каждый раз, когда файл помещается на диск, необходимо обновлять inodes, обновлять файл каталога и т. д., и это приводит к задержке. Время, необходимое для этих операций FS, съедает время, которое можно было бы использовать для копирования большего количества содержимого файла, поэтому ваша кажущаяся пропускная способность падает как камень.
Во-вторых, -h
бизнес. Когда вы убиваете rsync на полпути, а затем повторно запускаете его, rsync
снова запускается с нуля, но поскольку rsync разумно относится к контенту, который уже существует на стороне назначения, и не копирует его повторно, очевидная пропускная способность будет намного лучше, по крайней мере, до тех пор, пока она не пройдет точку, на которой остановилась в первый раз. Таким образом, первый и второй запуск rsync без каких-либо других изменений вероятно, будет значительно отличаться по производительности. Убедитесь, что вы сравниваете яблоки с яблоками, прежде чем беспокоиться о том, что второе яблоко забавного цвета, то есть оранжевого.
Вы также можете обнаружить, что если ваш корпус копируемых файлов представляет собой смесь маленьких и больших файлов, производительность вашего rsync зависит от того, насколько далеко он находится в корпусе; см. выше.
Итог: если вы хотите протестировать свою сеть, тестируйте только свою сеть, не объединяйте другие проблемы, выбирая тест, который также проверяет ваши файловые системы, базовые устройства хранения и т. д. netcat
- очень хороший инструмент для удаления как можно большего количества постороннего материала из сетевого теста, поскольку вы можете передавать ему несжимаемые данные из /dev/urandom
с одного конца и протолкнуть его по сети с минимальными затратами на инструменты (без сжатия, шифрования и т. д.).
Не совсем ответ, но вы можете захотеть проверить только пропускную способность вашей сети, а не использовать пропускную способность сети + диска (+ возможно, другие факторы, такие как накладные расходы на шифрование при использовании rsync через SSH, накладные расходы на сжатие при использовании сжатия и т. Д.).
iperf - хороший инструмент для этого и должен позволить вам проверить, как работает ваша сеть, а не как работает ваша сквозная пропускная способность.
Я подозреваю, что в вашем случае (в основном на основе различий, которые вы упоминаете между запусками rsync), пропускная способность вашей сети в конечном итоге будет примерно такой, какой она должна быть, что будет иметь тенденцию указывать на то, что сеть не является вашим узким местом - но это чистое предположение .