GUI "Stutters" When Downloading Headers

Post Reply
JohnE
Posts: 7
Joined: Thu Dec 08, 2011 9:52 pm

GUI "Stutters" When Downloading Headers

Post by JohnE »

I just started running the latest 64-bit, 3.3, version on Windows 7.

I've noticed that the GUI, while downloading headers, anything up to 10 connections at once, does what I can only call "stuttering". It's responsive for a second, or so, and then "stalls" for anything from 3 to 5 seconds. Then it responds, for about a second, and then "stalls" again.

Now, I first tested UE quite a while ago, I didn't recall this behaviour, so I ran some tests, as I managed to find my, really old, 1.7 trial version.

For the tests, I created a new Windows 7 VM, as the trial wouldn't run on my main machine. For both the tests, I created a new DB, and tried downloading the headers from the 10 groups with the highest post count. The 3.3 version showed exactly the same symptoms as on my "real" machine. However, the old 1.7 copy, could handle 10 connections with almost no impact on the GUI response. This I tested, by highlighting a group in the NewsGroups pane, and holding the "down arrow" key. It scrolled almost perfectly.

As an aside, I also noticed that the 3.3 version, when starting to download the headers, would max out my cable connection at 15Mbits. However, after about 10 minutes, this started to slowly drop, and then leveled off at about 10Mbits. The 1.7 speed was flat, at 15Mbits, no matter how long I let it run.

Because the 1.7 was a 32-bit version, I re-ran the 3.3 test, using a 32-bit copy, in case that could have been the problem. Sadly no, it still showed the stutter effect.

Are there any settings I can tweak, to stop, or minimise, this behaviour, as it makes the GUI extremely difficult to use, while downloading headers.

And it is only headers that do this. When downloading bodies, the GUI is smooth, and the speed is a constant 15Mbits.
alex
Posts: 4538
Joined: Thu Feb 27, 2003 5:57 pm

Re: GUI "Stutters" When Downloading Headers

Post by alex »

In edit menu->properties->tasks you can limit header bandwidth, change memory buffer for headers, update rate and freeing rate. UE downloads headers into buffer, then processes those headers. If the buffer is not full, but the update rate time has passed it will process them even as buffer is not full. Freeing means UE organizes headers and frees RAM. Both done in the interface thread, since even if not because of locks required the result would be about the same, but with less manageable source code.

Limiting header bandwidth will increase responsiveness. You may also try higher update rate (less seconds), although probably limiting bandwidth will give more consistent results. Increasing freeing rate too much (i.e. less seconds) may increase disk reads especially when downloading from several servers since what is freeded may be needed shortly later on, decreasing it too much (more seconds) may result in too much disk activity when freeing is going on and higher RAM consumption peak.
Post Reply