Также попробуйте это:
on vncserver use -depth 32
on vncviewer use -bgr233
При использовании bgr233 на сервере, как рекомендует Psycogeek, приложения, работающие на сервере, могут использовать дизеринг для улучшения своего внешнего вида. KDE, например, делает это. Модели сглаживания, особенно нерегулярные структуры, полученные методом "диффузии ошибок", плохо сжимаются и замедляют передачу.
Приведенный ниже тест с рабочим столом KDE показывает, что объем данных, передаваемых по сети, наименьший, если сервер работает в режиме truecolor (глубина 32; глубина 24 также может хорошо работать, но я не проверял это), и клиент запрашивает цвета bgr233 , Затем сервер "округляет" цвета до доступных в палитре bgr233, в результате чего получаются однородные области, которые хорошо сжимаются.
В зависимости от версии vnc, настроек и типа соединения, может также быть полезно запустить соединение vnc через сжатое соединение ssh:
ssh -C -L 5901:127.0.0.1:5901 user@remote
(подключение к localhost:1 вместо удаленного:1 с помощью vncviewer) и / или для настройки списка методов сжатия vnc с помощью "vncviewer -encodings".
Тестовое задание
Чтобы получить статистику о количестве переданных данных, я запускаю ssh -C с ключом -v. Это печатает статистику в конце соединения ssh (ctrl+d), которая показывает объем данных, отправленных vnc, и до какой степени ssh может сжать их.
На сервере vnc я запускаю KDE с разрешением 1440x800 со стандартным рабочим столом OpenSUSE 12.2. Рабочий стол OpenSUSE включает папку рабочего стола в углу с полупрозрачным фоном и эффектом градиентного освещения. Папка содержит несколько значков. Кроме того, есть панель запуска. Для каждого теста я запускаю ssh-соединение с -C -v, соединяюсь с vncviewer, закрываю соединение после полной передачи рабочего стола и ctrl+d ssh-соединение, чтобы прочитать статистику. Чтобы использовать стандартные настройки vnc, несмотря на подключение к localhost, я использую vncviewer с параметром -encodings "copyrect тесный hextile zlib correrere raw". Во втором тесте я опускаю "жесткий". Наконец, я также тестирую с настройками localhost по умолчанию. Я повторяю все тесты со сплошным фоновым цветом рабочего стола, но не с чисто белым или другим цветом, доступным в палитре bgr233.
Результаты
(1) Фоновая картинка "Вечер" Кристофа Куммера (поставляется с OpenSuSE 12.2):
с "жесткой" кодировкой:
32 bit server + bgr233 client: raw data 231,129, compressed 231,195
16 bit server + bgr233 client: raw data 235,528, compressed 235,548
bgr233 server + bgr233 client: raw data 379,472, compressed 379,524
16 bit server + 16 bit client: crashes xvnc server
32 bit server + 32 bit client: crashes xvnc server
без "жесткой" кодировки:
32 bit server + bgr233 client: raw data 514,614, compressed 336,993
16 bit server + bgr233 client: raw data 526,267, compressed 343,430
bgr233 server + bgr233 client: raw data 1,122,449, compressed 440,477
16 bit server + 16 bit client: raw data 3,422,711, compressed 1,486,065
32 bit server + 32 bit client: raw data 4,620,578, compressed 2,806,274
с настройками "localhost":
32 bit server + bgr233 client: raw data 1,153,388, compressed 231,740
16 bit server + bgr233 client: raw data 1,153,397, compressed 236,428
bgr233 server + bgr233 client: raw data 1,153,695, compressed 380,015
16 bit server + 16 bit client: raw data 4,612,015, compressed 1,166,199
32 bit server + 32 bit client: raw data 4,611,296, compressed 2,805,144
(2) Сплошной цвет фона:
с "жесткой" кодировкой:
32 bit server + bgr233 client: raw data 10,151, compressed 9,862
16 bit server + bgr233 client: raw data 14,994, compressed 14,817
bgr233 server + bgr233 client: raw data 76,335, compressed 76,268
16 bit server + 16 bit client: crashes xvnc server
32 bit server + 32 bit client: crashes xvnc server
без "жесткой" кодировки:
32 bit server + bgr233 client: raw data 28,285, compressed 15,885
16 bit server + bgr233 client: raw data 40,597, compressed 25,410
bgr233 server + bgr233 client: raw data 460,902, compressed 93,067
16 bit server + 16 bit client: raw data 161,323, compressed 73,196
32 bit server + 32 bit client: raw data 152,342, compressed 78,657
с настройками "localhost":
32 bit server + bgr233 client: raw data 1,155,743, compressed 14,926
16 bit server + bgr233 client: raw data 1,153,388, compressed 19,015
bgr233 server + bgr233 client: raw data 1,153,379, compressed 77,238
16 bit server + 16 bit client: raw data 4,611,296, compressed 62,929
32 bit server + 32 bit client: raw data 4,611,296, compressed 74,081
обсуждение
Обратите внимание, что 1440 x 800 = 1 152 000, а в 4 раза это 4 608 000. В режиме "localhost" vnc, похоже, отправляет несжатые данные. Выбор фона рабочего стола и глубины цвета сервера не имеет значения. Кроме того, VNC использует 32 бит на пиксель для передачи даже в 16-битном режиме. Тем не менее, существуют различия в том, насколько хорошо ssh может сжимать поток данных.
Во всех протестированных случаях bgr233 на клиенте получает наименьший объем данных, если сервер работает с 32-битными цветами, за которыми следуют 16-битные цвета и намного больший объем данных, если также использовать bgr233 на сервере. Эффект наиболее выражен на сплошном фоне.
На фоне картинки "жесткое" кодирование и сжатие localhost + ssh дают аналогичные результаты для клиента bgr233. Это говорит о том, что в этих настройках "сжатый" использует сжатие zlib (которое аналогично использованию сжатия ssh).
В 16 и 32-битных настройках клиента, к сожалению, происходит сбой сервера при использовании "тесного". Это были бы настройки, в которых было бы полезно сжатие JPEG, поддерживаемое "тесным", особенно с фоновой фотографией.
Предостережение: результаты показывают, что ssh-сжатие с настройками по умолчанию localhost работает хорошо. Однако тест не включает типичное использование на рабочем столе, такое как прокрутка длинной страницы в веб-браузере, для которого может быть важна кодировка "copyrect".
Кроме того, сжатие ssh может добавить заметную задержку в быстром соединении, что приводит к тому, что соединение кажется медленным, несмотря на отличное сжатие.
-JJ