Протокол X11 никогда не предназначался для графической обработки (с точки зрения растровых изображений / текстур) интенсивных операций. В те времена, когда X11 был впервые разработан, компьютерная графика была намного проще, чем сегодня.
По сути, X11 не отправляет экран на ваш компьютер, но отправляет инструкции по отображению, чтобы X-сервер на вашем локальном компьютере мог воссоздать экран в вашей локальной системе. И это нужно делать при каждом изменении / обновлении дисплея.
Таким образом, ваш компьютер получает поток инструкций, таких как «нарисовать линию этого цвета из координат x, y в (xx, yy), нарисовать прямоугольник шириной W пикселей, высотой H пикселей с верхним левым углом в точке (x, y) и т. Д. "
Локальный клиент на самом деле не знает, что нужно обновить, а в удаленной системе очень мало информации о том, что на самом деле нужно клиенту, поэтому в основном сервер должен отправлять много избыточной информации, которая может понадобиться или не потребоваться клиенту.
Это очень эффективно, если отображаемый экран состоит из ограниченного числа простых графических фигур и требуется только низкая частота обновления (без анимации и тому подобного). Что было в те времена, когда X11 был впервые разработан.
Но современные графические интерфейсы очень привлекательны, и большая часть этого должна быть отправлена из удаленной системы вашему клиенту в виде растровых изображений / текстур / шрифтов, которые занимают довольно большую полосу пропускания. А всевозможные сладости включают анимационные эффекты, требующие частых обновлений. И дисплеи тоже становятся больше, в два раза шире / выше в 4 раза больше пикселей.
Конечно, со временем были внесены улучшения в протокол X11, чтобы максимально оптимизировать это, но базовый базовый дизайн, по сути, просто не совсем соответствует требованиям, которые ожидают люди с графическим интерфейсом в наше время.
Другие протоколы (например, RDP и VNC) больше предназначены для того, чтобы удаленная система выполняла всю тяжелую работу и позволяла этой системе решать, какие обновления отправлять клиенту (в виде сжатых растровых изображений) настолько эффективно, насколько это возможно. Часто это оказывается более эффективным для современных графических интерфейсов.
Ни один из методов не идеален и может одинаково хорошо справляться с любой ситуацией. Не существует такой вещи, как единый протокол отображения, который мог бы преуспеть в любом возможном случае использования.
Поэтому в большинстве случаев вы просто пробуете все протоколы, которые поддерживаются между вашим локальным клиентом и удаленным сервером, и используете тот, который дает наилучшие результаты. А в некоторых случаях нет выбора, и вам просто нужно обойтись тем, что доступно.
Большинство протоколов допускают некоторую настройку производительности, но многие из этих настроек предназначены только на стороне сервера и недоступны для обычного пользователя. (И их правильная настройка - немного загадочное искусство. Многие системные администраторы не захотят с этим связываться.)
В большинстве случаев самый простой способ повысить производительность (иногда весьма радикально) - это перейти на более простую рабочую среду с меньшими затратами времени и отказаться от использования фоновых изображений.