OpenPBS

OpenPBS , küme tanımınızın yapılandırma bölümündeki "run_list" değiştirilerek CycleCloud kümesinde kolayca etkinleştirilebilir. PBS Professional kümesinin iki temel bileşeni, PBS Professional yazılımının üzerinde çalıştığı bir paylaşılan dosya sistemi sağlayan 'ana' düğüm ve paylaşılan dosya sistemini bağlayıp gönderilen işleri yürüten konaklar olan 'execute' düğümleridir. Örneğin, basit bir küme şablonu parçacığı şöyle görünebilir:

[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'da tanımı olan bir kümenin içeri aktarılması ve başlatılması tek bir 'ana' düğüm oluşturur. Yürütme düğümleri komutuyla cyclecloud add_node kümeye eklenebilir. Örneğin, 10 yürütme düğümü daha eklemek için:

cyclecloud add_node my-pbspro -t execute -c 10

PBS Kaynak Tabanlı Otomatik Ölçeklendirme

Cyclecloud, dinamik sağlama özelliğini genişletmek için iki kaynak tutar. Bu kaynaklar nodearray ve machinetype kaynaklarıdır.

Bir iş gönderir ve bir nodearray kaynağı qsub -l nodearray=highmem -- /bin/hostname belirtirseniz CycleCloud nodearray'e 'highmem' adlı düğümler ekler. Böyle bir nodearray yoksa iş boşta kalır.

Benzer şekilde, bir işin gönderildiği bir makine türü kaynağı belirtilirse , qsub -l machinetype:Standard_L32s_v2 my-job.shCycleCloud 'execute' (varsayılan) nodearray içindeki 'Standard_L32s_v2' öğesini otomatik olarak ölçekler. Bu makine türü 'yürüt' düğüm dizisinde kullanılamıyorsa, iş boşta kalır.

Bu kaynaklar şu şekilde birlikte kullanılabilir:

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

bu, yalnızca 'Standard_HB60rs' makineler bir 'hpc' düğüm dizisi belirtilirse otomatik olarak ölçeklenir.

nodearrays'e atanmış ek kuyruklar ekleme

Birden çok nodearray içeren kümelerde, işleri otomatik olarak uygun VM türüne yönlendirmek için ayrı kuyruklar oluşturmak yaygın bir durum olur. Bu örnekte, küme şablonunuzda aşağıdaki "gpu" nodearray öğesinin tanımlandığını varsayacağız:

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

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

Küme şablonunu içeri aktardıktan ve kümeyi başlattıktan sonra, "gpu" kuyruğu oluşturmak için sunucu düğümünde aşağıdaki komutlar değiştirilebilir:

/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"

Not

Yukarıdaki kuyruk tanımı, MPI işlerini desteklemek için kuyruktaki tüm VM'leri tek bir VM ölçek kümesinde paketler. Seri işler için kuyruğu tanımlamak ve birden çok VM Ölçek Kümesine izin vermek için hem default_chunkhem de resources_default için ayarlayınungrouped = true. Zamanlayıcının işleri hepsini bir kez deneme ayırması yerine VM'lere paketlemesini isteyip istemediğinizi de ayarlayabilirsiniz resources_default.place = pack . PBS iş paketleme hakkında daha fazla bilgi için resmi PBS Professional OSS belgelerine bakın.

PBS Profesyonel Yapılandırma Başvurusu

İşlevleri özelleştirmek için değiştirebileceğiniz PBS Professional'a özgü yapılandırma seçenekleri şunlardır:

PBS Pro Seçenekleri Description
pbspro.slots Belirli bir düğümün PBS Pro'ya bildirecek yuva sayısı. Yuva sayısı, bir düğümün yürütebileceği eşzamanlı iş sayısıdır; bu değer varsayılan olarak belirli bir makinedeki CPU sayısıdır. CPU'ya göre değil bellek, GPU'lar vb. temelinde iş çalıştırmadığınız durumlarda bu değeri geçersiz kılabilirsiniz.
pbspro.slot_type Bir düğümün sağladığı 'yuva' türü adı. Varsayılan değer 'execute' değeridir. Bir iş sabit kaynakla slot_type=<type>etiketlendiğinde, bu iş yalnızca aynı yuva türündeki bir makinede çalışır. Bu, düğüm başına farklı yazılım ve donanım yapılandırmaları oluşturmanıza ve uygun bir işin her zaman doğru düğüm türünde zamanlandığından emin olmanıza olanak tanır.
pbspro.version Varsayılan: '18.1.3-0'. Bu, yüklenip çalıştırılacak PBS Professional sürümüdür. Bu, şu anda varsayılan ve tek seçenektir. Gelecekte PBS Professional yazılımının ek sürümleri desteklenebilir.

CycleCloud ile PBS'yi bağlama

CycleCloud , OpenPBS kümelerini adlı azpbsyüklenebilir bir aracı aracılığıyla yönetir. Bu aracı, küme ve VM yapılandırmalarını okumak için CycleCloud'a bağlanır ve ayrıca işi ve konak bilgilerini etkili bir şekilde işlemek için OpenPBS ile tümleşir. Tüm azpbs yapılandırmalar normalde dosyasında /opt/cycle/pbspro/autoscale.jsonbulunurautoscale.json.

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

Önemli Dosyalar

Aracı azpbs her çağrıldığında PBS yapılandırmasını ayrıştırıyor: işler, kuyruklar, kaynaklar. Bilgiler, komutun stderr ve stdout'un yanı sıra her ikisi de yapılandırılabilir düzeylerde bir günlük dosyasına sağlanır. Bağımsız değişkenler içeren tüm PBS yönetim komutları (qcmd) dosyaya da kaydedilir.

Tüm bu dosyalar aracının yüklü olduğu /opt/cycle/pbspro/ dizininde bulunabilir.

Dosya Konum Description
Otomatik Ölçeklendirme Yapılandırması autoscale.json Otomatik Ölçeklendirme, Kaynak Haritası, CycleCloud erişim bilgileri için yapılandırma
Otomatik Ölçeklendirme Günlüğü autoscale.log CycleCloud konak yönetimi de dahil olmak üzere aracı ana iş parçacığı günlüğü
Talep Günlüğü demand.log Kaynak eşleştirme için ayrıntılı günlük
qcmd İzleme Günlüğü qcmd.log Aracı qcmd çağrılarını günlüğe kaydetme
Günlük Yapılandırması logging.conf Günlük maskeleri ve dosya konumları için yapılandırmalar

OpenPBS Kaynaklarını Tanımlama

Bu proje, cyclecloud-pbspro (azpbs) projesi aracılığıyla OpenPBS kaynaklarının Azure VM kaynaklarıyla genel olarak ilişkilendirilmesini sağlar. içinde tanımlanan autoscale.jsonbu kaynak ilişkisi.

Birlikte gönderdiğimiz küme şablonuyla tanımlanan varsayılan kaynaklar şunlardır:

{"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"
   }]
}

