Top Banner
Putting your users in a Box Greg Thain Center for High Throughput Computing
28

Putting your users in a Box Greg Thain Center for High Throughput Computing.

Dec 14, 2015

Download

Documents

Raymond Edgar
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Putting your users in a Box Greg Thain Center for High Throughput Computing.

Putting your users in a Box

Greg ThainCenter for High Throughput

Computing

Page 2: Putting your users in a Box Greg Thain Center for High Throughput Computing.

› Why put job in a box?

› Old boxes that work everywhere*» *Everywhere that isn’t Windows

› New shiny boxes

2

Outline

Page 3: Putting your users in a Box Greg Thain Center for High Throughput Computing.

1) Protect the machine from the job.

2) Protect the job from the machine.

3) Protect one job from another.

3 Protections

3

Page 4: Putting your users in a Box Greg Thain Center for High Throughput Computing.

› Allows nesting› Need not require root› Can’t be broken out of› Portable to all OSes› Allows full management:

h Creation // Destructionh Monitoringh Limiting

The perfect box

4

Page 5: Putting your users in a Box Greg Thain Center for High Throughput Computing.

› Resources a job can (ab)useh CPUh Memoryh Diskh Signalsh Network.

A Job ain’t nothing but work

5

Page 6: Putting your users in a Box Greg Thain Center for High Throughput Computing.

› HTCondor Preempt expressionh PREEMPT =

TARGET.MemoryUsage > threshold

• ProportionalSetSizeKb > threshold

› setrlimit callh USER_JOB_WRAPPERh STARTER_RLIMIT_AS

Previous Solutions

6

Page 7: Putting your users in a Box Greg Thain Center for High Throughput Computing.

› Newish stuff

From here on out…

7

Page 8: Putting your users in a Box Greg Thain Center for High Throughput Computing.

› Some people see this problem, and say

› “I know, we’ll use a Virtual Machine”

The Big Hammer

8

Page 9: Putting your users in a Box Greg Thain Center for High Throughput Computing.

› Might need hypervisor installedh The right hypervisor (the right Version…)

› Need to keep full OS image maintained› Difficult to debug› Hard to federate

› Just too heavyweight

Problems with VMs

9

Page 10: Putting your users in a Box Greg Thain Center for High Throughput Computing.

› Want opaque box

› Much LXC work applicable here

› Work with Best feature of HTCondor ever?

Containers, not VMs

10

Page 11: Putting your users in a Box Greg Thain Center for High Throughput Computing.

› ASSIGN_CPU_AFFINITY=true

› Now works with dynamic slots› Need not be root› Any Linux version

h Only limits the job

CPU AFFINITY

11

Page 12: Putting your users in a Box Greg Thain Center for High Throughput Computing.

› You can’t kill what you can’t see› Requirements:

h HTCondor 7.9.4+h RHEL 6h USE_PID_NAMESPACES = true

• (off by default)

h Doesn’t work with privseph Must be root

PID namespaces

12

Page 13: Putting your users in a Box Greg Thain Center for High Throughput Computing.

PID Namespaces

13

Init (1)

Master (pid 15)

Startd (pid 26)

Starter (pid 39)

Job (pid 1)

Starter (pid 73)

Job (pid 1)

Page 14: Putting your users in a Box Greg Thain Center for High Throughput Computing.

› “Lock the kids in their room”

› Startd advertises set› NAMED_CHROOT = /foo/R1,/foo/R2› Job picks one:› +RequestedChroot = “/foo/R1”› Make sure path is secure!

Named Chroots

14

Page 15: Putting your users in a Box Greg Thain Center for High Throughput Computing.

› Two basic kernel abstractions:

› 1) nested groups of processes

› 2) “controllers” which limit resources

Control Groupsaka “cgroups”

15

Page 16: Putting your users in a Box Greg Thain Center for High Throughput Computing.

› Implemented as filesystemh Mounted on /sys/fs/cgroup, or /cgroup or …

