2013-10-13 19 views
9

मैं वर्तमान में एक ऐसे एप्लिकेशन पर काम कर रहा हूं जो डेटा प्राप्त करने के लिए कई अलग-अलग वेब सेवाओं पर निर्भर करता है। चूंकि मैं प्रत्येक सेवा को मॉड्यूलर करना चाहता हूं और वहां थोड़ी निर्भरता है (सेवा 1 सेवा 2 और 3 आदि से पहले चलनी चाहिए), मैं प्रत्येक सेवा को अपने कार्य में चला रहा हूं।कितने कार्य बहुत अधिक हैं?

कार्यों के लिए खुद को या तो

  1. सक्रिय रूप से चल रहा है, जिसका अर्थ है कि वे वेब सेवा करने का उनका अनुरोध प्रतिक्रिया

  2. इंतजार कर (मॉनिटर के माध्यम से भेज रहे हैं और एक प्रतिक्रिया के लिए इंतजार कर रहे हैं या प्रसंस्करण और कर रहे हैं टाइमआउट) - एक बार जब कार्य सभी प्रतीक्षा कार्यों को समाप्त कर देता है और जांचता है कि उनकी निर्भरता

अब, सिस्टम runni है एनजी जो मैं अच्छा प्रदर्शन कहूंगा (विशेष रूप से प्रदर्शन के बजाय नगण्य है) - हालांकि, एप्लिकेशन काफी सारे कार्यों को उत्पन्न करता है।

तो, मेरे प्रश्न के लिए: इस परिदृश्य में ~ 200 कार्य हैं? क्या वे उस ऊपरी ओवरहेड उत्पन्न करते हैं ताकि मूल रूप से गैर-थ्रेडेड दृष्टिकोण बेहतर रहे?

+0

यह शायद (1) कार्यों पर निर्भर करता है और (2) मॉड्यूल की ग्रैन्युलरिटी पर निर्भर करता है। –

+0

कार्य अधिकतर केवल webservice को अनुरोध भेज रहे हैं, यानि बहुत ही मामूली प्रसंस्करण (फ़िल्टर ट्वीट्स) के साथ ट्विटर फ़ीड के लिए अनुरोध भेज रहे हैं। मैं प्रत्येक आइटम के लिए एक नया कार्य शुरू करता हूं, जिसका मतलब है कि लगभग 1-30 कार्य "समवर्ती" चल रहे हैं और निर्भरता की प्रतीक्षा नहीं कर रहे हैं --- आम तौर पर प्रति वेब सेवा के बारे में एक मॉड्यूल (वर्तमान में लगभग 10-15 मॉड्यूल)। – Scurals

+0

मुझे लगता है कि व्यवहार्य होगा, क्योंकि "चलने" का मतलब केवल सर्वर की प्रतिक्रिया के लिए इंतजार कर रहा है ... –

उत्तर

10

सामान्य उत्तर "माप, माप, माप" है :) यदि आपको प्रदर्शन के साथ कोई समस्या नहीं आ रही है, तो आपको अनुकूलन शुरू नहीं करना चाहिए।

मैं कहूंगा कि 200 कार्य ठीक हैं। धागे की तुलना में कार्यों की सुंदरता "वास्तविक" धागे और यहां तक ​​कि थ्रेड पूल की तुलना में उनका कम ओवरहेड है। टास्कशेड्यूलर यह सुनिश्चित कर रहा है कि कम से कम थ्रेड स्विचिंग के साथ सभी हार्डवेयर धागे जितना संभव हो उतना उपयोग किया जा सके। यह विभिन्न चालों द्वारा क्रमशः बाल कार्यों को चलाने के रूप में चूसता है, अन्य धागे पर कतारों से काम चोरी करता है और इसी तरह।

तुम भी क्या एक विशेष कार्य TaskCreationOptions


के माध्यम से करने के लिए आप कुछ संख्या चाहते हैं, इस पोस्ट की जाँच, जैसा कि आप देख सकते हैं जा रहा है के बारे में TaskScheduler कुछ संकेत दे सकते हैं, TPL सुंदर है भूमि के ऊपर
http://www.palmmedia.de/Blog/2010/1/19/net-40-performance-of-task-parallel-library-tpl

के मामले में सस्ते इस विषय पर एक और दिलचस्प लेख है
http://msdn.microsoft.com/en-us/magazine/cc163552.aspx

+1

"एक और दिलचस्प लेख" मर चुका है - क्या आपको याद है कि इसका क्या उल्लेख है? – Default

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