OpenPBS
Program OpenPBS można łatwo włączyć w klastrze CycleCloud, modyfikując element "run_list" w sekcji konfiguracji definicji klastra. Dwa podstawowe składniki klastra PBS Professional to węzeł główny, który udostępnia udostępniony system plików, na którym działa oprogramowanie PBS Professional, oraz węzły "execute", które są hostami, które instaluje udostępniony system plików i wykonują przesłane zadania. Na przykład prosty fragment kodu szablonu klastra może wyglądać następująco:
[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]
Importowanie i uruchamianie klastra z definicją w usłudze CycleCloud spowoduje utworzenie jednego węzła głównego. Węzły wykonywania można dodać do klastra za pomocą cyclecloud add_node
polecenia . Aby na przykład dodać 10 kolejnych węzłów wykonywania:
cyclecloud add_node my-pbspro -t execute -c 10
Skalowanie automatyczne oparte na zasobach usługi PBS
Usługa Cyclecloud utrzymuje dwa zasoby w celu rozszerzenia możliwości dynamicznej aprowizacji. Te zasoby to nodearray i typ maszyny.
Jeśli prześlesz zadanie i określisz zasób nodearray, qsub -l nodearray=highmem -- /bin/hostname
usługa CycleCloud doda węzły do węzłaarray o nazwie "highmem". Jeśli nie ma takiego węzłaarray, zadanie pozostanie bezczynne.
Podobnie, jeśli określono zasób typu maszyny, który jest przesłany, np. qsub -l machinetype:Standard_L32s_v2 my-job.sh
, a następnie program CycleCloud automatycznie skaluje "Standard_L32s_v2" w węźle "execute" (wartość domyślna). Jeśli ten typ maszyny nie jest dostępny w tablicy węzłów "execute", zadanie pozostanie bezczynne.
Te zasoby mogą być używane w połączeniu jako:
qsub -l nodes=8:ppn=16:nodearray=hpc:machinetype=Standard_HB60rs my-simulation.sh
które zostaną automatycznie skalowane tylko wtedy, gdy maszyny "Standard_HB60rs" zostaną określone jako tablica węzłów "hpc".
Dodawanie dodatkowych kolejek przypisanych do węzłaarrays
W klastrach z wieloma węzłami typowe jest tworzenie oddzielnych kolejek w celu automatycznego kierowania zadań do odpowiedniego typu maszyny wirtualnej. W tym przykładzie założono, że w szablonie klastra zdefiniowano następującą "gpu" nodearray:
[[nodearray gpu]]
Extends = execute
MachineType = Standard_NC24rs
[[[configuration]]]
pbspro.slot_type = gpu
Po zaimportowaniu szablonu klastra i uruchomieniu klastra w węźle serwera można uruchomić następujące polecenia, aby utworzyć kolejkę "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"
Uwaga
Powyższa definicja kolejki spakuje wszystkie maszyny wirtualne w kolejce do pojedynczego zestawu skalowania maszyn wirtualnych w celu obsługi zadań MPI. Aby zdefiniować kolejkę dla zadań szeregowych i zezwolić na wiele zestawów skalowania maszyn wirtualnych, ustaw ungrouped = true
dla parametrów resources_default
i default_chunk
. Można również ustawić resources_default.place = pack
, jeśli harmonogram ma spakować zadania na maszynach wirtualnych zamiast alokacji zadań działania okrężnego. Aby uzyskać więcej informacji na temat pakowania zadań PBS, zobacz oficjalną dokumentację systemu operacyjnego PBS Professional.
Dokumentacja konfiguracji usługi PBS Professional
Poniżej przedstawiono opcje konfiguracji specyficzne dla usługi PBS Professional, które można przełączać, aby dostosować funkcje:
Opcje usługi PBS Pro | Opis |
---|---|
pbspro.slots | Liczba miejsc dla danego węzła do raportowania do usługi PBS Pro. Liczba miejsc to liczba współbieżnych zadań, które może wykonać węzeł. Ta wartość jest domyślnie liczbą procesorów CPU na danym komputerze. Tę wartość można zastąpić w przypadkach, gdy nie uruchamiasz zadań na podstawie procesora CPU, ale na pamięci, procesoraCH GPU itp. |
pbspro.slot_type | Nazwa typu "slot" udostępnia węzeł. Wartość domyślna to "execute". Gdy zadanie zostanie oznaczone zasobem slot_type=<type> twardym , to zadanie będzie uruchamiane tylko na maszynie tego samego typu miejsca. Dzięki temu można tworzyć różne konfiguracje oprogramowania i sprzętu na węzeł i zapewnić, że odpowiednie zadanie jest zawsze zaplanowane we właściwym typie węzła. |
pbspro.version | Ustawienie domyślne: "18.1.3-0". Jest to wersja pbS Professional do zainstalowania i uruchomienia. Jest to obecnie opcja domyślna i tylko . W przyszłych dodatkowych wersjach oprogramowania PBS Professional mogą być obsługiwane. |
Łączenie usługi PBS z usługą CycleCloud
Usługa CycleCloud zarządza klastrami OpenPBS za pośrednictwem agenta możliwego do zainstalowania o nazwie azpbs
. Ten agent łączy się z usługą CycleCloud w celu odczytu konfiguracji klastra i maszyny wirtualnej, a także integruje się z usługą OpenPBS, aby efektywnie przetwarzać informacje o zadaniu i hoście. Wszystkie azpbs
konfiguracje znajdują się w autoscale.json
pliku, zwykle /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",
Ważne pliki
Agent azpbs
analizuje konfigurację usługi PBS za każdym razem, gdy jest wywoływana — zadania, kolejki, zasoby.
Informacje są dostarczane w stderr i stdout polecenia, a także do pliku dziennika, zarówno na konfigurowalnych poziomach. Wszystkie polecenia zarządzania usługą PBS (qcmd
) z argumentami są również rejestrowane w pliku.
Wszystkie te pliki można znaleźć w katalogu /opt/cycle/pbspro/ , w którym zainstalowano agenta.
Plik | Lokalizacja | Opis |
---|---|---|
Autoskaluj konfigurację | autoscale.json | Konfiguracja autoskalowania, mapy zasobów, informacji o dostępie do usługi CycleCloud |
Dziennik automatycznego skalowania | autoscale.log | Rejestrowanie głównych wątków agenta, w tym zarządzanie hostami CycleCloud |
Dziennik zapotrzebowania | demand.log | Szczegółowy dziennik dopasowania zasobów |
dziennik śledzenia qcmd | qcmd.log | Rejestrowanie wywołań agenta qcmd |
Konfiguracja rejestrowania | logging.conf | Konfiguracje dotyczące rejestrowania masek i lokalizacji plików |
Definiowanie zasobów OpenPBS
Ten projekt umożliwia ogólne skojarzenie zasobów OpenPBS z zasobami maszyn wirtualnych platformy Azure za pośrednictwem projektu cyclecloud-pbspro (azpbs). Ta relacja zasobu zdefiniowana w elemecie autoscale.json
.
Domyślne zasoby zdefiniowane za pomocą szablonu klastra, z których korzystamy, to
{"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"
}]
}
Zasób OpenPBS o nazwie mem
jest utożsamiany z atrybutem węzła o nazwie node.memory
, który jest całkowitą pamięcią dowolnej maszyny wirtualnej. Ta konfiguracja umożliwia azpbs
przetwarzanie żądania zasobu, takiego jak -l mem=4gb
porównanie wartości wymagań dotyczących zasobów zadania z zasobami węzła.
Należy pamiętać, że dysk jest obecnie zakodowany na stałe w pliku size::20g
.
Oto przykład obsługi rozmiaru dysku określonego rozmiaru maszyny wirtualnej
{
"select": {"node.vm_size": "Standard_F2"},
"name": "disk",
"value": "size::20g"
},
{
"select": {"node.vm_size": "Standard_H44rs"},
"name": "disk",
"value": "size::2t"
}
Autoskaluj i zestawy skalowania
Usługa CycleCloud traktuje zadania obejmujące i szeregowe inaczej w klastrach OpenPBS.
Spanning jobs will land on węzły, które są częścią tej samej grupy umieszczania. Grupa umieszczania ma określone znaczenie platformy (VirtualMachineScaleSet z elementem SinglePlacementGroup=true), a cc będzie zarządzać nazwaną grupą umieszczania dla każdego zestawu węzłów obejmujących. Użyj zasobu group_id
usługi PBS dla tej nazwy grupy umieszczania.
Kolejka hpc
dołącza odpowiednik -l place=scatter:group=group_id
wartości przy użyciu domyślnych kolejek natywnych.
Instalowanie agenta CycleCloud OpenPBS azpbs
Klaster OpenPBS CycleCloud będzie zarządzać instalacją i konfiguracją agenta w węźle serwera. Przygotowanie obejmuje ustawianie zasobów, kolejek i punktów zaczepienia usługi PBS. Instalację skryptową można również wykonać poza aplikacją 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
Usługa CycleCloud obsługuje standardowy zestaw atrybutów autostopu między harmonogramami:
Atrybut | Opis |
---|---|
cyclecloud.cluster.autoscale.stop_enabled | Czy automatyczne zatrzymanie jest włączone w tym węźle? [prawda/fałsz] |
cyclecloud.cluster.autoscale.idle_time_after_jobs | Czas (w sekundach) dla węzła do bezczynności po zakończeniu zadań przed skalowaniem w dół. |
cyclecloud.cluster.autoscale.idle_time_before_jobs | Czas (w sekundach) dla węzła do bezczynności przed ukończeniem zadań przed skalowaniem w dół. |
Uwaga
Usługa CycleCloud nie obsługuje konfiguracji z rozszerzeniem Open PBS.
Uwaga
Mimo że system Windows jest oficjalnie obsługiwaną platformą Open PBS, usługa CycleCloud nie obsługuje obecnie uruchamiania usługi Open PBS w systemie Windows.