OpenPBS

يمكن تمكين OpenPBS بسهولة على مجموعة CycleCloud عن طريق تعديل "run_list" في قسم التكوين من تعريف نظام المجموعة الخاص بك. المكونان الأساسيان لمجموعة PBS Professional هما العقدة "الرئيسية" التي توفر نظام ملفات مشترك يتم تشغيل برنامج PBS Professional عليه، وعقد "التنفيذ" التي هي المضيفين الذين يركبون نظام الملفات المشترك وينفذون المهام المرسلة. على سبيل المثال، قد يبدو مقتطف قالب نظام المجموعة البسيط كما يلي:

[cluster my-pbspro]

[[node master]]
    ImageName = cycle.image.centos7
    MachineType = Standard_A4 # 8 cores

    [[[configuration]]]
    run_list = role[pbspro_master_role]

[[nodearray execute]]
    ImageName = cycle.image.centos7
    MachineType = Standard_A1  # 1 core

    [[[configuration]]]
    run_list = role[pbspro_execute_role]

سيؤدي استيراد مجموعة وبدء تشغيلها مع تعريف في CycleCloud إلى عقدة "رئيسية" واحدة. يمكن إضافة عقد التنفيذ إلى نظام المجموعة عبر cyclecloud add_node الأمر . على سبيل المثال، لإضافة 10 عقد تنفيذ إضافية:

cyclecloud add_node my-pbspro -t execute -c 10

التحجيم التلقائي المستند إلى موارد PBS

تحتفظ Cyclecloud بمواردين لتوسيع إمكانية التزويد الديناميكي. هذه الموارد هي nodearrayوالنوع الآلي.

إذا قمت بإرسال مهمة وتحديد مورد nodearray بحلول qsub -l nodearray=highmem -- /bin/hostname ذلك الحين سوف تضيف CycleCloud العقد إلى nodearray المسمى "highmem". إذا لم يكن هناك مثل هذا nodearray، فستظل الوظيفة الخامة.

وبالمثل، إذا تم تحديد مورد نوع الجهاز الذي يتم إرسال وظيفة، على سبيل المثال qsub -l machinetype:Standard_L32s_v2 my-job.sh، فإن CycleCloud يقوم بالتحجيم التلقائي ل "Standard_L32s_v2" في nodearray "execute" (الافتراضي). إذا لم يكن نوع الجهاز هذا متوفرا في صفيف عقدة "التنفيذ"، فستظل الوظيفة الخامة.

يمكن استخدام هذه الموارد في تركيبة كما يلي:

qsub -l nodes=8:ppn=16:nodearray=hpc:machinetype=Standard_HB60rs my-simulation.sh

الذي سيتم التحجيم التلقائي فقط إذا تم تحديد الأجهزة "Standard_HB60rs" صفيف عقدة "hpc".

إضافة قوائم انتظار إضافية معينة إلى nodearrays

على المجموعات ذات العقد المتعددة، من الشائع إنشاء قوائم انتظار منفصلة لتوجيه المهام تلقائيا إلى نوع الجهاز الظاهري المناسب. في هذا المثال، سنفترض أنه تم تعريف nodearray "gpu" التالي في قالب نظام المجموعة الخاص بك:

    [[nodearray gpu]]
    Extends = execute
    MachineType = Standard_NC24rs

        [[[configuration]]]
        pbspro.slot_type = gpu

بعد استيراد قالب نظام المجموعة وبدء تشغيل نظام المجموعة، يمكن تشغيل الأوامر التالية على عقدة الخادم لإنشاء قائمة انتظار "gpu":

/opt/pbs/bin/qmgr -c "create queue gpu"
/opt/pbs/bin/qmgr -c "set queue gpu queue_type = Execution"
/opt/pbs/bin/qmgr -c "set queue gpu resources_default.ungrouped = false"
/opt/pbs/bin/qmgr -c "set queue gpu resources_default.place = scatter"
/opt/pbs/bin/qmgr -c "set queue gpu resources_default.slot_type = gpu"
/opt/pbs/bin/qmgr -c "set queue gpu default_chunk.ungrouped = false"
/opt/pbs/bin/qmgr -c "set queue gpu default_chunk.slot_type = gpu"
/opt/pbs/bin/qmgr -c "set queue gpu enabled = true"
/opt/pbs/bin/qmgr -c "set queue gpu started = true"

ملاحظة

