Let's see if I can add something to this thread
In my opinion, once he posted the memory usage of the apache processes, the root of the problem was likely found. I had a look at my apache processes, and I'm using less than 4mb memory on each process. In his paste, he's using between 6 and 9mb for each process.. which is insane. The problem is the disk i/o from running out of memory, and I doubt there is much (if any) problem with the cpu being able to keep up.
I'm guessing, like someone else had mentioned, that you're loading a ton more modules than you're actually using. That's where I'd start looking. Also, I'd venture to guess that apache 2.x uses more memory than the 1.3 tree, which is what I'm using. Something else I'd try, if you have the means, is to download, compile, and install the newest apache 1.3.x to see if you get better performance. The configs are essentially the same, so there'd probably be only minor tweaking to get the test running. (I don't know exactly what you're doing, so I can't say for certain what would or would not need changed

)
Even further, I saw where you had the max clients set to "300" which is too high for how much ram you're using on each process. If you're using between 6 and 9mb memory, let's assume 8 for this little bit of math. You're supposed to divide your total ram (2048mb) minus system overhead, which I'll just be simple and assume 32mb, by the amount of memory each process takes up (8mb). That leaves us with this
(2048 - 32) / 8 = 252
To be even a little more cautious, I'd set max clients to 250. This will avoid having apache to swap out, because the maximum amount of apache processes won't exceed your available ram.
Alright, so that's a little summary of what has already been said, with a little more of my own experience. If you'd like, I can take a look at your machine free of charge. It's 5am, and I'm bored
