Всем привет!Чтобы правильно оптимизировать систему, хотелось бы понимать что и для чего делаешь. Сейчас у меня цель добиться максимальной скорости чтения больших файлов с сервера.
Если с FTP все более-менее прозрачно (файл передается по TCP, FTP сервер ждет от FTP клиента только подтверждение о приеме всего файла, подтверждения приема пакетов лежит целиком на TCP, латентность практически не влияет на скрость при достаточно большом TCP окне), то про SMB я ничего не нашел. С точки зрения API программа на клиенте запрашивает только очередной блок, в принципе, произвольного размера, обычно равного размеру внутреннего буфера программы. Асинхрнное чтение если и поддерживается SMB, то явно его большинство программ не использует (никто не просит следующий блок до того, как получил полностью предыдущий). То есть получается, что скорость чтения файла по SMB, в отличии от FTP, очень сильно зависит от латентности сети. В итоге оптимизация для FTP и SMB должна выполнятся совершенно по разному. Например, значения interrupt moderation, настройки поллинга и т.п. должны быть совершенно разными. Или я не прав?
Кто-то вообще этот вопрос анализировал? Или все действуют только по принципу научного тыка?