저는 파이썬의 ftplib을 사용하여 로컬 네트워크를 통해 FTP 서버에 많은 양의 데이터 (~ 100 파일 X 2GB)를 전송하고 있습니다. 이 코드는 Ubuntu에서 실행됩니다.Python ftplib 최적의 블록 크기?
# Store file.
self.ftpClient.storbinary('STOR ' + destination, fileHandle, blocksize = self.blockSize, callback = self.__UpdateFileTransferProgress)
내 문제는 내가 최적의 블록 크기를 선택합니까 방법 : 여기 내 전화는 (자기 FTPLIB 클라이언트의 래퍼 내 FtpClient 객체이다)? 내 생각에 최적의 블록 크기는 여러 가지에 달려 있으며, 그 중 가장 적은 것은 연결 속도와 대기 시간입니다. 내 코드는 하루 종일 다양한 속도와 다양한 양의 혼잡으로 다양한 네트워크에서 실행됩니다. 이상적으로, 나는 런타임에 최적의 블록 크기를 계산하고 싶다.
최적의 FTP 전송 블록 크기가 최적의 TCP 창 크기와 같을까요? 이것이 사실이고 TCP 창 크기 조정이 켜져 있으면 커널에서 최적의 TCP 창 크기를 얻을 수있는 방법이 있습니까? 리눅스 커널은 언제/어떻게 최적의 윈도우 크기를 결정합니까? 이상적으로는 리눅스 커널에 최적의 블록 크기를 물어볼 수 있으므로 바퀴를 다시 만들지 않아야합니다. http://erlerobotics.gitbooks.io/erle-robotics-python-gitbook-free/content/udp_and_tcp/udp_fragmentation.html
그러나, 당신은 또한에 대해 생각해야합니다;
을 http://moo.nac.uci.edu/~hjm/HOWTO_move_data.html
내 두 센트를 살펴해야 : //en.wikipedia.org/wiki/Nagle%27s_algorithm). 'TCP_CORK' 옵션을 설정할 수도 있습니다. – Phillip
여기에 어떤 종류의 동시성을 기대합니까? 이것은 단일 스레드 응용 프로그램을위한 것입니까? 멀티 플렉스 된 비동기 I/O를 활용할 수 있습니까? –