[slurm-dev] Re: SLRUM as a load balancer for interactive use

2014-03-25 Thread Ryan Cox


This isn't exactly what you're looking for but I'll chime in anyway with 
how we do things.  We decided to buy a few slightly beefier interactive 
nodes and set up cgroups, /tmp and /dev/shm namespaces (/tmp and 
/dev/shm are per-user), cputime limits, /tmp quotas, etc to sanely 
oversubscribe resources.  This ended up being cheaper than other options 
and it has worked really well.  We currently use LVS to load balance 
between interactive nodes but may switch to something else at some point.


We allow users to edit files, compile code, transfer files around, etc. 
and also test their code for a little while.  Anything beyond that 
requires submitting a job.  We limit users to 1/4 of the RAM on the node 
and only 60 CPU-minutes per process via ulimit.  The cpu cgroup (not 
cpuset) is used to set a soft limit of just a few cores for each user 
but allows them to burst to 100% of the cores when there is no 
contention on the node.


It would take at least four users all using the maximum amount of RAM 
plus some extra use before the node crashes.  The memory per node ratio 
and other settings could easily be changed if necessary.


In practice, these settings have made it so that no user has crashed an 
interactive node since everything was deployed.  Obviously I didn't 
answer the original question about SLURM but this is an alternative 
approach that has worked well for us.  If you're interested in the code 
we used to set everything up, it is available at: 
https://github.com/BYUHPC/uft


Ryan

On 03/24/2014 01:32 PM, Olli-Pekka Lehto wrote:

I can foresee the screen issue as well. One could fairly simply add a check 
when the user logs in to see if the the user has a node assigned to them 
already and force the session to use that node. It could perhaps even prompt if 
they want to do access this session or get a new one.

The immediate issue we encountered when testing with screen, however, is the 
fact that when you detach and exit the interactive session SLURM faithfully 
cleans all the processes. In most cases this would be preferred but in this 
case I want the screen session (and the associated interactive job) to persist. 
Any ideas how to do this?

In our case there is no real time limit on the current interactive use nodes so 
setting runtime as unlimited is probably the way to go, at least initially. Of 
course one needs to have a sufficiently large oversubscription factor of slots 
in this case.

Olli-Pekka

On Mar 24, 2014, at 3:48 PM, Schmidtmann, Carl 
carl.schmidtm...@rochester.edu wrote:


We considered this option as well but the problem we saw with it is what 
happens when a user tries to use screen? Many of our users login, start screen, 
do some work and then disconnect. Whenever they reconnect they can pick up from 
where they left off. If you are allocated to a compute node based on loads, you 
likely won't be on the same node where your last session was. This is 
inconvenient for the users but then also leaves screen sessions open, at least 
until the time limit expires, on compute nodes.

The other issue is the time limit. Do you make it 1 hour, 4 hours, 8 hours? How 
long does a user get to be logged in? If the time limit expires, what happens 
to the open editor session? Can this be recovered on a different compute node?

We are still looking for a good way to balance users on login nodes. Right now we are 
working on a method of redirecting ssh logins based on user IDs which feels extremely 
hacky as well.

Carl
--
Carl Schmidtmann
Center for Integrated Research Computing
University of Rochester

On Mar 24, 2014, at 5:44 AM, Olli-Pekka Lehto wrote:


Dear devs,

We are testing a concept where we are dynamically allocating a portion of our 
compute nodes with oversubscribed interactive nodes for low-intensity use. To 
make the use as simple as possible, we are testing redirecting user login 
sessions directly to these nodes via SLURM.

Basically the shell initialization on the actual login node contains a SLURM srun command 
to spawn an interactive session and the user gets transparently dropped into 
a shell session on a compute node.

This would offer more flexibility than physically setting up a set of login 
nodes. Furthermore, SLURM should be able make better decisions on where to 
assign each incoming session based on resource usage than a more naive 
round-robin load balancer. This way also all interactive use can be tracked 
with SLURM's accounting.

Based on simple initial testing this seems to work but it's still a bit hacky.

My question is has anyone been doing similar things and what are your 
experiences? Are there some caveats that we should be aware of?

Best regards,
Olli-Pekka
--
Olli-Pekka Lehto
Development Manager
Computing Platforms
CSC - IT Center for Science Ltd.
E-Mail: olli-pekka.le...@csc.fi
Tel: +358 50 381 8604
skype: oplehto // twitter: ople


--
Ryan Cox
Operations Director
Fulton Supercomputing Lab
Brigham Young University


[slurm-dev] Re: SLRUM as a load balancer for interactive use

2014-03-24 Thread Schmidtmann, Carl

We considered this option as well but the problem we saw with it is what 
happens when a user tries to use screen? Many of our users login, start screen, 
do some work and then disconnect. Whenever they reconnect they can pick up from 
where they left off. If you are allocated to a compute node based on loads, you 
likely won't be on the same node where your last session was. This is 
inconvenient for the users but then also leaves screen sessions open, at least 
until the time limit expires, on compute nodes.

