Is there a way to reduce the amount of X11 traffic

2019-05-02 07:25发布

问题:

My team is evaluating various IDEs for an upcoming project. One of the requirements is that we wish to log into a central, powerful Linux server from our local Windows computers (our previous project was under Windows and changing it is not an option).

Our approach is to use XRDP, but we are also looking at using an X11 server locally on our Windows machines.

We noticed that when we try to run Qt Creator on the remote Linux machine but have it display on the X11 server running on our local machine, the interface is very choppy and slow. Refreshes are too sluggish to make the tool useful. We do not see this problem when we run Eclipse, which ends up being much more responsive than when we access it via XRDP.

A network traffic analysis using Wireshark revealed that Qt Creator produces roughly 10-100 times more X11-related network traffic than Eclipse for a similar task (scrolling down a page of text).

The question (finally): Does anyone know how we could configure Qt Creator to produce less X11 traffic, thus improving its responsiveness?

The underlying Linux system is Kubuntu (Ubuntu with KDE).

Qt Creator version: 3.0.0 (uses Qt 4.8.1)

P.S.: This is my first post on Stack Overflow, and I am open to suggestions on how to improve the usefulness of my question.

回答1:

Try to launch QtCreator with -graphicssystem native parameter.

Three graphics backends are supported in Qt4(.5+) (native, raster and opengl). Native appears to be adapted for SSH X-forward use whereas others appears better for local use.

It worked for me with QtCreator version 2.5.0 when I was working on Qt4, but it does not work after my fresh update to QtCreator 3.1.2 since Qt5 appears to have deleted this parameter.

I do not know if this parameter is supported in QtCreator 3.0.0 but since you use Qt4 you can always downgrade your QtCreator version to the latest one which supports this parameter. If you want to automatically change graphicssystem depending on remote/local use, you may want to try setting QT_GRAPHICSSYSTEM=native envvar conditionally in your bashrc or so.