(no commit message)
[ikiwiki] / doc / todo / avoid_thrashing.mdwn
1 Problem: Suppose a server has 256 mb ram. Each ikiwiki process needs about
2 15 mb, before it's loaded the index. (And maybe 25 after, but only one such
3 process runs at any time). That allows for about 16 ikiwiki processes to
4 run concurrently on a server, before it starts to swap. Of course, anything
5 else that runs on the server and eats memory will affect this.
6
7 One could just set `MaxClients 16` in the apache config, but then it's also
8 limited to 16 clients serving static pages, which is silly. Also, 16 is
9 optimistic -- 8 might be a saner choice. And then, what if something on the
10 server decides to eat a lot of memory? Ikiwiki can again overflow memory 
11 and thrash.
12
13 It occurred to me that the ikiwiki cgi wrapper could instead do locking of
14 its own (say of `.ikiwiki/cgilock`). The wrapper only needs a few kb to
15 run, and it starts *fast*. So hundreds could be running waiting for a lock
16 with no ill effects. Crank `MaxClients` up to 256? No problem..
17
18 And there's no real reason to allow more than one ikiwiki cgi to run at a
19 time. Since almost all uses of the CGI lock the index, only one can really
20 be doing anything at a time. --[[Joey]]
21
22 [[done]]