On Fri, 2011-11-18 at 19:36 +0100, Karsten Bräckelmann wrote: > On Fri, 2011-11-18 at 08:16 +0000, Tom wrote: > > (apologies if the html doesn't end up translating well!)
Damn, sorry. My attempt at pruning the large tables seriously fucked up the formatting. :/ > > output from top, after running spamassassin for a couple of minutes: > > > > [root@spam_209 ~]# top > > > > top - 08:01:24 up 23:27, 3 users, load average: 31.22, 10.73, 3.84 > > These numbers don't match up. The above, "after 15 minutes" claims load > average < 1, whereas this "after a couple minutes" skyrockets. > > Also, I guess the "spam_209" hostname corresponds with the IP, so this > machine is not included in the above stats. Oh, wait -- that's probably 3.2 and 3.3 respectively. Anyway, the load is the number of running, busy processes per timeslice. With 40 busy, entirely CPU bound processes running, I'd expect the load to be in that range... > > Tasks: 115 total, 40 running, 75 sleeping, 0 stopped, 0 zombie > > Cpu(s): 99.0%us, 0.7%sy, 0.0%ni, 0.0%id, 0.0%wa, 0.0%hi, 0.3%si, > > 0.0%st > > Mem: 2055676k total, 1985400k used, 70276k free, 27704k buffers > > Swap: 4128760k total, 344k used, 4128416k free, 470672k cached > > > > PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND > > 18458 spamd 20 0 255m 58m 3136 R 2.6 2.9 0:02.90 spamd > > 18463 spamd 20 0 255m 58m 3152 R 2.6 2.9 0:04.62 spamd > [...] > > Here we have 40 spamd processes, each getting a tiny share of the CPU > resources. > > I might be wrong, but since your -L local only spamd processes are > entirely CPU (and memory) bound, wouldn't it be more appropriate to run > about twice as much processes than CPU cores, to avoid context switches? > > As it is right now, there are 5 (or even 10?) spamd processes per CPU > core, all busy burning CPU simultaneously. > > Raising the number of concurrent spamd processes is useful to avoid idle > waiting for DNS, etc -- which you don't have. -- char *t="\10pse\0r\0dtu\0.@ghno\x4e\xc8\x79\xf4\xab\x51\x8a\x10\xf4\xf4\xc4"; main(){ char h,m=h=*t++,*x=t+2*h,c,i,l=*x,s=0; for (i=0;i<l;i++){ i%8? c<<=1: (c=*++x); c&128 && (s+=h); if (!(h>>=1)||!t[s+h]){ putchar(t[s]);h=m;s=0; }}}