Portál AbcLinuxu, 12. května 2025 15:46

Dotaz: Linux virtualizovany v ESX a pomale syscall-y

5.2.2010 18:18 jano
Linux virtualizovany v ESX a pomale syscall-y
Přečteno: 145×
Odpovědět | Admin
V praci mame 2 fyzicke stroje. Oba maju rovnaky HW, CPU, ktore tam je: Intel(R) Xeon(R) CPU E5420 @ 2.50GHz Prvy je obycajny linux priamo na HW. A na druhom bezi ESX (verzie 4) a v nom virtualizovany Linux, ktory by mal byt takmer identicky, co sa tyka kernelu aj nastaveni s tym prvym. Verzia kernelu: (trochu stara, ale kvoli staremu projektu nutna):
Linux x 2.4.21-53.ELhugemem #1 SMP Wed Nov 14 03:46:17 EST 2007 i686 i686 i386 GNU/Linux Problem je, ze virtualizovany linux bezi pomalsie. Cital som, ze overhead je okolo 8%, s cim by som dokazal zit. Avsak v skutocnosti je spomalenie vyraznejsie a je mozne ho postrehnut pri praci v konzole.

Urobil som 2 test. programiky na porovnanie vykonu:
Prvy robi len extenzivne operacie v userspace (jeden loop v ktorom to pocita nejake cislo). V tomto pripade je ESX Linux trochu pomalsi, ale pohybuje sa to okolo 8-10%.
Druhy program robi len systemove volania - "close(0);" v cykle. A tu uz je kamen urazu, pretoze overhead sa dostava na hranicu 1200%.


Linux priamo na HW:
% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
 99.65    0.963257          10    100002     99999 close
  0.15    0.001403          33        43        41 open
  0.14    0.001368          34        40        36 stat64
  0.06    0.000566         566         1           execve
  0.00    0.000027           5         5           old_mmap
  0.00    0.000007           4         2           fstat64
  0.00    0.000006           6         1           read
  0.00    0.000006           6         1           munmap
  0.00    0.000004           4         1           uname
  0.00    0.000003           3         1           brk
------ ----------- ----------- --------- --------- ----------------
100.00    0.966647                100097    100076 total
 
real    0m4.613s
user    0m0.760s
sys     0m3.730s


Linux cez ESX:
% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
 77.76   17.1206772         182    100002     99999 close
  3.01    0.703602      703602         1           execve
  2.99    0.700382      700382         1           set_thread_area
  2.99    0.700337      700337         1           munmap
  2.99    0.700328      700328         1           uname
  2.99    0.700123      700123         1           read
  2.99    0.700108      700108         1           brk
  2.14    0.500571      100114         5           old_mmap
  1.71    0.400229      200115         2           fstat64
  0.43    0.100360       33453         3         1 open
------ ----------- ----------- --------- --------- ----------------
100.00   23.412812                100018    100000 total
 
real    0m48.434s
user    0m5.410s
sys     0m40.610s
Nemate napady, preco je Linux v ESX tak spomaleny?
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

5.2.2010 23:53 kyytaM | skóre: 35 | blog: kyytaM | Bratislava
Rozbalit Rozbalit vše Re: Linux virtualizovany v ESX a pomale syscall-y
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pokial virtualny stroj vykonava kod, ktory nevyzaduje privilegovane instrukcie, spomalenie je minimalne (kod je vykonavany de facto "nativne", netreba zasahy hypervizora). V pripade privilegovanych instrukcii musi nastupit v pripade x86/x86_64 nejaka virtualizacna technika (rozne virtualizacne nastroje pozuivaju rozne virtualizacne techniky), ktora zabezpeci konzistenciu VM (cize kazda problematicka instrukcia, ktora ma byt vykonana, sa musi nejako "ofajcit") a performance hit je uz citelny. :)

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.