Load Testing X11 Servers? 11
An Anonymous Coward asks: "There is a site that wishes to test more than 450 users running thin-client X on a server without having to have 450 client terminals. Is there a simple method to do this. So far I've thought of the following options: 1) recording X network packets then sending them from multiple dummy 'clients' on the same PC. (This was done during the Mindcraft benchmarking episode by simulating 'netbench'). 2) some sort of scripting process that can simulate typical X11 usage on the server. Unfortunately, expensive load testing software is not an option."
use Xvfb (Score:4, Insightful)
xnest, xvfb or xvnc? (Score:5, Insightful)
but your question was, how to test what you describe. look into using xnest, xvnc or xvfb on a few host clients. each instance of those on a host client will be a test client. the more host clients you have the better since that means less test clients per host client. xnest will put a lot of load on the host client but you can use all the fake clients at once (or at least you can see them all at once, you'll still have to move your mouse from one to the other). xvnc will put less load on the host clients, but you'll need to run vncviewers to see each fake client. finally you can use xvfb which will allow you no control over the test client, but will stress the host clients less.
the latter might actually be easier to test with though. the first test could be to start up 450 xvfb xservers. then start up gnome/kde desktops for 450 users on the application server (with DISPLAY pointed to each of the xvfb xservers). that should test ram requirements. then keeping the desktops running, run x11perf (on the application server) on all the displays. that should exercise network load and cpu.
Balance LOCAL and remote X (Score:4, Informative)
X windows - where your ideas of client and server get reversed.
In the old days we made a foray into the leading edge of technology - we bought X terminals, mostly from NCD, some from Tektronix.
They worked pretty good because the network worked well. It was generally pretty fast and reliable.
But not fast enough sometimes to get rid of latency from mouseclicks and keyboard events going to X applications running on the application server down the hall.
So we found that running the X server on the X terminal was made a better environment by also running the window manager on the X terminal. From there, it's only a small step to consider running a few more X applications on the X terminal. Basically, run everything locally where interactive response is of paramount importance, then those applications requiring huge resources like disk access, fast CPU's with lots of memory, down the hall.
Back in those days our application servers were equipped with less memory and less CPU than my current desktop PC. These days there hardly seems to be any excuse for not running X applications locally. For day-to-day graphics, a PC makes a killer good X terminal, plus a whole lot more.
I will admit that system administration for the diskless X terminals was easier than for fat client machines, in that all user profiles, applications, data, etc. sat on the big application servers.
I don't mean to digress too much from your initial question, but do suggest that you look carefully into improving interactive response and decreasing the network load by running as many applications as possible on the local desktops.
get it /.-ed (Score:5, Funny)
I'm sure you'll manage to get some very thorough load testing done
Perl (Score:2, Informative)
Write a series of relatively simple perl scripts distributed across -- say 5 or 10 client machines.
Check out cpan [cpan.org] for X11 protocol modlues. On each load test host, have your perl script open a bunch of client connections (say, 50-75 per load test client) -- and maybe even launch a few real-world apps (and seed which clients open which apps based on your usage expectations). This will give you a general idea of how well your system runs under load. You can even use perl modules to specific X apps to do some stuff with the client apps that you launch.
You can easily do data drilling on either your client machines or your X server. For basic results, memory utilization, load, etc. For a little more in-depth data, check out response times, connect times, login times, load times -- all on a number-of-concurrent-connections basis.
-Turkey
Even better idear... (Score:3, Funny)
Uh.. it comes with Xfree86 (Score:4, Interesting)