2012-11-21 17 views
5

के आधार पर रूबी आभासी मशीन पर धीमी है, हमने एक नए विकास सर्वर पर स्विच किया और अनुभव किया कि हमारे परीक्षण सूट को की आवश्यकता है। हमने डेटाबेस, फाइल सिस्टम इत्यादि का परीक्षण किया लेकिन ये चीजें बहुत तेज हैं, पहले से भी तेज हैं।वर्चुअलाइजेशन इंजन

तो हम एक छोटे से गहरे लाल रंग का बेंचमार्क परीक्षण (फाइबोनैचि) ने लिखा है और इसे निष्पादित कई बार (औसत से नीचे):

एक्सईएन के साथ पहले
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" 

मशीन: 6s OpenVZ साथ के बाद

मशीन: 11,5 (-> संकलित) माणिक 1.9.3-p194

दोनों मशीनों पर डेबियन निचोड़ स्थापित rvm साथ है। इन मशीनों पर कोई उच्च भार नहीं है, स्मृति भी ठीक है।

अधिक या कम केवल अंतर वर्चुअलाइजेशन इंजन है। उत्पादन में हम वीएमवेयर ESXi का उपयोग करते हैं। बेंचमार्क के बारे में 11s की आवश्यकता है। हमने KVM के साथ एक और सर्वर का परीक्षण किया, वहां बेंचमार्क को 2,5s की आवश्यकता है। एक्सईएन के साथ


  • मशीन: 6s
  • OpenVZ साथ
  • मशीन: 11s
  • केवीएम के साथ मशीन:: VMware ESXi साथ 11,5s
  • मशीन 2,5s

तो हमारे रूबी को तेज़ी से बनाने के लिए हम अपने वर्चुअलाइजेशन में क्या बदल सकते हैं? या क्या आपके पास एक और विचार है कि समस्या क्या हो सकती है?

+0

Intersting सवाल है, लेकिन मेरी राय में यह अलग वर्चुअलाइजेशन प्रौद्योगिकियों से अधिक मानक की तुलना मुश्किल है! – Robin

+0

@ सैम: दुर्भाग्यवश हमारे पास कोई अन्य विचार नहीं है कि समस्या क्या हो सकती है ... – MMore

+0

मैं यह सुनिश्चित करने के लिए सभी सिस्टम पर एक गैर-रूबी सीपीयू बेंचमार्क चलाऊंगा कि समस्या रूबी से संबंधित है। क्या सभी मशीनें 64 बिट चल रही हैं? – claasz

उत्तर

1

मैंने इसे डेबियन निचोड़ के साथ हमारे ईएसएक्सआई 5 सिस्टम पर और एक उबंटू सटीक (सर्वर) के साथ परीक्षण किया। निचोड़ रूबी पर 1.9.3-पी 1 9 4 को संकलित किया जाना चाहिए और उबंटू पर नहीं। लेकिन परिणाम दोनों प्रणालियों पर समान हैं: 11.x सेकेंड। इसलिए मुझे लगता है कि हम कर्नेल-वर्जन को अनदेखा कर सकते हैं और वर्चुअलाइजेशन लेयर पर ध्यान केंद्रित कर सकते हैं।

+0

मैंने उबंटू के तहत केएसएच के साथ एक ही रिकर्सिव फाइबोनैकी गणना की जांच की। 0.01s में चलाएं। और मुझे पता चला कि "धीमी" रूबी को आरवीएम और/या आरवीएम द्वारा रूबी के संकलन के साथ कुछ करना है। मैंने बस "आरवीएम हटाने रूबी-1.9.3-पी 1 9 4" के साथ रूबी को "आरवीएम इम्प्लोड" के साथ हटा दिया। फिर उबंटू सटीक रिपोजिटरी से "apt-get install ruby1.9.3" को पुनः लॉग इन करें और इंस्टॉल करें, जो मूल रूप से रूबी-1.9.3-पी 0 है। यह 4,8 सेकंड में चला गया। तो यहां हमारे मैकबुक के साथ लगभग वही प्रदर्शन। तो क्या किसी को पता है कि आरवीएम कैसे रूबी संकलित करता है। मुझे यकीन है कि हम वहां ग्रेइल पाएंगे! – martinseener

+0

यहां तक ​​कि निचोड़ स्थापित करके, एपीटी स्रोतों को बदलने के लिए, एपीटी-अपडेट अपडेट और एपीटी-इंस्टाल रूबी (जो अब व्हीजी से 1.9.3 इंस्टॉल करता है) समय 4.8 सेकेंड पर होना चाहिए। इसलिए, किसी भी तरह से आरवीएम इसे "गलत" संकलित करता है और हमें इसे देखना होगा। – martinseener

+0

मार्टिन - नीचे मेरा जवाब देखें, जो आपको जो मिला है उसे समझाने में मदद कर सकता है। – Casper

0

शायद @ मार्टिनसेनर कुछ पर है। आप इस को देखने के लिए चाहते हो सकता है:
http://alisnic.net/blog/making-your-ruby-fly/

और यह:
https://gist.github.com/1688857?utm_source=rubyweekly&utm_medium=email

अनुकूलन झंडे के बिना मूल रूप से rvm संकलन है माणिक। शायद यह समस्या है? हालांकि मैंने पोस्ट किए गए लिंक पैच के साथ और भी गतिशीलता में गहरे हो जाते हैं, लेकिन मूलभूत फिक्स आरवीएम के साथ रूबी संकलित करते समय अनुकूलन झंडे को सक्षम करना है।

कुछ आगे यहाँ चर्चा:
http://www.reddit.com/r/ruby/comments/13mc3s/making_your_ruby_fly/

संबंधित मुद्दे