فهم هندسة NUMA

Understanding Numa Architecture



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

يمثل تصميم حافلات الإدخال / الإخراج شرايين الكمبيوتر ويحدد بشكل كبير مقدار ومدى سرعة تبادل البيانات بين المكونات الفردية المذكورة أعلاه. تقود الفئة الأولى المكونات المستخدمة في مجال الحوسبة عالية الأداء (HPC). اعتبارًا من منتصف عام 2020 ، من بين الممثلين المعاصرين لـ HPC منتجات Nvidia Tesla و DGX و Radeon Instinct و Intel Xeon Phi GPU (انظر [1،2] للاطلاع على مقارنات المنتجات).







فهم NUMA

يصف الوصول غير الموحد للذاكرة (NUMA) بنية الذاكرة المشتركة المستخدمة في أنظمة المعالجة المتعددة المعاصرة. NUMA عبارة عن نظام حوسبي يتكون من عدة عقد مفردة بطريقة يتم فيها مشاركة الذاكرة الإجمالية بين جميع العقد: يتم تخصيص الذاكرة المحلية لكل وحدة معالجة مركزية ويمكنها الوصول إلى الذاكرة من وحدات المعالجة المركزية الأخرى في النظام [12،7].



NUMA هو نظام ذكي يستخدم لتوصيل عدة وحدات معالجة مركزية (CPU) بأي مقدار من ذاكرة الكمبيوتر المتوفرة على الكمبيوتر. يتم توصيل عقد NUMA المفردة عبر شبكة قابلة للتوسع (ناقل الإدخال / الإخراج) بحيث يمكن لوحدة المعالجة المركزية الوصول بشكل منهجي إلى الذاكرة المرتبطة بعقد NUMA الأخرى.



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





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

إذا نظرنا إلى الوراء: تطور المعالجات المتعددة للذاكرة المشتركة

صرح Frank Dennemann [8] أن معماريات النظام الحديثة لا تسمح بالفعل بالوصول الموحد للذاكرة (UMA) ، على الرغم من أن هذه الأنظمة مصممة خصيصًا لهذا الغرض. ببساطة ، كانت فكرة الحوسبة المتوازية هي وجود مجموعة من المعالجات التي تتعاون لحساب مهمة معينة ، وبالتالي تسريع عملية الحساب المتسلسلة الكلاسيكية.



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

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

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

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

يعد تحسين كفاءة الوصول إلى البيانات أحد الأهداف الرئيسية لتصميم وحدة المعالجة المركزية المعاصر. تم تزويد كل نواة من وحدات المعالجة المركزية بذاكرة تخزين مؤقت صغيرة من المستوى الأول (32 كيلوبايت) وذاكرة تخزين مؤقت أكبر (256 كيلوبايت) من المستوى 2. ستشترك النوى المختلفة لاحقًا في ذاكرة تخزين مؤقت من المستوى 3 من عدة ميجابايت ، وقد نما حجمها بشكل كبير بمرور الوقت.

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

دعم البرامج لـ NUMA

هناك نوعان من مقاييس تحسين البرامج التي قد تعمل على تحسين أداء نظام يدعم بنية NUMA - تقارب المعالج ووضع البيانات. كما هو موضح في [19] ، يتيح تقارب المعالج [...] ربط وفك ارتباط عملية أو مؤشر ترابط إلى وحدة معالجة مركزية واحدة ، أو مجموعة من وحدات المعالجة المركزية بحيث يتم تنفيذ العملية أو مؤشر الترابط فقط على وحدة المعالجة المركزية أو وحدات المعالجة المركزية المعينة بدلاً من أي وحدة المعالجة المركزية. يشير مصطلح وضع البيانات إلى تعديلات البرامج التي يتم فيها الاحتفاظ بالكود والبيانات في أقرب مكان ممكن في الذاكرة.

