سؤال

عندما أبدأ محاكي Erlang الخاص بي، هناك بت أول مجموعة من الأشياء الإعلامية. (إعادة تهيئة قليلا للتأثير.)

manoa:~ stu$ erl
Erlang (BEAM) emulator version 5.6.5 
[source] [smp:2] [async-threads:0] [hipe] [kernel-poll:false]

Eshell V5.6.5 (abort with ^G)
1> 

بعضها أستطيع أن أخمن، ربما دقيقة، لكن بعضها يعني "أن تكون هنا سحرية".

  • Erlang (BEAM) emulator version 5.6.5: النسخة، بالطبع
  • [source]: تم تجميع المحاكي من المصدر؟
  • [smp:2]: اثنين من كور وحدة المعالجة المركزية المكتشفة ومتاحة
  • [async-threads:0]: تشغيل الوظائف حاليا?
  • [hipe]: ?
  • [kernel-poll:false]: ?

أنا أتساءل أيضا إذا كان هناك الآخر [foo] العناصر التي قد تغرق مع تكوينات مختلفة، يبني أو بدء المعلمات.

إذن، ماذا تعني بيانات معلومات Erlang Emulator؟

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

المحلول

ASYNC-المواضيع: 0

حجم تجمع الخيط ASYNC المتاحة للسائقين المحملة للاستخدام. يتيح ذلك إجراء حظر SYSCalls في مؤشر ترابط منفصل عن شعاع VM. استخدام رمز التبديل +A N لضبط حجم التجمع.

hipe

دعم لتجميع أصلي من مصدر Erlang و bytecode. يميل إلى أن تكون مفيدة في الغالب لرمز الطحن العدد. IO-Bound Code تفعل غرامة على مترجم bytecode.

نواة الاستطلاع: خطأ

هناك نظام Select Old Select (2) واستطلاع (2) يدعو إلى تلقي إشعارا بأن بعض واصف الملفات جاهز لإلغاء الكتابة أو القراءة. إنهم لا يقللون جيدا إلى عدد كبير من واصفات الملفات المفتوحة. يحتوي النظم الأوائل الحديثة على واجهات بديلة، لينكس لديه encoll، FreeBSD لديه Kqueue. تمكين مع مفتاح القيادة +K true

نصائح أخرى

اعتبارا من Erlang. 20.0, ، مجموعة كاملة من علامات سلسلة الإصدار هي:

64 بت

تم تصميم محاكي الشعاع للاستفادة الكاملة من وحدة المعالجة المركزية 64 بت.

ASYNC-المواضيع: 10

يشير هذا إلى عدد مؤشرات الترابط في تجمع مؤشر ترابط Irlang Emulator الخاص بمحاكي ASYNC، مما يخبرك بأقل أو أقل عدد مكالمات النظام المحظورة يمكن أن يتم إيقافها إلى مؤشرات الترابط في الخلفية قبل الأكشاك المحاكي.

على الرغم من أنها توصف حاليا إلى 10، إلا أن الافتراضي كان 0 لسنوات عديدة، مما يعني أنه تم تشغيل جميع مكالمات النظام بشكل متزامن داخل كل مؤشر ترابط Erlang Emulator. عند حظر مكالمة النظام، توقفت أن خيط Erlang Emulator من تشغيل حتى انتهاء استدعاء النظام. تتيح القيمة الافتراضية الحالية الحالية للمحاكاة محاولة الخروج والقيام بشيء آخر أثناء حظر مكالمة النظام واحدة من مؤشرات الترابط I / O ASYNC.

يمكنك تغيير القيمة الافتراضية مع +A خيار وقت تشغيل Erlang. (على سبيل المثال erl +A 50) إذا كنت ستغير هذا، احذر أن تعتمد نتائجك على نظامك الخاص وحمل العمل. عالية جدا قيمة يمكن أن تؤذي قيمة الأداء، لأنها تسبب النظام في محاولة القيام بأشياء كثيرة في الخلفية عندما يكون النظام مشغولا للغاية، مما يجعله أكثر مشغولا فقط. في بعض عبء العمل، تعطيل الميزة مع erl +A 0 يمكن أن يكون الخيار الأفضل.

تم تجميعها

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

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

لتمكين هذا الوضع، cd إلى erts/emulator تحت شجرة مصدر Erlang بعد تشغيل configure على ذلك، ثم اكتب شيء مثل ERL_TOP=../.. make FLAVOR=smp debug. وبعد ثم لتشغيل محاكي شعاع جديد القابل للضبط، عليك تشغيل bin/cerl -debug من المستوى العلوي من شجرة مصدر Erlang، بعد أن تم بناء ما تبقى من نظام Erlang / OTP.

يرى كيفية بناء نظام تشغيل Debug تمكين Erlang لمزيد من هذا الموضوع.

DS: 1: 1: 1

اعتبارا من Erts 9.0، يجب أن يظهر هذا دائما إذا قمت ببناء محاكي الشعاع بدعم SMP. يشير إلى "المجدول القذر"ميزة. توضح القيم تكوين الميزة على هذا النظام.

تم تقديم هذه الميزة مع Erlang 19.0، في البداية كوسيلة تجريبية لم يتم تجميعها بشكل افتراضي في SMP يبني كما هو الحال في Erlang 20.0.

DTRACE

يظهر إذا مرت --with-dynamic-trace=dtrace إلى configure البرنامج النصي لتمكين التجريبية dtrace. تتم إضافة ميزة الأجهزة في R15B01. من المتوقع أن تعمل هذه الميزة فقط على نظام التشغيل X و Solaris و FreeBSD. قد تعمل على منصات أخرى في المستقبل. يرى systemtap أدناه للحصول على بديل إضافي في نفس الوقت لأنظمة Linux.

