Przełączyliśmy się na nowy serwer programisty i przekonaliśmy się, że nasz pakiet testowy potrzebuje dwa razy tyle czasu, co. Przetestowaliśmy bazę danych, system plików itp., Ale te rzeczy są dość szybkie, nawet szybciej niż wcześniej.Ruby działa wolno na maszynie wirtualnej w zależności od silnika wirtualizacji.
Więc napisałem mały test porównawczy rubin (Fibonacciego) i wykonywane go kilka razy (średnio poniżej):
time_start = Time.now
f = lambda { |x| x < 2 ? x : f.call(x-1) + f.call(x-2) }
f.call(35)
time = Time.now - time_start
puts "#{time.round(4)}s needed"
urządzenia przed z XEN: 6s
Maszyna po z OpenVZ: 11,5
Na obu komputerach jest Debian Squeeze z zainstalowanym RVM (-> skompilowane) Ruby-1.9.3-p194. Nie ma dużego obciążenia na tych maszynach, pamięć też jest w porządku.
Mniej lub więcej jedyna różnica to silnik wirtualizacji. W produkcji używamy VMware ESXi. Benchmark potrzebuje tam około 11s. Przetestowaliśmy inny serwer z KVM, tam potrzeby benchmarkowe 2,5s.
- Maszyna z XEN: 6s
- Maszyna z OpenVZ: 11,5s
- automat z VMware ESXi: 11s
- maszyna z KVM: 2,5s
Co możemy zmienić w naszej wirtualizacji, aby nasz rubin był szybszy? A może masz inny pomysł, jaki może być problem?
intersting pytanie, ale moim zdaniem trudno porównać odniesienia na różnych technologiach wirtualizacji! – Robin
@Sam: Niestety, nie mamy innego pojęcia, jaki to może być problem ... – MMore
Uruchomiłbym test porównawczy nie-Ruby na wszystkich systemach, aby upewnić się, że problem jest związany z Rubinem. Czy wszystkie komputery są 64-bitowe? – claasz