aboutsummaryrefslogtreecommitdiff
path: root/doc/todo/avoid_thrashing.mdwn
blob: 45b11d8721afe68ac23941acaf8042c54dfc734c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Problem: Suppose a server has 256 mb ram. Each ikiwiki process needs about
15 mb, before it's loaded the index. (And maybe 25 after, but only one such
process runs at any time). That allows for about 16 ikiwiki processes to
run concurrently on a server, before it starts to swap. Of course, anything
else that runs on the server and eats memory will affect this.

One could just set `MaxClients 16` in the apache config, but then it's also
limited to 16 clients serving static pages, which is silly. Also, 16 is
optimistic -- 8 might be a saner choice. And then, what if something on the
server decides to eat a lot of memory? Ikiwiki can again overflow memory 
and thrash.

It occurred to me that the ikiwiki cgi wrapper could instead do locking of
its own (say of `.ikiwiki/cgilock`). The wrapper only needs a few kb to
run, and it starts *fast*. So hundreds could be running waiting for a lock
with no ill effects. Crank `MaxClients` up to 256? No problem..

And there's no real reason to allow more than one ikiwiki cgi to run at a
time. Since almost all uses of the CGI lock the index, only one can really
be doing anything at a time. --[[Joey]]

[[done]]