In my last 2 blogposts I covered how Oracle instance parameters change based on cpu_count at startup, and also what's the minimum requirement for SGA size.
But there is more to discover! Modern systems can change the number of CPUs while running. This feature is quite popular in cloud environments but in fact was already available more than 20 years ago.
To see if this has any impact on my (21c) sandbox instance, I used a small "trick" in Linux:
As root I can set a CPU offline (or back online) by
echo 0 > /sys/devices/system/cpu/cpu7/online
This CPU becomes invisible to the processes - it also "disappears" in /proc/cpuinfo.
At every change, the alert.log shows an entry like (The sampling frequency was 70 sec on my system)
2022-11-20T14:09:12.762038+00:00
Detected change in CPU count to 7
* Load Monitor used for high load check
* New Low - High Load Threshold Range = [0 - 0]
In this case my test was quite small (only 1..8 PCUs) but at least in that range only a small set of parameters changed:
PARAMETER |
---|
cpu_count |
cpu_min_count |
job_queue_processes |
parallel_max_servers |
parallel_servers_target |
cpu_count and cpu_min_count makes sense, the remaining parameters are only related to
parallel and job processes. All of them are following the simple formula cpu_count * 20.
This follows the "normal" derived values for these parameters as shown before.
Again this is nothing tremendous spectacular, but worth to know for performance engineering or analysis in volatile systems: Some parameters change and might lead to unexpected behavior, if the change isn't taken into consideration.