Difference de perf entre rails 2.3.2 et 2.3.5


#1

Bonjour,

J’ai les deux serveur suivant à disposition :
Serveur 1 :
Intel® 2 core @ 2.66GHz
4 GO de ram
Rails 2.3.2
ruby 1.8.5
gem

Serveur 2
Intel® Xeon® 4 core @ 2.83GHz
8 GO de ram
Rails 2.3.5
ruby 1.8.7
gem 1.3.1

A priori, le serveur 2 devrai être plus rapide. Pourtant, j’ai installer
la même application sur les deux serveur. J’ai une action un peu longue
dans mon appli rails qui génère pas mal de fichiers. Cette action prend
1.5 fois plus de temps sur le server 2 que sur le server 1.

Est ce que vous auriez une idée de ce que je peux vérifier dans la
configuration de rails ou de ruby qui pourrait expliquer cette
différence ?

Cordialement


#2

Le 15/01/10 19:33, Antoine Guero_loco a écrit :

Serveur 2
1.5 fois plus de temps sur le server 2 que sur le server 1.
Si elle génére beaucoup de fichier, il faut comparer aussi la vitesse
d’écriture de tes disques.


#3

2010/1/16 Cyril M. removed_email_address@domain.invalid:

dans mon appli rails qui génère pas mal de fichiers. Cette action prend
Cordialement

As-tu bien la même distribution (linux, bsd, …) sur les 2 machines ?
le même filesystem ? la même version du kernel. Les 2 versions de ruby
sont elles compilées avec les mêmes options et pour la même cible ?

Je te recommandes aussi de faire un test plus précis, isole ta
fonction effectuant le traitement et utilise une lib comme la lib
benchmark standard pour exécuter ton code plusieurs fois et en tirer
une moyenne :
http://ruby-doc.org/stdlib/libdoc/benchmark/rdoc/classes/Benchmark.html


#4

Bonjour,

Merci pour vos réponses. Voici quelques précisions et test que j’ai
fait.

As-tu bien la même distribution (linux, bsd, …) sur les 2 machines ?
Serveur 1 (Duo core 2.6 Ghz ) est sur cent os 5.2 et un noyau 2.6.24
Serveur 2 (quadri core 2.8 GHz) est sur debian 5.0 et noyau 2.6.31

le même filesystem ?
Les deux sont en ext3

Les 2 versions de ruby
Serveur 1 : ruby 1.8.5
Serveur 2 : ruby 1.8.7

sont elles compilées avec les mêmes options et pour la même cible ?
Les deux installations de ruby viennent des packages standards de la
distribution (installé avec yum pour centos et apt-get pour debian)

Je te recommandes aussi de faire un test plus précis, isole ta
fonction effectuant le traitement et utilise une lib comme la lib
benchmark standard pour exécuter ton code plusieurs fois et en tirer
une moyenne :
http://ruby-doc.org/stdlib/libdoc/benchmark/rdoc/classes/Benchmark.html

J’ai fait quelques test supplémentaires :

Test 1 : Rails. J’ai créé l’action suivante :
def test_server_file
10000.times do |i|
str_file = “/home/fluxod/test/test_performance.test#{i}”
file = File.new(str_file, “w”)
10000.times do
file.puts “keskisepasse”
end
file.close
end
end

Cette action prend significativement plus de temps sur le serveur 2
(~260 secondes) que sur le serveur 1 (~200 secondes)

Test 2 : Ruby. J’ai lancé la même fonction en irb, et cette fois ci le
serveur 2 est plus rapide.

Je penche donc vers un problème de
configuration/compilation/installation de rails.

Voila, je sèche un peu, si vous avez des idées de ce que je peux
checker/tester

cord.