urxvtd performance problems and possible fixes
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?
>> 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