2009-11-09 5 views
8

मेरे पास एक ऐसा माहौल है जो रात के घंटों के दौरान डेटा प्राप्त करके और भेजने के द्वारा 3 समय क्षेत्रों में फैले कई उपकरणों की सेवा करता है। इन उपकरणों का वितरण छद्म-यादृच्छिक रूप से एक पहचान संख्या और मॉड्यूलो ऑपरेशन का उपयोग करके एक साधारण गणना के आधार पर निर्धारित किया गया था। इस तरह की गणना का नतीजा एक अनावश्यक कृत्रिम चोटी बनाता है जो रात के कुछ घंटों के दौरान मुझे अधिक संसाधनों का उपभोग करता है।एल्गोरिदम समय के साथ शीर्ष उपयोग को फ़्लैट करने के लिए?

हमारे प्रोटोकॉल के हिस्से के रूप में मैं बाद की रातों पर हमारे सिस्टम से कनेक्ट होने पर डिवाइस को निर्देश दे सकता हूं।

मैं एक एल्गोरिथ्म जो आम तौर पर (अधिकांश समय में आमतौर पर अधिक यद्यपि) एक और अधिक स्तर लाइन में शिखर वितरित कर सकते हैं या कम से कम एक धक्का सही दिशा में मांग कर रहा हूँ - जिसका अर्थ है शब्दावली किस तरह मैं अपने समय बिताना चाहिए के बारे में पढ़ । मेरे पास उपकरणों, वर्तमान समय, और डिवाइस के समय क्षेत्र के लिए गणना संख्या के लिए इनपुट के रूप में पहचान संख्या उपलब्ध है। मैं पूल बनाने के लिए कुछ ऊपर विश्लेषणात्मक गणना भी कर सकता हूं, जिससे स्लॉट खींचने के लिए, हालांकि मुझे लगता है कि यह दृष्टिकोण कम से कम सुरुचिपूर्ण हो सकता है (हालांकि एक सीखने वाला एल्गोरिदम एक बुरी चीज नहीं हो सकता है ...)।

