Loading...

Enabling Job accounting for SLURM with Azure Cyclecloud 8.2 and Azure MariaDB database

Enabling Job accounting for SLURM with Azure Cyclecloud 8.2 and Azure MariaDB database

Overview

SLURM, the Simple Linux Utility for Resource Management, is an open-source cluster resource management and job scheduler. This package contains also SlurmDBD (Slurm Database Daemon) that can be used to securely manage the accounting data for several Slurm clusters in a central location. Slurm can be configured to collect accounting information for every job and user. Accounting records can be written to a simple text file or a database. Information is available about both currently executing jobs and jobs which have already terminated. The sacct command can report resource usage for running or terminated jobs including individual tasks, which can be useful to detect load imbalance between the tasks.

From Azure cyclecloud 8.1.0 onwards Slurm template supports enabling SlurmDBD on Slurm 20.11+. This blog will give you the information about how to enable SLURM job accounting with Azure Cyclecloud and Azure MariaDB instance.

Architecture:

vinilv_0-1653300753566.png

Prerequisites:

This blog post assumes that you have access to Azure Cyclecloud 8.2 and Azure Managed MariaDB Instance for setting up the Slurm cluster and SlurmDBD configuration. 

If you don't, please refer the following Azure CycleCloud Documentation  and  Azure Database for MariaDB documentation

 

Solution:

Here are the steps to integrate slurm job accounting in Azure Cyclecloud.

  1. First, you need to have a managed MariaDB database instance for job accounting as Cyclecloud expect a DB URL for job accounting. Slurm uses MariaDB for writing the job accounting information.

Please note, the "#" character is not permitted to use by Slurm DBD to access MariaDB, so make sure the MariaDB admin password does not contains "#".

vinilv_1-1653300753568.png

        2. Once the MariaDB instance is spun up, you have all the required information to fill in to enable job accounting feature in Cyclecloud portal.

vinilv_2-1653300753573.png

 

  1. You need to update the VNET rules with the scheduler virtual network in the MariaDB connection security settings for accessing the MariaDB from the scheduler node (slurmdbd daemon will be running in scheduler node and it uses Managed Azure MariaDB as the Database).

vinilv_3-1653300753578.png

 

  1. After setting up the MariaDB we could add the DB information in the Advanced Settings section of the Cyclecloud's Slurm cluster. Select “Job Accounting”, Enter the DB information and save and start the cluster.

vinilv_4-1653300753581.png

  1. Once the cluster is up, run a sample job and check sacct to see the job accounting functionality.

vinilv_5-1653300753587.png

You could pass many parameters to sacct to get the required accounting information from SlurmDBD.

 

Example – finding a start and end time of job in given time period.

vinilv_1-1653400068019.png

You could also find out the job statistics for the specific user or a specific cluster. See saact documentation for more examples.

 

Granular Cost Control 

 

Very important aspect in each organization is the ability to calculate the consumption cost in a more granular way, e.g. on the job level or per user, as the infrastructure is usually share between different users. This gives rise to estimating the internal spend for different teams, departments and also forecasting the expenses.

In order to provide that functionality, in addition to the accounting information described above that provides the job duration, SKU type for a specific user, you could leverage the Azure Pricing API to obtain information about the cost of a specific SKU in a region where the cluster is located. This can help you to build a custom parser to calculate the costs of the cluster usage in more granular way as indicated below.

 

vinilv_0-1653399974580.png

An example query to get hourly pricing for HBv2 Spot VM in West Europe:

 

https://prices.azure.com/api/retail/prices?$filter=serviceName eq 'Virtual Machines' and meterName eq 'HB120-64rs v2 Low Priority' and armRegionName eq 'westeurope' and productName eq 'Virtual Machines HBSv2 Series'

 

Provides the following response:

 

{ "currencyCode": "USD", "tierMinimumUnits": 0.0, "retailPrice": 0.936, "unitPrice": 0.936, "armRegionName": "westeurope", "location": "EU West", "effectiveStartDate": "2022-03-01T00:00:00Z", "meterId": "06ccc665-c195-4b78-a4c2-a5d16b9c4768", "meterName": "HB120-64rs v2 Low Priority", "productId": "DZH318Z0CGR8", "skuId": "DZH318Z0CGR8/00FV", "productName": "Virtual Machines HBSv2 Series", "skuName": "Standard_HB120-64rs_v2 Low Priority", "serviceName": "Virtual Machines", "serviceId": "DZH313Z7MMC8", "serviceFamily": "Compute", "unitOfMeasure": "1 Hour", "type": "Consumption", "isPrimaryMeterRegion": false, "armSkuName": "Standard_HB120-64rs_v2" }

 

 

