numa(7)

الاسم
numa - نظرة عامة على بنية الذاكرة غير المنتظمة

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

  استدعاءات نظام NUMA
ينفذ نواة لينكس استدعاءات النظام التالية المتعلقة بـ NUMA: get_mempolicy(2)، mbind(2)، migrate_pages(2)، move_pages(2)، و set_mempolicy(2). ومع ذلك، يجب على التطبيقات عادةً استخدام الواجهة المقدمة من libnuma؛ انظر "دعم المكتبة" أدناه.

  /proc/pid/numa_maps (منذ لينكس 2.6.14)
يعرض هذا الملف معلومات حول سياسة الذاكرة NUMA وتخصيصها لعملية ما.

يحتوي كل سطر على معلومات حول نطاق ذاكرة مستخدم بواسطة العملية، مع عرض—بين معلومات أخرى—سياسة الذاكرة الفعلية لذلك النطاق وعلى أي عقد تم تخصيص الصفحات.

numa_maps هو ملف للقراءة فقط. عند قراءة /proc/pid/numa_maps، يقوم النواة بمسح مساحة العنوان الافتراضية للعملية والإبلاغ عن كيفية استخدام الذاكرة. يُعرض سطر واحد لكل نطاق ذاكرة فريد للعملية.

يظهر الحقل الأول من كل سطر عنوان البداية لنطاق الذاكرة. يسمح هذا الحقل بالربط مع محتويات ملف /proc/pid/maps، الذي يحتوي على عنوان النهاية للنطاق ومعلومات أخرى، مثل أذونات الوصول والمشاركة.

يظهر الحقل الثاني سياسة الذاكرة السارية حاليًا لنطاق الذاكرة. لاحظ أن السياسة الفعلية ليست بالضرورة السياسة المثبتة من قبل العملية لذلك النطاق. تحديدًا، إذا قامت العملية بتثبيت سياسة "افتراضية" لذلك النطاق، فإن السياسة الفعلية لذلك النطاق ستكون سياسة العملية، والتي قد تكون أو لا تكون "افتراضية".

يحتوي باقي السطر على معلومات حول الصفحات المخصصة في نطاق الذاكرة، كما يلي:

N<عقدة>=<عدد_الصفحات>
    عدد الصفحات المخصصة على <عقدة>. يتضمن <عدد_الصفحات> فقط الصفحات المعينة حاليًا بواسطة العملية. قد يكون ترحيل الصفحات واستعادة الذاكرة قد أزالا تعيين الصفحات المرتبطة بهذا النطاق مؤقتًا. قد تظهر هذه الصفحات مرة أخرى فقط بعد أن تحاول العملية الإشارة إليها. إذا كان نطاق الذاكرة يمثل منطقة ذاكرة مشتركة أو تعيين ملف، فقد يكون لدى عمليات أخرى حاليًا صفحات إضافية معينة في نطاق ذاكرة مقابل.

file=<اسم_الملف>
    الملف الداعم لنطاق الذاكرة. إذا تم تعيين الملف كخاص، فقد تولد عمليات الوصول للكتابة صفحات COW (نسخ عند الكتابة) في هذا النطاق. تُعرض هذه الصفحات كصفحات مجهولة.

heap
    نطاق الذاكرة يُستخدم للكومة.

stack
    نطاق الذاكرة يُستخدم للمكدس.

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

anon=<صفحات>
    عدد الصفحات المجهولة في النطاق.

dirty=<صفحات>
    عدد الصفحات المتسخة.

mapped=<pages>
    العدد الإجمالي للصفحات المعينة، إذا كان مختلفًا عن الصفحات المتسخة dirty والمجهولة anon.

mapmax=<count>
    أقصى عدد للخرائط (عدد العمليات التي تعين صفحة واحدة) تم مواجهته أثناء المسح. يمكن استخدام هذا كمؤشر لدرجة المشاركة الحاصلة في نطاق ذاكرة معين.

swapcache=<count>
    عدد الصفحات التي لها إدخال مرتبط على جهاز المبادلة.

active=<pages>
    عدد الصفحات في القائمة النشطة. يُظهر هذا الحقل فقط إذا كان مختلفًا عن عدد الصفحات في هذا النطاق. يعني هذا وجود بعض الصفحات غير النشطة في نطاق الذاكرة والتي قد تُزال من الذاكرة بواسطة المبادل قريبًا.

writeback=<pages>
    عدد الصفحات التي تُكتب حاليًا إلى القرص.

المعايير
لا شيء.

ملاحظات
استدعاءات نظام NUMA في لينكس وواجهة /proc متاحة فقط إذا تم تكوين النواة وبناؤها مع الخيار CONFIG_NUMA.

  دعم المكتبة
اربط مع -lnuma للحصول على تعريفات استدعاءات النظام. libnuma والملف الرأسي المطلوب <numaif.h> متاحان في حزمة numactl.

مع ذلك، لا ينبغي للتطبيقات استخدام استدعاءات النظام هذه مباشرة. بدلاً من ذلك، يُوصى بالواجهة عالية المستوى التي توفرها دوال numa(3) في حزمة numactl. حزمة numactl متاحة في ftp://oss.sgi.com/www/projects/libnuma/download/. الحزمة مضمنة أيضًا في بعض توزيعات لينكس. بعض التوزيعات تضم مكتبة التطوير والملف الرأسي في حزمة منفصلة numactl-devel.

انظر أيضًا
get_mempolicy(2), mbind(2), move_pages(2), set_mempolicy(2), numa(3), cpuset(7), numactl(8)

ترجمة
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.