تدعم أنظمة التشغيل المختلفة المرتبطة بـ UNIX و UNIX NUMA بالطرق التالية (القائمة أدناه مأخوذة من [14]):

  • دعم Silicon Graphics IRIX لبنية ccNUMA التي تزيد عن 1240 وحدة معالجة مركزية مع سلسلة خادم Origin.
  • أضاف Microsoft Windows 7 و Windows Server 2008 R2 دعمًا لبنية NUMA عبر 64 مركزًا منطقيًا.
  • يحتوي الإصدار 2.5 من Linux kernel بالفعل على دعم NUMA الأساسي ، والذي تم تحسينه بشكل أكبر في إصدارات kernel اللاحقة. جلب الإصدار 3.8 من Linux kernel أساسًا جديدًا لـ NUMA سمح بتطوير سياسات NUMA أكثر فاعلية في إصدارات kernel اللاحقة [13]. جلب الإصدار 3.13 من Linux kernel العديد من السياسات التي تهدف إلى وضع عملية بالقرب من ذاكرتها ، جنبًا إلى جنب مع التعامل مع الحالات ، مثل مشاركة صفحات الذاكرة بين العمليات ، أو استخدام صفحات ضخمة شفافة ؛ تسمح إعدادات التحكم الجديدة في النظام بتمكين أو تعطيل موازنة NUMA ، بالإضافة إلى تكوين العديد من معلمات موازنة الذاكرة NUMA [15].
  • نموذج كل من Oracle و OpenSolaris بنية NUMA مع إدخال المجموعات المنطقية.
  • أضاف FreeBSD تقارب NUMA الأولي وتكوين السياسة في الإصدار 11.0.

في كتاب علوم وتكنولوجيا الكمبيوتر ، وقائع المؤتمر الدولي (CST2016) ، يقترح نينغ كاي أن دراسة بنية NUMA ركزت بشكل أساسي على بيئة الحوسبة المتطورة واقترحت تقسيم الجذر (NaRP) المدرك لـ NUMA ، والذي يعمل على تحسين الأداء من ذاكرات التخزين المؤقت المشتركة في عقد NUMA لتسريع تطبيقات ذكاء الأعمال. على هذا النحو ، يمثل NUMA أرضية وسطية بين أنظمة الذاكرة المشتركة (SMP) مع عدد قليل من المعالجات [6].

NUMA و Linux

كما هو مذكور أعلاه ، دعم Linux kernel NUMA منذ الإصدار 2.5. يقدم كل من Debian GNU / Linux و Ubuntu دعم NUMA لتحسين العملية مع حزمتين برمجيتين numactl [16] و numad [17]. بمساعدة الأمر numactl ، يمكنك سرد مخزون العقد NUMA المتاحة في نظامك [18]:

# numactl - الأجهزة
متوفرة:2العقد(0-1)
العقدة0cpus:0 1 2 3 4 5 6 7 16 17 18 19 عشرين واحد وعشرين 22 2. 3
العقدة0بحجم:8157ميغا بايت
العقدة0مجانا:88ميغا بايت
العقدة1cpus:8 9 10 أحد عشر 12 13 14 خمسة عشر 24 25 26 27 28 29 30 31
العقدة1بحجم:8191ميغا بايت
العقدة1مجانا:5176ميغا بايت
مسافات العقدة:
العقدة0 1
0:10 عشرين
1:عشرين 10

NumaTop هي أداة مفيدة تم تطويرها بواسطة Intel لمراقبة منطقة ذاكرة وقت التشغيل وتحليل العمليات في أنظمة NUMA [10،11]. يمكن للأداة تحديد الاختناقات المحتملة في الأداء المتعلقة بـ NUMA ، وبالتالي المساعدة في إعادة توازن الذاكرة / تخصيصات وحدة المعالجة المركزية لتعظيم إمكانات نظام NUMA. انظر [9] للحصول على وصف أكثر تفصيلاً.

