Tôi đang sử dụng ftplib của python để chuyển rất nhiều và nhiều dữ liệu (~ 100 tệp X 2GB) trên mạng cục bộ sang máy chủ FTP. Mã này đang chạy trên Ubuntu. Đây là cuộc gọi của tôi (tự là đối tượng FtpClient của tôi, là một gói bao quanh khách hàng ftplib):Python ftplib Kích thước khối tối ưu?
# Store file.
self.ftpClient.storbinary('STOR ' + destination, fileHandle, blocksize = self.blockSize, callback = self.__UpdateFileTransferProgress)
Câu hỏi của tôi là, làm cách nào để chọn kích thước khối tối ưu? Sự hiểu biết của tôi là kích thước khối tối ưu phụ thuộc vào một số thứ, không ít nhất là tốc độ kết nối và độ trễ. Mã của tôi sẽ chạy trên nhiều mạng khác nhau với tốc độ khác nhau và lượng tắc nghẽn khác nhau trong ngày. Lý tưởng nhất, tôi muốn tính toán kích thước khối tối ưu trong thời gian chạy.
Kích thước khối truyền tối ưu FTP có giống với kích thước cửa sổ TCP tối ưu không? Nếu điều này là đúng, và quy mô cửa sổ TCP được bật, có cách nào để có được kích thước cửa sổ TCP tối ưu từ hạt nhân không? Hạt nhân Linux xác định/tối ưu khi nào xác định kích thước cửa sổ tối ưu? Lý tưởng nhất là tôi có thể hỏi hạt nhân Linux cho kích thước khối tối ưu, để tránh tái phát minh bánh xe.
Chừng mạng I/O là chậm hơn so với đĩa i/o, [kernel nên chăm sóc điều đó cho bạn] (http : //en.wikipedia.org/wiki/Nagle%27s_algorithm). Bạn cũng có thể xem xét để đặt tùy chọn 'TCP_CORK'. – Phillip
Bạn đang mong đợi hoặc sử dụng loại đồng thời nào ở đây? Đây có phải là ứng dụng đơn luồng không? Bạn có thể hưởng lợi từ I/O không đồng bộ ghép kênh không? –