Hi all,

I've coded this patch that considerably reduces surf memory usage (and
some LOCs) by avoiding the creation of a new process each time a new
webview is created. The patch is very simple, it just replaces calls
to newwindow with calls to a slightly modified newclient. This only
applies to "inside" events: from the context menu, clicking urls, etc.
You still can exec surf to get a new process running.

All this play well with tabbed. In fact, it was the memory consumption
of N opened tabs (say N*M) that motivates me to write the patch (so
N*M is now reduced to something about M, or avg(M) or max(M)... anyway
an improvement).

For example, you go from something like this (4 instances at www.google.com):

 PID   USER     PR   NI  VIRT   RES    SHR S  %CPU %MEM    TIME+  COMMAND
 3559 carlos    20   0  196m  61m  24m S   0.3    3.0          0:01.37
surf
 3558 carlos    20   0  196m  57m  24m S   0.0    2.9          0:01.40
surf
 3560 carlos    20   0  196m  58m  25m S   0.0    2.9          0:01.40
surf
 3561 carlos    20   0  196m  58m  25m S   0.0    2.9          0:01.39 surf

to this:

3558 carlos    20   0  238m  79m  27m S   0.3     3.9           0:03.47 surf

Of course the improvement will depend on you usage pattern. If you
tend to open a number of webviews at the same time the gain will be
important.

I've not tested it thoroughly so use with care if you use it at all.

Best regards
--
Carlos

Attachment: surf-r252-sameproc.diff
Description: Binary data

Reply via email to