(अंत में और कुछ हद तक कम प्रासंगिक मैं इस एल्गोरिथ्म सी # का उपयोग कर लागू करने जाएगा।)

+0

मैं इस समस्या पूरी तरह से स्पष्ट की व्याख्या नहीं मिल रहा है:

यहाँ विभिन्न कार्यों के क्रियान्वयन के तरीके के कुछ अधिक विशिष्ट जानकारी है? हम क्या वितरित कर रहे हैं? एक महत्वपूर्ण चोटी में एक (अधिक या कम) यादृच्छिक वितरण कैसे हो सकता है? क्या होगा यदि वितरण के बजाय सरल राउंड-रॉबिन था? – djna

+0

शिखर समय क्षेत्र और मॉड्यूलो ऑपरेशन के कारण कृत्रिम रूप से बनाया गया है। – cfeduke

उत्तर

12

यदि आप यादृच्छिक समयों से जुड़े स्पाइक्स से बचना चाहते हैं, तो हैशटबेल के लिए उपयोग किए जाने वाले विभिन्न हैंशिंग फ़ंक्शन देखें। आपकी पठन विषय पर विकिपीडिया लेख में शुरू हो सकता है:

http://en.wikipedia.org/wiki/Hash_function

असल में, विभाजन जो आप अपने अद्यतन खिड़की बाल्टी की उपयुक्त संख्या में होना चाहता हूँ। एक विकल्प 3 घंटे * 60 मिनट * 60 सेकंड = 10800 बाल्टी हो सकता है। फिर चुने हुए हैशिंग फ़ंक्शन के लिए अपने हैशटेबल आकार के रूप में इसका उपयोग करें। आपका अद्वितीय इनपुट डिवाइस आईडी हो सकता है। चुने हुए समय के लिए जीएमटी का उपयोग करना न भूलें। पसंद की आपकी प्रोग्रामिंग भाषा में शायद हैशिंग फ़ंक्शंस में कई निर्मित हैं, लेकिन लेख को शुरू करने के लिए कुछ लिंक प्रदान करना चाहिए यदि आप स्क्रैच से एक को कार्यान्वित करना चाहते हैं।

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

http://www.partow.net/programming/hashfunctions/index.html

2

आप कहते हैं कि आप उपकरणों क्या समय कनेक्ट करने के लिए बता सकते हैं, इसलिए मैं नहीं दिख रहा है यही कारण है कि आप कुछ भी यादृच्छिक या modulused की जरूरत है। जब प्रत्येक डिवाइस कनेक्ट होता है, तो कल एक समय चुनें जिसमें वर्तमान में इसमें कई डिवाइस नहीं हैं, और उस समय डिवाइस को असाइन करें। यदि डिवाइस सभी सेवा के लिए संसाधनों के समान मात्रा में लेते हैं, तो एक छोटा लालची एल्गोरिदम एक पूरी तरह से चिकनी वितरण का उत्पादन करेगा - प्रत्येक डिवाइस को वर्तमान में कम से कम जो भी समय हो, उसे असाइन करें। यदि सर्वर केवल इन उपकरणों की तुलना में अन्य काम को संभालता है, तो आप इसके सामान्य लोड प्रोफाइल से शुरुआत करना चाहते हैं, फिर उस पर डिवाइस लोड जोड़ें। मैं वास्तव में इस "विश्लेषणात्मक गणना" को नहीं कहूंगा, केवल अगले 24 घंटों के लिए अपेक्षित भार के हिस्टोग्राम को संग्रहीत करता हूं।

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

+0

इस समस्या के साथ एक फीडबैक लूप घटक है। अगर पहली रात ऐसा होता है कि 2am कम से कम व्यस्त है, तो यह संसाधनों को 2 बजे आवंटित करेगा। इससे 2am सबसे व्यस्त हो जाएगा यदि आकस्मिक यातायात को पहली रात यादृच्छिक रूप से आवंटित किया गया था, तो यह फिर 2 बजे से सबकुछ दूर कर देगा, जिससे 2am के आसपास का अक्षम उपयोग होता है। जब तक आकस्मिक यातायात का एक स्थिर वितरण प्राप्य नहीं होता है, तो अंतराल में समान आवंटन हमेशा अनुकूल होगा। – groundhog

+0

यदि वर्तमान में 1am सबसे व्यस्त समय है (कहें, 1.5 मिलियन हिट), और 2am कम से कम व्यस्त (कहें, 0.5 मिलियन हिट), तो मेरा सुझाव भविष्य में 2 बजे हिट करने के लिए 1 मिलियन के 0.5 मिलियन को निर्देश देना है। मैं नहीं देखता कि इसका कोई फीडबैक लूप कैसे है: केवल एक पूर्णांक वाली बाल्टी की एक सरणी रखें, "कल इस समय के लिए कितनी हिट निर्धारित की गई हैं", और उन बाल्टी को समान रूप से भरें। जब तक आप दोषपूर्ण एल्गोरिदम का उपयोग नहीं करते हैं, तब तक कोई अधिक मुआवजा नहीं है, "कल इस समय के लिए कितने हिट निर्धारित किए गए हैं, * जिनमें से मैं पहले से ही अन्य समय से नहीं चला हूं *। तो ऐसा मत करो। –

1

बस डिवाइसों की संख्या लें और अपने समय अंतराल को एन बराबर सेगमेंट में विभाजित करें और प्रत्येक सेगमेंट को किसी डिवाइस पर आवंटित करें, जिससे उन्हें कनेक्ट होने पर कनेक्ट करने के बारे में सूचित किया जाए।

यह आपको सभी मामलों में एक समान रूप से समान वितरण प्रदान करेगा।

जीएमटी के लिए हर समय सामान्यीकृत करें, आप समय क्षेत्र या दिन के प्रकाश बचत समय या जो भी हो, उसके बारे में क्या ख्याल रखते हैं? अब कोई फर्क नहीं पड़ता कि आप किस समय क्षेत्र में हैं।

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

यदि आप डिवाइस पर घड़ी की बहाव के बारे में चिंतित हैं, तो भी अगर आप यादृच्छिकता जोड़ते हैं तो यह आपके घड़ी की बहाव की यादृच्छिकता को किसी भी तरह से कम नहीं करेगा, और केवल एक कम इष्टतम आवंटन में योगदान देगा।

यदि आप क्षेत्र द्वारा उपकरणों के स्थिर वितरण को सुनिश्चित करना चाहते हैं, तो प्रति क्षेत्र उपकरणों के अनुपात की गणना करें, और स्लॉट आवंटन उचित रूप से वितरित करें।उदाहरण के लिए, यदि आपके पास क्रमशः समय क्षेत्र द्वारा 50/25/25 है, तो पहली बार क्षेत्र में स्लॉट असाइन करें, फिर शेष दो ज़ोन शेष समय क्षेत्रों में, फिर दोहराएं।

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

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