urxvtd performance problems and possible fixes

Reuben Thomas rrt at sc3d.org
Fri Dec 7 20:16:36 CET 2007


On Fri, 7 Dec 2007, Marc Lehmann wrote:

> On Fri, Dec 07, 2007 at 01:42:31PM +0000, Reuben Thomas <rrt at sc3d.org> wrote:
>>> You need to use an idle watcher.
>>
>> I don't understand. Won't that simply postpone the code?
>
> Yes.
>
>> I don't mind it running (just like other apps I have open) I just don't
>> want it blocking the other terminals.
>
> You can't do that without an idle watcher - it runs when the app has nothing
> better to do, which means it has to use a lower priority than the tasks that
> update the other terminals.

I don't want the app to wait until it has nothing better to do, I just don't 
want the reformatting to stop me from using it! Am I being unclear? I would 
like reformatting to continue *while* I use urxvt.

> Are you sure you are looking at it right? Free certainly is a different
> value than cache on all opertaing systems. Cache means the memory isn't
> free, but used for other purposes. It doesn't preclude the scrollback
> being swapped out, for example.

Modern Linux doesn't really ever give you "free" memory: memory not used by 
processes is used to cache the file system, swap &c.

> Thats fine, but there is really no way it could take *minutes*. A few
> seconds I could accept, but minutes is out of the question. There must be
> other factors around, like urxvtd running under valgrind, or beign swapped
> out etc :)

Swapping is indeed the main suspect here, but I'm at a loss to see why.

> Thats your problem, not enough memory.
>
>> Mem:    507792k total,   498888k used,     8904k free,    25852k buffers
>> Swap:   522104k total,   261052k used,   261052k free,    67636k cached
>>
>> i.e. ~100Mb of RAM free.
>
> I see 25mb, not 100, which is rather little, given that linux (I assuem
> you use linux) will not use all the buffer cache.

I'm seeing "67636k cache", i.e. it's caching 67Mb of swap in RAM. That's 
basically free too.

> If you compile without --enable-unicode3, then each character will need 6
> bytes instead if 8, which helps a lot with big scrollbacks.

I'm just using the Debian package.

> You probably use it a lot more,

Not really. I'm normally swapping between email (in a urxvt), Emacs, and 
various terminals. Also, most of the Emacs buffers I don't visit in a given 
day. Part of the problem with urxvt is that it reformats all my history 
whenever a window is resized, i.e. it visits pretty much all its memory, 
whether or not I ever look at it. I have large scrollback buffers just in 
case, and sometimes I'm very glad I do, but I guess I'll try cutting down on 
that for a bit to see if it helps.

I agree that more memory would solve my problem; sadly my laptop is not 
upgradeable any further, and since the problem is clearly soluble in theory, 
I thought it was worth discussing. Basically, the way that urxvt works at 
the moment doesn't play very well with virtual memory, it relies on having 
enough physical memory. That's a pity.

-- 
http://rrt.sc3d.org/ | free, a.  already paid for (Peyton Jones)




More information about the rxvt-unicode mailing list