2010-08-09 10 views
14

मेरी कंपनी में हम वर्तमान में हमारे सीआई बिल्डों को तेज करने के लिए विभिन्न रणनीतियों का शोध कर रहे हैं। हमने अपने निर्माण का प्रोफाइल किया है और यह निर्धारित किया है कि हम एक I/O बाधा से बाधित हैं। हमारे पास निकट भविष्य में (~ 1-2 महीने) के साथ निपटने के लिए कुछ विकल्प हैं लेकिन वास्तव में में सुधार देखना चाहते हैंक्या बिल्ड सर्वर पर रैमडिस्क का उपयोग करना समझदारी है?

मैं चेकआउट और buildfile स्थान के रूप में एक रैमडिस्क उपयोग का प्रस्ताव रखा। बिल्ड आउटपुट और लॉग निश्चित रूप से भौतिक डिस्क पर संग्रहीत किए जाएंगे।

क्या यह एक समझदार चीज है या इस दृष्टिकोण में महत्वपूर्ण कमी है? मैं उन उत्तरों की तलाश नहीं कर रहा हूं जो चीजों के हार्डवेयर पक्ष को देखते हैं, बल्कि सामान्य बिल्ड सिस्टम (जैसे एमएसबिल्ड) और रैमडिस्क के बीच बातचीत से कोई समस्या आएगी और यदि अन्य जोखिम हैं तो मुझे इसके बारे में पता होना चाहिए।

+0

एक साधारण नोट: मुझे लगता है कि आप यहां रात के निर्माण के बारे में बात कर रहे हैं? निश्चित रूप से आपको स्क्रैच और परीक्षणों से अधिकतम बिल्डों को निचोड़ने की आवश्यकता है .. यदि यह दैनिक बनाता है, तो मैं बिल्डिंग समय को अधिकतम 5 एमएन के आसपास रखने का सुझाव देता हूं ताकि डेवलपर्स संभावित समस्याओं पर त्वरित प्रतिक्रिया प्राप्त कर सकें प्रत्येक प्रतिबद्धता: इस मामले में, यह * वृद्धिशील * संकलन करने के लिए उपयोगी समय है, यानी, केवल एक svn (hg/git/etc।) अद्यतन करें, और मेक (या चींटी, नंत, आदि) को फिर से उपयोग करें क्या बदल गया है। एक अच्छी लिखित मेकफ़ाइल के साथ, यह नाटकीय रूप से चीजों को गति दे सकता है। बस मेरे 0.02 € :-) –

+0

मैं यहां सीआई के बारे में बात कर रहा हूं (प्रत्येक प्रतिबद्धता के बाद निर्माण)। हम पहले से ही इसके लिए वृद्धिशील बिल्ड का लाभ उठाते हैं लेकिन धन्यवाद। –

+1

@ क्रिस्टोफ़ मुल्लेर, एक कंबल कथन बनाते हैं कि एक निर्माण 'अधिकतम 5 एमएन' होना चाहिए, निर्माण के आकार, आकार और आवश्यकताओं को जानने के बिना वास्तव में हास्यास्पद है। हमारे पास एक उत्पाद है जो सीआई सर्वर पर चलता है और संकलन और पैकेजिंग सहित दो मिनट से भी कम समय में बनाता है। हमारे पास एक और उत्पाद है जिसमें कई .NET समाधान, कई मूल विंडोज सेवाएं, एकाधिक एडोब फ्लेक्स प्रोजेक्ट्स, यूनिट परीक्षण, कोड कवरेज, पैकेजिंग, और एक परीक्षण रैक में स्वचालित तैनाती शामिल है। पूरी प्रक्रिया (जिनमें से सभी चेक-इन के साथ नहीं चलती हैं) ढाई * घंटे * से अधिक है। –

उत्तर

8

जब तक आप पर्याप्त स्मृति है, यह करने के लिए एक बहुत ही समझदार बात है।

एकमात्र असली कमी है, स्वाभाविक रूप से, आपका निर्माण शट डाउन/पावर विफलता पर खो जाता है जो आम तौर पर सीआई के निर्माण के लिए एक बड़ी चिंता नहीं है।

2

मैं बस पर मेरी (वास्तव में एक PowerShell स्क्रिप्ट) जो सबवर्सन से 3600 फ़ाइलें बाहर की जाँच करता है "सर्वर का निर्माण", उन्हें (DOT.NET) संकलित करता है तथा कुछ यूनिट टेस्ट चलाता कुछ परीक्षण भाग गया।

मेरे सामान्य (सुपर तेजी से नहीं) पर कठिन प्रक्रिया ड्राइव 35 सेकंड लेता है।

विंडोज 7 पर डिफ़ॉल्ट FAT32 सेटअप के साथ दतरम रामडिस्क टूल का उपयोग 45 सेकंड लेता है।

NTFS के साथ उसे पुन: प्रारूपित कि करने के लिए नीचे 30 सेकंड के लिए लाता है।

लेकिन एक एसएसडी (मेरे मामले में एक ओसीजेड वेरटेक्स 2) का उपयोग केवल 27 सेकंड लेता है।

मैं कई परीक्षण रन किया लेकिन कई बार हमेशा एक ही कर रहे हैं।

हम इस से क्या सीख सकते हैं?

एक राम डिस्क हमेशा तेज़ नहीं होती है, सुनिश्चित करें कि आप विभिन्न सेटिंग्स के साथ विभिन्न उत्पादों का परीक्षण करें।

एक ठोस राज्य ड्राइव रैम डिस्क से भी तेज हो सकती है, जिसने मुझे आश्चर्यचकित कर दिया।

+0

मेरे पास डेटारैम रैम डिस्क है और एक एसएसडी है और रन डिस्क काफी तेज है। अगर आप देख रहे हैं कि रैमडिस्क एसएसडी की तुलना में अधिक समय ले रहा है तो कुछ फिश लगता है। इसके अलावा, यह निर्माण पहले से ही बहुत तेज है और अधिकांश समय शायद I/O बाध्य नहीं है। चेकआउट/बिल्ड के लिए 35 सेकंड वास्तव में तेज़ है। हमारा निर्माण बहुत बड़ा है - अनुकूलित करने से पहले यूनिट परीक्षणों के साथ एक घंटे से अधिक समय तक बढ़ रहा था और इसे दस मिनट तक नीचे मिला। –

+0

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

+5

यह सही नहीं लगता है। कैश का छोटा कुछ रैम से तेज नहीं है; एक एसएसडी भी नहीं। क्या आपने किसी भी मौके से अपनी रैम डिस्क इतनी बड़ी कर दी है कि निर्माण प्रक्रिया के लिए वास्तव में अपनी नौकरी करने के लिए पर्याप्त स्मृति नहीं थी? इससे हो सकता है कि फाइल सिस्टम में मेमोरी को स्वैप कर दिया जाए जो स्पष्ट रूप से एक प्रतिकूल प्रभाव डालेगा। – McKrassy

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