سيقوم تعريف قائمة الانتظار أعلاه بحزم جميع الأجهزة الظاهرية في قائمة الانتظار في مجموعة مقياس جهاز ظاهري واحد لدعم مهام MPI. لتعريف قائمة الانتظار للوظائف التسلسلية والسماح بمجموعة مقاييس VM متعددة، قم بتعيين ungrouped = true لكل من resources_default و default_chunk. يمكنك أيضا تعيين resources_default.place = pack ما إذا كنت تريد أن يقوم المجدول بحزم المهام على الأجهزة الظاهرية بدلا من تخصيص الترتيب الدوري للوظائف. لمزيد من المعلومات حول التعبئة الوظيفية ل PBS، راجع وثائق PBS Professional OSS الرسمية.

مرجع تكوين PBS Professional

فيما يلي خيارات التكوين الخاصة ب PBS Professional التي يمكنك تبديلها لتخصيص الوظائف:

خيارات PBS Pro الوصف
pbspro.slots عدد الفتحات لعقدة معينة لتقديم تقرير إلى PBS Pro. عدد الفتحات هو عدد المهام المتزامنة التي يمكن للعقدة تنفيذها، ويتم تعيين هذه القيمة افتراضيا إلى عدد وحدات المعالجة المركزية على جهاز معين. يمكنك تجاوز هذه القيمة في الحالات التي لا تقوم فيها بتشغيل المهام استنادا إلى وحدة المعالجة المركزية ولكن على الذاكرة ووحدات معالجة الرسومات وما إلى ذلك.
pbspro.slot_type اسم نوع "الفتحة" التي توفرها العقدة. الإعداد الافتراضي هو "execute". عند وضع علامة على وظيفة باستخدام المورد slot_type=<type>الثابت، سيتم تشغيل هذه المهمة فقط على جهاز من نفس نوع الفتحة. يسمح لك هذا بإنشاء تكوينات برامج وأجهزة مختلفة لكل عقدة والتأكد من جدولة مهمة مناسبة دائما على النوع الصحيح من العقدة.
pbspro.version الافتراضي: '18.1.3-0'. هذا هو إصدار PBS Professional لتثبيته وتشغيله. هذا هو الخيار الافتراضي والوحي حاليا. في الإصدارات الإضافية المستقبلية من برنامج PBS Professional قد يتم دعمها.

توصيل PBS باستخدام CycleCloud

يدير CycleCloud مجموعات OpenPBS من خلال عامل قابل للتثبيت يسمى azpbs. يتصل هذا العامل ب CycleCloud لقراءة تكوينات نظام المجموعة والأجهزة الظاهرية، كما يتكامل مع OpenPBS لمعالجة معلومات المهمة والمضيف بشكل فعال. يتم العثور على جميع azpbs التكوينات في autoscale.json الملف، عادة /opt/cycle/pbspro/autoscale.json.

  "password": "260D39rWX13X",
  "url": "https://cyclecloud1.contoso.com",
  "username": "cyclecloud_api_user",
  "logging": {
    "config_file": "/opt/cycle/pbspro/logging.conf"
  },
  "cluster_name": "mechanical_grid",

الملفات المهمة

يقوم azpbs العامل بتحليل تكوين PBS في كل مرة يتم استدعاؤها - الوظائف وقوائم الانتظار والموارد. يتم توفير المعلومات في stderr وstdout للأمر بالإضافة إلى ملف سجل، على كل من المستويات القابلة للتكوين. يتم تسجيل جميع أوامر إدارة PBS (qcmd) مع الوسيطات إلى ملف أيضا.

يمكن العثور على كل هذه الملفات في الدليل /opt/cycle/pbspro/ حيث تم تثبيت العامل.

الملف ‏‏الموقع الوصف
تكوين التحجيم التلقائي autoscale.json تكوين التحجيم التلقائي، وخريطة الموارد، ومعلومات الوصول إلى CycleCloud
سجل التحجيم التلقائي autoscale.log تسجيل مؤشر الترابط الرئيسي للعامل بما في ذلك إدارة مضيف CycleCloud
سجل الطلب demand.log سجل مفصل لمطابقة الموارد
سجل تتبع qcmd qcmd.log تسجيل استدعاءات العامل qcmd
تكوين التسجيل logging.conf تكوينات لأقنعة التسجيل ومواقع الملفات

تعريف موارد OpenPBS

يسمح هذا المشروع باقتران موارد OpenPBS بشكل عام مع موارد Azure VM عبر مشروع cyclecloud-pbspro (azpbs). علاقة المورد هذه المعرفة في autoscale.json.

