A Microsoft tool for creating, managing, operating, and optimizing high-performance computing (HPC) and big compute clusters in Azure.
Hello @Mario Vicente Quinto (Ascendion Inc) ,
Thank you for your patience while we worked through this issue together and collaborated with the product group to reach a resolution.
Sharing the summary of the issue, the mitigations we attempted, and what ultimately resolved it.
Issue Description:
The customer was running Azure CycleCloud with Slurm (Ubuntu 22.x) and began seeing intermittent scheduler errors:
_xgetaddrinfo: getaddrinfo(<node>:6818) failed: Temporary failure in name resolution error: slurm_set_addr: Unable to resolve "<node>" Fatal glibc error: malloc.c:2599 (sysmalloc): assertion failed
The DNS resolution failures were followed by fatal malloc assertion errors in slurmctld, causing scheduler instability.
Initial slurm version: Slurm 25.05.2
Mitigations Attempted
Based on guidance from the Azure CycleCloud Slurm documentation (https://github.com/Azure/cyclecloud-slurm?tab=readme-ov-file#ubuntu-22-or-greater-and-dns-hostname-resolution), we applied:
[[[configuration]]]
slurm.ubuntu22_waagent_fix = false
This suppressed the issue temporarily, but the errors reappeared after several days.
Later, we engaged the Engineering team for deeper investigation. Their findings indicated:
- Repeated hostname resolution failures can cause slurmctld to enter a corrupted internal state.
- This may surface as glibc malloc assertion failures.
- A historical workaround was modifying NodeHostname and NodeAddr for the problematic node.
- However, newer Slurm versions include fixes addressing this memory corruption behavior
Final Resolution
The customer upgraded:
- CycleCloud -> 8.8.2
- Slurm -> 25.05.5
After upgrading from Slurm 25.05.2 to 25.05.5, the issue was fully resolved and has not reoccurred.
Steps taken to upgrade version:
Below are the high-level steps used to perform the upgrade:
- Upgrade CycleCloud
yum upgrade -y cyclecloud8
- Export Existing Cluster Parameters
cyclecloud export_parameters -o CLUSTER_NAME.json CLUSTER_NAME
Edit CLUSTER_NAME.json to set the new Slurm version.
- Update Project Versions
If you want the latest versions of azslurm and healthagent, update your cluster template before re-importing:
- Edit the cluster template.
- Update all [[[cluster-init ...]]] lines to reference the latest project versions.
- Re-Import the Cluster
cyclecloud import_cluster CLUSTER_NAME -c slurm -f ./slurm.txt -p ./CLUSTER_NAME.json --force
- Drain and Down Execute Partitions
In Slurm:
- Drain the partitions.
- Wait until nodes reach the DOWN state.
- Reimage Nodes
Once nodes are down, use the Actions -> Reimage option in the CycleCloud UI to apply the upgraded configuration to the nodes.