.\" -*- coding: UTF-8 -*- .\" Copyright 2003-2004, Andi Kleen .\" Copyright 2003-2004, SuSE GmbH .\" Copyright 2007, Lee Schermerhorn .\" Copyright 2007, Hewlett-Packard Development Company, L.P. .\" Copyright, the authors of the Linux man-pages project .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft-var .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH set_mempolicy 2 "8 فبراير 2026" "صفحات دليل لينكس 6.18" .SH الاسم set_mempolicy \- ضبط سياسة ذاكرة NUMA المبدئية لخيط ونسله .SH المكتبة مكتبة سياسات NUMA (الوصول غير الموحد للذاكرة) (\fIlibnuma\fP،\ \fI\-lnuma\fP) .SH موجز .nf \fB#include \fP .P \fBlong set_mempolicy(int \fP\fImode\fP\fB, const unsigned long *\fP\fInodemask\fP\fB,\fP \fB unsigned long \fP\fImaxnode\fP\fB);\fP .fi .SH الوصف تضبط \fBset_mempolicy\fP() سياسة ذاكرة NUMA للخيط المستدعي، والتي تتكون من نمط سياسة وصفر أو أكثر من العقد، إلى القيم المحددة بواسطة وسيطات \fImode\fP و\fInodemask\fP و\fImaxnode\fP. .P تمتلك آلة NUMA متحكمات ذاكرة مختلفة بمسافات متفاوتة عن وحدات معالجة مركزية (CPUs) محددة. تحدد سياسة الذاكرة من أي عقدة تُخَصَّص الذاكرة للخيط. .P يعرّف استدعاء النظام هذا السياسة المبدئية للخيط. تحكم سياسة الخيط تخصيص الصفحات في مساحة عنوان العملية خارج نطاقات الذاكرة التي يتحكم بها سياسة أكثر تحديدًا مضبوطة بواسطة \fBmbind\fP(2). كما تتحكم السياسة المبدئية للخيط في تخصيص أي صفحات للملفات المعينة في الذاكرة والمخصصة باستخدام استدعاء \fBmmap\fP(2) مع العلم \fBMAP_PRIVATE\fP والتي يقرأ منها (يُحملها) الخيط فقط، وللملفات المعينة في الذاكرة والمخصصة باستخدام استدعاء \fBmmap\fP(2) مع العلم \fBMAP_SHARED\fP، بغض النظر عن نوع الوصول. تُطبق السياسة فقط عند تخصيص صفحة جديدة للخيط. وبالنسبة للذاكرة المجهولة، يحدث هذا عند وصول الخيط للصفحة لأول مرة. .P يجب أن تحدد وسيطة \fImode\fP أحد الأنماط \fBMPOL_DEFAULT\fP، أو \fBMPOL_BIND\fP، أو \fBMPOL_INTERLEAVE\fP، أو \fBMPOL_WEIGHTED_INTERLEAVE\fP، أو \fBMPOL_PREFERRED\fP، أو \fBMPOL_PREFERRED_MANY\fP، أو \fBMPOL_LOCAL\fP (الموصوفة بالتفصيل أدناه). تتطلب جميع الأنماط باستثناء \fBMPOL_DEFAULT\fP من المستدعي تحديد العقدة أو العقد التي ينطبق عليها النمط، عبر وسيطة \fInodemask\fP. .P قد يتضمن المعامل \fImode\fP أيضًا \fIعلم وضع\fP اختياري. \fIأعلام الوضع\fP المدعومة هي: .TP \fBMPOL_F_NUMA_BALANCING\fP (منذ لينكس 5.12) .\" commit bda420b985054a3badafef23807c4b4fa38a3dff عندما يكون \fImode\fP هو \fBMPOL_BIND\fP، فَعّل موازنة NUMA في النواة للمهمة إذا كانت مدعومة من النواة. إذا كان العلم غير مدعوم من النواة، أو استُخدم مع \fImode\fP غير \fBMPOL_BIND\fP، تُعاد القيمة \-1 ويُضبط \fIerrno\fP على \fBEINVAL\fP. .TP \fBMPOL_F_RELATIVE_NODES\fP (منذ لينكس 2.6.26) يحدد \fInodemask\fP غير الفارغ معرفات عقدة نسبية لمجموعة معرفات العقد المسموح بها بواسطة cpuset الحالي للعملية. .TP \fBMPOL_F_STATIC_NODES\fP (منذ لينكس 2.6.26) يحدد \fInodemask\fP غير الفارغ معرفات عقدة فيزيائية. لن يعيد لينكس تعيين \fInodemask\fP عندما تنتقل العملية إلى سياق cpuset مختلف، ولا عندما تتغير مجموعة العقد المسموح بها بواسطة سياق cpuset الحالي للعملية. .P يشير \fInodemask\fP إلى قناع بتات لمعرفات العقد يحتوي على بتات حتى \fImaxnode\fP. يُقرّب حجم قناع البتات إلى المضاعف التالي لـ \fIsizeof(unsigned long)\fP، لكن النواة ستستخدم البتات حتى \fImaxnode\fP فقط. تحدد قيمة NULL لـ \fInodemask\fP أو قيمة صفر لـ \fImaxnode\fP المجموعة الفارغة من العقد. إذا كانت قيمة \fImaxnode\fP صفرًا، تُتجاهل وسيطة \fInodemask\fP. .P حيثما يكون \fInodemask\fP مطلوبًا، يجب أن يحتوي على عقدة واحدة على الأقل تكون متصلة، ومسموح بها بواسطة سياق cpuset الحالي للعملية (ما لم يُحدد علم النمط \fBMPOL_F_STATIC_NODES\fP)، وتحتوي على ذاكرة. إذا ضُبط \fBMPOL_F_STATIC_NODES\fP في \fImode\fP واحتوى \fInodemask\fP المطلوب على عقد غير مسموح بها بواسطة سياق cpuset الحالي للعملية، تعود سياسة الذاكرة إلى \fIتخصيص محلي\fP. يلغي هذا فعليًا السياسة المحددة حتى يتضمن سياق cpuset للعملية عقدة واحدة أو أكثر من العقد المحددة بواسطة \fInodemask\fP. .P يجب أن يتضمن المعامل \fImode\fP إحدى القيم التالية: .TP \fBMPOL_DEFAULT\fP يحدد هذا النمط إزالة أي سياسة ذاكرة خيط غير مبدئية، بحيث "تتراجع" سياسة الذاكرة إلى السياسة المبدئية للنظام. السياسة المبدئية للنظام هي "تخصيص محلي"\[em]أي تخصيص الذاكرة على عقدة وحدة المعالجة المركزية التي أطلقت التخصيص. يجب تحديد \fInodemask\fP كـ NULL. إذا كانت "العقدة المحلية" لا تحتوي على ذاكرة حرة، سيحاول النظام تخصيص ذاكرة من عقدة "قريبة". .TP \fBMPOL_BIND\fP يعرف هذا النمط سياسة صارمة تقيد تخصيص الذاكرة بالعقد المحددة في \fInodemask\fP. إذا حدد \fInodemask\fP أكثر من عقدة واحدة، ستأتي تخصيصات الصفحات من العقدة ذات معرف العقدة الرقمي الأقل أولاً، حتى لا تحتوي تلك العقدة على ذاكرة حرة. ستأتي التخصيصات بعد ذلك من العقدة ذات معرف العقدة الأعلى التالي المحدد في \fInodemask\fP وهكذا، حتى لا تحتوي أي من العقد المحددة على ذاكرة حرة. لن تُخصص الصفحات من أي عقدة غير محددة في \fInodemask\fP. .TP \fBMPOL_INTERLEAVE\fP .\" NOTE: the following sentence doesn't make sense in the context .\" of set_mempolicy() -- no memory area specified. .\" To be effective the memory area should be fairly large, .\" at least 1 MB or bigger. يدرج هذا النمط تخصيصات الصفحات عبر العقد المحددة في \fInodemask\fP بترتيب معرف العقدة الرقمي. يحسن هذا من عرض النطاق بدلاً من زمن الوصول عن طريق توزيع الصفحات ووصولات الذاكرة لتلك الصفحات عبر عقد متعددة. ومع ذلك، ستظل الوصولات إلى صفحة واحدة محدودة بعرض نطاق ذاكرة عقدة واحدة. .TP \fBMPOL_WEIGHTED_INTERLEAVE\fP (منذ لينكس 6.9) .\" commit fa3bea4e1f8202d787709b7e3654eb0a99aed758 يُبادل هذا الوضع تخصيصات الصفحات عبر العقد المحددة في \fInodemask\fP وفقًا للأوزان في \fI/sys/kernel/mm/mempolicy/weighted_interleave\fP. على سبيل المثال، إذا ضُبطت البتات 0 و2 و5 في \fInodemask\fP، وكانت محتويات \fI/sys/kernel/mm/mempolicy/weighted_interleave/node0\fP، و \fI/sys/\fP.\|.\|.\fI/node2\fP، و \fI/sys/\fP.\|.\|.\fI/node5\fP هي 4 و7 و9 على التوالي، فستُخصص الصفحات في هذه المنطقة على العقد 0 و2 و5 بنسبة 4:7:9. .TP \fBMPOL_PREFERRED\fP يضبط هذا النمط العقدة المفضلة للتخصيص. ستحاول النواة تخصيص الصفحات من هذه العقدة أولاً والتراجع إلى العقد "القريبة" إذا كانت العقدة المفضلة منخفضة في الذاكرة الحرة. إذا حدد \fInodemask\fP أكثر من معرف عقدة واحد، ستُختار العقدة الأولى في القناع كعقدة مفضلة. إذا حددت وسيطتا \fInodemask\fP و\fImaxnode\fP المجموعة الفارغة، تحدد السياسة "تخصيصًا محليًا" (مثل السياسة المبدئية للنظام التي نوقشت أعلاه). .TP \fBMPOL_PREFERRED_MANY\fP (منذ لينكس 5.15) .\" commit b27abaccf8e8b012f126da0c2a1ab32723ec8b9f يحدد هذا النمط تفضيلًا للعقد التي ستحاول النواة التخصيص منها. يختلف هذا عن \fBMPOL_PREFERRED\fP في أنه يقبل مجموعة من العقد بدلاً من عقدة واحدة. تهدف هذه السياسة إلى إفادة تخصيصات الصفحات حيث تكون أنواع الذاكرة المحددة (أي الذاكرة غير المتطايرة، أو عالية النطاق، أو ذاكرة المسرع) ذات أهمية أكبر من موقع العقدة. .TP \fBMPOL_LOCAL\fP (منذ لينكس 3.8) .\" commit 479e2802d09f1e18a97262c4c6f8f17ae5884bd8 .\" commit f2a07f40dbc603c15f8b06e6ec7f768af67b424f يحدد هذا النمط "تخصيصًا محليًا"؛ تُخصص الذاكرة على عقدة وحدة المعالجة المركزية التي أطلقت التخصيص ("العقدة المحلية"). يجب أن تحدد وسيطتا \fInodemask\fP و\fImaxnode\fP المجموعة الفارغة. إذا كانت "العقدة المحلية" منخفضة في الذاكرة الحرة، ستحاول النواة تخصيص ذاكرة من عقد أخرى. ستخصص النواة ذاكرة من "العقدة المحلية" كلما كانت الذاكرة متاحة لهذه العقدة. إذا لم تكن "العقدة المحلية" مسموحًا بها بواسطة سياق cpuset الحالي للعملية، ستحاول النواة تخصيص ذاكرة من عقد أخرى. ستخصص النواة ذاكرة من "العقدة المحلية" كلما أصبحت مسموحًا بها بواسطة سياق cpuset الحالي للعملية. .P تُحفظ سياسة ذاكرة الخيط عبر \fBexecve\fP(2)، وتُورث بواسطة الخيوط الفرعية المنشأة باستخدام \fBfork\fP(2) أو \fBclone\fP(2). .SH "قيمة الإرجاع" عند النجاح، تُرجع \fBset_mempolicy\fP() 0؛ وعند الخطأ، تُرجع \-1 ويُضبط \fIerrno\fP للإشارة إلى الخطأ. .SH الأخطاء .TP \fBEFAULT\fP جزء من أو كل نطاق الذاكرة المحدد بواسطة \fInodemask\fP و \fImaxnode\fP يشير إلى خارج مساحة العناوين التي يمكنك الوصول إليها. .TP \fBEINVAL\fP ‏\fImode\fP غير صالح. أو \fImode\fP هو \fBMPOL_DEFAULT\fP و \fInodemask\fP غير فارغ، أو \fImode\fP هو \fBMPOL_BIND\fP أو \fBMPOL_INTERLEAVE\fP و \fInodemask\fP فارغ. أو يحدد \fImaxnode\fP أكثر من سعة صفحة من البتات. أو يحدد \fInodemask\fP معرف عقدة واحد أو أكثر أكبر من الحد الأقصى لمعرفات العقد المدعومة. أو لا يوجد أي من معرفات العقد المحددة بواسطة \fInodemask\fP متصلة ومسموح بها بواسطة سياق cpuset الحالي للعملية، أو لا تحتوي أي من العقد المحددة على ذاكرة. أو حددت وسيطة \fImode\fP كلاً من \fBMPOL_F_STATIC_NODES\fP و \fBMPOL_F_RELATIVE_NODES\fP. أو \fBMPOL_F_NUMA_BALANCING\fP غير مدعوم من النواة، أو استُخدم مع \fImode\fP غير \fBMPOL_BIND\fP. .TP \fBENOMEM\fP ذاكرة النواة المتوفرة غير كافية. .SH المعايير لينكس. .SH التاريخ لينكس 2.6.7. .SH ملاحظات لا تُحفظ سياسة الذاكرة إذا نُقلت الصفحة إلى ذاكرة التبادل (swapped out). وعند إعادة استدعاء هذه الصفحة، ستستخدم سياسة الخيط أو نطاق الذاكرة الساري في وقت تخصيص الصفحة. .P للحصول على معلومات حول دعم المكتبات، انظر \fBnuma\fP(7). .SH "انظر أيضًا" \fBget_mempolicy\fP(2)،‏ \fBgetcpu\fP(2)،‏ \fBmbind\fP(2)،‏ \fBmmap\fP(2)،‏ \fBnuma\fP(3)،‏ \fBcpuset\fP(7)،‏ \fBnuma\fP(7)،‏ \fBnumactl\fP(8) .PP .SH ترجمة تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي . .PP هذه الترجمة هي وثيقة مجانية؛ راجع .UR https://www.gnu.org/licenses/gpl-3.0.html رخصة جنو العامة الإصدار 3 .UE أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات. .PP إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: .MT kde-l10n-ar@kde.org .ME .