\documentclass[10pt]{article} \usepackage[margin=3cm]{geometry} \usepackage{amsmath} \usepackage{amsfonts} \usepackage{eurosym} \usepackage{ucs} \usepackage[utf8x]{inputenc} \usepackage{amssymb} \usepackage{graphicx} \usepackage{color} \pagestyle{plain} \usepackage{hyperref} \begin{document} \title{Benchmarking at the Mont-Blanc prototype} \author{ } \date{2024-04-26} \maketitle :!: Special user permissions are required for creating reservations at SLURM. Please contact hca.sysadmin@bsc.es before following the guide above specifying the application do you want to benchmark as well as the total amount of nodes and the time you will need to reserve. :!: When executing benchmarks or applications with the target of measuring the performance of the prototype, is it a must to ensure that there is no contention on the compute nodes. This contention is usually at the interconnection, so isolating the execution of your application or benchmark to ensure that is the only job running at the prototype at the same important is of great importance. The way to do this is to create a temporal reservation of the nodes by using the job scheduler SLURM. \section{Reservation creation} A reservation can be created with the ''scontrol'' command, the sintaxis is the following: \begin{verbatim} scontrol create reservation starttime=YYYY-MM-DDTHH:MM:SS {duration=[minutes]|endttime=YYYY-MM-DDTHH:MM:SS} nodes=${slurm_nodelist} flags=maint user=${users} \end{verbatim} Few considerations: \begin{itemize} \item ''starttime'' and ''endtime'' can be specified also with the following syntax \begin{itemize} \item ''now[+${N}[minutes|hours]]'' \end{itemize} \item ''nodes'' accepts SLURM syntax lists and also the word ''ALL'', which will reserve all the nodes \begin{itemize} \item SLURM nodelist: mb-[1-3,5,7-10] \end{itemize} \item ''user'' accepts a comma separated list of users which will be allowed to submit jobs to the reserved nodes \end{itemize} Here an example for creating a reservation for all the nodes in 10 hours with a duration of 3 hours and allowing the users ''dmorgan'' and ''jbauer'' to submit jobs. The output of the command is the name of the reservation, which will be used afterwards to submit the jobs. \begin{verbatim} dmorgan@mb-login-12:~$ scontrol create reservation starttime=now+10hours endtime=now+13hours nodes=ALL flags=maint users=dmorgan,jbauer Reservation created: jbauer_40 \end{verbatim} \section{Checking a reservation} For showing reservations information the command ''scontrol'' is also used. The output will be something similar to the following: \begin{verbatim} dmorgan@mb-login-12:~$ scontrol show reservation jbauer_40 ReservationName=jbauer_40 StartTime=2015-11-14T02:46:40 EndTime=2015-11-14T05:46:40 Duration=03:00:00 Nodes=mb-[1-930],mb-login-[1-15] NodeCnt=945 CoreCnt=1890 Features=(null) PartitionName=(null) Flags=MAINT,SPEC_NODES Users=jbauer Accounts=(null) Licenses=(null) State=INACTIVE \end{verbatim} Please notice that all the nodes are reserved, even the ones that are not available. Nevertheless, the reservation will work, ensuring that even the nodes that are not available will be reserved in the case they start working again. \section{Submitting a job to a created reservation} The procedure to submit a job is the same but, in this case, we must specify to the ''sbatch'' command the reservation to submit to with the ''--reservation'' option. Here an example: \begin{verbatim} dmorgan@mb-login-12:~$ sbatch --reservation=jbauer_40 ./jobScript.sh \end{verbatim} \section{Deleting a reservation} :!::!: Even though the reservation is deleted automatically after the time specified by the user is reached, we do encourage the users to delete the reservation as soon as their experiments are finished to allow other users to use the cluster :!::!: The command to execute is the following: \begin{verbatim} dmorgan@mb-login-12:~$ scontrol delete reservationname=jbauer_40 \end{verbatim} \section{More information} \end{document}