Fév 012016
 

Dans mon environnement, se trouvent des « vieux » ESX(i)s 4.1 qui se font régulièrement jeter par le vCenter.
Après avoir fait les vérifications de base (firewall, heartbeat,…), nous avons constaté que le problème venait de la vérification des certificats SSL.
Windows vérifie régulièrement que les certificats utilisés ne sont pas sur une liste de certificats révoqués. Pour ce faire, le PC (dans ce cas ci, le vCenter) se connecte chez Microsoft pour obtenir cette liste.
Or, nous n’avons pas autorisé cette connexion réseau, et donc, timeout, et le vcenter continue sa vie sans probleme.

MAIS, dernièrement, notre équipe réseau préférée a fait un changement dans la topologie et maintenant, les paquets ne sont plus justes droppés, mais rebondissent entre 2 routeurs jusqu’à la fin de leur TTL. Et donc, le timeout dure plus longtemps que prévu… et vCenter (et les ESX(i)s 4.1) n’aiment pas ça du tout.

Nous avons donc désactivé la Policy qui vérifie cette liste de certificats révoqués, et… plus AUCUN problème.

La Policy :
Local Computer Policy
-> Computer configuration
–> Windows Settings
—> Security Settings
—-> Public key Policies
====> Certificate Path Validation Settings
=====> Network retrieval
======> Define these Policy settings : aucune case cochée.

Bon, c’est moins sécurisé, mais… ça fonctionne.

Juin 262015
 

Cela fait un moment que j’essaye de trouver le juste ?quilibre entre l’allocation de ressource et ce que les utilisateurs demandent.
Tr?s souvent, c’est TRES largement sur-?valu?. Bien sur, VMware ESXi s’en sort tr?s bien et optimise ? la vol?e, mais… j’aime pas.
J’ai donc cherch? comment mesurer les ressources r?ellement utilis?es et j’en suis arriv? ? ces conclusions:

  • VMware montre ce que les VMs utilisent REELLEMENT.
    • Si vous d?marrez un Windows et le laissez ? ne rien faire pendant des jours, VMware vous montrera une utilisation de quelques centaines de Mo, pas plus. Or, si vous regardez le Gestionnaire des taches, vous constaterez une utilisation de 2 Go… Comment Est-ce possible?
    • VMware note ce qui est r?ellement utilis?. Or, Windows ne fout rien… Donc, VMware montre qu’il n’utilise rien..
  • Windows r?serve ses ressources pour le cas o?. Typiquement, un SQL Server va manger la quasi totalit? de RAM disponible pour lui tout seul (gourmand) alors que potentiellement, il n’en utilise que quelques Mo… Gourmand !
    • Un bon DBA pourra limiter l’utilisation de la RAM par SQL Server pour ?viter qu’il ne vampirise toute la RAM.

Mais comment trouver la « v?rit? » dans ce merdier? Ben… En mesurant les 2 et en r?fl?chissant.

Les 3 sont :

  1. Utilisation r?elle (VMware side)
  2. Utilisation Windows
  3. Le croisement des deux

Allons-y :

1. Ressources sur les 5 derniers jours

(au del?, il agr?ge les donn?es, et ca ne veux plus rien dire)

