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.sh
CycleCloud '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_chunk
hem 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ı azpbs
yü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.json
bulunurautoscale.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.json
bu 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.memory
düğü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::20g
sabit 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.