Структура моей локальной сети:
Клиент загружает файл размером 310 МБ, который занимает 42,1 с, то есть 7,36 МБ / с. Результат профилирования (стек linux маршрутизатора NAS имеет построенный oprofile) во время передачи показывает, что примерно 37% процессорного времени находится в функции default_idle. Я хочу понять, почему так много default_idle.
Вот как я это сделал:
Скопировал файл с USB на ramfs роутера. Скорость загрузки достигает 15 МБ / с.
Я создаю iperf в маршрутизаторе NAS и на ПК, чтобы проверить максимальную скорость передачи сети. Результаты iperf показывают, что максимальная скорость составляет около 11,4 МБ / с в обоих направлениях.
Что ж, теперь кажется, что ограничение в 7,36 МБ / с вызвано набором самбы. Чтобы найти место, где причина этого ограничения, возможно, поможет объяснить высокую часть функции default_idle.
Но я не знаю, как продолжить. Пожалуйста, дайте несколько советов и предложений.
Спасибо
анекдотично, но мой друг работал с беспроводной доставкой HD-видео и обнаружил значительное увеличение пропускной способности при переключении на NFS с Samba .. он сказал, что в 2-3 раза быстрее. Я полагаю, это согласуется с тем, что утверждал адаптер
SMB имеет значительные накладные расходы протокола; К сожалению, это нельзя «исправить».
Поскольку вы, очевидно, работаете на 100 Мбит, «теоретический» практический предел iperf в 11,4 МБ / с никогда не будет достигнут ни одной полезной нагрузкой; Я говорю «теоретический», потому что iperf предполагает идеальные условия и не принимает во внимание какие-либо сбои окон, ошибки или повторные передачи; он измеряет чисто низкоуровневую пропускную способность IP-пакетов.
Если вы можете настроить ftpd на маршрутизаторе и проверьте это, вы обнаружите, что можете приблизиться к этому пределу пропускной способности 11,4 МБ (известно, что FTP имеет наименьшие накладные расходы по сравнению с любым протоколом передачи файлов). В качестве альтернативы посмотрите, чего вы можете достичь, просто используя netcat для перекачки данных в файл или из файла.