x11vnc работает медленно, но использует только 10% доступной пропускной способности
Я использую x11vnc через сеть 15 Мбит / с с задержкой 20 мс. Когда экран сильно меняется, x11vnc работает медленно - например, когда я переключаю вкладку в браузере, требуется почти две секунды, пока представление не будет полностью перерисовано.
Странно то, что максимальная скорость соединения x11vnc даже при медленном перерисовывании составляет всего около 10% доступной пропускной способности. Почему x11vnc не использует доступную полосу пропускания для ускорения перерисовки? Например, scp использует 100% доступной пропускной способности без проблем.
Как я могу определить узкое место для x11vnc в моей системе? Пока думаю
- 10% использование сети => сеть не является узким местом
- скорость чтения fb: 601 МБ / с => чтение fb не является узким местом
Любые идеи, как я могу дополнительно профилировать x11vnc и выяснить, что вызывает замедление?
Например, есть ли переключатель для x11vnc, чтобы показать, сколько данных он обрабатывает и сколько времени занимает захват экрана, обработка и сжатие и отправка его по сети?
3 ответа
Чтобы ответить на мой собственный вопрос:
Переход от строгой кодировки к кодировке hextile решил проблему с медленным перерисовыванием полностью.
Чтобы добавить некоторые детали: я заметил, что во время медленной перерисовки экрана процессор на клиенте работал на 100%. Я использовал жесткое кодирование, и со страницы VNC Tight Encoder - Сравнительные результаты видно, что жесткое кодирование довольно интенсивно использует процессор по сравнению с шестнадцатеричным кодированием. После перехода на hextile максимальное использование ЦП никогда не составляет 100%, используется почти вся доступная пропускная способность, а перерисовка всегда занимает меньше секунды. Таким образом, центральное место в клиентском процессоре было узким местом.
Или даже лучшая альтернатива (меньшая пропускная способность, низкое использование процессора и, кажется, даже быстрее, чем в hextile) - это скомпилировать x11vnc с поддержкой TurboVNC, а затем использовать клиент TurboVNC.
Я надеюсь, что это должно работать. http://www.karlrunge.com/x11vnc/faq.html... поиск параметров средства просмотра VNC и параметров x11vnc:
Это сработало для меня.
Причина в том, что захват / рендеринг экрана неэффективен. Много разных реализаций VNC играют с этим для достижения лучшей производительности.
Если вам не нужно точно отражать то, что находится на локальной консоли, лучшим решением будет NM или FreeNX от NoMachine в качестве среды удаленного рабочего стола. Производительность днем и ночью по сравнению с VNC даже по каналам глобальной сети.