Hi,
I saw the following plug-in:

bitstr_t * select_p_resv_test(bitstr_t *avail_bitmap, uint32_t node_cnt)

Description: Identify the nodes which best satisfy a reservation request taking 
system topology into consideration if applicable.

Arguments:

avail_bitmap    (input) a bitmap of the nodes which are available for use in 
creating the reservation.

node_cnt    (input) number of nodes required to satisfy the reservation request.

Returns: A bitmap of the nodes which should be used for the advanced 
reservation or NULL if the selected nodes can not be used for an advanced 
reservation.

My question is:
Alternatively to modifying src/slurmctld/reservation.c,  Does it makes sense to 
write a plugin that : Identifies the nodes which best satisfy a reservation 
request taking their “Features” set values into consideration if applicable ?
Which option (code change or plugin) is better in this case ?

Thanks,
Yuval.

From: Yuval Leader [mailto:[email protected]]
Sent: Wednesday, July 11, 2012 11:10 PM
To: slurm-dev
Subject: [slurm-dev] Re: Creating reservations based on a weight variable

Thanks for your response.

What I would like to do is expand the existing logic (AND/OR) of features 
matching for reservation creation (now supporting: f1&f2&f3 or f1|f2|f3 or even 
f1&f2|f3) to include something like: f1&f2&(f3>50)&(f4<10) etc.

Using discrete string "values" such as f3low, f3med, f3high and f4low, f4med, 
f4high does not give me that flexibility.

I will also need to format the feature string to include a value. This way 
nodes can have features as plain strings and features which have values 
assigned (I may use the same convention for values as in Gres):

NodeName=boo001 Features=green,lucky,memory_GB:50,cpu_frequency_GHZ:2000
NodeName=boo002 Features=blue,lucky,memory_GB:100,cpu_frequency_GHZ:2600

And then the reservation creation may be something like:
scontrol create res start=now dur=100 user=jack nodecnt=50 
Features=lucky&(memory_GB>32)&(cpu_frequency_GHZ>2500)

My questions are:
1. do you think this is an reasonable/desireable feature to slurm
2. Is there a way (perhaps easier) to do it with a plug-in, or better to follow 
your earlier tips on where to modify the code.
3. I would like to assign many features per node. I saw that the maximum 
character length of all features assigned per node, is around 470 characters. 
Is this a hard limit ? or can it easily be expanded. This will tell me if I can 
use long meaningful names for node features such as: "memory_in_gigabytes" or 
just "mg"

Thanks
Yuval.




________________________________
From: Moe Jette <[email protected]<mailto:[email protected]>>
To: slurm-dev <[email protected]<mailto:[email protected]>>
Sent: Tuesday, July 10, 2012 7:02 PM
Subject: [slurm-dev] Re: Creating reservations based on a weight variable


The easiest thing for you to do may be to give nodes features like
"high_weight", "low"weight", etc. and then specify those feature
requirements when you create the reservation. You would need to make
node code modifications.

If you want to add a filter specifically for node weight, the
following would need modification:
scontrol (to accept new arguments in reservation create/modify)
the create reservation data structure (add new fields)
The un/pack logic for the data structure (add new fields)
The logic in src/slurmctld/reservation.c that picks the resources to
satisfy the request (filter nodes using new fields)
I am not looking at the code, but that should get you started.

Quoting Yuval Leader <[email protected]<mailto:[email protected]>>:

> Hi again -
>
> After some poking in the code: Is the reservation logic you refer to in:
> line 2416 of src/slurmctld/reservation.c which starts with:
>
>
>         /* Satisfy feature specification */
>         if (resv_desc_ptr->features) {
>                 int   op_code = FEATURE_OP_AND, last_op_code =
> FEATURE_OP_AND;
>                 char *features = xstrdup(resv_desc_ptr->features);
>                 char *sep_ptr, *token = features;
>                 bitstr_t *feature_bitmap = bit_copy(node_bitmap);
>                 struct features_record *feature_ptr;
>                 ListIterator feature_iter;
>                 bool match;
>
>                 if (feature_bitmap == NULL)
>                         fatal("bit_copy malloc failure");
>
> etc....
>
>
> Is this the only place that needs modification ?
>
> Thanks,
> Yuval.
>
>
>
> ________________________________
>  From: Yuval Leader <[email protected]<mailto:[email protected]>>
> To: slurm-dev <[email protected]<mailto:[email protected]>>
> Sent: Tuesday, July 10, 2012 9:39 AM
> Subject: [slurm-dev] Re: Creating reservations based on a weight variable
>
>
> Thanks Moe ! I'll be more than happy to contribute and add it. Can
> you point me to the exiting logic and to an explanation on how to
> start with code modifications.
>
> Best regards
>
> Yuval.
>
>
> ________________________________
>  From: Moe Jette <[email protected]<mailto:[email protected]>>
> To: slurm-dev <[email protected]<mailto:[email protected]>>
> Sent: Monday, July 9, 2012 11:52 PM
> Subject: [slurm-dev] Re: Creating reservations based on a weight variable
>
>
> The current reservation logic does not support this, however SLURM is
> open source and it would be fairly simple to add if desired.
>
> Quoting Yuval Leader <[email protected]<mailto:[email protected]>>:
>
>> Hi,
>> I would like to create a reservation of nodes which comply with a
>> value greater than (or less than) a constant.
>> Aternatively create a reservation of nodes which have a minimum weight.
>>
>> This can be similar to the Weight variable used for job scheduling.
>> Is there a way to do it for reservations creation ?
>>
>> Yuval


Reply via email to