У меня есть графически интенсивное приложение, которое нужно пересылать через X11. Я потратил некоторое время на изучение X11 и его (в) эффективности, включая этот замечательный пост: почему пересылка X11 так неэффективна? ,
Одна вещь, которая мне до сих пор не ясна, зависит от того, зависит ли производительность пересылки X11 от приложения. У меня сложилось впечатление, что весь экран пересылается, независимо от того, что происходит. Тогда пересылка X11 должна быть независимой от приложения.
Итак, есть ли конкретная информация о том, что на самом деле передается и зависит ли производительность ssh -X от приложения?
-C
опция в командной строке илиCompression: yes
опция в файле .ssh / config. Если вы выполняете традиционную переадресацию X из Далласа в Австралию по перегруженному каналу T1, это может быть разницей между тем, что ваша задача состоит в том, чтобы вывести диалог на пять уровней глубоко в интерфейсе и установить флажок из нереалистичной задачи в просто чрезвычайно расстраивает два часа. К счастью, у меня не было необходимости пробовать это с Уэйлендом, но я предполагаю, что это значительно улучшилось.Ответы:
Нет, на самом деле все наоборот. Пересылка X11 называется «пересылка X11», потому что она транспортирует фактические сообщения X-протокола, используемые приложениями для визуализации своих окон на «X-сервере» (обычно Xorg). Эти сообщения являются командами для создания / перемещения окон, рисования текста и графических примитивов (линий / прямоугольников), рисования растровых изображений и т. Д.
Можно сказать, что это концептуально противоположно протоколам «полноэкранного изображения», таким как VNC / RFB. Я думаю, что это несколько сравнимо с RDP Windows, который также был сделан для передачи команд рисования GDI.
Итак, причины, по которым вы видите различия между программами:
Чтобы процитировать пост, на который вы ссылались, изначально большинство программ на основе X работали так:
Поэтому, когда программа хотела показать кнопку, она просто отправляла несколько коротких команд - «нарисовать прямоугольник», «нарисовать текст» и, возможно, несколько линий, чтобы она выглядела в 3D.
Со временем это изменилось, программы начали выполнять рендеринг самостоятельно, и многие из этих инструкций стали просто «вот растровое изображение, которое я уже отрисовал, поместите это на экран» - очень быстро локально, но очень медленно по сети из-за отсутствия в X11 какого-либо сжатие изображения.
Это означает, что программы, созданные с использованием современных наборов инструментов, работают намного медленнее по сравнению с сетевым X11, даже если это что-то такое же простое, как сглаженные шрифты.
(Напротив, RDP адаптировался с течением времени и включает различные формы сжатия изображений, такие как JPEG и даже H.264; вы часто можете заметить артефакты сжатия во время загрузки полного изображения.)
К счастью, большинство инструментариев пользовательского интерфейса, таких как GTK, реализуют отслеживание повреждений, поэтому пересылаются только обновленные регионы. Однако некоторые программы (например, несколько версий Firefox / Thunderbird) не поддерживают это и требуют полного повторного рендеринга всего окна, даже если оно действительно не обновлено.
Это еще одно различие между программами - программы с хорошим поведением по-прежнему вполне пригодны для использования в сети, но глючные программы могут насыщать канал со скоростью 100 Мбит / с, не делая абсолютно ничего полезного.
источник