In the process of creating a demo VirtualBox image running OEL 6 and the Oracle database 18.104.22.168.0 I noticed the idle CPU consumption was quite high (8% on the guest, 35% on the host).
The culprit turned out to be the Oracle database vktm process. This is a time keeping process - and it calls gettimeofday() *very* frequently. This can have a negative performance impact in virtualized environments.
A colleague who is a database whiz suggested the following trick:
sqlplus / as sysdba
alter system set "_high_priority_processes"='LMS*' scope=spfile;
This removes the vktm process from the list of high priority processes.
After this change (you need to bounce the database) the idle CPU consumption comes down to 1-2% or so. A nice improvement!
It goes without saying that this is:
a) Totally unsupported
b) Probably dangerous. This will most certainly break things in the database - such as statistics, auditing, etc.
c) For demo/development use only. If you care about your data don't do this!