Я использую python ftplib для передачи множества и большого количества данных (~ 100 файлов X 2 ГБ) через локальную сеть на FTP-сервер. Этот код работает на Ubuntu. Вот мой вызов (self - мой объект FtpClient, который является оберткой вокруг клиента ftplib):
# Store file.
self.ftpClient.storbinary('STOR ' + destination, fileHandle, blocksize = self.blockSize, callback = self.__UpdateFileTransferProgress)
Мой вопрос: как выбрать оптимальный размер блока? Мое понимание заключается в том, что оптимальный размер блока зависит от ряда факторов, не в последнюю очередь от скорости соединения и задержки. Мой код будет работать во многих разных сетях с разной скоростью и разным количеством перегрузок в течение дня. В идеале я хотел бы вычислить оптимальный размер блока во время выполнения.
Будет ли оптимальный размер блока передачи FTP таким же, как размер оптимального размера TCP? Если это так, и масштабирование окна TCP включено, есть ли способ получить оптимальный размер окна TCP из ядра? Как/когда ядро linux определяет оптимальный размер окна? В идеале я мог бы спросить ядро linux для оптимального размера блока, чтобы избежать повторного использования колеса.