What really pisses me off is the fact that in the rest of my servers, when SA starts, only the parent process weights 22 MB, the children weight approx. 5 MB each. But in this particular server, all of the spamd processes start up as 22 MB processes...
It strikes me as rather odd that the size of them is different. In theory they should all be the same.
What kernels are the boxes using?
One theory I have is that the boxes with 5mb children has a RCU enabled kernel, thus the children are 5mb of their own memory, and the rest is shared with the map of the parent. (RCU causes forked children to share pages of memory with the parent until they modify the page, then it gets reallocated)
On the one box which has 22mb children, I suspect there's no RCU support, so the whole 22mb parent is copied at the time of fork().
In linux, RCU is present on 2.6.x kernels, although some vendors may have backported it to their 2.4x kernels