Ответ 1
Это интересный вопрос, и я должен был погрузиться немного глубже;)
В любом случае, вот хороший пример, как определить MTU: http://erlerobotics.gitbooks.io/erle-robotics-python-gitbook-free/content/udp_and_tcp/udp_fragmentation.html
Но вы должны также подумать о следующем: MTU - это то, что является локальным явлением и, возможно, касается только части вашей локальной сети. Что вы думаете о MTU пути, минимальном MTU по всему пути транспорта. http://en.wikipedia.org/wiki/Path_MTU_Discovery Таким образом, вам нужно знать каждый MTU каждого задействованного компонента. Это может быть проблемой, например, если вы используете Jumbo Frames и переключатель нет, коммутатор должен разделить кадры. У меня уже была проблема, что коммутатор не понял jumbo-кадров и сбросил кадры.
Теперь самый интересный вопрос: оптимальный размер. Многие функции python принимают такие аргументы, как blockize или chunksize. Но они не учитывают блокировку базового транспортного протокола. Blockize определяет буфер чтения, который будет содержать данные для отправки/чтения. Стандартный размер в ftplib составляет 8K (8192 байта). Таким образом, настройка блока не должна влиять на скорость передачи.
Управление MTU базового транспортного протокола - это то, что будет обрабатываться операционной системой и ее ядром.
Наконец, некоторые слова о ftp. ftp - старый динозавр, который легко настроить и использовать, но также не всегда лучший способ передачи файлов. Особенно, если вы переносите много мелких файлов. Я не знаю точно вашего варианта использования, поэтому думать о других альтернативах протокола передачи, таких как rsync или bbcp, может иметь смысл. Позже, по-видимому, скорость копирования резко возрастает. Вы действительно должны взглянуть на http://moo.nac.uci.edu/~hjm/HOWTO_move_data.html
мои два цента...