We've got a system that is running RHEL 4 AS 32 bit (2.6.9-42.ELsmp #1 SMP) with 20GB of RAM and 8 dual core processors that runs a Oracle 10g database.
This is overkill, but I am having trouble explaining why. I am also wondering if there could be memory related problems due to the disproportionate system configuration- could the OS could be spending too much resources scheduling the CPUs, etc.?
Thanks
As far as cores vs memory, you're talking about 20GB on 16 cores; that's (optimistically) 1.25 GB per core, which is not a tonne of memory if you really are pinning all 16 cores. We are definitely running systems with higher memory/core ratios than 20GB/16, and our vendor keeps trying to sell us on boxes that can be configured with memory into the many hundreds of GB across 24 cores.
As far as application performance, 16 cores and 20GB of RAM isn't necessarily overspec'd for Oracle; we definitely run systems that big. That said, 20GB of RAM doesn't do much for you when you're running a 32-bit kernel; rebuilding on RHEL5-64 would be a good choice.
You'll also need to have your DBA look into configuring Oracle to take advantage of the large amount of physical memory - our DBAs have 'disabled AMM and configured huge_pages' on our bigger Oracle servers.
Even if the machine is somewhat overspec'd for your current workload (and only long-term stats monitoring will really bear that out), odds are good you'll grow into it; and during periods of unforecasted heavy load, it's nice to have some overhead to play with instead of dying instantly.
Hope that helps!
Unlikely.
What are you using the server for? Only a bit of profiling will tell you whether it's really over-specced or not.
I don't think you will likely have resource issues related to CPU scheduling or memory mapping. These won't happen unless needed. When they do happen, they are relatively low overhead compared to the process that is scheduled.
What I would look at is:
If you are running virtual hosts on the the server you may want to pin the CPU(s) for the host. You may want to do the same for high CPU single threaded processes. Spread the load across CPUs if you do so.