Udostępnij przez


OpenPBS

Typ klastra OpenPBS w usłudze Azure CycleCloud zapewnia niezawodne i skalowalne rozwiązanie do zarządzania obciążeniami obliczeń o wysokiej wydajności (HPC) przy użyciu programu PBS Professional. Ta integracja umożliwia użytkownikom wdrażanie klastrów opartych na usłudze PBS i zarządzanie nimi w chmurze dzięki usprawnionej konfiguracji i automatyzacji. Aby uzyskać szczegółowe instrukcje dotyczące konfiguracji, obsługiwanych funkcji i wskazówek dotyczących użycia, zapoznaj się z „README projektu CycleCloud Open PBS i PBS Professional Cluster Project”.

Możesz włączyć OpenPBS w klastrze CycleCloud, zmieniając sekcję konfiguracji w definicji swojego klastra. Klaster PBS Professional (PBS Pro) ma dwie główne części: węzeł podstawowy , który uruchamia oprogramowanie w udostępnionym systemie plików, oraz węzły wykonywania , które zainstalują ten system plików i uruchomą 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]

Podczas importowania i uruchamiania klastra z tą definicją w usłudze CycleCloud uzyskujesz jeden węzeł podstawowy . Węzły wykonywania można dodać do klastra cyclecloud add_node przy użyciu polecenia . Aby dodać na przykład 10 kolejnych węzłów execute, użyj:

cyclecloud add_node my-pbspro -t execute -c 10

Skalowanie automatyczne oparte na zasobach usługi PBS

CycleCloud utrzymuje dwa zasoby, aby zwiększyć możliwości dynamicznej aprowizacji. Te zasoby to nodearray i typ maszyny.

Po przesłaniu zadania i określeniu zasobu macierzy węzłów za pomocą qsub -l nodearray=highmem -- /bin/hostname polecenia usługa CycleCloud dodaje węzły do tablicy węzłów o nazwie highmem. Jeśli tablica węzłów nie istnieje, zadanie pozostanie bezczynne.

Po określeniu zasobu typu maszyny w przesłaniu zadania, takiego jak qsub -l machinetype:Standard_L32s_v2 my-job.sh, usługa CycleCloud automatycznie skaluje Standard_L32s_v2 maszyny w tablicy węzłów (domyślna execute ). Jeśli typ maszyny nie jest dostępny w tablicy execute węzłów, zadanie pozostanie bezczynne.

Te zasoby można używać razem jako:

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

Automatycznie skaluje tylko wtedy, gdy w tablicy węzłów Standard_HB60rs określisz hpc maszyny.

Dodawanie dodatkowych kolejek przypisanych do macierzy węzłów

W klastrach z wieloma grupami węzłów utwórz oddzielne kolejki, aby automatycznie kierować zadania do odpowiedniego rodzaju maszyny wirtualnej. W tym przykładzie przyjęto założenie, że następująca gpu tablica węzłów jest zdefiniowana w szablonie klastra:

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

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

Po zaimportowaniu szablonu klastra i uruchomieniu klastra uruchom następujące polecenia w węźle serwera, 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

Jak pokazano w przykładzie, definicja kolejki pakuje wszystkie maszyny wirtualne w kolejce do jednego zestawu skalowania maszyn wirtualnych do 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. Ustaw resources_default.place = pack, jeśli harmonogram ma umieszczać zadania na maszynach wirtualnych zamiast przydzielania zadań metodą okrężną. Aby uzyskać więcej informacji na temat pakowania zadań PBS, zobacz oficjalną dokumentację systemu operacyjnego PBS Professional.

Dokumentacja konfiguracji programu PBS Professional

W poniższej tabeli opisano opcje konfiguracji specyficzne dla programu PBS Professional (PBS Pro), które można przełączać w celu dostosowania funkcjonalności:

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 ustawiona na liczbę procesorów CPU na danej maszynie. Tę wartość można zastąpić w przypadkach, w których nie uruchamiasz zadań na podstawie procesora CPU, ale pamięci, procesorów GPU i innych zasobów.
pbspro.slot_type Nazwa typu "slotu", który oferuje węzeł. Wartość domyślna to "execute". Po oznaczeniu zadania za pomocą zasobu slot_type=<type>twardego zadanie jest uruchamiane tylko na maszynach o tym samym typie miejsca. To ustawienie umożliwia tworzenie różnych konfiguracji oprogramowania i sprzętu dla każdego węzła i zapewnia, że odpowiednie zadanie jest zawsze zaplanowane we właściwym typie węzła.
pbspro.version Ustawienie domyślne: "18.1.3-0". Ta wersja jest obecnie domyślną i jedyną opcją do zainstalowania i uruchomienia. W przyszłości może być obsługiwanych więcej wersji oprogramowania PBS Pro.

