سؤال

هل يعرف أي شخص إذا كان هناك نوع من "الحمل موازن 'في المكتبة القياسية إرلانج؟ أعني، إذا كان لدي بعض العمليات البسيطة حقا على مجموعة كبيرة حقا من البيانات، والنفقات العامة للبناء العملية لكل بند تكون أكبر من أداء بالتتابع العملية. ولكن إذا كنت يمكن تحقيق التوازن بين العمل في "العدد الصحيح" للعملية، وسوف أداء أفضل، لذلك أنا أسأل أساسا إذا كان هناك طريقة سهلة لإنجاز هذه المهمة.

وبالمناسبة، لا أحد يعرف إذا كان تطبيق OTP لا نوعا من التوازن الحمل؟ أعني، في تطبيق OTP هناك مفهوم "عملية عامل" (مثل عامل موضوع جافا العش)؟

هل كانت مفيدة؟

المحلول

plists ربما يفعل ما تريد. انها اساسا التنفيذ المتوازي وحدة lists، تصميم ليتم استخدامها كبديل الإفلات في. ومع ذلك، يمكنك أيضا التحكم في كيفية parallelizes عملياتها، على سبيل المثال عن طريق تحديد كم عدد العمليات المنفذة يجب لدت الخ.

وأنت من المحتمل أن تفعل ذلك عن طريق حساب بعض عدد من العمال تبعا لطول القائمة أو حمولة من النظام الخ.

ومن موقع:

<اقتباس فقرة>   

وقوائم Plists هو استبدال الإفلات في ل   القوائم حدة إرلانج، مما يجعل أكثر   موازية العمليات القائمة. يمكن   تعمل على كل عنصر في موازاة ذلك،   لعمليات محددة IO، على القوائم الفرعية   في موازاة ذلك، للاستفادة من   آلات متعددة النواة مع وحدة المعالجة المركزية ملزمة   العمليات، وعبر العقد إرلانج،   لparallizing داخل كتلة. هذا   يعالج الأخطاء والفشل العقدة. هذا   يمكن تكوين، وضبطها، وأنب   للحصول على أفضل أداء في حين   التقليل من النفقات العامة.

نصائح أخرى

وانظر حدات pg2 وpool.

وpg2 تنفذ تجمع عملية توزيع بسيط جدا. pg2:get_closest_pid/1 بإرجاع "أقرب" معرف المنتج، أي عملية المحلية عشوائية إذا المتاحة، عملية بعيد عشوائية غير ذلك.

وpool تطبق موازنة بين العقد بدأت مع وحدة slave.

وليس هناك، من وجهة نظري، مفيد أداة عامة موازنة التحميل في مكتب المدعي العام. وربما كان من المفيد فقط أن يكون واحدا في حالات محددة. فمن السهل بما فيه الكفاية لتنفيذ واحد نفسك. قد يكون من المفيد قوائم Plists في الحالات نفسها. أنا لا أؤمن المتوازية المكتبات كبديل لشيء حقيقي. سوف أمدال تطارد لكم إلى الأبد إذا كنت تمشي في هذا الطريق.

وهذا العدد الصحيح من العمليات المنفذة يساوي عدد المنظمون. قد تختلف هذه حسب ما يتم عمل آخر على النظام. الاستخدام،

erlang:system_info(schedulers_online) -> NS

للحصول على عدد المنظمون.

ومفهوم النفقات العامة عند اغراق النظام مع وفرة من العمليات المنفذة الخاطئ إلى حد ما. هناك فوق مع عمليات جديدة ولكن ليس بقدر كما هو الحال مع نظام التشغيل بين خيوط. النفقات العامة الرئيسي هو نسخ الرسالة بين العمليات، وهذا يمكن تخفيفها مع استخدام الثنائيات منذ فقط الإشارة إلى ثنائي يتم إرسالها. مع eterms هي الأولى الموسعة ثم نسخ البنية إلى عملية أخرى.

وليس هناك طريقة كيفية التنبؤ تكلفة العمل آليا دون قياسه منها مثلا قيام بذلك. شخص يجب تحديد كيفية تقسيم العمل لبعض الطبقة من المهام. في كلمة موازن التحميل أفهم شيئا مختلفا جدا عما في سؤالك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top