Hашлось время поразбираться со скоростью VirtualBox через удалённые иксы.
У меня дома роутер подымает PPPoE-соединение в мир на скорости 100Mbit/s с mtu=1500 (за счёт PPP multilink extension over single long, то есть фрагментации PPP-фреймов) посредством mpd5, через это PPPoE подымается gif-туннель с mtu=1500 (за счет фрагментации ipip-пакетов) до хоста в той же автономной системе, шифрованный IPSEC-ом без компрессии.
Роутер слабоват и максимум шифрует 33 мегабита в секунду AES-128 набортным криптоакселератором:
glxsb0: <AMD Geode LX Security Block (AES-128-CBC, RNG)> mem 0xef01c000-0xef01ffff at device 1.2 on pci0
ping через такой gif/ipsec-туннель идет с rtt от 1 до 2 милисекунд.
Скорость работы графики в ssh -Y remotehost VirtualBox (5.2.8) через такой gif была просто никакая, что сам GUI-интерфейс qt, что с Win7 в качестве гостя.
Что было сделано:
1) После прочтения доки по VirtualBox в свойствах гостя заменил мышь PS/2 на USB Tablet, что теоретически должно позволять vbox-у передавать вместо относительных смещений мыши абсолютные значения текущего положения. Благо что Win7 автоматически распознала новое устройство USB HID и стало использовать его вместо исчезнувшей мышки PS/2. Само по себе это проблему не убрало.
2) Обнаружил, что у меня не используется компрессия трафика X-протокола. Когда-то я её точно включал в /etc/ssh/ssh_config, но видимо при очередном апгрейде благополучно переписал конфиг дефолтным. Поэтому теперь сделал echo "Compression yes" > ~/.ssh/config
О чудо, всё стало летать, как при локальной сессии. Hо помня, что были жалобы на тормоза при rtt=50, решил заодно потестить и этот вариант, благо у нас есть ipfw pipe 1 config bw 50Mbit/s delay 50.
Попробовал разные значения delay от 0 до 50 с шагом 10, держа параллельно запущенным ping и убеждаясь, что dummynet чётко подкидывает ровно столько милисекунд задержки, сколько прописываю в delay.
Hу да, при росте задержки соответственно растет латентность и при работе с собственным GUI vbox, и с гостевой системой, но ничего похожего тому ужасу, что было до начала тюнинга, всё равно нет. При 50ms работать неприятно, но возможно. При 100ms работать *очень* неприятно, но всё равно возможно - нет безумных ожиданий по десяткам секунд после каждого клика, как без компрессии X.