Update 20130105
The default CFQ I/O scheduler is a poor choice for guest virtual machines (and most systems). You’ll want to modify it. I used to just recommend setting the scheduler to deadline, but there’s an easier method now for RHEL/CentOS systems…
The best way to handle that and a couple of other tunables is to download the tuned framework and apply a better profile to the system.
In your case:
yum install tuned tuned-utils
Once installed, try one of the appropriate profiles. For VM’s, I either do enterprise-storage
orvirtual-guest
. Test and see which works best for you. A reboot is NOT required between profile changes.
tuned-adm profile virtual-guest
The reasoning:
Det finns en himla massa parametrar att tänka på när man ska sätta upp en virtuell linuxserver.
De första sakerna man tänker på är, hur mycket disk, hur mycket minne, hur många processorer behövs?
Sen kommer det roliga in i det hela, hur ser den virtuella hosten/klustret ut?
Den här sammanfattningen kommer i två delar, nr ett är vad gör man på OS nivå? och nummer två, hur konfigurar man VM:en för att ha bästa möjliga förutsättningar?
Mycket kommer från http://blogs.vmware.com/guestosguide/ och lite varstans på nätet.
Del ett, Linux, framförallt inriktat på CentOS/RHEL
Installera alltid VMWare tools, alltid bättre prestanda med deras minne, nätverk och diskdrivrutiner.
http://packages.vmware.com/tools
Ändra till din version av ESX host
[vmware-tools] name=VMware Tools for Red Hat Enterprise Linux $releasever – $basearch baseurl=http://packages.vmware.com/tools/esx/latest/rhel6/$basearch enabled=1 gpgcheck=1 gpgkey=http://packages.vmware.com/tools/keys/VMWARE-PACKAGING-GPG-RSA-KEY.pub
Kör
rpm --import http://packages.vmware.com/tools/keys/VMWARE-PACKAGING-GPG-RSA-KEY.pub
för att importera VMWare rpm nyckel
Med vmware tools installerat kan vmhost:en använda Page sharing, Ballooning och Swapping på ett effektivare sätt.
sysctl.conf – minneshantering
I /etc/sysctl.conf vm.swappiness = 0 vm.overcommit_memory = 1 vm.dirty_background_ratio = 5 vm.dirty_ratio = 10 vm.dirty_expire_centisecs = 1000 dev.rtc.max-user-freq = 1024
GRUB.CONF – Kernelrader
Sen har vi hur själva kerneln anropas också, i grub.conf
noapic nolapic apci=off elevator=noop divider=10
Man kan även lägga till ”divider=10” för att interrupt timern till 100Hz
”Here’s some feedback. Host = 2 x 2.8GHz CPU x86_64. Two VMs, one is 2 CPU x86_64, the other is 2 CPU i686. When both vm’s are idle, host CPU hovers around 50%. Using 2.6.9-55.0.9 kernel in host and guests. With the 100HZ kernels (i686 and x86_64) deployed in the guests, host cpu now hovers around 8% when vm’s are idle”
elevator = noop, varför man ska ha detta i RHEL/CentOS? man kan läsa från vissa tester på nätet ”But on Centos 5 the Difference was factor 4 – 5, which I could not reproduce with other Linux-Versions. CFQ with Centos was unusable.”
Jag kan bara dra samma slutsats själv, CFQ är rena döden för VM:en på just CentOS/RHEL MEN som en del skriver, det kan inte upprepas på andra distributioner. Noop elevator ger en stor prestandaökning i RHEL/CentOS.
acpi=off
”Our Linux host needs an acpi=off kernel parameter,
Our host has a hyperthreaded CPU and so with acpi=off, we suspect that we loose that performance advantage. ”
Från VMWare kan man läsa att clocksource=acpi_pm inte behövs efter version 5.3 av RHEL/CentOS
Om din klocka saktar in, lägg till nosmp noapic nolapic optioner till din gästs kernel rad i /boot/grub/grub.conf
I/O Prestanda
För att slippa ”onödig” I/O till disk, rekommenderas att man lägger till noatime i fstab, en rad skulle då kunna se ut såhär
/dev/VolGroup00/LogVol00 / ext3 defaults,noatime 1 1
Har man inget krav på att kunna se när en fil senast accessades så är det en bra sak att lägga till.
Hur håller man sina VM:ar i klocksynk? rekommendationen från VMWare är att köra NTP eller något liknande tidsprotokoll. Om man använder VMWare-tools för att hålla tiden i synk kan man behöva lägga till clock=pit kernel parameter för att undvika att klockan drar sig (clock drifting).
VMWare har själva skrivit en ”best practice” för tidshållnng i gäster http://kb.vmware.com/kb/1006427 ”Timekeeping best practices for Linux”