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

11

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

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

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

  1. 10% использование сети => сеть не является узким местом
  2. скорость чтения fb: 601 МБ / с => чтение fb не является узким местом

Любые идеи, как я могу дополнительно профилировать x11vnc и выяснить, что вызывает замедление?

Например, есть ли какой-нибудь переключатель для x11vnc, чтобы показать, сколько данных он обрабатывает и сколько времени требуется, чтобы захватить экран, обработать и сжать его и отправить по сети?

ммм
источник

Ответы:

11

Чтобы ответить на мой собственный вопрос:

Переход от строгой кодировки к кодировке hextile решил проблему с медленным перерисовыванием полностью.

Чтобы добавить некоторые детали: я заметил, что во время медленной перерисовки экрана процессор на клиенте работал на 100%. Я использовал жесткое кодирование, и со страницы VNC Tight Encoder - Сравнительные результаты видно, что жесткое кодирование довольно интенсивно использует процессор по сравнению с шестнадцатеричным кодированием. После перехода на hextile максимальное использование ЦП никогда не составляет 100%, используется почти вся доступная полоса пропускания, а перерисовка всегда занимает меньше секунды. Таким образом, центральное место в клиентском процессоре было узким местом.


Или даже лучшая альтернатива (меньшая пропускная способность, низкое использование процессора и, кажется, даже быстрее, чем в hextile) - это скомпилировать x11vnc с поддержкой TurboVNC, а затем использовать клиент TurboVNC .

ммм
источник
Вот несколько сравнений пропускной способности и времени сжатия сжатого времени. Tailvnc.com/archive/compare.html
huyz
1
Как именно вы изменили кодировку?
ScottF
1

Причина в том, что захват / рендеринг экрана неэффективен. Много разных реализаций VNC играют с этим для достижения лучшей производительности.

Если вам не нужно точно отражать то, что находится на локальной консоли, лучшим решением является NX или FreeNX NoMachine в качестве среды удаленного рабочего стола. Производительность днем ​​и ночью по сравнению с VNC даже по каналам глобальной сети.

Джалкон ака Дон Фаннинг
источник
1

Я надеюсь, что это должно работать. http://www.karlrunge.com/x11vnc/faq.html#faq ... поиск параметров средства просмотра VNC и параметров x11vnc:

Это сработало для меня.

Кишор Павар
источник
1
Добро пожаловать в сбой сервера! Мы действительно предпочитаем, чтобы ответы содержали контент, а не указатели на контент. Это может теоретически ответить на вопрос, однако, было бы предпочтительным включить сюда основные части ответа и предоставить ссылку для справки.
Крис С