أي في العالم الحقيقي تجربة استخدام البرمجيات معاملات الذاكرة؟ [مغلق]

StackOverflow https://stackoverflow.com/questions/209751

سؤال

ويبدو أنه كان هناك تزايد الاهتمام مؤخرا في STM (برنامج الذاكرة المعاملات) الأطر وملحقات لغة. كلوجر على وجه الخصوص لديه التنفيذ الممتاز الذي يستخدم <لأ href = "http://en.wikipedia.org/wiki/Multiversion_concurrency_control "يختلط =" noreferrer "> MVCC (متعدد النسخة التحكم التزامن) بدلا من المتداول ارتكاب السجل. لديها GHC هاسكل أيضا في الكائن الدقيق الاحادي الخلية STM أنيقة للغاية الذي يسمح أيضا تكوين المعاملة . وأخيرا، وذلك لبوق بلدي القرن بك فقط قليلا، وأنا قد نفذت مؤخرا على إطار STM لسكالا حيث تفرض قيود ثابت المرجعية.

وهذه كلها تجارب مثيرة للاهتمام، ولكن يبدو أنها تقتصر على هذا المجال وحده (التجريب). لذا سؤالي هو: لديك أي من هل رأيت أو استخدام STM في العالم الحقيقي؟ إذا كان الأمر كذلك لماذا؟ أي نوع من الفوائد إلا أنها تجلب؟ ماذا عن الأداء؟ (يبدو أن هناك قدرا كبيرا من المعلومات المتضاربة حول هذه النقطة) هل كنت تستخدم STM مرة أخرى أو هل تفضل استخدام بعض التجريد التزامن الأخرى مثل الممثلين؟

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

المحلول

وشاركت في تطوير الهاوي للعميل تورنت في هاسكل (اسمه يستحضر). ويستخدم STM بشكل كبير جدا لتنسيق المواضيع المختلفة (1 في الأقران + 1 لإدارة التخزين + 1 عن الإدارة العامة).

والفوائد: أقل الأقفال، ورمز للقراءة

.

وكانت السرعة ليست قضية، على الأقل ليس بسبب الاستخدام STM.

ويساعد هذا الأمل

نصائح أخرى

وهذه المادة "البرامج المعاملات الذاكرة: لماذا هو إلا لعبة البحث؟" فشل للنظر في تنفيذ هاسكل، وهو إغفال كبير حقا. المشكلة لSTM، كما يشير المقال إلى، غير أن التنفيذ يجب الاختيار بين إما جعل جميع متغير يصل المعاملات إلا إذا كان المترجم أن يثبت بها وآمنة (الذي يقتل الأداء) أو السماح مبرمج تشير إلى تلك التي هي أن تكون المعاملات (الذي يقتل البساطة والموثوقية). ومع ذلك تنفيذ هاسكل يستخدم نقاء هاسكل لتجنب الحاجة إلى جعل معظم يستخدم متغير المعاملات، في حين أن النظام يوفر نوع نموذج بسيط مع التنفيذ الفعال للعمليات التحور المعاملات. هكذا برنامج هاسكل يمكن استخدام STM لتلك المتغيرات التي يتم مشاركتها حقا بين المواضيع في حين تضمن أن استخدام الذاكرة ليست لمعاملة يتم الاحتفاظ آمنة.

ونستخدمها بشكل روتيني جدا لتطبيقات التزامن عالية في جالويس (في هاسكل). يعمل، على نطاق واسع في العالم هاسكل، وأنه لا طريق مسدود (على الرغم من وبطبيعة الحال يمكن أن يكون لديك الكثير من الخلاف). أحيانا نعيد كتابة أشياء لاستخدام MVars، وإذا كنا قد حصلت على حق التصميم -. كما انهم أسرع

ومجرد استخدامه. ليس بالأمر الجلل. بقدر ما انا قلق، STM في هاسكل هو "حل". ليس هناك مزيد من العمل للقيام به. لذلك نحن استخدامها.

ونحن factis البحوث GmbH المزيد من ، تستخدم هاسكل STM مع GHC في الإنتاج. خادمنا يتلقى سيلا من الرسائل حول "الأجسام" جديدة ومعدلة من "خادم البيانات" clincal، فإنه يحول هذا التيار الحدث على الطاير (عن طريق توليد كائنات جديدة، وتعديل الأشياء، وتجميع الأشياء، الخ) ويحسب أي من هذه جديدة يجب أن تكون متزامنة الكائنات للاب توب متصل. كما يتلقى مدخلات النموذج من لاب توب والتي يتم تجهيزها، اندمجت مع "التيار الرئيسي" ومتزامنة للاب توب أخرى أيضا. نحن نستخدم STM لجميع القنوات وهياكل البيانات قابلة للتغيير التي تحتاج إلى أن تكون مشتركة بين المواضيع. المواضيع هي خفيفة الوزن جدا في هاسكل ولذا فإننا يمكن أن يكون الكثير منهم دون التأثير على الأداء (في الوقت الحالي 5 في اتصال باد). بناء تطبيق كبير هو دائما تحديا، وكانت هناك العديد من الدروس التي يمكن استخلاصها ولكن لم يكن لدينا أي مشاكل مع STM. عملت دائما كما كنت تتوقع بسذاجة. كان علينا أن نفعل بعض ضبط أداء خطيرة ولكن كان STM أبدا مشكلة. (80٪ من الوقت كنا نحاول تقليل المخصصات لم تدم طويلا واستخدام الذاكرة بشكل عام.)

وSTM هو أحد المجالات التي يضيء هاسكل ووقت التشغيل GHC حقا. انها ليست مجرد تجربة وليس للبرامج لعبة فقط.

ونحن نبني مكون آخر من النظام clincal لدينا في سكالا وتم استخدام الفاعلون حتى الآن، ولكن ينقصنا حقا STM. إذا كان أي شخص لديه خبرة في ما يشبه لاستخدام واحد من تطبيقات سكالا STM في إنتاج أحب أن أسمع منك. : -)

ولقد نفذنا لدينا (قاعدة بيانات في الذاكرة ووقت التشغيل) كامل على أعلى من تنفيذنا STM الخاصة في C. وقبل ذلك، كان لدينا بعض السجل وقفل آلية تستند للتعامل مع التزامن، ولكن هذا الألم للمحافظة عليه. ونحن سعداء جدا مع STM لأننا يمكن أن تعالج كل عملية بنفس الطريقة. تقريبا يمكن إزالة جميع الأقفال. نحن نستخدم STM الآن عن أي شيء تقريبا في أي حجم، لدينا حتى إدارة الذاكرة تنفيذ على القمة.

وأداء ما يرام ولكن لتسريع الامور وضعنا الآن نظام تشغيل بالتعاون مع ETH زيورخ. ويدعم النظام أصلا الذاكرة المعاملات.

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

وأنا حاليا باستخدام عكا في بعض بحوث النظم PGAS. عكا هي مكتبة سكالا لتطوير أنظمة المتزامنة قابلة للاستخدام الفاعلون، STM، والمدمج في قدرات الخطأ والتسامح على غرار لإرلانج " وليكن فشل / تحطم / كريتر / ROFL "الفلسفة. ومن المفترض أن تبنى تنفيذ STM عكا في جميع أنحاء ميناء سكالا تنفيذ STM كلوجر ل. لمحة عامة عن وحدة STM عكا ويمكن الاطلاع rel="nofollow"> href="http://doc.akka.io/stm-java" .

scroll top