FAQ: Solaris Kernel tunables
By user12611852 on Nov 19, 2007
On the internal mail aliases within Sun, I see these questions asked frequently about Solaris kernel tunables.
Where can I find out about kernel tunables?
What should I do with my /etc/system file when I upgrade from Solaris 8 or 9 to 10?
Solaris kernel tunables change in their usage and default values from one revision to the next or even one update to the next. To help you keep up with these changes we include a change history appendix for the manual. For example, in Solaris 10 we completely removed some parameters (more on that later) and added new ones. In fact, if you ask most of our kernel engineers about /etc/system, they'll describe it as a "bug that needs to be removed." Their goal is to make the OS kernel completely adaptive and (where it can't determine the best value automatically) tunable online without requiring the reboot that /etc/system needs to take effect. Just as a modern car doesn't need manual choke (remember that?), manual spark advance or carb tuning, we would like Solaris to adjust dynamically to changes in memory size, CPU configuration and I/O load.
We suggest that you review all of the tunable parameters in the file to see if they still apply or need to be adjusted. In many cases, Solaris 10 will perform for you perfectly well if you remove the prior parameters, get a new performance baseline and then (if necessary) make your modifications.
What happened to the shared memory and semaphore settings required by Oracle?
You'll be happy to learn that these are NO LONGER adjusted in /etc/system. In Solaris 10 release, all System V IPC facilities are either automatically configured or can be controlled by resource controls. Resource controls allow IPC settings to be made on a per-zone, per-project or per-process basis on the local system or in a name service environment. Many applications that previously required system tuning to function might now run without tuning because of increased defaults and the automatic allocation of resources. This change has several specific benefits including:
- Reboot is no longer required to change them increasing availability
- The larger defaults may mean that no operator intervention is required simplifying systems management.
- They can be tuned differently for different Oracle instances or Containers within a single system increasing flexibility
- Allows centralized control via a naming service such as LDAP
How do I know what to change and when?
The actual process of performance management and tuning the OS is beyond the scope of this article. Keep in mind, however, that a "well behaved" system should show between 20-25% "system time" in vmstat. Tuning the kernel can reduce this "system time" overhead. However, even if you are really good at it and get a 10% improvement, that only takes your system down to 18-23%. Your time is probably better spent looking at your application or disk layout.
Jim Mauro and Rich McDougall have written excellent books about Solaris
Internals which address some of the actions you can take in excruciating detail.
See their Solaris Internals wiki for more FAQ and to purchase the books.
Why should you care?
The enhancements made to system tunables are designed to make your life easier when using Solaris, reduce your downtime and simply system management and performance analysis. By removing as many of the "wacky knobs" as possible, we reduce the potential for errors and downtime.