سيناريوهات الاستخدام

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

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

استنتاج

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

الروابط والمراجع

  1. قارن NVIDIA Tesla مقابل Radeon Instinct ، https://www.itcentralstation.com/products/comparisons/nvidia-tesla_vs_radeon-instinct
  2. قارن NVIDIA DGX-1 مقابل Radeon Instinct ، https://www.itcentralstation.com/products/comparisons/nvidia-dgx-1_vs_radeon-instinct
  3. اتساق ذاكرة التخزين المؤقت ، ويكيبيديا ، https://en.wikipedia.org/wiki/Cache_coherence
  4. تطفل الحافلة ، ويكيبيديا ، https://en.wikipedia.org/wiki/Bus_snooping
  5. بروتوكولات التماسك المؤقت في الأنظمة متعددة المعالجات ، Geeks for geeks ، https://www.geeksforgeeks.org/cache-coherence-protocols-in-multiprocessor-system /
  6. علوم وتكنولوجيا الكمبيوتر - وقائع المؤتمر الدولي (CST2016) ، نينغ كاي (محرر) ، شركة النشر العلمي العالمي Pte Ltd ، ISBN: 9789813146419
  7. دانيال ب. بوفيت وماركو سيزاتي: فهم بنية NUMA في فهم Linux Kernel ، الإصدار الثالث ، O’Reilly ، https://www.oreilly.com/library/view/understanding-the-linux/0596005652/
  8. Frank Dennemann: NUMA Deep Dive Part 1: From UMA to NUMA، https://frankdenneman.nl/2016/07/07/numa-deep-dive-part-1-uma-numa/
  9. كولين إيان كينج: NumaTop: أداة مراقبة نظام NUMA ، http://smackerelofopinion.blogspot.com/2015/09/numatop-numa-system-monitoring-tool.html
  10. نوماتوب ، https://github.com/intel/numatop
  11. حزمة numatop لـ Debian GNU / Linux ، https://packages.debian.org/buster/numatop
  12. جوناثان كيهاياس: فهم الوصول إلى الذاكرة غير الموحدة / البنى (NUMA) ، https://www.sqlskills.com/blogs/jonathan/understanding-non-uniform-memory-accessarchitectures-numa/
  13. Linux Kernel News for Kernel 3.8 ، https://kernelnewbies.org/Linux_3.8
  14. الوصول غير المنتظم للذاكرة (NUMA) ، ويكيبيديا ، https://en.wikipedia.org/wiki/Non-uniform_memory_access
  15. توثيق إدارة ذاكرة Linux ، NUMA ، https://www.kernel.org/doc/html/latest/vm/numa.html
  16. حزمة numactl لـ Debian GNU / Linux ، https://packages.debian.org/sid/admin/numactl
  17. حزمة numad لـ Debian GNU / Linux ، https://packages.debian.org/buster/numad
  18. كيف يمكنني معرفة ما إذا كان تكوين NUMA ممكّنًا أو معطلاً ؟، https://www.thegeekdiary.com/centos-rhel-how-to-find-if-numa-configuration-is-enabled-or-disabled/
  19. تقارب المعالج ، ويكيبيديا ، https://en.wikipedia.org/wiki/Processor_affinity

اشكرك

يود المؤلفون أن يشكروا Gerold Rupprecht على دعمه أثناء إعداد هذا المقال.

عن المؤلفين

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

نيهاندا هو مهندس الأجهزة والتحكم (علم القياس) في Paeflow Metering في هراري ، زيمبابوي.

يعمل فرانك هوفمان على الطريق - ويفضل أن يكون من برلين (ألمانيا) وجنيف (سويسرا) وكيب تاون (جنوب إفريقيا) - كمطور ومدرب ومؤلف لمجلات مثل Linux-User و Linux Magazine. وهو أيضًا مؤلف مشارك لكتاب إدارة حزم دبيان ( http://www.dpmb.org ).