x11vnc работает медленно, но использует только 10% доступной пропускной способности

Я использую x11vnc через сеть 15 Мбит / с с задержкой 20 мс. Когда экран сильно меняется, x11vnc работает медленно - например, когда я переключаю вкладку в браузере, требуется почти две секунды, пока представление не будет полностью перерисовано.

Странно то, что максимальная скорость соединения x11vnc даже при медленном перерисовывании составляет всего около 10% доступной пропускной способности. Почему x11vnc не использует доступную полосу пропускания для ускорения перерисовки? Например, scp использует 100% доступной пропускной способности без проблем.

Как я могу определить узкое место для x11vnc в моей системе? Пока думаю

  1. 10% использование сети => сеть не является узким местом
  2. скорость чтения 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 даже по каналам глобальной сети.

Другие вопросы по тегам