adlı mem OpenPBS kaynağı, herhangi bir sanal makinenin toplam belleği olan adlı node.memorydüğüm özniteliğine eşit hale getirilir. Bu yapılandırma, iş kaynağı gereksinimlerinin değerini düğüm kaynaklarıyla karşılaştırarak gibi -l mem=4gb bir kaynak isteğini işlemeye olanak tanırazpbs.

Diskin şu anda olarak size::20gsabit kodlandığını unutmayın. Vm Boyutuna özgü disk boyutunu işleme örneği aşağıda verilmiştir

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

Otomatik Ölçeklendirme ve Ölçek Kümeleri

CycleCloud, OpenPBS kümelerinde yayılan ve seri işleri farklı şekilde işler. Yayılan işler aynı yerleştirme grubunun parçası olan düğümlere iner. Yerleştirme grubunun belirli bir platform anlamı vardır (SinglePlacementGroup=true ile VirtualMachineScaleSet) ve CC, her yayılmış düğüm kümesi için adlandırılmış bir yerleştirme grubu yönetecektir. Bu yerleştirme grubu adı için PBS kaynağını group_id kullanın.

Kuyruk, hpc yerel kuyruk varsayılanlarını kullanarak eşdeğerini -l place=scatter:group=group_id ekler.

CycleCloud OpenPBS Aracısını Yükleme azpbs

OpenPBS CycleCloud kümesi, sunucu düğümünde aracının yüklemesini ve yapılandırmasını yönetir. Hazırlık PBS kaynaklarını, kuyruklarını ve kancalarını ayarlamayı içerir. Betikli yükleme, CycleCloud dışında da yapılabilir.

# 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, zamanlayıcılar arasında standart bir otomatik durdurma öznitelikleri kümesini destekler:

Öznitelik Açıklama
cyclecloud.cluster.autoscale.stop_enabled Bu düğümde otomatik durdurma etkinleştirildi mi? [true/false]
cyclecloud.cluster.autoscale.idle_time_after_jobs Bir düğümün ölçeği azaltılmadan önce işleri tamamladıktan sonra boşta oturma süresi (saniye olarak).
cyclecloud.cluster.autoscale.idle_time_before_jobs Bir düğümün ölçeği azaltılmadan önce işleri tamamlamadan önce boşta durma süresi (saniye olarak).

Not

CycleCloud, Açık PBS ile seri yapılandırmayı desteklemez.

Not

Windows resmi olarak desteklenen bir Open PBS platformu olsa da CycleCloud şu anda Windows'ta Açık PBS çalıştırmayı desteklemez.