سؤال

لدي برنامج متعدد مؤشرات الترابط يعمل على إنتل رباعي النواة 7.عندما أعدم Runtime.getRuntime.availableProcessors(), ، أحصل على 8 ، وأنا أعلم أن التوازي هو متاح على وحدة المعالجة المركزية هذه.

ومع ذلك ، عندما أقوم بإنشاء مؤشرات ترابط ، تكون مستويات وحدة المعالجة المركزية الخاصة بي بنسبة 100 ٪ (أي.غير صفرية) لـ 4 مؤشرات ترابط ، مما يعني أن 4 مؤشرات ترابط غير مستخدمة.هل هناك أي طريقة لتمكين توازي في جافا?

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

المحلول

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

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

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

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

مناقشة أكثر تفصيلا ، مع معايير يمكن قراءتها هنا

نصائح أخرى

استخدم الأمر التالي

$ lscpu

الإخراج يمكن استخدامها لتحديد العدد الفعلي من النوى وإذا كان لديك توازي تمكين أم لا.

Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                32
On-line CPU(s) list:   0-31
Thread(s) per core:    2
Core(s) per socket:    8
Socket(s):             2
NUMA node(s):          2
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 45
Stepping:              7
CPU MHz:               2399.995
BogoMIPS:              4799.35
Virtualization:        VT-x
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              20480K
NUMA node0 CPU(s):     0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30
NUMA node1 CPU(s):     1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31

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

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