Ideas for Parser to calculate the Per job cost :

We could get the Job-related information from sacct and price information from Azure pricing API.

Slurm Accounting - Job Elapsed time (Hr) & No.of Nodes
Azure Pricing API - Price of each Instance/Hr

Per Job cost = Job Elapsed time (Hr) x No.of Nodes x Price of each Instance/Hr (Normalize to minutes if needed)

You could create parser based on your ideas and the information collected from Slurm job accounting and Azure Pricing API.

 

Conclusion:

You have successfully enabled Job accounting for SLURM with Azure Cyclecloud 8.2 and Azure MariaDB, learned couple of commands for reviewing the usage patterns and cluster utilization using sacct command. In combination with Azure Pricing API you could build a customized parser to calculate the cost per job, per user, per cluster and use it for more granular cost control within your organisation.

 

Reference Links:

https://slurm.schedmd.com/sacct.html

https://docs.microsoft.com/en-us/azure/cyclecloud/?view=cyclecloud-8

https://docs.microsoft.com/en-us/rest/api/cost-management/retail-prices/azure-retail-prices

https://docs.microsoft.com/en-us/azure/mariadb/

 

Technical contribution: Vinil Vadakkepurakkal, Łukasz Mirosław (Microsoft)

Published on:

Learn more
Azure Compute Blog articles
Azure Compute Blog articles

Azure Compute Blog articles

Share post:

Related posts

Upcoming Changes to Instance Size Flexibility Ratios for Reserved VM Instances for M-series: What Yo

Overview In the ever-evolving landscape of cloud computing, it is crucial to stay informed about changes that may affect your usage and busine...

1 year ago

Exploring SUSE Enterprise Linux on Azure

Exploring SUSE Enterprise Linux on Azure In today's cloud-centric world, leveraging robust and reliable operating systems is crucial for busin...

1 year ago

Announcing Public Preview of new attach/detach disks API for VMs/VMSS

We are excited to announce the public preview of a new API that will make attaching and detaching disks to a VM faster and easier. The new API...

1 year ago

Fine-tuning a Hugging Face Diffusion Model on CycleCloud Workspace for Slurm

Introduction Azure CycleCloud Workspace for Slurm (CCWS) is a new Infrastructure as a Service (IaaS) solution which allows the users to purpos...

1 year ago

Public Preview Announcement-On Demand Capacity Reservation in Azure in China

Today, we're announcing the public preview of on demand capacity reservations for Azure Virtual Machines in Azure in China Cloud . Y...

1 year ago

Breaking change for Window Server 2022 Image Users with .NET 6

Azure Marketplace media images for Windows Server 2022 currently include .NET 6, but going forward will not include a .NET version with the im...

1 year ago

Announcing the public preview of the new Azure FXv2-series Virtual Machines

Today, Microsoft is announcing the public preview of the new Azure FXv2-series Virtual Machines (VMs), based on the 5th Generation Intel® Xeon...

1 year ago

Effortlessly Migrate Azure VMs between zones

For various reasons you might come across a situation when you need to migrate your Azure VMs from one zone to another. Migrating Azure VMs be...

1 year ago

Announcing Public Preview of Instance Mix on Virtual Machine Scale Sets

Today, we’re excited to announce that the ability to specify multiple different VM sizes in your Virtual Machine Scale Sets (VMSS) with Flexib...

1 year ago

Announcing General Availability of Attach & Detach of Virtual Machines on Virtual Machine Scale Sets

Today, we’re thrilled to announce that the ability to attach or detach Virtual Machines (VMs) to and from a Virtual Machine Scale Set (VMSS) w...

2 years ago

Newsletter

Get the latest Dynamics 365 and Power Platform content in your inbox

A curated digest of community blogs, product news, videos, and podcasts — delivered without the noise.

Weekly updates Unsubscribe anytime Fresh community picks
We use your email only for the newsletter and you can unsubscribe at any time.
By subscribing, you agree to the privacy policy.