The other issue is the time limit. Do you make it 1 hour, 4 hours, 8 hours? How 
long does a user get to be logged in? If the time limit expires, what happens 
to the open editor session? Can this be recovered on a different compute node?  

We are still looking for a good way to balance users on login nodes. Right now 
we are working on a method of redirecting ssh logins based on user IDs which 
feels extremely hacky as well.

Carl
--
Carl Schmidtmann
Center for Integrated Research Computing
University of Rochester

On Mar 24, 2014, at 5:44 AM, Olli-Pekka Lehto wrote:

 
 Dear devs,
 
 We are testing a concept where we are dynamically allocating a portion of our 
 compute nodes with oversubscribed interactive nodes for low-intensity use. To 
 make the use as simple as possible, we are testing redirecting user login 
 sessions directly to these nodes via SLURM. 
 
 Basically the shell initialization on the actual login node contains a SLURM 
 srun command to spawn an interactive session and the user gets 
 transparently dropped into a shell session on a compute node.
 
 This would offer more flexibility than physically setting up a set of login 
 nodes. Furthermore, SLURM should be able make better decisions on where to 
 assign each incoming session based on resource usage than a more naive 
 round-robin load balancer. This way also all interactive use can be tracked 
 with SLURM's accounting. 
 
 Based on simple initial testing this seems to work but it's still a bit hacky.
 
 My question is has anyone been doing similar things and what are your 
 experiences? Are there some caveats that we should be aware of?
 
 Best regards,
 Olli-Pekka
 -- 
 Olli-Pekka Lehto
 Development Manager
 Computing Platforms
 CSC - IT Center for Science Ltd.
 E-Mail: olli-pekka.le...@csc.fi
 Tel: +358 50 381 8604
 skype: oplehto // twitter: ople


[slurm-dev] Re: SLRUM as a load balancer for interactive use

2014-03-24 Thread Olli-Pekka Lehto

I can foresee the screen issue as well. One could fairly simply add a check 
when the user logs in to see if the the user has a node assigned to them 
already and force the session to use that node. It could perhaps even prompt if 
they want to do access this session or get a new one. 

The immediate issue we encountered when testing with screen, however, is the 
fact that when you detach and exit the interactive session SLURM faithfully 
cleans all the processes. In most cases this would be preferred but in this 
case I want the screen session (and the associated interactive job) to persist. 
Any ideas how to do this? 

In our case there is no real time limit on the current interactive use nodes so 
setting runtime as unlimited is probably the way to go, at least initially. Of 
course one needs to have a sufficiently large oversubscription factor of slots 
in this case. 

Olli-Pekka

On Mar 24, 2014, at 3:48 PM, Schmidtmann, Carl 
carl.schmidtm...@rochester.edu wrote:

 
 We considered this option as well but the problem we saw with it is what 
 happens when a user tries to use screen? Many of our users login, start 
 screen, do some work and then disconnect. Whenever they reconnect they can 
 pick up from where they left off. If you are allocated to a compute node 
 based on loads, you likely won't be on the same node where your last session 
 was. This is inconvenient for the users but then also leaves screen sessions 
 open, at least until the time limit expires, on compute nodes.
 
 The other issue is the time limit. Do you make it 1 hour, 4 hours, 8 hours? 
 How long does a user get to be logged in? If the time limit expires, what 
 happens to the open editor session? Can this be recovered on a different 
 compute node?  
 
 We are still looking for a good way to balance users on login nodes. Right 
 now we are working on a method of redirecting ssh logins based on user IDs 
 which feels extremely hacky as well.
 
 Carl
 --
 Carl Schmidtmann
 Center for Integrated Research Computing
 University of Rochester
 
 On Mar 24, 2014, at 5:44 AM, Olli-Pekka Lehto wrote:
 
 
 Dear devs,
 
 We are testing a concept where we are dynamically allocating a portion of 
 our compute nodes with oversubscribed interactive nodes for low-intensity 
 use. To make the use as simple as possible, we are testing redirecting user 
 login sessions directly to these nodes via SLURM. 
 
 Basically the shell initialization on the actual login node contains a SLURM 
 srun command to spawn an interactive session and the user gets 
 transparently dropped into a shell session on a compute node.
 
 This would offer more flexibility than physically setting up a set of login 
 nodes. Furthermore, SLURM should be able make better decisions on where to 
 assign each incoming session based on resource usage than a more naive 
 round-robin load balancer. This way also all interactive use can be tracked 
 with SLURM's accounting. 
 
 Based on simple initial testing this seems to work but it's still a bit 
 hacky.
 
 My question is has anyone been doing similar things and what are your 
 experiences? Are there some caveats that we should be aware of?
 
 Best regards,
 Olli-Pekka
 -- 
 Olli-Pekka Lehto
 Development Manager
 Computing Platforms
 CSC - IT Center for Science Ltd.
 E-Mail: olli-pekka.le...@csc.fi
 Tel: +358 50 381 8604
 skype: oplehto // twitter: ople