كيف يمكنني تحديد برمجياً ما إذا كان على معالج متعدد النواة أم متعدد الخيوط أم متعدد المعالجات؟

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

سؤال

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

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

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

المحلول

System.Environment.ProcessorCount والتي ستتضمن أيضًا معالجات ذات مؤشرات ترابط عالية.ما الذي قد يكشفه برنامج Vmware أو لا يكشفه.من المحتمل أن يتم كشفه إذا كان المعالج ممكّنًا VT وكنت تستخدم تقنية Hypervisor الممكّنة باستخدام المعدن.

إذا كان لديك XP-SP3/WIN2k3 أو أعلى، فيمكنك استخدام WMI للسحب:

Win32_ComputerSystem.NumberOfProcessors returns physical count

Win32_ComputerSystem.NumberOfLogicalProcessors returns logical count

إذا كانت القيم هي نفسها، فمن المحتمل أن نظامك لا يحتوي على HT أو لم يتم تمكينه.

يمكنك البدء في استكشاف كيفية سحب معلومات WMI في .NET من هذا البرنامج التعليمي.

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