الموارد الافتراضية المحددة مع قالب نظام المجموعة الذي نشحن به هي

{"default_resources": [
   {
      "select": {},
      "name": "ncpus",
      "value": "node.vcpu_count"
   },
   {
      "select": {},
      "name": "group_id",
      "value": "node.placement_group"
   },
   {
      "select": {},
      "name": "host",
      "value": "node.hostname"
   },
   {
      "select": {},
      "name": "mem",
      "value": "node.memory"
   },
   {
      "select": {},
      "name": "vm_size",
      "value": "node.vm_size"
   },
   {
      "select": {},
      "name": "disk",
      "value": "size::20g"
   }]
}

يتم مساواة مورد OpenPBS المسمى mem بسمة عقدة تسمى node.memory، وهي الذاكرة الإجمالية لأي جهاز ظاهري. يسمح azpbs هذا التكوين بمعالجة طلب مورد مثل -l mem=4gb عن طريق مقارنة قيمة متطلبات مورد الوظيفة بموارد العقدة.

لاحظ أن القرص مشفر حاليا إلى size::20g. فيما يلي مثال على معالجة حجم القرص المحدد لحجم الجهاز الظاهري

   {
      "select": {"node.vm_size": "Standard_F2"},
      "name": "disk",
      "value": "size::20g"
   },
   {
      "select": {"node.vm_size": "Standard_H44rs"},
      "name": "disk",
      "value": "size::2t"
   }

مجموعات التحجيم التلقائي والمقياس

يعامل CycleCloud المهام الممتدة والتسلسلية بشكل مختلف في مجموعات OpenPBS. ستهبط وظائف الامتداد على العقد التي تعد جزءا من نفس مجموعة الموضع. تحتوي مجموعة المواضع على معنى نظام أساسي معين (VirtualMachineScaleSet مع SinglePlacementGroup=true) وستدير CC مجموعة موضع مسماة لكل مجموعة عقدة ممتدة. استخدم مورد group_id PBS لاسم مجموعة المواضع هذا.

hpc تقوم قائمة الانتظار بإلحاق ما يعادل باستخدام الإعدادات الافتراضية -l place=scatter:group=group_id لقائمة الانتظار الأصلية.

تثبيت عامل CycleCloud OpenPBS azpbs

سيقوم نظام مجموعة OpenPBS CycleCloud بإدارة تثبيت وتكوين العامل على عقدة الخادم. يتضمن الإعداد إعداد موارد PBS وقوائم الانتظار والربطات. يمكن إجراء تثبيت مبرمج برمجيا خارج CycleCloud أيضا.

# Prerequisite: python3, 3.6 or newer, must be installed and in the PATH
wget https://github.com/Azure/cyclecloud-pbspro/releases/download/2.0.5/cyclecloud-pbspro-pkg-2.0.5.tar.gz
tar xzf cyclecloud-pbspro-pkg-2.0.5.tar.gz
cd cyclecloud-pbspro

# Optional, but recommended. Adds relevant resources and enables strict placement
./initialize_pbs.sh

# Optional. Sets up workq as a colocated, MPI focused queue and creates htcq for non-MPI workloads.
./initialize_default_queues.sh

# Creates the azpbs autoscaler
./install.sh  --venv /opt/cycle/pbspro/venv

# Otherwise insert your username, password, url, and cluster name here.
./generate_autoscale_json.sh --install-dir /opt/cycle/pbspro \
                             --username user \
                             --password password \
                             --url https://fqdn:port \
                             --cluster-name cluster_name

azpbs validate

يدعم CycleCloud مجموعة قياسية من سمات الضبط التلقائي عبر المجدولات:

السمة الوصف
cyclecloud.cluster.autoscale.stop_enabled هل تم تمكين إيقاف تلقائي على هذه العقدة؟ [صواب/خطأ]
cyclecloud.cluster.autoscale.idle_time_after_jobs مقدار الوقت (بالثوان) للعقدة للجلوس الخامل بعد إكمال المهام قبل تقليصها.
cyclecloud.cluster.autoscale.idle_time_before_jobs مقدار الوقت (بالثوان) للعقدة للجلوس الخامل قبل إكمال المهام قبل تقليصها.

ملاحظة

لا يدعم CycleCloud تكوين الاندفاع باستخدام Open PBS.

ملاحظة

على الرغم من أن Windows هو نظام أساسي مفتوح ل PBS مدعوم رسميا، إلا أن CycleCloud لا يدعم تشغيل Open PBS على Windows في الوقت الحالي.