› User-space tools in fluxh Systemd

h Cgservice

› /proc/self/cgroup

Control Cgroup setup

16

Page 17: Putting your users in a Box Greg Thain Center for High Throughput Computing.

› Cpu› Memory› freezer

Cgroup controllers

17

Page 18: Putting your users in a Box Greg Thain Center for High Throughput Computing.

› Requires:h RHEL6, RHEL7 even betterh HTCondor 7.9.5+h Rootly condor

h BASE_CGROUP=htcondor

h And… cgroup fs mounted…

Enabling cgroups

18

Page 19: Putting your users in a Box Greg Thain Center for High Throughput Computing.

› Starter puts each job into own cgrouph Named exec_dir + job id

› Procd monitorsh Procd freezes and kills atomically

› MEMORY attr into memory controller› CGROUP_MEMORY_LIMIT_POLICY

h Hard or softh Job goes on hold with specific message

Cgroups with HTCondor

19

Page 20: Putting your users in a Box Greg Thain Center for High Throughput Computing.

Cgroup artifacts

20

04/22/13 11:39:08 Requesting cgroup htcondor/condor_exec_slot1@localhost for job

StarterLog:

ProcLog…

cgroup to htcondor/condor_exec_slot1@localhost for ProcFamily 2727.04/22/13 11:39:13 : PROC_FAMILY_GET_USAGE04/22/13 11:39:13 : gathering usage data for family with root pid 272404/22/13 11:39:17 : PROC_FAMILY_GET_USAGE04/22/13 11:39:17 : gathering usage

Page 21: Putting your users in a Box Greg Thain Center for High Throughput Computing.

$ condor_q-- Submitter: localhost : <127.0.0.1:58873> : localhost ID      OWNER            SUBMITTED RUN_TIME ST PRI SIZE CMD                  2.0   gthain          4/22 11:36 0+00:00:02 R 0 0.0 sleep 3600

› $ ps ax | grep 3600gthain 2727  4268 4880 condor_exec.exe 3600    

21

Page 22: Putting your users in a Box Greg Thain Center for High Throughput Computing.

$ cat /proc/2727/cgroup 

3:freezer:/htcondor/condor_exec_slot1@localhost2:memory:/htcondor/condor_exec_slot1@localhost1:cpuacct,cpu:/htcondor/condor_exec_slot1@localhost

A process with Cgroups

22

Page 23: Putting your users in a Box Greg Thain Center for High Throughput Computing.

$ cd /sys/fs/cgroup/memory/htcondor/condor_exec_slot1@localhost/$ cat memory.usage_in_bytes258048$ cat tasks2727

23

Page 24: Putting your users in a Box Greg Thain Center for High Throughput Computing.

› Or, “Shared subtrees”› Goal: protect /tmp from shared jobs› Requires

h Condor 7.9.4+h RHEL 5h Doesn’t work with privseph HTCondor must be running as rooth MOUNT_UNDER_SCRATCH = /tmp,/var/tmp

MOUNT_UNDER_SCRATCH

24

Page 25: Putting your users in a Box Greg Thain Center for High Throughput Computing.

MOUNT_UNDER_SCRATCH=/tmp,/var/tmp

Each job sees private /tmp, /var/tmp

Downsides:

No sharing of files in /tmp

MOUNT_UNDER_SCRATCH

25

Page 26: Putting your users in a Box Greg Thain Center for High Throughput Computing.

Future work

26

Page 27: Putting your users in a Box Greg Thain Center for High Throughput Computing.

Future WorkDocker Universe

Containers give Linux processes a private:

• Cgroups +• Repo for images• Bind mounts

Page 28: Putting your users in a Box Greg Thain Center for High Throughput Computing.

› Questions?

› See cgroup reference material in kernel doc

• https://www.kernel.org/doc/Documentation/cgroups/cgroups.txt

› LKN article about shared subtree mounts:• http://lwn.net/Articles/159077/

Conclusion

28