Neste documento quero apresentar as conclusões dos testes que efectuámos com o Vmware instalado no SO Windows em comparação com o Linux. Nestes testes tentou-se recriar uma situação de uso intensivo em cada máquina virtual e tentar quantificar esse desempenho em relação ao mesmo cenário em ambiente Linux para verificar em qual das plataformas existirá maior desempenho com um determinado número de máquinas virtuais em funcionamento.
Como na altura dos testes não existia software Benchmark específico para máquinas virtuais, usámos software convencional que em alguns casos os valores resultantes não parecem corresponder á realidade e mesmo entre softwares existem diferenças signficativas, por isso este estudo deve ser tido somente em conta como referência.
Preparação
Testes efectuados entre Abril e Junho de 2007. Para os testes optou-se por uma configuração de 384Mb nas máquinas virtuais pois testou-se 512Mb e o desempenho é praticamente o mesmo, assim poupámos memória para criar mais máquinas virtuais. Para uma utilização normal com antivirus e outro software deverá ter melhor desempenho usando 512Mb.
Em termos de carga de operação optou-se pela carga exercida pelo proprio software de benchmarking a correr em simultâneo em todas as MV.
Como servidor usámos a seguinte configuração: 2x Xeon
QuadCore? E5310 1.6Ghz com 8Gb Ram e discos SAS com a
Virtualização por Hardware (
VT) activada. Configuração das Máquinas Virtuais: Windows XP SP2 com 384 Mb RAM e disco IDE
Teste Windows Server 2003 32bits
| Benchmark | Nome do Teste | Máquina Física | 1 MV | Média 8 MV | Média 16MV |
| Passmark |
| | CPU - Integer Math | 575,6 | 70,9 | 65,03 | 43,16 |
| | CPU - Floating Point Math | 1558,5 | 190,7 | 172,14 | 105,82 |
| | CPU - Find Prime Numbers | 901,5 | 267,6 | 243,26 | 164,83 |
| | CPU - SSE/3DNow! | 13894,6 | 1642,7 | 1549,68 | 983,83 |
| | CPU - Compression | 14486,4 | 1800,5 | 1683,19 | 1219,27 |
| | CPU - Encryption | 87,5 | 10,8 | 10,35 | 7,66 |
| | CPU - Image Rotation | 2885,5 | 363,1 | 327,73 | 224,62 |
| | CPU - String Sorting | 9297,9 | 1295,8 | 1065,11 | 713,97 |
| | Graphics 2D - Lines | 965,2 | 46,5 | 19,89 | 9,97 |
| | Graphics 2D - Rectangles | 658,5 | 71,2 | 31,6 | 16,97 |
| | Graphics 2D - Shapes | 438,1 | 18 | 7,68 | 4,24 |
| | Graphics 2D - Fonts and Text | 1092 | 63,1 | 25,88 | 13,73 |
| | Graphics 2D - GUI | 1330,3 | 82,5 | 46,8 | 27,81 |
| | Memory - Allocate Small Block | 1619,3 | 1541,4 | 1443,46 | 1145,95 |
| | Memory - Read Cached | 1235,9 | 1213,2 | 1141,29 | 869,85 |
| | Memory - Read Uncached | 1217 | 1193,7 | 1098,28 | 715,93 |
| | Memory - Write | 1160,4 | 1116,6 | 745,36 | 365,74 |
| | Memory - Large RAM | 902,4 | 37 | 24,23 | 10,81 |
| | Disk - Sequential Read | 171,5 | 110,9 | 19 | 12,04 |
| | Disk - Sequential Write | 2,9 | 2,65 | 0,79 | 0,45 |
| | Disk - Random Seek + RW | 13,3 | 2,55 | 2,35 | 6,71 |
| | CPU Mark | 3721,6 | 484,4 | 445,38 | 294,17 |
| | 2D Graphics Mark | 3327,1 | 211,7 | 94,76 | 51,01 |
| | Memory Mark | 453,6 | 377,2 | 329,18 | 229,79 |
| | Disk Mark | 679 | 419,8 | 80,11 | 69,51 |
| | 3D Graphics Mark | 66,5 | 66,5 | 66,5 | 66,5 |
| | PassMark Rating | 1696 | 320,3 | 215,78 | 147,82 |
| Sandra |
| | Processor Arithmetic | 98691 | 24010 | 17703,88 | 17853,25 |
| | Processor Multi-Media | 540904 | 117706 | 95977,5 | 101594,63 |
| | Memory Bandwidth | 9020 | 10810 | 5237,38 | 5472,56 |
| | File Systems | 160458 | 112195 | 11986,63 | 6431 |
| | Network Bandwidth | 8202 | 6546 | 5758,5 | 4881,75 |
| | Performance Index | 15519 | 5837 | 2963,13 | 2959,75 |
| Everest |
| | Leitura da memória | 3207 | 68932 | 1399246,25 | 2387447,5 |
| | Escrita da memória | 2740 | 68931 | 68936,88 | 343372,13 |
| | Cópia da memória | 3206 | 68932 | 180584,13 | 456293,19 |
| | Latência da memória | 131 | -5,2 | -23,51 | 48,04 |
| | CPU Queen | 8569 | 1607 | 1436,13 | 1973,31 |
| | CPU PhotoWorxx | 20191 | 10636 | 5998,38 | 6660,75 |
| | CPU Zlib | 82420 | 10560 | 8818,25 | 9610,25 |
| | FPU Julia | 23363 | 2954 | 2451,13 | 2453,63 |
| | FPU Mandel | 11093 | 1461 | 1277 | 1479,5 |
| | FPU SinJulia | 17672 | 2192 | 2013,63 | 2423,88 |
| HDTach-8Mb |
| | Random access ms | 7,5 | 4 | 25,26 | 34,54 |
| | CPU % | 1 | 33 | 9,5 | 7,81 |
| | Average read MB/s | 100,5 | 185 | 61,2 | 38,99 |
| | Burst Speed MB/s | 280,8 | 594,2 | 606,95 | 533,64 |
| HDTach-16Mb |
| | Random access | 7,5 | 3,9 | 21,81 | 44,29 |
| | CPU | 1 | 33 | 10,63 | 11,31 |
| | Average read | 140,1 | 179,9 | 55,61 | 32,11 |
| | Burst Speed | 278,3 | 509,1 | 590,88 | 699,85 |
Teste Linux 32bits
| Benchmark | Nome do Teste | 1 MV | Média 8 MV | Média 16MV |
| Passmark |
| | CPU - Integer Math | 69,5 | 32,45 | 42,18 |
| | CPU - Floating Point Math | 188,7 | 88,41 | 124,69 |
| | CPU - Find Prime Numbers | 265,8 | 124,23 | 180,65 |
| | CPU - SSE/3DNow! | 1624 | 775,82 | 1107,14 |
| | CPU - Compression | 1777,6 | 836,63 | 1269,63 |
| | CPU - Encryption | 10,8 | 5,08 | 7,38 |
| | CPU - Image Rotation | 359,2 | 170,84 | 248,69 |
| | CPU - String Sorting | 1274 | 556,24 | 787,35 |
| | Graphics 2D - Lines | 44,6 | 18,96 | 20,93 |
| | Graphics 2D - Rectangles | 68,2 | 28,97 | 33,63 |
| | Graphics 2D - Shapes | 18,8 | 8,11 | 8,26 |
| | Graphics 2D - Fonts and Text | 78,3 | 32,44 | 51,89 |
| | Graphics 2D - GUI | 77,9 | 31,2 | 45,53 |
| | Memory - Allocate Small Block | 1505,6 | 693,29 | 1087,53 |
| | Memory - Read Cached | 1203,9 | 556,66 | 744,56 |
| | Memory - Read Uncached | 1187,6 | 537,44 | 617,56 |
| | Memory - Write | 1099,9 | 378,93 | 332,04 |
| | Memory - Large RAM | 36,4 | 14,11 | 13,74 |
| | Disk - Sequential Read | 124,9 | 25,61 | 4,93 |
| | Disk - Sequential Write | 2,4 | 0,49 | 0,42 |
| | Disk - Random Seek + RW | 4,1 | 2,4 | 1,88 |
| | CPU Mark | 479,1 | 225,39 | 323,6 |
| | 2D Graphics Mark | 215,6 | 90,61 | 115,86 |
| | Memory Mark | 372,1 | 161,2 | 200,04 |
| | Disk Mark | 475,5 | 103,09 | 26,04 |
| | 3D Graphics Mark | 66 | 33,25 | 66,5 |
| | PassMark Rating | 329,6 | 126,16 | 151,84 |
| Sandra |
| | Processor Arithmetic | 11852 | 5073,25 | 9614,94 |
| | Processor Multi-Media | 65146 | 27738,38 | 51641,75 |
| | Memory Bandwidth | 5374 | 1499,06 | 2755,25 |
| | File Systems | 214590 | 2133,44 | 1946,44 |
| | Network Bandwidth | 5978 | 3151,63 | 6456,25 |
| | Performance Index | 5533 | 858,5 | 1554,31 |
| Everest |
| | Leitura da memória | 68950 | 34476,38 | 68968 |
| | Escrita da memória | 68938 | 34471,25 | 68942,31 |
| | Cópia da memória | 68944 | 34470,94 | 68950,44 |
| | Latência da memória | 0 | -0,19 |
| | CPU Queen | 1596 | 639,06 | 652,31 |
| | CPU PhotoWorxx | 9098 | 2914,31 | 2918,63 |
| | CPU Zlib | 10404 | 4064,38 | 3996,25 |
| | FPU Julia | 2930 | 1147,13 | 1225,38 |
| | FPU Mandel | 1427 | 580,5 | 721,44 |
| | FPU SinJulia | 2177 | 884,38 | 1229,44 |
| HDTach-8Mb |
| | Random access | 5,3 | 24,51 | 94,68 |
| | CPU | 7 | 2,25 | 4,06 |
| | Average read | 100,1 | 24,81 | 41,41 |
| | Burst Speed | 475,1 | 328,99 | 635,83 |
| HDTach-16Mb |
| | Random access | 0,1 | 19,81 | 93,41 |
| | CPU | 11 | 2,81 | 4,88 |
| | Average read | 89,1 | 19,31 | 28,02 |
| | Burst Speed | 491,5 | 261,58 | 611,16 |
Teste Windows 2003 64bits SCSI
| Benchmark | Nome do Teste | Máquina Física | 1 MV | Média 16MV |
| Passmark |
| | CPU - Integer Math | 1496,5 | 69,5 | 44,43 |
| | CPU - Floating Point Math | 2023,1 | 187,3 | 95,08 |
| | CPU - Find Prime Numbers | 677,9 | 264,3 | 152,7 |
| | CPU - SSE/3DNow! | 12239 | 1603 | 745,02 |
| | CPU - Compression | 16934,3 | 1772,4 | 779,29 |
| | CPU - Encryption | 90,3 | 10,7 | 45,87 |
| | CPU - Image Rotation | 6175,7 | 357,3 | 451,59 |
| | CPU - String Sorting | 9068,9 | 1263 | 453,12 |
| | Graphics 2D - Lines | 1281,2 | 35,7 | 17,14 |
| | Graphics 2D - Rectangles | 879,7 | 61,4 | 28,51 |
| | Graphics 2D - Shapes | 635,8 | 12,3 | 8,01 |
| | Graphics 2D - Fonts and Text | 1501,5 | 53,3 | 31,3 |
| | Graphics 2D - GUI | 1604,1 | 75,3 | 29,7 |
| | Memory - Allocate Small Block | 1570,1 | 1500,5 | 922,07 |
| | Memory - Read Cached | 1403,3 | 1194,4 | 553,14 |
| | Memory - Read Uncached | 1368,1 | 1178,3 | 493,69 |
| | Memory - Write | 1185 | 1099,4 | 255,88 |
| | Memory - Large RAM | 2296,8 | 35,4 | 12,93 |
| | Disk - Sequential Read | 479,9 | 188,9 | 103,29 |
| | Disk - Sequential Write | 190,7 | 38,5 | 5,94 |
| | Disk - Random Seek + RW | 31,3 | 204,3 | 123,12 |
| | CPU Mark | 4212,7 | 474,5 | 216,02 |
| | 2D Graphics Mark | 4462 | 175,1 | 86,85 |
| | Memory Mark | 578,4 | 370,2 | 165,45 |
| | Disk Mark | 2538,6 | 1561,6 | 777,78 |
| | 3D Graphics Mark | 148,6 | 66,5 | 66,5 |
| | PassMark Rating | 2387,3 | 539,6 | 273,49 |
| Sandra |
| | Processor Arithmetic | 85327 | 12183 | 11151,94 |
| | Processor Multi-Media | 613340 | 66241 | 61057,88 |
| | Memory Bandwidth | 9028 | 5289 | 2310,5 |
| | File Systems | 185194 | 98825 | 8296,44 |
| | Network Bandwidth | 8168 | 7176 | 6568,25 |
| | Performance Index | 15818 | 3716 | 1800,56 |
| Everest |
| | Leitura da memória | 3211 | 68938 | 68960,38 |
| | Escrita da memória | 2748 | 68939 | 69018,81 |
| | Cópia da memória | 3211 | 68938 | 68972,5 |
| | Latência da memória | 130,8 | 0 | -6,33 |
| | CPU Queen | 8598 | 1588 | 776,5 |
| | CPU PhotoWorxx | 20086 | 8985 | 2514,88 |
| | CPU Zlib | 76555 | 10411 | 4457 |
| | FPU Julia | 23396 | 2912 | 1298,19 |
| | FPU Mandel | 11116 | 1443 | 773,63 |
| | FPU SinJulia | 17711 | 2167 | 1279,88 |
| HDTach-8Mb |
| | Random access (ms) | 7,4 | 3,4 | 30,34 |
| | CPU (%) | 1 | 41 | 6,38 |
| | Average read (MB/s) | 103,8 | 278 | 153,21 |
| | Burst Speed (MB/s) | 540,9 | 699 | 537,49 |
| HDtach-16Mb |
| | Random access | 7,4 | 2,9 | 30,89 |
| | CPU | 1 | 41 | 4,5 |
| | Average read | 148,2 | 212,2 | 91,78 |
| | Burst Speed | 201,8 | 697,5 | 532,15 |
Outros Testes
De acordo com os testes efectuados, e devido á particularidade de os programas estarem a ser executados em máquinas virtuais em vez de máquinas físicas, os resultados variam muito entre programas e não poderão ser encarados com muito rigor, devido a isto usei o software Passmark que me pareceu o que apresentava os resultados mais credíveis para proceder a pequenos testes com outro tipo de configurações.
Teste PassMark Windows 2003 64bits e MV 64bits SCSI
| Nome do Teste | Máquina Física | 1 MV | Média 16MV |
| CPU - Integer Math | 1496,5 | 182,1 | 135,09 |
| CPU - Floating Point Math | 2023,1 | 244,8 | 185,29 |
| CPU - Find Prime Numbers | 677,9 | 221,8 | 141,39 |
| CPU - SSE/3DNow! | 12239 | 1502,8 | 1097,77 |
| CPU - Compression | 16934,3 | 2128,9 | 1554,33 |
| CPU - Encryption | 90,3 | 11,1 | 7,38 |
| CPU - Image Rotation | 6175,7 | 760,6 | 452,33 |
| CPU - String Sorting | 9068,9 | 1248,5 | 636,88 |
| Graphics 2D - Lines | 1281,2 | 51,1 | 14,07 |
| Graphics 2D - Rectangles | 879,7 | 97,7 | 31,11 |
| Graphics 2D - Shapes | 635,8 | 21 | 9,71 |
| Graphics 2D - Fonts and Text | 1501,5 | 63,1 | 174,28 |
| Graphics 2D - GUI | 1604,1 | 124,1 | 25,26 |
| Memory - Allocate Small Block | 1570,1 | 1474 | 1114,26 |
| Memory - Read Cached | 1403,3 | 1322,8 | 1114,21 |
| Memory - Read Uncached | 1368,1 | 1279,2 | 914,16 |
| Memory - Write | 1185 | 1065,1 | 590,51 |
| Memory - Large RAM | 2296,8 | 15,8 | 7,35 |
| Disk - Sequential Read | 479,9 | 121,3 | 85,07 |
| Disk - Sequential Write | 190,7 | 77 | 7,3 |
| Disk - Random Seek + RW | 31,3 | 20,9 | 5,82 |
| CD – Read | 1,21 | 1,1 | 5,82 |
| CPU Mark | 4212,7 | 548,5 | 365,56 |
| 2D Graphics Mark | 4462 | 261,6 | 182,33 |
| Memory Mark | 578,4 | 381,3 | 276,54 |
| Disk Mark | 2538,6 | 792,9 | 355,02 |
| CD Mark | 148,6 | 139 | 17,57 |
| PassMark? Rating | 2387,3 | 424,4 | 246,59 |
Conclusão
Como podemos ver, ter as MV a 64bits não significou melhoria no teste, antes pelo contrário, por isso é que os testes anteriores foram efectuados com MV a 32bits. Ter o servidor a 64bits é que já significa uma diferença superior a 50% de performance em relação á versão de 32bits por isso é aconselhada essa implementação. Quanto á opção de instalar as MV com discos IDE ou SCSI, em termos de performance o SCSI leva vantagem com melhorias na ordem dos 20% a 30%.
Recomendações
Em termos de implementação ideal pode depender muito da tecnologia que está a surgir e do orçamento que se tem disponível, mas em termos gerais recomendamos servidores de marca e já preparados para a virtualização, claro que isto é muito subjectivo por isso quero somente referenciar algumas características que é importante ter em conta para tirarmos o melhor rendimento do nosso investimento. Para uma solução de 20 MV com uma carga normal de trabalho de escritório recomendamos um processador Quadcore com 8gb ram, se puder adquirir discos SAS tanto melhor. Para uma menor quantidade de máquinas no minimo seria um Core 2 Duo da série E6300 ou superior pois só estes suportam a tecnologia VT que pode ser preciso activar na Bios. Para quem quiser ter um optimo desempenho para muitas MV aconselha-se o
Xeon 7300 que tem melhorias significativas na tecnologia VT.
Em qualquer da opção que se faça considere também a opção de duplo processador ou seja com um único Xeon Quadcore terá 4 processadores físicos atribuídos á virtualização mas com 2 Xeon terá 8 processadores para a virtualização fazendo com que o desempenho seja muito melhor.
Quanto ao software de virtualização a utilizar também temos uma grande variedade de soluções, embora os testes que efectuámos fossem com o Vmware Server 1.0.3 por ser uma solução gratuita, mas o que é um facto é que existem soluções no mercado os chamados
hypervisor que têm desempenhos melhores mas que a maior parte tem um valor bastante elevado embora com outras vantagens.
Como se pode perceber, quando se tem um orçamento limitado fazer a escolha certa não é fácil mas é uma decisão que poderá significar o sucesso ou o fracasso da mudança para esta tecnologia.