سؤال

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

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

لقد قمت بتوصيله بـ jconsole ولا يبدو أن هناك مشكلة في الذاكرة.عندما لاحظت أنه يعمل ببطء، حاولت توصيل ملف التعريف به ولكن ملف التعريف لن يتصل.لقد حاولت التشغيل باستخدام -Xprof ولكن لا يبدو أن عمليات التفريغ بين التشغيل البطيء والتشغيل السريع مختلفة كثيرًا.لقد حاولت أيضًا استخدام أدوات تجميع البيانات المهملة المختلفة وأحجام مختلفة للأجزاء المختلفة من مساحة الذاكرة.

جهازي هو جهاز Mac Pro مزود بقسم RAID مخطط.لا ينخفض ​​استخدام وحدة المعالجة المركزية أبدًا سواء كان يعمل ببطء أو بسرعة، وهو ما تتوقعه إذا كانت سلاسل العمليات تقضي وقتًا طويلاً في حظر عمليات القراءة من القرص، لذلك لا أعتقد أنها قد تكون مشكلة في قراءة القرص.

سؤالي هو، ما هي أنواع المشاكل في الكود الخاص بي التي يمكن أن تسبب ذلك؟أو يمكن أن يكون هذا مشكلة في نظام التشغيل؟لم أتمكن من تكراره على جهاز يعمل بنظام Windows، لكن ليس لدي جهاز يعمل بنظام Windows مزود بإعداد RAID مماثل.

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

المحلول

قد يكون لديك موضوع التي ذهبت في حلقة لا نهاية لها.

وحاول الاتصال مع VisualVM واستخدام جهاز العرض الموضوع.

https://visualvm.dev.java.net

وقد تضطر للاتصال قبل تحدث هذه المشكلة.

نصائح أخرى

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

يرجى إلقاء نظرة على هذا المشنور, ، أو بالأحرى الإجابة، حيث تم ذكر مشكلة تزاحم ذاكرة التخزين المؤقت.

هل تنتج نفس عدد المواضيع في كل مرة؟هل هذا الرقم أقل أو يساوي عدد المواضيع المتوفرة على النظام الأساسي الخاص بك؟يمكن التحقق من هذا الرقم أو تقديره بدقة معقولة.

يرجى نشر أي نتائج!

هل لديك أداة لقياس درجة الحرارة وحدة المعالجة المركزية؟ قد يكون OS اختناق وحدة المعالجة المركزية للتعامل مع القضايا درجة الحرارة.

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

وأنا لا أعرف الكثير عن OSX، ولكن في ينكس الأمر "الحرة" هو مفيد لهذا الغرض.

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

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