مؤشر الإطار

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

hipe

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

عد التعليم

يظهر إذا حددت ERTS_OPCODE_COUNTER_SUPPORT أثناء الإنشاء، مما يتيح ميزة العد العيادة لشعاع، من المفترض أنها مفيدة لأداء محاكي شعاع Progination.

نواة الاستطلاع: خطأ

يعرف رمز Erlang Emulator العديد من الطرق المختلفة لطلب تكدس شبكة نظام التشغيل أي مجموعة من ملفات الملفات والمآخذ المتاحة ل I / O. الوحيد الذي يعمل كثيرا في كل مكان هو BSD القديم select() الدعوة التي هي بطيئة نسبيا بسبب تصميمها، ولها قضايا قابلية التوسع الأخرى إلى جانب ذلك. لذلك، فإن معظم الأنظمة لديها بدائل واحدة أو أكثر أسرع وأكثر قابلية للتطوير - على سبيل المثال، Kqueue، epoll(), ، إلخ. - لكن لا أحد منهم مدعوم في كل مكان. عندما تقول رسالة بدء تشغيل المحاكي false هنا، يمكن أن يعني ذلك إما أن الاقتراع النواة غير متوفر أو أنه لكنك لم تمر +K true ل erl.

فحص القفل

يظهر إذا مرت --enable-lock-check إلى البرنامج النصي التكوين.

قفل العد

يظهر إذا مرت --enable-lock-counter إلى البرنامج النصي التكوين.

LTTNG

يظهر إذا مرت --with-dynamic-trace=lttng إلى configure البرنامج النصي لتمكين الدعم ل lttng., ، إطار تتبع لينكس.

تنقية

يظهر هذا عند تشغيل خاص تنقية-أنسخة من محاكي شعاع Erlang. التعليمات هي نفسها كما في تم تجميعها القسم أعلاه، إلا أنك تستخدم purify في الأوامر بدلا من debug.

تقاسم الحفاظ

يظهر هذا إذا كنت تمر --enable-sharing-preserving إلى configure البرنامج النصي، الذي يسبب حصة مصطلحات ثابتة بدلا من تسطيح وإعادة إنشاءها. ما إذا كان هذا الخيار يجعل برنامجك بشكل أسرع أو أبطأ يعتمد على تفاصيل البرنامج، وبالتالي لماذا لم يتم تعيينه في الإنشاء الافتراضي.

SMP: 2: 2

ال SMP: 2 تم تغيير العلامة إلى هذا التنسيق في Erlang R13، وهذا يعني 2 المجدول، وكلاهما عبر الإنترنت. إذا قلت "ERL + S1"، كما تقول SMP: 1: 1 في حين أن. يمكنك التقاط المجدول دون اتصال بالإنترنت في وقت التشغيل مع Erlang: system_flag (simpled_online، n)، حيث N يمكن أن يكون أي شيء بين 1 وعدد النوى المكتشفة، شاملة.

مصدر] أو [نسخة المصدر

وهذا يعني أن بعض طرف ثالث (ربما أنت، ربما بصيانة حزمة نظام OS Distro الخاص بك، ربما بنيت Sysadmin الخاصة بك) Erlang من التعليمات البرمجية المصدرية. البديل هو تنزيل نسخة ثنائية رسمية من Erlang.org.

إذا قمت ببناء Erlang من مستودع جيت, هذه الرسالة تتغير إلى شيء مثل Source-8acc644, ، حيث رقم هيكس هو جزء من التيار المستودع جيت التجزئة, ، والتي تتيح لك التحقق من الإصدار الدقيق للمصدر الذي بنى قابل للتنفيذ معين.

systemtap

يظهر إذا مرت --with-dynamic-trace=systemtap إلى configure النصي. هذا بديل لل =dtrace قيمة خيار التكوين هذا، مما يوفر أساسا نفس الوظيفة على نظام Linux SystemTAP., ، نظرا لأن DTRACE غير متوفر عادة على Linux. يرى DTRACE في الاعلى.

تأكيدات النوع

يظهر عند عدم إكمال ET_DEBUG في الخط erts/emulator/beam/erl_term.h, ، تمكين التحقق من وقت التشغيل من جميع الوصول إلى جميع أنواع البيانات الخاصة بالنوع. لم يتم تمكين افتراضيا لأنه يبطئ المحاكي.

تجميع Valgrind

يظهر هذا عند تشغيل خاص valgrind.-أنسخة من محاكي شعاع Erlang. التعليمات هي نفسها كما في تم تجميعها القسم أعلاه، إلا أنك تستخدم valgrind في الأوامر بدلا من debug.


(هذه القائمة تأتي من erts/emulator/beam/erl_bif_info.c في شجرة مصدر Erlang OTP. انظر تعريف erts_system_version بالقرب من الجزء العلوي من الملف.)


العلامات القديمة:

  • ال نصف كلمة 64 بت تمت إضافة تحسين بناء 64 بت من محاكي الشعاع في R14، ثم تمت إزالته دون تفسير في 19.0. هذا يزيل أيضا إمكانية رؤية كائنات no-c-coack العلامة، التي ارتبطت بمحاكي نصف الكلمات.

  • ال RQ: 2 تمت الإشارة إلى العلامة إلى نظام قائمة انتظار التشغيل المقصود لتحسين قابلية التوسع في SMP يبني محاكي شعاع Erlang. وأضاف في R13B، تم استبداله في R15B بواسطة حل أفضل.

  • ال هايبرد-كومة و GC الإضافي تمت إزالة العلامات والميزات المرتبطة بها في R15B02 بشكل أساسي لأنها كانت الخبرات الفاشلة.

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