مديريت منابع پردازنده در LINQ
![](/images/th1_start.gif) ![](/images/th1_start.gif) ![](/images/th1_start.gif) ![](/images/th1_start.gif) -(5 Body)
|
مديريت منابع پردازنده در LINQ
Visitor
445
Category:
دنياي فن آوري
حافظه اصلي در محاسبات موازي يا به صورت حافظه اشتراکي است يا حافظه توزيع شده. معماري حافظه توزيع شده يا Distributed گاهي به صورت فيزيکي و گاهي به صورت منطقي است که در بهترين حالت پردازنده هاي سيستم در محاسبات موازي بايد از حافظه هاي فيزيکي که به صورت محلي است، استفاده کنند. همان طور که مي دانيد، محاسبات همزمان و موازي به چند صورت انجام مي پذيرد: در حد بيت، خط دستور، اطلاعات و اجراي تکاليف همزمان که هر کدام از اين انواع در چيدمان و معماري سيستم هاي همزمان تأثير گذار هستند. زماني که پردازنده هاي کامپيوترها تک هسته اي بود، همزماني اجراي دستورات نرم افزار با استفاده از Multi Threading انجام مي شد که اگر چه واقعاً Cuncurrency يا همزماني مطلق تحقق پيدا نمي کرد، اما با استفاده از نرم افزار امکان اجراي دستورات موازي با استفاده از رشته پردازشي (Thread) امکان پذير بود. به عنوان مثال، در دات نت يا جاوا مي توان نرم افزارهايي را طراحي کرد که چند عمل را به صورت موازي و همزمان انجام دهند. از طرفي هر چه که پيش مي رويم، هسته هاي پردازنده کامپيوتر ها بيشتر و بيشتر مي شود. در دات نت 4 که به تازگي از طرف شرکت مايکروسافت به بازار عرضه شده، قابليت استفاده از چند پردازنده بيشتر از نسخه هاي قبلي تقويت شده است. استفاده از کلاس هايي که در دات نت 4 براي اجراي همزمان دستورات وجود دارد، از نسخه هاي قبلي بسيار آسان تر است تا آنجا که حتي ديگر به استفاده از رشته پردازشي و Thread Pool نيز به صورت مستقيم نيازي وجود ندارد ( با استفاده از System.Threading.Tasks در VS2010 مي توان از اين قابليت ها استفاده کرد)، يکي از کامپوننت هاي دات نت که مي توان تأثير همزماني را در آن بيشتر احساس کرد، LINQ است که از نسخه 3 دات نت پا به عرصه وجود گذاشت و تحول عظيمي در سيستم هاي نرم افزاري که با پايگاه داده کار مي کنند، ايجاد کرد. LINQ با قابليت پرس وجو يا Query در منابع اطلاعاتي به صورت جست وجو در Collection هاي (ListT) عمل مي کند و PLINQ که Parallel LINQ است، اجراي الگوي همزماني در اين جست وجوها است که در دات نت 4 به بازار معرفي شد. در PLINQ هدف استفاده کامل از تمامي پردازشگر ها و تمام ظرفيت آن ها است. PLINQ اين کار را با تکه تکه کردن منبع اطلاعاتي به تکه هاي Segment و اجراي جست وجو براي هر Segment در يک رشته به صورت موازي در چند پردازنده انجام مي دهد. که اين کار به افزايش سرعت اجراي Query ها کمک مي کند. شايد تا اينجا فکر کنيد که همزماني در اجراي پرس وجو ها هميشه سرعت سيستم را بالا مي برد. اما هميشه اين طور نيست و ملاحظاتي وجود دارد که بايد در طراحي و اجراي دستورات PLINQ به آن توجه کرد. بايد توجه داشت که سرعت بالاتر در PLINQ با استفاده از روش هاي خاصي به وجود مي آيد. به عنوان مثال، اگر اجراي دستوري دو ميلي ثانيه زمان بخواهد، اگر به صورت سريال اجرا شود براي اجراي صد دستور دويست ميلي ثانيه زمان نياز خواهيم داشت. اما اگر از يک سيستم با چهار هسته استفاده شود سيستم بايد درپنجاه ميلي ثانيه اين عمليات را انجام دهد که باعث خواهد شد 150 ميلي ثانيه صرفه جويي زماني به وجود آيد. حال محاسبه کنيد اگر يک عمليات يک ثانيه طول بکشد، چه ميزان صرفه جويي در زمان انجام عمليات به وجود مي آيد. در عملياتي که سرعت، اهميت بالايي در آن دارد و زمان اجراي آن طولاني است، استفاده از PLINQ کارايي بيشتري به سيستم مي دهد. عواملي را که در افزايش سرعت در جست وجوهاي PLINQ تأثير گذار است، مي توان به چند دسته تقسيم کرد: نخست آن که بايد قبل از استفاده از دستورات PLINQ به هزينه اي که پرس وجوها دارند، دقت کرد (مطابق مثال بالا). نکته ديگر دقت کردن به تعداد هسته هايي است که سيستم دارد. تعداد هسته هاي پردازنده و اختصاص دادن هر عمليات به هسته خاص تأثير فراواني در کار خواهد داشت. عامل ديگر توجه به اين موضوع است که در پرس وجو به چه ترتيبي از منابع استفاده مي شود و چه ايندکس هايي در پايگاه داده قرار داده شده است. همچنين بايد به تعداد و نوع عملياتي که PLINQ انجام مي دهد، دقت و نوع جمع آوري اطلاعات از آرايه ها و فهرست هايي که از جست وجوي هر کدام از منابع اطلاعاتي به دست مي آيد، توجه کرد. نکته آخر اين که نحوه تقسيم بندي يا Partitioning اطلاعات در سگمنت ها براي سرعت در جست وجو از اهميت بالايي برخوردار است. منبع:افتاب ارسال توسط کاربر محترم سايت : mohamadaminsh
|
|
|