Łączenie usługi PBS z usługą CycleCloud

Usługa CycleCloud zarządza klastrami OpenPBS za pośrednictwem agenta z możliwością instalacji o nazwie azpbs. Ten agent nawiązuje połączenie z usługą CycleCloud w celu odczytu konfiguracji klastra i maszyny wirtualnej. Integruje się również z usługą OpenPBS w celu przetwarzania informacji o zadaniu i hoście. Wszystkie konfiguracje azpbs można znaleźć w pliku autoscale.json, który zwykle znajduje się w lokalizacji /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. Agent udostępnia te informacje w stderr i stdout polecenia oraz w pliku dziennika, z poziomami konfigurowalnymi. Agent rejestruje również wszystkie polecenia zarządzania usługą PBS (qcmd) z argumentami do pliku.

Wszystkie te pliki można znaleźć w katalogu /opt/cycle/pbspro/ , w którym instalujesz agenta.

Plik Lokalizacja Opis
Autoskalowanie konfiguracji autoscale.json Konfiguracja autoskalowania, mapy zasobów, informacji o dostępie do usługi CycleCloud
Rejestr automatycznego skalowania autoscale.log Rejestrowanie głównych wątków agenta, w tym zarządzanie hostem CycleCloud
Dziennik zapotrzebowania demand.log Szczegółowy dziennik dopasowania zasobów
Dziennik śledzenia qcmd qcmd.log Rejestrowanie wywołań agenta qcmd
Konfiguracja logowania logging.conf Konfiguracje masek rejestrowania i lokalizacji plików

Definiowanie zasobów openPBS

Ten projekt umożliwia skojarzenie zasobów OpenPBS z zasobami maszyny wirtualnej platformy Azure za pomocą projektu cyclecloud-pbspro (azpbs). Tę relację zasobu zdefiniujesz w pliku autoscale.json. Szablon klastra zawiera następujące zasoby domyślne:

{"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 odpowiada atrybutowi węzła o nazwie node.memory, który reprezentuje całkowitą pamięć dowolnej maszyny wirtualnej. Ta konfiguracja umożliwia azpbs obsługę żądania zasobu, takiego jak -l mem=4gb, poprzez porównanie wymagań dotyczących zasobów zadania z zasobami węzła.

Obecnie rozmiar dysku jest ustawiony na size::20g. Oto przykład obsługi rozmiaru dysku określonego przez rozmiar maszyny wirtualnej:

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

Automatyczne skalowanie i zestawy skalowania

CycleCloud traktuje zadania rozległe oraz szeregowe inaczej w klastrach OpenPBS. Rozmieszczanie zadań, które obejmują węzły będące częścią tej samej grupy rozmieszczania. Grupa umieszczania ma określoną platformę (czyli VirtualMachineScaleSet z ustawionym parametrem SinglePlacementGroup=true), a CycleCloud zarządza nazwaną grupą umieszczania dla każdego zestawu węzłów obejmujących. Użyj zasobu group_id PBS dla tej nazwy grupy przypisania.

Kolejka hpc dołącza równoważnik -l place=scatter:group=group_id z wykorzystaniem natywnych ustawień domyślnych kolejki.

Instalowanie agenta CycleCloud OpenPBS azpbs

Klaster OpenPBS CycleCloud zarządza instalacją i konfiguracją agenta w węźle serwera. Kroki przygotowania obejmują ustawianie zasobów, kolejek i punktów zaczepienia usługi PBS. Możesz również wykonać instalację skryptową 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 automatycznego zatrzymania w różnych harmonogramach.

Atrybut Opis
cyclecloud.klaster.autoskalowanie.zatrzymanie_wlaczone Włącza automatyczne zatrzymanie w tym węźle. [prawda/fałsz]
cyclecloud.cluster.autoscale.czas_bezczynności_po_zadaniach Ilość czasu (w sekundach), przez jaki węzeł pozostaje bezczynny po zakończeniu zadań, zanim nastąpi jego automatyczne zatrzymanie.
cyclecloud.klaster.autoskalowanie.czas_bezczynności_przed_zadaniami Czas (w sekundach), przez który węzeł pozostaje bezczynny przed ukończeniem zadań, zanim zostanie automatycznie zatrzymany.

Uwaga

Usługa CycleCloud nie obsługuje konfiguracji typu "bursting" z użyciem Open PBS.

Uwaga

Mimo że system Windows jest oficjalnie obsługiwaną platformą Open PBS, usługa CycleCloud nie obsługuje obecnie uruchamiania systemu Open PBS w systemie Windows.