Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Przepisaliśmy obsługę harmonogramu Slurm w ramach wydania CycleCloud 8.4.0. Najważniejsze funkcje:
- Obsługa węzłów dynamicznych i partycji dynamicznych za pośrednictwem macierzy węzłów dynamicznych. Ta funkcja obsługuje zarówno rozmiary pojedynczej maszyny wirtualnej, jak i wielu maszyn wirtualnych.
- Nowe wersje Slurm 23.02 i 22.05.8.
- Raportowanie kosztów za pośrednictwem interfejsu
azslurmlinii poleceń. -
azslurmAutoskalator oparty na CLI (interfejsie wiersza poleceń). - Obsługa systemu Ubuntu 20.
- Usunięto potrzebę wtyczki topologii oraz wszelkich powiązanych wtyczek zgłoszeniowych.
Klastry Slurm w wersjach CycleCloud starszych niż 8.4.0
Aby uzyskać więcej informacji, zobacz Przechodzenie z wersji 2.7 do 3.0.
Wprowadzanie zmian w klastrze
Klaster Slurm wdrażany w usłudze CycleCloud zawiera interfejs wiersza polecenia nazwany azslurm, który pomaga w wprowadzaniu zmian w klastrze. Po wprowadzeniu zmian w klastrze uruchom następujące polecenie jako root w węźle harmonogramu Slurm, aby przebudować azure.conf i zaktualizować węzły w klastrze.
$ sudo -i
# azslurm scale
Polecenie tworzy partycje z prawidłową liczbą węzłów, konfiguruje odpowiednie gres.conf, i uruchamia ponownie slurmctld.
Węzły nie są już wstępnie tworzone
Począwszy od projektu CycleCloud w wersji 3.0.0 Slurm, węzły nie są wstępnie tworzone. Węzły są tworzone podczas użycia azslurm resume lub tworzenia ich ręcznie w usłudze CycleCloud, używając CLI.
Tworzenie dodatkowych partycji
Domyślny szablon dostarczany z usługą Azure CycleCloud ma trzy partycje (hpc, htci dynamic) i można zdefiniować niestandardowe tablice węzłów mapujące bezpośrednio na partycje Slurm. Aby na przykład utworzyć partycję procesora GPU, dodaj następującą sekcję do szablonu klastra:
[[nodearray gpu]]
MachineType = $GPUMachineType
ImageName = $GPUImageName
MaxCoreCount = $MaxGPUExecuteCoreCount
Interruptible = $GPUUseLowPrio
AdditionalClusterInitSpecs = $ExecuteClusterInitSpecs
[[[configuration]]]
slurm.autoscale = true
# Set to true if nodes are used for tightly-coupled multi-node jobs
slurm.hpc = false
[[[cluster-init cyclecloud/slurm:execute:3.0.1]]]
[[[network-interface eth0]]]
AssociatePublicIpAddress = $ExecuteNodesPublic
Partycje dynamiczne
Począwszy od rozwiązania CycleCloud w wersji 3.0.1, rozwiązanie obsługuje partycje dynamiczne. Można utworzyć mapowanie na partycję dynamiczną nodearray, dodając następujący kod. Wartość myfeature może być dowolnym żądanym opisem funkcji lub więcej niż jedną funkcją oddzieloną przecinkiem.
[[[configuration]]]
slurm.autoscale = true
# Set to true if nodes are used for tightly-coupled multi-node jobs
slurm.hpc = false
# This is the minimum, but see slurmd --help and [slurm.conf](https://slurm.schedmd.com/slurm.conf.html) for more information.
slurm.dynamic_config := "-Z --conf \"Feature=myfeature\""
Fragment kodu współużytkowanego generuje partycję dynamiczną, na przykład następujący kod:
# Creating dynamic nodeset and partition using slurm.dynamic_config=-Z --conf "Feature=myfeature"
Nodeset=mydynamicns Feature=myfeature
PartitionName=mydynamicpart Nodes=mydynamicns
Używanie partycji dynamicznych do automatycznego skalowania
Domyślnie partycja dynamiczna nie zawiera żadnych węzłów. Węzły można uruchamiać za pomocą CycleCloud lub uruchomić azslurm resume ręcznie. Węzły dołączają do klastra, używając wybranej przez Ciebie nazwy. Jednak ponieważ narzędzie Slurm nie zna tych węzłów z wyprzedzeniem, nie może ich automatycznie skalować.
Zamiast tego można wstępnie utworzyć rekordy węzłów w taki sposób, dzięki czemu narzędzie Slurm może je automatycznie skalować.
scontrol create nodename=f4-[1-10] Feature=myfeature State=CLOUD
Kolejną zaletą partycji dynamicznych jest możliwość obsługi wielu rozmiarów maszyn wirtualnych w tej samej partycji.
Wystarczy dodać nazwę rozmiaru maszyny wirtualnej jako funkcję, a następnie azslurm będzie w stanie odróżnić, którego rozmiaru maszyny wirtualnej chcesz użyć.
Uwaga Rozmiar maszyny wirtualnej jest dodawany niejawnie. Nie musisz dodawać go do slurm.dynamic_config.
scontrol create nodename=f4-[1-10] Feature=myfeature,Standard_F4 State=CLOUD
scontrol create nodename=f8-[1-10] Feature=myfeature,Standard_F8 State=CLOUD
Tak czy inaczej, tworząc te węzły w stanie State=Cloud, stają się one dostępne do automatycznego skalowania jak inne węzły.
Aby obsługiwać wiele rozmiarów maszyn wirtualnych w tablicy węzłów CycleCloud, możesz zmienić szablon, aby zezwolić na wiele rozmiarów maszyn wirtualnych, dodając element Config.Mutiselect = true.
[[[parameter DynamicMachineType]]]
Label = Dyn VM Type
Description = The VM type for Dynamic nodes
ParameterType = Cloud.MachineType
DefaultValue = Standard_F2s_v2
Config.Multiselect = true
Skalowanie dynamiczne w dół
Domyślnie wszystkie węzły w partycji dynamicznej są skalowane w dół tak samo jak inne partycje. Aby wyłączyć partycję dynamiczną, zobacz SuspendExcParts.
Skalowanie ręczne
Jeśli cyclecloud_slurm wykryje, że autoskalowanie jest wyłączone (SuspendTime=-1), używa stanu FUTURE do oznaczania węzłów, które są wyłączone, zamiast polegać na stanie zasilania w Slurm. Po włączeniu automatycznego skalowania sinfo węzły są wyświetlane jako idle~. Gdy automatyczne skalowanie jest wyłączone, sinfo nie wyświetla nieaktywnych węzłów. Nadal możesz zobaczyć ich definicję za pomocą scontrol show nodes --future.
Aby uruchomić nowe węzły, uruchom polecenie /opt/azurehpc/slurm/resume_program.sh node_list (na przykład htc-[1-10]).
Aby zamknąć węzły, uruchom polecenie /opt/azurehpc/slurm/suspend_program.sh node_list (na przykład htc-[1-10]).
Aby uruchomić klaster w tym trybie, dodaj SuspendTime=-1 do dodatkowej konfiguracji Slurm w szablonie.
Aby przełączyć klaster do tego trybu, dodaj SuspendTime=-1 do pliku slurm.conf i uruchom scontrol reconfigure. Następnie uruchom azslurm remove_nodes i azslurm scale.
Rozwiązywanie problemów
Przejście z wersji 2.7 do 3.0
Folder instalacyjny został zmieniony z
/opt/cycle/slurmdo/opt/azurehpc/slurm.Dzienniki autoskalowania znajdują się teraz w
/opt/azurehpc/slurm/logszamiast/var/log/slurmctld. Plikslurmctld.logznajduje się w tym folderze.Skrypt
cyclecloud_slurm.shnie jest już dostępny. Nowe narzędzie interfejsu wiersza polecenia o nazwieazslurmzastępujecyclecloud_slurm.sh. Uruchamiaszazslurmjako root i obsługuje on autouzupełnianie.[root@scheduler ~]# azslurm usage: accounting_info - buckets - Prints out autoscale bucket information, like limits etc config - Writes the effective autoscale config, after any preprocessing, to stdout connect - Tests connection to CycleCloud cost - Cost analysis and reporting tool that maps Azure costs to Slurm Job Accounting data. This is an experimental feature. default_output_columns - Output what are the default output columns for an optional command. generate_topology - Generates topology plugin configuration initconfig - Creates an initial autoscale config. Writes to stdout keep_alive - Add, remove or set which nodes should be prevented from being shutdown. limits - nodes - Query nodes partitions - Generates partition configuration refresh_autocomplete - Refreshes local autocomplete information for cluster specific resources and nodes. remove_nodes - Removes the node from the scheduler without terminating the actual instance. resume - Equivalent to ResumeProgram, starts and waits for a set of nodes. resume_fail - Equivalent to SuspendFailProgram, shuts down nodes retry_failed_nodes - Retries all nodes in a failed state. scale - shell - Interactive python shell with relevant objects in local scope. Use the --script to run python scripts suspend - Equivalent to SuspendProgram, shuts down nodes wait_for_resume - Wait for a set of nodes to converge.Usługa CycleCloud nie tworzy węzłów z wyprzedzeniem. Tworzy tylko węzły, gdy są potrzebne.
Wszystkie pliki binarne Slurm znajdują się w pliku
azure-slurm-install-pkg*.tar.gz, podslurm-pkgs. Są one pobierane z określonej wersji binarnej. Bieżąca wersja binarna to 4.0.0.W przypadku zadań MPI jedyną domyślną granicą sieci jest partycja. W przeciwieństwie do wersji 2.x, każda partycja nie zawiera wielu "grup rozmieszczenia". W związku z tym masz tylko jeden kolokowany zestaw skalowania maszyn wirtualnych na partycję. Nie ma już potrzeby wtyczki topologii, więc wtyczka przesyłania zadań nie jest potrzebna. Zamiast tego, przesyłanie do wielu partycji jest zalecaną opcją w przypadkach użycia, które wymagają przesłania zadań do wielu grup lokalizacyjnych.
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. |