Function Get-TrueUsage {
? param ($Name, $Start=((get-date).adddays(-5)), $End=(get-date))
# Usage : Get-TrueUsage -Name VM01 -Start ((get-date).addMonths(-2)) -End (get-date)

? $MyVM=Get-VM -Name $name
? $MyVMView=$MyVM | get-view

? $obj=New-Object PSObject
? $obj | add-Member Noteproperty -name Name -value $Name
? $obj | add-Member Noteproperty -name Datacenter -value $MyVM | Get-Datacenter

? $StatsESX= $MyVM | select Name, @{n="AssignedMemory";e={$_.MemoryGB*1024*1024}}, @{n="HostMemoryUsage";e={$_.ExtensionData.Summary.QuickStats.HostMemoryUsage*1024}} 
? $StatsMemGuest=? Get-Stat -Entity ($MyVM ) -Start $Start -Finish $End -Stat mem.active.average | measure -max -min -Average Value
? $StatsCpuGuest=? Get-Stat -Entity ($MyVM ) -Start $Start -Finish $End -Stat cpu.usage.average? | measure -max -min -Average Value

? $obj | add-Member -MemberType Noteproperty -name AssignedMem?? -value $StatsESX.AssignedMemory
? $obj | add-Member -MemberType Noteproperty -name HostUsedMem?? -value $StatsESX.HostMemoryUsage

? $obj | Add-Member -MemberType NoteProperty -Name CPUSocket???? -Value ($MyVMView.config.hardware.NumCPU/(@{$true=$MyVMView.config.hardware.NumCoresPerSocket;$False=1}[$MyVMView.config.hardware.NumCoresPerSocket -gt 0 ]))
? $obj | Add-Member -MemberType NoteProperty -Name Corepersocket -Value @{$true=$MyVMView.config.hardware.NumCoresPerSocket;$False=1}[$MyVMView.config.hardware.NumCoresPerSocket -gt 0 ]

? $obj | add-Member -MemberType Noteproperty -name GuestMaxMem?? -value (($StatsMemGuest.Maximum) )
? $obj | add-Member -MemberType Noteproperty -name GuestMinMem?? -value (($StatsMemGuest.Minimum) )
? $obj | add-Member -MemberType Noteproperty -name GuestAvgMem?? -value ([math]::round($StatsMemGuest.Average) )

? $obj | add-Member -MemberType Noteproperty -name MemPrivShar?? -value ($MyVM.ExtensionData.Summary.QuickStats.PrivateMemory + $MyVM.ExtensionData.Summary.QuickStats.SharedMemory)

? $obj | add-Member -MemberType Noteproperty -name GaspillageMem -value (([Math]::round((1-($StatsMemGuest.Maximum/$StatsESX.AssignedMemory)) *10000 ))/10000 )

? $obj | Add-Member -MemberType NoteProperty -Name GuestMaxCpu?? -value ([Math]::round(($StatsCpuGuest.Maximum)*100 )/10000)
? $obj | Add-Member -MemberType NoteProperty -Name GuestMinCpu?? -value ([Math]::round(($StatsCpuGuest.Minimum)*100 )/10000)
? $obj | Add-Member -MemberType NoteProperty -Name GuestAvgCpu?? -value ([math]::round(($StatsCpuGuest.Average)*100 )/10000)

? $obj | add-Member -MemberType Noteproperty -name GaspillageCpu -value ([Math]::truncate($MyVMView.config.hardware.NumCPU - ($MyVMView.config.hardware.NumCPU*($StatsCpuGuest.Maximum/100))))

## WMI
? try{
??? $WMIPageFile=Get-WmiObject Win32_PageFileUsage -ComputerName $MyVM | select Name,CurrentUsage,AllocatedBaseSize,PeakUsage,TempPageFile
? } catch {
??? $WMIPageFile=''|select Name,CurrentUsage,AllocatedBaseSize,PeakUsage,TempPageFile 
? }

? $obj | Add-Member -MemberType NoteProperty -Name SwapFile????????? -value ($WMIPageFile.Name)
? $obj | Add-Member -MemberType NoteProperty -Name SwapCurrentUsage? -value ($WMIPageFile.CurrentUsage)
? $obj | Add-Member -MemberType NoteProperty -Name SwapAllocatedSize -value ($WMIPageFile.AllocatedBaseSize)
? $obj | Add-Member -MemberType NoteProperty -Name SwapPeak????????? -value ($WMIPageFile.PeakUsage)

? # Calculs recommandations

? # Pic m?moire + 20% et ensuite par blocks rond
? $NewMem=$obj.GuestMaxMem *1.2 /1024
? switch ($true) {
??? ( $NewMem -gt 4096) {$NewMem=([Math]::Truncate($NewMem / 2048)+1)*2048;break}
??? ( $NewMem -gt 3072) {$NewMem=4096;break}
??? ( $NewMem -gt 2048) {$NewMem=3072;break}
??? ( $NewMem -gt 1024) {$NewMem=2048;break}
??? ( $NewMem -gt 512)? {$NewMem=1024;break}
??? default???????????? {$NewMem=512;break}
? }

? # Pic CPU 
? $NewCpu=[System.Math]::Round($obj.GuestMaxCpu * $obj.CPUSocket * $obj.Corepersocket ,0)
? if (($obj.CPUSocket + $obj.Corepersocket) -gt 2 -and $NewCpu -le 1 ) {$NewCpu=2}
? if ($NewCpu -le 1 ) {$NewCpu=1}

? $obj | Add-Member -MemberType NoteProperty -Name RecommendedMemory -value $NewMem
? $obj | Add-Member -MemberType NoteProperty -Name RecommendedCpu??? -value $NewCpu

? $obj
}

Le Performance Monitor

Ce truc peux sauver tout un tas de compteur de votre machine. Les ressources sont quasiment illimit?es, une vrai mine d’or.

REM Delete the counter if it allready exist.
logman STOP VMWARE_AUDIT_MEMORY
logman DELETE VMWARE_AUDIT_MEMORY 
REM Create the counter
logman CREATE counter VMWARE_AUDIT_MEMORY -f bincirc -max 500 -si 2 --v -o "C:\perflogs\VMWARE_AUDIT_MEMORY" -c "\Memory\Available MBytes"

REM We need to delete the old file as the DataCollector does not support an existing file.
del C:\perflogs\VMWARE_AUDIT_MEMORY.blg
logman START VMWARE_AUDIT_MEMORY

Le m?lange des 2

Bon, ben… J’en suis pas encore l?…

On va comparer l’utilisation r?elle VMware (get-stat), les ressources utilis?es par la VM (perfmon), la swap (wmi),…

 

Fév 082015
 

Comme certains l’ignorent peut ?tre, mais les performances sont fortement impact?es en cas de snapshot. Lorsque l’hyperviseur doit rechercher le contenu d’un secteur disque, il va voir dans le? snapshot courant s’il le trouve. S’il ne le trouve pas, alors, il va voir dans le snapshot pr?c?dent, et ainsi de suite jusqu’? revenir au fichier VMDK original? (s’il doit revenir jusque l?, sinon, il s’arr?te d?s qu’il a trouv? ce qu’il cherche.. Ca peux se traduire par un volume de donn?e fort important pour pas grand chose…

Capture

Voici un exemple sous VMware Workstation d’un exemple de copie de fichiers Dans ce cas pr?cis, les donn?es sont sur le snapshot, peu d’impact sur le VMDK original except? les binaires pour la copie elle-m?me et des infos de l’OS sur les secteurs libres… Par contre, si je copie un fichier qui n’?tait pas dans le snapshot, l’impact est diff?rent:

Capture2

Bref… Evitez les snapshot autant que possible.. Et surtout, les snapshot en cascade a chaque click (Hein Olivier 😉 ) Le Olivier en question avait une VM sur disque USB3 avec des performances catastrophiques. Effectivement, une bonne dizaine de snapshot, ca impacte FORTEMENT. (Je ne vous raconte pas les temps de consolidation qui a ?t? n?cessaire) A+ les jeunes !