SlideShare a Scribd company logo
1 of 94
Download to read offline
© 2016 Mesosphere, Inc. All Rights Reserved. 1
No one puts
Java in the
Container
MesosCon 2016 – Ken Sipe
© 2016 Mesosphere, Inc. All Rights Reserved. 2
Ken Sipe
Distribute Application
Engineer
Apache Mesos Contributor
Apache Committer Myriad, Open DCOS
Developer: Embedded, C++, Java, Groovy, Grails, C#, GoLang
@KenSipe
© 2016 Mesosphere, Inc. All Rights Reserved. 3
Patrick Swayze
Actor and Dancer
Red Dawn, Dirty Dancing , Roadhouse and Ghost
@patrickswayze09 and
@patrick_swayze
© 2016 Mesosphere, Inc. All Rights Reserved. 4
© 2016 Mesosphere, Inc. All Rights Reserved. 5
© 2016 Mesosphere, Inc. All Rights Reserved. 6
Dev
© 2016 Mesosphere, Inc. All Rights Reserved. 7
Ops
© 2016 Mesosphere, Inc. All Rights Reserved. 8
●What is a Container
●The Heart of Container (CGROUPS / NameSpaces)
●Java Mem / CPU
●Java in a Container
Agenda
© 2016 Mesosphere, Inc. All Rights Reserved. 9
Does Java
fit in a
container?
© 2016 Mesosphere, Inc. All Rights Reserved. 10
Ops
© 2016 Mesosphere, Inc. All Rights Reserved. 11
Containers
© 2016 Mesosphere, Inc. All Rights Reserved. 12
Container
© 2016 Mesosphere, Inc. All Rights Reserved. 13
Write Once Run Any Where
© 2016 Mesosphere, Inc. All Rights Reserved. 14
●I can get a shell on it (through SSH or otherwise)
●It "feels" like a VM:
●own process space
●own network interface
●can install packages
●can run services
High level: it's a lightweight VM
© 2016 Mesosphere, Inc. All Rights Reserved. 15
HARDWARE VIRTUALIZATION
1966-1972 IBM CP/CMS
1989 Insignia SoftPC
1997 Connectix VirtualPC
1999 VMWare Workstation
2001 IBM AIX LPAR
2002 Xen
2006 Amazon EC2
2007 Sun Logical Domains
2007 Linux KVM
2007 InnoTek VirtualBox
2008 Microsoft Hyper-V
© 2016 Mesosphere, Inc. All Rights Reserved. 16
Container
© 2016 Mesosphere, Inc. All Rights Reserved. 17
●It's not quite like a VM:
uses the host kernel

can't boot a different OS
●It's just a bunch of processes visible on the host machine
●(contrast with VMs which are opaque)
Low level: it's chroot on steroids
© 2016 Mesosphere, Inc. All Rights Reserved. 18
PROCESS VIRTUALIZATION
1979-1982 UNIX Chroot
1998 FreeBSD Jail
2001 Parallels Virtuozzo
2001 Linux-VServer
2005 Solaris Zones
2005 OpenVZ
2008 Linux LXC
2007+
PAAS:
Heroku, Joyent, CloudFoundry
2013 Docker
© 2016 Mesosphere, Inc. All Rights Reserved. 19
What’s the difference between containers and virtual machines?
© 2016 Mesosphere, Inc. All Rights Reserved. 20
Containers vs Virtual Machines
© 2016 Mesosphere, Inc. All Rights Reserved. 21
●Weaker isolation in containers
●Containers run near-native speed CPU/IO
●Containers launch in around 0.1 second (libcontainer)
●Less memory overhead
Differences between containers and virtual machines
© 2016 Mesosphere, Inc. All Rights Reserved. 22
© 2016 Mesosphere, Inc. All Rights Reserved. 23
(LINUX) KERNEL
LAYER FS
CGROUPS NAMESPACES
LIBCONTAINER
DOCKER
© 2016 Mesosphere, Inc. All Rights Reserved. 24
Namespaces provide isolation:
• pid (processes)
• net (network interfaces, routing...)
• ipc (System V IPC)
• mnt (mount points, filesystems)
• uts (hostname)
• user (UIDs)
Control groups control resources:
• cpu (CPU shares)
• cpuacct
• cpuset (limit processes to a CPU)
• memory (swap, dirty pages)
• blkio (throttle reads/writes)
• devices
• net_cls, net_prio: control packet class and
priority
• freezer
NAMESPACES VS. Cgroups
© 2016 Mesosphere, Inc. All Rights Reserved. 25
Control Groups
© 2016 Mesosphere, Inc. All Rights Reserved. 26
●Resource metering and limiting
●memory
●CPU
●block I/O
●network*
●Device node (/dev/*) access control
●freezer
Control groups
© 2016 Mesosphere, Inc. All Rights Reserved. 27
• /sys/fs/cgroup
• Each subsystem (memory, CPU...) has a hierarchy (tree)
•Each process belongs to exactly 1 node in each hierarchy
•Each hierarchy starts with 1 node (the root)
•Each node = group of processes (sharing the same resources)
Control groups - Generalities
© 2016 Mesosphere, Inc. All Rights Reserved. 28
View on DCOS on CoreOS
© 2016 Mesosphere, Inc. All Rights Reserved. 29
cpu/
!"" batch
#   !"" bitcoins
#   #   %"" 42
#   %"" hadoop
#   !"" 210
#   %"" 98
%"" realtime
!"" nginx
#   !"" 21
#   !"" 22
#   %"" 23
!"" postgres
#   %"" 404
%"" redis
%"" 2343
memory/
!"" 21
!"" 210
!"" 22
!"" 23
!"" 42
!"" 98
%"" databases
!"" 2343
%"" 404
© 2016 Mesosphere, Inc. All Rights Reserved. 30
●Metrics: swap, total rss, # pages in/out
●Keeps track of pages used by each group:
●file (read/write/mmap from block devices)
●anonymous (stack, heap, anonymous mmap)
●active (recently accessed)
●inactive (candidate for eviction)
Memory cgroup: accounting
© 2016 Mesosphere, Inc. All Rights Reserved. 31
•Each group can have hard and soft limits
•Soft limits are not enforced
•Hard limits will trigger a per-group OOM killer
•Limits can be set for physical, kernel, total memory
Memory cgroup: limits
docker run -it --rm -m 128m fedora bash
© 2016 Mesosphere, Inc. All Rights Reserved. 32
●Mar 10 17:42:39 ip-10-0-1-114.us-west-2.compute.internal mesos-slave[1190]: I0310 17:42:39.848748 
1199 status_update_manager.cpp:824] Checkpointing ACK for status update TASK_RUNNING (UUID:
8d13fbb9-b02a-45da-9b52-5393ce8f0746) for task task.datanode.datanode1.1457631756250 of
framework d83631ed-34
●Mar 10 17:42:41 ip-10-0-1-114.us-west-2.compute.internal mesos-slave[1190]: I0310 17:42:41.561954 
1200 mem.cpp:625] OOM notifier is triggered for container 6461cafd-3962-4022-a070-
f6e26488dd94
●Mar 10 17:42:41 ip-10-0-1-114.us-west-2.compute.internal mesos-slave[1190]: I0310 17:42:41.562047 
1200 mem.cpp:644] OOM detected for container 6461cafd-3962-4022-a070-f6e26488dd94
●Mar 10 17:42:41 ip-10-0-1-114.us-west-2.compute.internal mesos-slave[1190]: I0310 17:42:41.566249 
1200 mem.cpp:685] Memory limit exceeded: Requested: 2080MB Maximum Used: 2080MB
journalctl -f _TRANSPORT=kernel
© 2016 Mesosphere, Inc. All Rights Reserved. 33
●Metrics: cpuacct.stats user | system
●Allows to set weights
●Limitations based on type
●Options:
●CPU Shares
●CPU Sets
Cpu cgroup
© 2016 Mesosphere, Inc. All Rights Reserved. 34
●Priority Weighting across all the cores
●default value is 1024
CPU Shares
docker run -it --rm -c 512 stress …
© 2016 Mesosphere, Inc. All Rights Reserved. 35
●sudo cgcreate -g cpu:A
●sudo cgcreate -g cpu:B
●cgroup A: sudo cgset -r cpu.shares=768 A 75%
●cgroup B: sudo cgset -r cpu.shares=256 B 25%
CPU Shares
© 2016 Mesosphere, Inc. All Rights Reserved. 36
●Pin groups to specific CPU(s)
●Reserve CPUs for specific apps
●Avoid processes bouncing between CPUs
●Also relevant for NUMA systems
CPU Sets
docker run -it -cpuset=0,4,6 stress
© 2016 Mesosphere, Inc. All Rights Reserved. 37
●Limit: Bandwidth limits R/W, async / sync
●Limit: Weighted 10 10 1000
●Metrics: iops served, waiting and queued
Blkio cgroup
© 2016 Mesosphere, Inc. All Rights Reserved. 38
●Controls what the group can do on device nodes
●Permissions include read/write/mknod
●Typical use:
●allow /dev/{ty,zero,random,nul}...
●deny everything else
●A few interesting nodes:
●/dev/net/tun(network interface manipulation)
●/dev/fuse(filesystems in user space)
●/dev/kvm(VMs in containers, yay inception!)
●/dev/dri(GPU)
Devices cgroup
© 2016 Mesosphere, Inc. All Rights Reserved. 39
●When a process is created, it is placed in the same groups as its parent
●Groups are materialized by one (or multiple) pseudo-fs (typically mounted in /sys/fs/
cgroup)
Cgroup: More info
© 2016 Mesosphere, Inc. All Rights Reserved.
core@ip-10-0-2-26 ~ $ systemd-cgls memory
memory:
├─1 /usr/lib/systemd/systemd --switched-root --system --deserialize 12
├─mesos
│ ├─slave
│ │ ├─ 1300 /opt/mesosphere/packages/mesos--1eb02db6541da1a30af9fcbd9dc8e492351b8716/bin/mesos-slave
│ │ ├─ 9640 mesos-logrotate-logger --help=false --log_filename=/var/lib/mesos/slave/slaves/77f7bbfb-5c51-42a1-8f90-28740c68450d-S0/
frameworks/77f7bbfb-5c51-42a1-8f90-28740c68450d-0000/executors/sleep.3df1f8e0-276f-11e6-b
│ │ ├─ 9641 mesos-logrotate-logger --help=false --log_filename=/var/lib/mesos/slave/slaves/77f7bbfb-5c51-42a1-8f90-28740c68450d-S0/
frameworks/77f7bbfb-5c51-42a1-8f90-28740c68450d-0000/executors/sleep.3df1f8e0-276f-11e6-b
│ │ ├─10625 mesos-logrotate-logger --help=false --log_filename=/var/lib/mesos/slave/slaves/77f7bbfb-5c51-42a1-8f90-28740c68450d-S0/
frameworks/77f7bbfb-5c51-42a1-8f90-28740c68450d-0000/executors/docker-sleep.2d2504c1-2770
│ │ ├─10626 mesos-logrotate-logger --help=false --log_filename=/var/lib/mesos/slave/slaves/77f7bbfb-5c51-42a1-8f90-28740c68450d-S0/
frameworks/77f7bbfb-5c51-42a1-8f90-28740c68450d-0000/executors/docker-sleep.2d2504c1-2770
│ │ ├─10627 mesos-docker-executor --container=mesos-77f7bbfb-5c51-42a1-8f90-28740c68450d-S0.a0c1787b-3cd4-4b4a-aa47-87b01036130f --
docker=docker --docker_socket=/var/run/docker.sock --help=false --launcher_dir=/opt/mesos
│ │ ├─10659 docker -H unix:///var/run/docker.sock run --cpu-shares 1024 --memory 134217728 -e
MARATHON_APP_VERSION=2016-05-31T20:42:22.763Z -e HOST=10.0.2.26 -e MARATHON_APP_RESOURCE_CPUS=1.0 -e MARATHON_APP_DOCKER_IMAGE
│ │ ├─14772 mesos-logrotate-logger --help=false --log_filename=/var/lib/mesos/slave/slaves/77f7bbfb-5c51-42a1-8f90-28740c68450d-S0/
frameworks/77f7bbfb-5c51-42a1-8f90-28740c68450d-0000/executors/hdfs.6a7079c3-2841-11e6-b4
│ │ ├─14773 mesos-logrotate-logger --help=false --log_filename=/var/lib/mesos/slave/slaves/77f7bbfb-5c51-42a1-8f90-28740c68450d-S0/
frameworks/77f7bbfb-5c51-42a1-8f90-28740c68450d-0000/executors/hdfs.6a7079c3-2841-11e6-b4
│ │ ├─17369 mesos-logrotate-logger --help=false --log_filename=/var/lib/mesos/slave/slaves/77f7bbfb-5c51-42a1-8f90-28740c68450d-S0/
frameworks/77f7bbfb-5c51-42a1-8f90-28740c68450d-0001/executors/task.journalnode.journalno
│ │ └─17370 mesos-logrotate-logger --help=false --log_filename=/var/lib/mesos/slave/slaves/77f7bbfb-5c51-42a1-8f90-28740c68450d-S0/
frameworks/77f7bbfb-5c51-42a1-8f90-28740c68450d-0001/executors/task.journalnode.journalno
│ ├─5c4cde35-f267-4a67-9b31-72b6fa77dec0
│ │ ├─ 9642 /opt/mesosphere/packages/mesos--1eb02db6541da1a30af9fcbd9dc8e492351b8716/libexec/mesos/mesos-executor
│ │ ├─ 9674 sh -c while :; do echo "sandbox: $PWD"; sleep 120; done
│ │ └─14634 sleep 120
40
SystemD CGLS
© 2016 Mesosphere, Inc. All Rights Reserved. 41
/proc/<pid>/cgroup
core@ip-10-0-2-26 ~ $ cat /proc/9674/cgroup
9:freezer:/mesos/5c4cde35-f267-4a67-9b31-72b6fa77dec0
8:devices:/system.slice/dcos-mesos-slave.service
7:blkio:/system.slice/dcos-mesos-slave.service
6:net_cls,net_prio:/
5:cpu,cpuacct:/mesos/5c4cde35-f267-4a67-9b31-72b6fa77dec0
4:cpuset:/
3:perf_event:/
2:memory:/mesos/5c4cde35-f267-4a67-9b31-72b6fa77dec0
1:name=systemd:/mesos_executors.slice
© 2016 Mesosphere, Inc. All Rights Reserved. 42
systemd-cgtop
© 2016 Mesosphere, Inc. All Rights Reserved. 43
●You can find all the information about the CPU for a specific container under /sys/fs/
cgroup/cpu/system.slice/docker-$FULL_CONTAINER_ID.scope/, for example:
●$ ls /sys/fs/cgroup/cpu/system.slice/
docker-6935854d444d78abe52d629cb9d680334751a0cda82e11d2610e041d77a62b3f.scope/
cgroup.clone_children cpuacct.usage_percpu cpu.rt_runtime_us tasks
cgroup.procs cpu.cfs_period_us cpu.shares
cpuacct.stat cpu.cfs_quota_us cpu.stat
cpuacct.usage cpu.rt_period_us notify_on_release
CGroup + Docker
© 2016 Mesosphere, Inc. All Rights Reserved. 44
Namespaces
© 2016 Mesosphere, Inc. All Rights Reserved. 45
●Provide processes with their own view of the system
●Cgroups = limits how much you can use;

namespaces = limits what you can see (and therefore use)
●Multiple namespaces:
●pid, net, mnt, uts, ipc, user
●Each process is in one namespace of each type
Namespaces
© 2016 Mesosphere, Inc. All Rights Reserved. 46
●Processes within a PID namespace only see processes in the same PID namespace
●Each PID namespace has its own numbering (starting at 1)
●When PID 1 goes away, the whole namespace is killed
Pid namespace
© 2016 Mesosphere, Inc. All Rights Reserved. 47
●Mounts
●read-only
●shared - share subsequent mounts in a shared mount
●slave - only source can share with target but target mounts are private
●private - non-sharing of subsequent mounts in a shared mount
Mnt namespace
© 2016 Mesosphere, Inc. All Rights Reserved. 48
●Mount RO /usr
●Private /tmp
Typical Container Uses of MNT
© 2016 Mesosphere, Inc. All Rights Reserved. 49
●Processes within a given network namespace get their own private network stack,
including:
●network interfaces (including lo)
●routing tables
●iptables rules
●sockets (s, netstat)
net namespace
© 2016 Mesosphere, Inc. All Rights Reserved. 50
●Root namespace
●Bridging
●Private namespace with socket activation
Typical Container Uses of NET
© 2016 Mesosphere, Inc. All Rights Reserved. 51
●gethostname
●sethostname
uts namespace
© 2016 Mesosphere, Inc. All Rights Reserved. 52
●Allows a process (or group of processes) to have own:
●IPC semaphores
●IPC message queues
●IPC shared memory
IPC namespace
© 2016 Mesosphere, Inc. All Rights Reserved. 53
●Allows to map UID/GID; e.g.:
●UID 0→1999 in container C1 is mapped to UID 10000→11999 on host

UID 0→1999 in container C2 is mapped to UID 12000→13999 on host
●

Avoids extra configuration in containers

UID 0 (root) can be squashed to a non-privileged user
User namespace
© 2016 Mesosphere, Inc. All Rights Reserved. 54
●Namespaces are created with the clone() system call (i.e. with extra flags when
creating a new process)
●Namespaces are materialized by pseudo-files in
●/proc/<pid>/ns
●When the last process of a namespace exits, it is destroyed (but can be preserved by
bind-mounting the pseudo-file)
Namespace manipulation
© 2016 Mesosphere, Inc. All Rights Reserved. 55
●Can be used independently
●Use a few cgroups if you just need resource isolation
●Simulate a network of routers with network namespaces
●Put the debugger in a container's namespaces, but not its cgroups (to not use its
resource quotas)
●Setup a network interface in an isolated environment, then move it to another
cgroups and namespaces
© 2016 Mesosphere, Inc. All Rights Reserved. 56
Containers
© 2016 Mesosphere, Inc. All Rights Reserved. 57
●Even when you don't run containers ...
●you are in a container
You are always in a container
© 2016 Mesosphere, Inc. All Rights Reserved. 58
●Set of user-land tools
●A container is a directory in /var/lib/lxc
●Small config file + root filesystem
●Early versions had no support to move images around
●Requires significant amount of elbow grease (easy for sysadmins/ops, hard for devs)
LXC
© 2016 Mesosphere, Inc. All Rights Reserved. 59
●Daemon controlled by REST(ish) API
●First versions shelled out to LXC,
●now uses its own lib container runtime
●Manages containers, images, builds, and more
Docker Engine
© 2016 Mesosphere, Inc. All Rights Reserved. 60
●rkt, runC
●Focus on container execution

(no API, no image management, no build, etc.)
●They implement different specifications: rkt implements appc (App Container)
●runC implements OCP (Open Container Project), leverages Docker's libcontainer
●Mesos Container
Other Containers
© 2016 Mesosphere, Inc. All Rights Reserved. 61
●They all use the same kernel features
●Performance will be exactly the same
Which container is right for you?
© 2016 Mesosphere, Inc. All Rights Reserved. 62
Lets Talk Java
© 2016 Mesosphere, Inc. All Rights Reserved. 63
●Java Language + Java Specification + Java Runtime
Java
© 2016 Mesosphere, Inc. All Rights Reserved. 64
●Memory
●JIT Optimizations
●Mode: client vs. server
●Thread Management
●GC
Java Runtime Considerations
© 2016 Mesosphere, Inc. All Rights Reserved. 65
●Native JRE
●Heap
●Perm / meta
●JIT bytecode
●JNI
●NIO
●Threads
Java Memory Impact on a Machine
© 2016 Mesosphere, Inc. All Rights Reserved. 66
Java Memory
-Xms / -Xmx
Eden Old SpaceSS0 SS1
© 2016 Mesosphere, Inc. All Rights Reserved. 67
Java Memory
-XX:MaxPermSize
Eden Old SpaceSS0 SS1 Perm Space
© 2016 Mesosphere, Inc. All Rights Reserved. 68
Java Memory
-XX:SurvivorRatio
-XX:MaxNewSize
-XX:NewRatio
Eden Old SpaceSS0 SS1 Perm Space
© 2016 Mesosphere, Inc. All Rights Reserved. 69
© 2016 Mesosphere, Inc. All Rights Reserved. 70
Metaspace
© 2016 Mesosphere, Inc. All Rights Reserved. 71
Congratulations!! Leaky classloaders now effect the entire machine (or the container)
© 2016 Mesosphere, Inc. All Rights Reserved. 72
NIO with Native Memory Buffer
© 2016 Mesosphere, Inc. All Rights Reserved. 73
●Every thread in an application requires memory to store its stack
●Default sizes usually: 512K to 1024K / thread
Threads
© 2016 Mesosphere, Inc. All Rights Reserved. 74
●JIT differences
●larger old spaces
●code cache (JRE 7)
●client = 32M
●server = 48M
●JRE8 = 96M
client vs server mode
© 2016 Mesosphere, Inc. All Rights Reserved. 75
●Sets the default # threads for GC
●Initial value of the ForkJoin Pool
Core / Process Counts
-Djava.util.concurrent.ForkJoinPool.common.parallelism=1
-XX:ParallelGCThreads
-XX:ConcGCThreads
© 2016 Mesosphere, Inc. All Rights Reserved. 76
●JIT compiler threads
●HotSpot thresholds and optimizations
●Number of thread in the common fork-join pool
●and more…
JRE initializations based on core count
© 2016 Mesosphere, Inc. All Rights Reserved. 77
●JIT Optimization
●Another Pause Opportunity
●Affected when the number of threads outnumbers the number of cores
Time To Safe Point (TTSP)
© 2016 Mesosphere, Inc. All Rights Reserved. 78
Bringing it together
© 2016 Mesosphere, Inc. All Rights Reserved. 79
●Memory limitations are naive and most be set
Where Java Gets it’s Information
© 2016 Mesosphere, Inc. All Rights Reserved. 80
●JDK 7/8 - resources from sysconf
sysconf(_SC_NPROCESSORS_ONLN);
●JDK 9 - sched_getaffinity
●accounts for cpusets
Where Java Gets it’s CPU Information
© 2016 Mesosphere, Inc. All Rights Reserved. 81
●CPUSET
●pin to specific CPUs
●Runtime.getRuntime().availableProcessors(); == # cores assigned
Java with CPU Set
docker run -ti --cpuset=0,4,6 …
© 2016 Mesosphere, Inc. All Rights Reserved. 82
●CPU Share
●Priority Weighting across all the cores
●Runtime.getRuntime().availableProcessors(); == # cores on node
Java with CPU Share
docker run -ti -c 512 …
© 2016 Mesosphere, Inc. All Rights Reserved. 83
●Land on a 32 core box
●32 cores are seen by the JRE
●32 threads set by default for ForkJoinPool
Java and CPU Shares
© 2016 Mesosphere, Inc. All Rights Reserved. 84
●“We resisted making the JVM resource pool aware on Solaris and that turned out to
be a win because Zones became dominant.
●But now we face a similar problem with cgroups on Linux and environments like
Docker.
●We were lucky that cpusets are reflected in the output of sched_getaffinity - a nice
simple change.”
Dr. David Holmes
© 2016 Mesosphere, Inc. All Rights Reserved. 85
●“But memory constraints are far more problematic and may not even be queryable
in general.
●If there are no API's to tell the VM the real resource story what is the VM supposed to
do? I don't have any answers to that.”
●“When the environment lies to the VM about what is available it
makes it very hard for the VM to try to adjust.”
Dr. David Holmes
© 2016 Mesosphere, Inc. All Rights Reserved. 86
The JRE needs help
© 2016 Mesosphere, Inc. All Rights Reserved. 87
© 2016 Mesosphere, Inc. All Rights Reserved. 88
The Solution!!!
© 2016 Mesosphere, Inc. All Rights Reserved. 89
The Solution!!!
© 2016 Mesosphere, Inc. All Rights Reserved. 90
●“The good thing about docker containers (and some other like containers) is that
they don’t hide the underlying hardware from processes like VM technology does.”
●“The bad thing about docker containers (and some other like containers) is that they
don’t hide the underlying hardware from processes like VM technology does.”
Kirk Pepperdine
© 2016 Mesosphere, Inc. All Rights Reserved. 91
●We need a JDK
Enhancement Proposal
Call to action
© 2016 Mesosphere, Inc. All Rights Reserved. 92
●Java Memory
●Java Performance
●IBM: Thanks for the memory
References
http://www.ibm.com/developerworks/library/j-nativememory-linux/
© 2016 Mesosphere, Inc. All Rights Reserved. 93
VISIT OUR
BOOTH
Located at D1, near the main entrance
Learn more by visiting dcos.io and mesosphere.com
© 2016 Mesosphere, Inc. All Rights Reserved.
THANK YOU!
94

More Related Content

What's hot

Hacking with ARM Mobile devices on Linux
Hacking with ARM Mobile devices on LinuxHacking with ARM Mobile devices on Linux
Hacking with ARM Mobile devices on LinuxNetwalker lab kapper
 
DEF CON 23 - Shawn webb - hardenedBSD internals
DEF CON 23 - Shawn webb - hardenedBSD internalsDEF CON 23 - Shawn webb - hardenedBSD internals
DEF CON 23 - Shawn webb - hardenedBSD internalsFelipe Prado
 
Trying and evaluating the new features of GlusterFS 3.5
Trying and evaluating the new features of GlusterFS 3.5Trying and evaluating the new features of GlusterFS 3.5
Trying and evaluating the new features of GlusterFS 3.5Keisuke Takahashi
 
OpenNebula Conf 2014 | Using Ceph to provide scalable storage for OpenNebula ...
OpenNebula Conf 2014 | Using Ceph to provide scalable storage for OpenNebula ...OpenNebula Conf 2014 | Using Ceph to provide scalable storage for OpenNebula ...
OpenNebula Conf 2014 | Using Ceph to provide scalable storage for OpenNebula ...NETWAYS
 
pkgsrc on SmartOS
pkgsrc on SmartOSpkgsrc on SmartOS
pkgsrc on SmartOSjonperkin
 
Keeping OpenStack storage trendy with Ceph and containers
Keeping OpenStack storage trendy with Ceph and containersKeeping OpenStack storage trendy with Ceph and containers
Keeping OpenStack storage trendy with Ceph and containersSage Weil
 
Hacking with ARM devices on Linux
Hacking with ARM devices on Linux Hacking with ARM devices on Linux
Hacking with ARM devices on Linux Netwalker lab kapper
 
延伸Linux关键业务到双活高速NVMe-oF存储-OpenInfraDays-China2018
延伸Linux关键业务到双活高速NVMe-oF存储-OpenInfraDays-China2018延伸Linux关键业务到双活高速NVMe-oF存储-OpenInfraDays-China2018
延伸Linux关键业务到双活高速NVMe-oF存储-OpenInfraDays-China2018Roger Zhou 周志强
 
GlusterFS CTDB Integration
GlusterFS CTDB IntegrationGlusterFS CTDB Integration
GlusterFS CTDB IntegrationEtsuji Nakai
 
2019-09-25 Paris Time Series Meetup - Warp 10 - Advanced Time Series Technolo...
2019-09-25 Paris Time Series Meetup - Warp 10 - Advanced Time Series Technolo...2019-09-25 Paris Time Series Meetup - Warp 10 - Advanced Time Series Technolo...
2019-09-25 Paris Time Series Meetup - Warp 10 - Advanced Time Series Technolo...Mathias Herberts
 
Performance optimization for all flash based on aarch64 v2.0
Performance optimization for all flash based on aarch64 v2.0Performance optimization for all flash based on aarch64 v2.0
Performance optimization for all flash based on aarch64 v2.0Ceph Community
 
DOXLON November 2016: Facebook Engineering on cgroupv2
DOXLON November 2016: Facebook Engineering on cgroupv2DOXLON November 2016: Facebook Engineering on cgroupv2
DOXLON November 2016: Facebook Engineering on cgroupv2Outlyer
 
Running Docker with OpenStack | Docker workshop #1
Running Docker with OpenStack | Docker workshop #1Running Docker with OpenStack | Docker workshop #1
Running Docker with OpenStack | Docker workshop #1dotCloud
 
2009-06-18 CAVMEN System z Users Group Update
2009-06-18 CAVMEN System z Users Group Update2009-06-18 CAVMEN System z Users Group Update
2009-06-18 CAVMEN System z Users Group UpdateShawn Wells
 
Ceph Day Bring Ceph To Enterprise
Ceph Day Bring Ceph To EnterpriseCeph Day Bring Ceph To Enterprise
Ceph Day Bring Ceph To EnterpriseAlex Lau
 
High Availability Storage (susecon2016)
High Availability Storage (susecon2016)High Availability Storage (susecon2016)
High Availability Storage (susecon2016)Roger Zhou 周志强
 

What's hot (20)

Hacking with ARM Mobile devices on Linux
Hacking with ARM Mobile devices on LinuxHacking with ARM Mobile devices on Linux
Hacking with ARM Mobile devices on Linux
 
DEF CON 23 - Shawn webb - hardenedBSD internals
DEF CON 23 - Shawn webb - hardenedBSD internalsDEF CON 23 - Shawn webb - hardenedBSD internals
DEF CON 23 - Shawn webb - hardenedBSD internals
 
Cluster filesystems
Cluster filesystemsCluster filesystems
Cluster filesystems
 
Trying and evaluating the new features of GlusterFS 3.5
Trying and evaluating the new features of GlusterFS 3.5Trying and evaluating the new features of GlusterFS 3.5
Trying and evaluating the new features of GlusterFS 3.5
 
OpenNebula Conf 2014 | Using Ceph to provide scalable storage for OpenNebula ...
OpenNebula Conf 2014 | Using Ceph to provide scalable storage for OpenNebula ...OpenNebula Conf 2014 | Using Ceph to provide scalable storage for OpenNebula ...
OpenNebula Conf 2014 | Using Ceph to provide scalable storage for OpenNebula ...
 
pkgsrc on SmartOS
pkgsrc on SmartOSpkgsrc on SmartOS
pkgsrc on SmartOS
 
Keeping OpenStack storage trendy with Ceph and containers
Keeping OpenStack storage trendy with Ceph and containersKeeping OpenStack storage trendy with Ceph and containers
Keeping OpenStack storage trendy with Ceph and containers
 
Hacking with ARM devices on Linux
Hacking with ARM devices on Linux Hacking with ARM devices on Linux
Hacking with ARM devices on Linux
 
延伸Linux关键业务到双活高速NVMe-oF存储-OpenInfraDays-China2018
延伸Linux关键业务到双活高速NVMe-oF存储-OpenInfraDays-China2018延伸Linux关键业务到双活高速NVMe-oF存储-OpenInfraDays-China2018
延伸Linux关键业务到双活高速NVMe-oF存储-OpenInfraDays-China2018
 
GlusterFS CTDB Integration
GlusterFS CTDB IntegrationGlusterFS CTDB Integration
GlusterFS CTDB Integration
 
pkgsrc on MirBSD
pkgsrc on MirBSDpkgsrc on MirBSD
pkgsrc on MirBSD
 
2019-09-25 Paris Time Series Meetup - Warp 10 - Advanced Time Series Technolo...
2019-09-25 Paris Time Series Meetup - Warp 10 - Advanced Time Series Technolo...2019-09-25 Paris Time Series Meetup - Warp 10 - Advanced Time Series Technolo...
2019-09-25 Paris Time Series Meetup - Warp 10 - Advanced Time Series Technolo...
 
Performance optimization for all flash based on aarch64 v2.0
Performance optimization for all flash based on aarch64 v2.0Performance optimization for all flash based on aarch64 v2.0
Performance optimization for all flash based on aarch64 v2.0
 
DOXLON November 2016: Facebook Engineering on cgroupv2
DOXLON November 2016: Facebook Engineering on cgroupv2DOXLON November 2016: Facebook Engineering on cgroupv2
DOXLON November 2016: Facebook Engineering on cgroupv2
 
Look Into Libvirt Osier Yang
Look Into Libvirt Osier YangLook Into Libvirt Osier Yang
Look Into Libvirt Osier Yang
 
Running Docker with OpenStack | Docker workshop #1
Running Docker with OpenStack | Docker workshop #1Running Docker with OpenStack | Docker workshop #1
Running Docker with OpenStack | Docker workshop #1
 
2009-06-18 CAVMEN System z Users Group Update
2009-06-18 CAVMEN System z Users Group Update2009-06-18 CAVMEN System z Users Group Update
2009-06-18 CAVMEN System z Users Group Update
 
Ceph Day Bring Ceph To Enterprise
Ceph Day Bring Ceph To EnterpriseCeph Day Bring Ceph To Enterprise
Ceph Day Bring Ceph To Enterprise
 
QEMU in Cross building
QEMU in Cross buildingQEMU in Cross building
QEMU in Cross building
 
High Availability Storage (susecon2016)
High Availability Storage (susecon2016)High Availability Storage (susecon2016)
High Availability Storage (susecon2016)
 

Viewers also liked

Rev william haynes
Rev william haynesRev william haynes
Rev william hayneswinweb67
 
Dimension Data Cloud Business Unit - Solution Offering
Dimension Data Cloud Business Unit - Solution OfferingDimension Data Cloud Business Unit - Solution Offering
Dimension Data Cloud Business Unit - Solution OfferingRifaHaryadi
 
APIs Are Forever - How to Design Long-Lasting APIs
APIs Are Forever - How to Design Long-Lasting APIsAPIs Are Forever - How to Design Long-Lasting APIs
APIs Are Forever - How to Design Long-Lasting APIsLaunchAny
 
Shared information systems
Shared information systemsShared information systems
Shared information systemsHimanshu
 
Analysis and research of system security based on android
Analysis and research of system security based on androidAnalysis and research of system security based on android
Analysis and research of system security based on androidRavishankar Kumar
 
Cgroup resource mgmt_v1
Cgroup resource mgmt_v1Cgroup resource mgmt_v1
Cgroup resource mgmt_v1sprdd
 
Linux container, namespaces & CGroup.
Linux container, namespaces & CGroup. Linux container, namespaces & CGroup.
Linux container, namespaces & CGroup. Neeraj Shrimali
 
J1 2015 "Debugging Java Apps in Containers: No Heavy Welding Gear Required"
J1 2015 "Debugging Java Apps in Containers: No Heavy Welding Gear Required"J1 2015 "Debugging Java Apps in Containers: No Heavy Welding Gear Required"
J1 2015 "Debugging Java Apps in Containers: No Heavy Welding Gear Required"Daniel Bryant
 
Cassandra and Docker Lessons Learned
Cassandra and Docker Lessons LearnedCassandra and Docker Lessons Learned
Cassandra and Docker Lessons LearnedDataStax Academy
 
Prometheus: From Berlin to Bonanza (Keynote CloudNativeCon+Kubecon Europe 2017)
Prometheus:  From Berlin to Bonanza (Keynote CloudNativeCon+Kubecon Europe 2017)Prometheus:  From Berlin to Bonanza (Keynote CloudNativeCon+Kubecon Europe 2017)
Prometheus: From Berlin to Bonanza (Keynote CloudNativeCon+Kubecon Europe 2017)Brian Brazil
 
Microservices Architecture for MEAN Applications using Serverless AWS
Microservices Architecture for MEAN Applications using Serverless AWSMicroservices Architecture for MEAN Applications using Serverless AWS
Microservices Architecture for MEAN Applications using Serverless AWSMitoc Group
 

Viewers also liked (12)

Rev william haynes
Rev william haynesRev william haynes
Rev william haynes
 
Dimension Data Cloud Business Unit - Solution Offering
Dimension Data Cloud Business Unit - Solution OfferingDimension Data Cloud Business Unit - Solution Offering
Dimension Data Cloud Business Unit - Solution Offering
 
APIs Are Forever - How to Design Long-Lasting APIs
APIs Are Forever - How to Design Long-Lasting APIsAPIs Are Forever - How to Design Long-Lasting APIs
APIs Are Forever - How to Design Long-Lasting APIs
 
Shared information systems
Shared information systemsShared information systems
Shared information systems
 
Analysis and research of system security based on android
Analysis and research of system security based on androidAnalysis and research of system security based on android
Analysis and research of system security based on android
 
Cgroup resource mgmt_v1
Cgroup resource mgmt_v1Cgroup resource mgmt_v1
Cgroup resource mgmt_v1
 
Linux container, namespaces & CGroup.
Linux container, namespaces & CGroup. Linux container, namespaces & CGroup.
Linux container, namespaces & CGroup.
 
J1 2015 "Debugging Java Apps in Containers: No Heavy Welding Gear Required"
J1 2015 "Debugging Java Apps in Containers: No Heavy Welding Gear Required"J1 2015 "Debugging Java Apps in Containers: No Heavy Welding Gear Required"
J1 2015 "Debugging Java Apps in Containers: No Heavy Welding Gear Required"
 
ClassLoader Leaks
ClassLoader LeaksClassLoader Leaks
ClassLoader Leaks
 
Cassandra and Docker Lessons Learned
Cassandra and Docker Lessons LearnedCassandra and Docker Lessons Learned
Cassandra and Docker Lessons Learned
 
Prometheus: From Berlin to Bonanza (Keynote CloudNativeCon+Kubecon Europe 2017)
Prometheus:  From Berlin to Bonanza (Keynote CloudNativeCon+Kubecon Europe 2017)Prometheus:  From Berlin to Bonanza (Keynote CloudNativeCon+Kubecon Europe 2017)
Prometheus: From Berlin to Bonanza (Keynote CloudNativeCon+Kubecon Europe 2017)
 
Microservices Architecture for MEAN Applications using Serverless AWS
Microservices Architecture for MEAN Applications using Serverless AWSMicroservices Architecture for MEAN Applications using Serverless AWS
Microservices Architecture for MEAN Applications using Serverless AWS
 

Similar to No one puts java in the container

Spark Summit EU talk by Jorg Schad
Spark Summit EU talk by Jorg SchadSpark Summit EU talk by Jorg Schad
Spark Summit EU talk by Jorg SchadSpark Summit
 
Jörg Schad - NO ONE PUTS Java IN THE CONTAINER - Codemotion Milan 2017
Jörg Schad - NO ONE PUTS Java IN THE CONTAINER - Codemotion Milan 2017Jörg Schad - NO ONE PUTS Java IN THE CONTAINER - Codemotion Milan 2017
Jörg Schad - NO ONE PUTS Java IN THE CONTAINER - Codemotion Milan 2017Codemotion
 
DRBD + OpenStack (Openstack Live Prague 2016)
DRBD + OpenStack (Openstack Live Prague 2016)DRBD + OpenStack (Openstack Live Prague 2016)
DRBD + OpenStack (Openstack Live Prague 2016)Jaroslav Jacjuk
 
Lying, Cheating, and Winning with Containers in Networking
Lying, Cheating, and Winning with Containers in NetworkingLying, Cheating, and Winning with Containers in Networking
Lying, Cheating, and Winning with Containers in NetworkingSargun Dhillon
 
BlackStor - World's fastest & most reliable Cloud Native Software Defined Sto...
BlackStor - World's fastest & most reliable Cloud Native Software Defined Sto...BlackStor - World's fastest & most reliable Cloud Native Software Defined Sto...
BlackStor - World's fastest & most reliable Cloud Native Software Defined Sto...Michal Němec
 
Webinar: Nightmares of a Container Orchestration System - Jorg Schad
Webinar: Nightmares of a Container Orchestration System - Jorg SchadWebinar: Nightmares of a Container Orchestration System - Jorg Schad
Webinar: Nightmares of a Container Orchestration System - Jorg SchadCodemotion
 
Webinar - Nightmares of a Container Orchestration System - Jorg Schad
Webinar - Nightmares of a Container Orchestration System - Jorg SchadWebinar - Nightmares of a Container Orchestration System - Jorg Schad
Webinar - Nightmares of a Container Orchestration System - Jorg SchadCodemotion
 
Downtime is not an option - day 2 operations - Jörg Schad
Downtime is not an option - day 2 operations -  Jörg SchadDowntime is not an option - day 2 operations -  Jörg Schad
Downtime is not an option - day 2 operations - Jörg SchadCodemotion
 
Dealing with kubesprawl tetris style !
Dealing with kubesprawl   tetris style !Dealing with kubesprawl   tetris style !
Dealing with kubesprawl tetris style !Taco Scargo
 
Building the Glue for Service Discovery & Load Balancing Microservices
Building the Glue for Service Discovery & Load Balancing MicroservicesBuilding the Glue for Service Discovery & Load Balancing Microservices
Building the Glue for Service Discovery & Load Balancing MicroservicesSargun Dhillon
 
gVisor, Kata Containers, Firecracker, Docker: Who is Who in the Container Space?
gVisor, Kata Containers, Firecracker, Docker: Who is Who in the Container Space?gVisor, Kata Containers, Firecracker, Docker: Who is Who in the Container Space?
gVisor, Kata Containers, Firecracker, Docker: Who is Who in the Container Space?ArangoDB Database
 
Production Plone on OpenStack Cloud
Production Plone on OpenStack CloudProduction Plone on OpenStack Cloud
Production Plone on OpenStack CloudSerg Melikyan
 
DCOS Presentation
DCOS PresentationDCOS Presentation
DCOS PresentationJan Repnak
 
Tackling non-determinism in Hadoop - Testing and debugging distributed system...
Tackling non-determinism in Hadoop - Testing and debugging distributed system...Tackling non-determinism in Hadoop - Testing and debugging distributed system...
Tackling non-determinism in Hadoop - Testing and debugging distributed system...Akihiro Suda
 
Highly efficient container orchestration and continuous delivery with DC/OS a...
Highly efficient container orchestration and continuous delivery with DC/OS a...Highly efficient container orchestration and continuous delivery with DC/OS a...
Highly efficient container orchestration and continuous delivery with DC/OS a...Christian Bogeberg
 
Webinar: OpenEBS - Still Free and now FASTEST Kubernetes storage
Webinar: OpenEBS - Still Free and now FASTEST Kubernetes storageWebinar: OpenEBS - Still Free and now FASTEST Kubernetes storage
Webinar: OpenEBS - Still Free and now FASTEST Kubernetes storageMayaData Inc
 
Why kernelspace sucks?
Why kernelspace sucks?Why kernelspace sucks?
Why kernelspace sucks?OpenFest team
 
Flink Forward San Francisco 2018: Jörg Schad and Biswajit Das - "Operating Fl...
Flink Forward San Francisco 2018: Jörg Schad and Biswajit Das - "Operating Fl...Flink Forward San Francisco 2018: Jörg Schad and Biswajit Das - "Operating Fl...
Flink Forward San Francisco 2018: Jörg Schad and Biswajit Das - "Operating Fl...Flink Forward
 

Similar to No one puts java in the container (20)

Spark Summit EU talk by Jorg Schad
Spark Summit EU talk by Jorg SchadSpark Summit EU talk by Jorg Schad
Spark Summit EU talk by Jorg Schad
 
Jörg Schad - NO ONE PUTS Java IN THE CONTAINER - Codemotion Milan 2017
Jörg Schad - NO ONE PUTS Java IN THE CONTAINER - Codemotion Milan 2017Jörg Schad - NO ONE PUTS Java IN THE CONTAINER - Codemotion Milan 2017
Jörg Schad - NO ONE PUTS Java IN THE CONTAINER - Codemotion Milan 2017
 
DRBD + OpenStack (Openstack Live Prague 2016)
DRBD + OpenStack (Openstack Live Prague 2016)DRBD + OpenStack (Openstack Live Prague 2016)
DRBD + OpenStack (Openstack Live Prague 2016)
 
Lying, Cheating, and Winning with Containers in Networking
Lying, Cheating, and Winning with Containers in NetworkingLying, Cheating, and Winning with Containers in Networking
Lying, Cheating, and Winning with Containers in Networking
 
BlackStor - World's fastest & most reliable Cloud Native Software Defined Sto...
BlackStor - World's fastest & most reliable Cloud Native Software Defined Sto...BlackStor - World's fastest & most reliable Cloud Native Software Defined Sto...
BlackStor - World's fastest & most reliable Cloud Native Software Defined Sto...
 
Webinar: Nightmares of a Container Orchestration System - Jorg Schad
Webinar: Nightmares of a Container Orchestration System - Jorg SchadWebinar: Nightmares of a Container Orchestration System - Jorg Schad
Webinar: Nightmares of a Container Orchestration System - Jorg Schad
 
Webinar - Nightmares of a Container Orchestration System - Jorg Schad
Webinar - Nightmares of a Container Orchestration System - Jorg SchadWebinar - Nightmares of a Container Orchestration System - Jorg Schad
Webinar - Nightmares of a Container Orchestration System - Jorg Schad
 
Downtime is not an option - day 2 operations - Jörg Schad
Downtime is not an option - day 2 operations -  Jörg SchadDowntime is not an option - day 2 operations -  Jörg Schad
Downtime is not an option - day 2 operations - Jörg Schad
 
Dealing with kubesprawl tetris style !
Dealing with kubesprawl   tetris style !Dealing with kubesprawl   tetris style !
Dealing with kubesprawl tetris style !
 
Building the Glue for Service Discovery & Load Balancing Microservices
Building the Glue for Service Discovery & Load Balancing MicroservicesBuilding the Glue for Service Discovery & Load Balancing Microservices
Building the Glue for Service Discovery & Load Balancing Microservices
 
gVisor, Kata Containers, Firecracker, Docker: Who is Who in the Container Space?
gVisor, Kata Containers, Firecracker, Docker: Who is Who in the Container Space?gVisor, Kata Containers, Firecracker, Docker: Who is Who in the Container Space?
gVisor, Kata Containers, Firecracker, Docker: Who is Who in the Container Space?
 
Production Plone on OpenStack Cloud
Production Plone on OpenStack CloudProduction Plone on OpenStack Cloud
Production Plone on OpenStack Cloud
 
DCOS Presentation
DCOS PresentationDCOS Presentation
DCOS Presentation
 
Tackling non-determinism in Hadoop - Testing and debugging distributed system...
Tackling non-determinism in Hadoop - Testing and debugging distributed system...Tackling non-determinism in Hadoop - Testing and debugging distributed system...
Tackling non-determinism in Hadoop - Testing and debugging distributed system...
 
Highly efficient container orchestration and continuous delivery with DC/OS a...
Highly efficient container orchestration and continuous delivery with DC/OS a...Highly efficient container orchestration and continuous delivery with DC/OS a...
Highly efficient container orchestration and continuous delivery with DC/OS a...
 
Webinar: OpenEBS - Still Free and now FASTEST Kubernetes storage
Webinar: OpenEBS - Still Free and now FASTEST Kubernetes storageWebinar: OpenEBS - Still Free and now FASTEST Kubernetes storage
Webinar: OpenEBS - Still Free and now FASTEST Kubernetes storage
 
What's new in Hadoop Common and HDFS
What's new in Hadoop Common and HDFS What's new in Hadoop Common and HDFS
What's new in Hadoop Common and HDFS
 
Why kernelspace sucks?
Why kernelspace sucks?Why kernelspace sucks?
Why kernelspace sucks?
 
Flink Forward San Francisco 2018: Jörg Schad and Biswajit Das - "Operating Fl...
Flink Forward San Francisco 2018: Jörg Schad and Biswajit Das - "Operating Fl...Flink Forward San Francisco 2018: Jörg Schad and Biswajit Das - "Operating Fl...
Flink Forward San Francisco 2018: Jörg Schad and Biswajit Das - "Operating Fl...
 
Containers > VMs
Containers > VMsContainers > VMs
Containers > VMs
 

Recently uploaded

Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptxReal-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptxRTS corp
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtimeandrehoraa
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfMarharyta Nedzelska
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationBradBedford3
 
OpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full Recording
OpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full RecordingOpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full Recording
OpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full RecordingShane Coughlan
 
Leveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + KobitonLeveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + KobitonApplitools
 
Understanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM ArchitectureUnderstanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM Architecturerahul_net
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Developmentvyaparkranti
 
Best Angular 17 Classroom & Online training - Naresh IT
Best Angular 17 Classroom & Online training - Naresh ITBest Angular 17 Classroom & Online training - Naresh IT
Best Angular 17 Classroom & Online training - Naresh ITmanoharjgpsolutions
 
2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shards2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shardsChristopher Curtin
 
VictoriaMetrics Anomaly Detection Updates: Q1 2024
VictoriaMetrics Anomaly Detection Updates: Q1 2024VictoriaMetrics Anomaly Detection Updates: Q1 2024
VictoriaMetrics Anomaly Detection Updates: Q1 2024VictoriaMetrics
 
SAM Training Session - How to use EXCEL ?
SAM Training Session - How to use EXCEL ?SAM Training Session - How to use EXCEL ?
SAM Training Session - How to use EXCEL ?Alexandre Beguel
 
Effectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryErrorEffectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryErrorTier1 app
 
Strategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero resultsStrategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero resultsJean Silva
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfDrew Moseley
 
Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLionel Briand
 
Salesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZSalesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZABSYZ Inc
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Angel Borroy López
 
What’s New in VictoriaMetrics: Q1 2024 Updates
What’s New in VictoriaMetrics: Q1 2024 UpdatesWhat’s New in VictoriaMetrics: Q1 2024 Updates
What’s New in VictoriaMetrics: Q1 2024 UpdatesVictoriaMetrics
 
eSoftTools IMAP Backup Software and migration tools
eSoftTools IMAP Backup Software and migration toolseSoftTools IMAP Backup Software and migration tools
eSoftTools IMAP Backup Software and migration toolsosttopstonverter
 

Recently uploaded (20)

Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptxReal-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtime
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdf
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion Application
 
OpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full Recording
OpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full RecordingOpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full Recording
OpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full Recording
 
Leveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + KobitonLeveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
 
Understanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM ArchitectureUnderstanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM Architecture
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Development
 
Best Angular 17 Classroom & Online training - Naresh IT
Best Angular 17 Classroom & Online training - Naresh ITBest Angular 17 Classroom & Online training - Naresh IT
Best Angular 17 Classroom & Online training - Naresh IT
 
2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shards2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shards
 
VictoriaMetrics Anomaly Detection Updates: Q1 2024
VictoriaMetrics Anomaly Detection Updates: Q1 2024VictoriaMetrics Anomaly Detection Updates: Q1 2024
VictoriaMetrics Anomaly Detection Updates: Q1 2024
 
SAM Training Session - How to use EXCEL ?
SAM Training Session - How to use EXCEL ?SAM Training Session - How to use EXCEL ?
SAM Training Session - How to use EXCEL ?
 
Effectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryErrorEffectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryError
 
Strategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero resultsStrategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero results
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdf
 
Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and Repair
 
Salesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZSalesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZ
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
 
What’s New in VictoriaMetrics: Q1 2024 Updates
What’s New in VictoriaMetrics: Q1 2024 UpdatesWhat’s New in VictoriaMetrics: Q1 2024 Updates
What’s New in VictoriaMetrics: Q1 2024 Updates
 
eSoftTools IMAP Backup Software and migration tools
eSoftTools IMAP Backup Software and migration toolseSoftTools IMAP Backup Software and migration tools
eSoftTools IMAP Backup Software and migration tools
 

No one puts java in the container

  • 1. © 2016 Mesosphere, Inc. All Rights Reserved. 1 No one puts Java in the Container MesosCon 2016 – Ken Sipe
  • 2. © 2016 Mesosphere, Inc. All Rights Reserved. 2 Ken Sipe Distribute Application Engineer Apache Mesos Contributor Apache Committer Myriad, Open DCOS Developer: Embedded, C++, Java, Groovy, Grails, C#, GoLang @KenSipe
  • 3. © 2016 Mesosphere, Inc. All Rights Reserved. 3 Patrick Swayze Actor and Dancer Red Dawn, Dirty Dancing , Roadhouse and Ghost @patrickswayze09 and @patrick_swayze
  • 4. © 2016 Mesosphere, Inc. All Rights Reserved. 4
  • 5. © 2016 Mesosphere, Inc. All Rights Reserved. 5
  • 6. © 2016 Mesosphere, Inc. All Rights Reserved. 6 Dev
  • 7. © 2016 Mesosphere, Inc. All Rights Reserved. 7 Ops
  • 8. © 2016 Mesosphere, Inc. All Rights Reserved. 8 ●What is a Container ●The Heart of Container (CGROUPS / NameSpaces) ●Java Mem / CPU ●Java in a Container Agenda
  • 9. © 2016 Mesosphere, Inc. All Rights Reserved. 9 Does Java fit in a container?
  • 10. © 2016 Mesosphere, Inc. All Rights Reserved. 10 Ops
  • 11. © 2016 Mesosphere, Inc. All Rights Reserved. 11 Containers
  • 12. © 2016 Mesosphere, Inc. All Rights Reserved. 12 Container
  • 13. © 2016 Mesosphere, Inc. All Rights Reserved. 13 Write Once Run Any Where
  • 14. © 2016 Mesosphere, Inc. All Rights Reserved. 14 ●I can get a shell on it (through SSH or otherwise) ●It "feels" like a VM: ●own process space ●own network interface ●can install packages ●can run services High level: it's a lightweight VM
  • 15. © 2016 Mesosphere, Inc. All Rights Reserved. 15 HARDWARE VIRTUALIZATION 1966-1972 IBM CP/CMS 1989 Insignia SoftPC 1997 Connectix VirtualPC 1999 VMWare Workstation 2001 IBM AIX LPAR 2002 Xen 2006 Amazon EC2 2007 Sun Logical Domains 2007 Linux KVM 2007 InnoTek VirtualBox 2008 Microsoft Hyper-V
  • 16. © 2016 Mesosphere, Inc. All Rights Reserved. 16 Container
  • 17. © 2016 Mesosphere, Inc. All Rights Reserved. 17 ●It's not quite like a VM: uses the host kernel
 can't boot a different OS ●It's just a bunch of processes visible on the host machine ●(contrast with VMs which are opaque) Low level: it's chroot on steroids
  • 18. © 2016 Mesosphere, Inc. All Rights Reserved. 18 PROCESS VIRTUALIZATION 1979-1982 UNIX Chroot 1998 FreeBSD Jail 2001 Parallels Virtuozzo 2001 Linux-VServer 2005 Solaris Zones 2005 OpenVZ 2008 Linux LXC 2007+ PAAS: Heroku, Joyent, CloudFoundry 2013 Docker
  • 19. © 2016 Mesosphere, Inc. All Rights Reserved. 19 What’s the difference between containers and virtual machines?
  • 20. © 2016 Mesosphere, Inc. All Rights Reserved. 20 Containers vs Virtual Machines
  • 21. © 2016 Mesosphere, Inc. All Rights Reserved. 21 ●Weaker isolation in containers ●Containers run near-native speed CPU/IO ●Containers launch in around 0.1 second (libcontainer) ●Less memory overhead Differences between containers and virtual machines
  • 22. © 2016 Mesosphere, Inc. All Rights Reserved. 22
  • 23. © 2016 Mesosphere, Inc. All Rights Reserved. 23 (LINUX) KERNEL LAYER FS CGROUPS NAMESPACES LIBCONTAINER DOCKER
  • 24. © 2016 Mesosphere, Inc. All Rights Reserved. 24 Namespaces provide isolation: • pid (processes) • net (network interfaces, routing...) • ipc (System V IPC) • mnt (mount points, filesystems) • uts (hostname) • user (UIDs) Control groups control resources: • cpu (CPU shares) • cpuacct • cpuset (limit processes to a CPU) • memory (swap, dirty pages) • blkio (throttle reads/writes) • devices • net_cls, net_prio: control packet class and priority • freezer NAMESPACES VS. Cgroups
  • 25. © 2016 Mesosphere, Inc. All Rights Reserved. 25 Control Groups
  • 26. © 2016 Mesosphere, Inc. All Rights Reserved. 26 ●Resource metering and limiting ●memory ●CPU ●block I/O ●network* ●Device node (/dev/*) access control ●freezer Control groups
  • 27. © 2016 Mesosphere, Inc. All Rights Reserved. 27 • /sys/fs/cgroup • Each subsystem (memory, CPU...) has a hierarchy (tree) •Each process belongs to exactly 1 node in each hierarchy •Each hierarchy starts with 1 node (the root) •Each node = group of processes (sharing the same resources) Control groups - Generalities
  • 28. © 2016 Mesosphere, Inc. All Rights Reserved. 28 View on DCOS on CoreOS
  • 29. © 2016 Mesosphere, Inc. All Rights Reserved. 29 cpu/ !"" batch #   !"" bitcoins #   #   %"" 42 #   %"" hadoop #   !"" 210 #   %"" 98 %"" realtime !"" nginx #   !"" 21 #   !"" 22 #   %"" 23 !"" postgres #   %"" 404 %"" redis %"" 2343 memory/ !"" 21 !"" 210 !"" 22 !"" 23 !"" 42 !"" 98 %"" databases !"" 2343 %"" 404
  • 30. © 2016 Mesosphere, Inc. All Rights Reserved. 30 ●Metrics: swap, total rss, # pages in/out ●Keeps track of pages used by each group: ●file (read/write/mmap from block devices) ●anonymous (stack, heap, anonymous mmap) ●active (recently accessed) ●inactive (candidate for eviction) Memory cgroup: accounting
  • 31. © 2016 Mesosphere, Inc. All Rights Reserved. 31 •Each group can have hard and soft limits •Soft limits are not enforced •Hard limits will trigger a per-group OOM killer •Limits can be set for physical, kernel, total memory Memory cgroup: limits docker run -it --rm -m 128m fedora bash
  • 32. © 2016 Mesosphere, Inc. All Rights Reserved. 32 ●Mar 10 17:42:39 ip-10-0-1-114.us-west-2.compute.internal mesos-slave[1190]: I0310 17:42:39.848748  1199 status_update_manager.cpp:824] Checkpointing ACK for status update TASK_RUNNING (UUID: 8d13fbb9-b02a-45da-9b52-5393ce8f0746) for task task.datanode.datanode1.1457631756250 of framework d83631ed-34 ●Mar 10 17:42:41 ip-10-0-1-114.us-west-2.compute.internal mesos-slave[1190]: I0310 17:42:41.561954  1200 mem.cpp:625] OOM notifier is triggered for container 6461cafd-3962-4022-a070- f6e26488dd94 ●Mar 10 17:42:41 ip-10-0-1-114.us-west-2.compute.internal mesos-slave[1190]: I0310 17:42:41.562047  1200 mem.cpp:644] OOM detected for container 6461cafd-3962-4022-a070-f6e26488dd94 ●Mar 10 17:42:41 ip-10-0-1-114.us-west-2.compute.internal mesos-slave[1190]: I0310 17:42:41.566249  1200 mem.cpp:685] Memory limit exceeded: Requested: 2080MB Maximum Used: 2080MB journalctl -f _TRANSPORT=kernel
  • 33. © 2016 Mesosphere, Inc. All Rights Reserved. 33 ●Metrics: cpuacct.stats user | system ●Allows to set weights ●Limitations based on type ●Options: ●CPU Shares ●CPU Sets Cpu cgroup
  • 34. © 2016 Mesosphere, Inc. All Rights Reserved. 34 ●Priority Weighting across all the cores ●default value is 1024 CPU Shares docker run -it --rm -c 512 stress …
  • 35. © 2016 Mesosphere, Inc. All Rights Reserved. 35 ●sudo cgcreate -g cpu:A ●sudo cgcreate -g cpu:B ●cgroup A: sudo cgset -r cpu.shares=768 A 75% ●cgroup B: sudo cgset -r cpu.shares=256 B 25% CPU Shares
  • 36. © 2016 Mesosphere, Inc. All Rights Reserved. 36 ●Pin groups to specific CPU(s) ●Reserve CPUs for specific apps ●Avoid processes bouncing between CPUs ●Also relevant for NUMA systems CPU Sets docker run -it -cpuset=0,4,6 stress
  • 37. © 2016 Mesosphere, Inc. All Rights Reserved. 37 ●Limit: Bandwidth limits R/W, async / sync ●Limit: Weighted 10 10 1000 ●Metrics: iops served, waiting and queued Blkio cgroup
  • 38. © 2016 Mesosphere, Inc. All Rights Reserved. 38 ●Controls what the group can do on device nodes ●Permissions include read/write/mknod ●Typical use: ●allow /dev/{ty,zero,random,nul}... ●deny everything else ●A few interesting nodes: ●/dev/net/tun(network interface manipulation) ●/dev/fuse(filesystems in user space) ●/dev/kvm(VMs in containers, yay inception!) ●/dev/dri(GPU) Devices cgroup
  • 39. © 2016 Mesosphere, Inc. All Rights Reserved. 39 ●When a process is created, it is placed in the same groups as its parent ●Groups are materialized by one (or multiple) pseudo-fs (typically mounted in /sys/fs/ cgroup) Cgroup: More info
  • 40. © 2016 Mesosphere, Inc. All Rights Reserved. core@ip-10-0-2-26 ~ $ systemd-cgls memory memory: ├─1 /usr/lib/systemd/systemd --switched-root --system --deserialize 12 ├─mesos │ ├─slave │ │ ├─ 1300 /opt/mesosphere/packages/mesos--1eb02db6541da1a30af9fcbd9dc8e492351b8716/bin/mesos-slave │ │ ├─ 9640 mesos-logrotate-logger --help=false --log_filename=/var/lib/mesos/slave/slaves/77f7bbfb-5c51-42a1-8f90-28740c68450d-S0/ frameworks/77f7bbfb-5c51-42a1-8f90-28740c68450d-0000/executors/sleep.3df1f8e0-276f-11e6-b │ │ ├─ 9641 mesos-logrotate-logger --help=false --log_filename=/var/lib/mesos/slave/slaves/77f7bbfb-5c51-42a1-8f90-28740c68450d-S0/ frameworks/77f7bbfb-5c51-42a1-8f90-28740c68450d-0000/executors/sleep.3df1f8e0-276f-11e6-b │ │ ├─10625 mesos-logrotate-logger --help=false --log_filename=/var/lib/mesos/slave/slaves/77f7bbfb-5c51-42a1-8f90-28740c68450d-S0/ frameworks/77f7bbfb-5c51-42a1-8f90-28740c68450d-0000/executors/docker-sleep.2d2504c1-2770 │ │ ├─10626 mesos-logrotate-logger --help=false --log_filename=/var/lib/mesos/slave/slaves/77f7bbfb-5c51-42a1-8f90-28740c68450d-S0/ frameworks/77f7bbfb-5c51-42a1-8f90-28740c68450d-0000/executors/docker-sleep.2d2504c1-2770 │ │ ├─10627 mesos-docker-executor --container=mesos-77f7bbfb-5c51-42a1-8f90-28740c68450d-S0.a0c1787b-3cd4-4b4a-aa47-87b01036130f -- docker=docker --docker_socket=/var/run/docker.sock --help=false --launcher_dir=/opt/mesos │ │ ├─10659 docker -H unix:///var/run/docker.sock run --cpu-shares 1024 --memory 134217728 -e MARATHON_APP_VERSION=2016-05-31T20:42:22.763Z -e HOST=10.0.2.26 -e MARATHON_APP_RESOURCE_CPUS=1.0 -e MARATHON_APP_DOCKER_IMAGE │ │ ├─14772 mesos-logrotate-logger --help=false --log_filename=/var/lib/mesos/slave/slaves/77f7bbfb-5c51-42a1-8f90-28740c68450d-S0/ frameworks/77f7bbfb-5c51-42a1-8f90-28740c68450d-0000/executors/hdfs.6a7079c3-2841-11e6-b4 │ │ ├─14773 mesos-logrotate-logger --help=false --log_filename=/var/lib/mesos/slave/slaves/77f7bbfb-5c51-42a1-8f90-28740c68450d-S0/ frameworks/77f7bbfb-5c51-42a1-8f90-28740c68450d-0000/executors/hdfs.6a7079c3-2841-11e6-b4 │ │ ├─17369 mesos-logrotate-logger --help=false --log_filename=/var/lib/mesos/slave/slaves/77f7bbfb-5c51-42a1-8f90-28740c68450d-S0/ frameworks/77f7bbfb-5c51-42a1-8f90-28740c68450d-0001/executors/task.journalnode.journalno │ │ └─17370 mesos-logrotate-logger --help=false --log_filename=/var/lib/mesos/slave/slaves/77f7bbfb-5c51-42a1-8f90-28740c68450d-S0/ frameworks/77f7bbfb-5c51-42a1-8f90-28740c68450d-0001/executors/task.journalnode.journalno │ ├─5c4cde35-f267-4a67-9b31-72b6fa77dec0 │ │ ├─ 9642 /opt/mesosphere/packages/mesos--1eb02db6541da1a30af9fcbd9dc8e492351b8716/libexec/mesos/mesos-executor │ │ ├─ 9674 sh -c while :; do echo "sandbox: $PWD"; sleep 120; done │ │ └─14634 sleep 120 40 SystemD CGLS
  • 41. © 2016 Mesosphere, Inc. All Rights Reserved. 41 /proc/<pid>/cgroup core@ip-10-0-2-26 ~ $ cat /proc/9674/cgroup 9:freezer:/mesos/5c4cde35-f267-4a67-9b31-72b6fa77dec0 8:devices:/system.slice/dcos-mesos-slave.service 7:blkio:/system.slice/dcos-mesos-slave.service 6:net_cls,net_prio:/ 5:cpu,cpuacct:/mesos/5c4cde35-f267-4a67-9b31-72b6fa77dec0 4:cpuset:/ 3:perf_event:/ 2:memory:/mesos/5c4cde35-f267-4a67-9b31-72b6fa77dec0 1:name=systemd:/mesos_executors.slice
  • 42. © 2016 Mesosphere, Inc. All Rights Reserved. 42 systemd-cgtop
  • 43. © 2016 Mesosphere, Inc. All Rights Reserved. 43 ●You can find all the information about the CPU for a specific container under /sys/fs/ cgroup/cpu/system.slice/docker-$FULL_CONTAINER_ID.scope/, for example: ●$ ls /sys/fs/cgroup/cpu/system.slice/ docker-6935854d444d78abe52d629cb9d680334751a0cda82e11d2610e041d77a62b3f.scope/ cgroup.clone_children cpuacct.usage_percpu cpu.rt_runtime_us tasks cgroup.procs cpu.cfs_period_us cpu.shares cpuacct.stat cpu.cfs_quota_us cpu.stat cpuacct.usage cpu.rt_period_us notify_on_release CGroup + Docker
  • 44. © 2016 Mesosphere, Inc. All Rights Reserved. 44 Namespaces
  • 45. © 2016 Mesosphere, Inc. All Rights Reserved. 45 ●Provide processes with their own view of the system ●Cgroups = limits how much you can use;
 namespaces = limits what you can see (and therefore use) ●Multiple namespaces: ●pid, net, mnt, uts, ipc, user ●Each process is in one namespace of each type Namespaces
  • 46. © 2016 Mesosphere, Inc. All Rights Reserved. 46 ●Processes within a PID namespace only see processes in the same PID namespace ●Each PID namespace has its own numbering (starting at 1) ●When PID 1 goes away, the whole namespace is killed Pid namespace
  • 47. © 2016 Mesosphere, Inc. All Rights Reserved. 47 ●Mounts ●read-only ●shared - share subsequent mounts in a shared mount ●slave - only source can share with target but target mounts are private ●private - non-sharing of subsequent mounts in a shared mount Mnt namespace
  • 48. © 2016 Mesosphere, Inc. All Rights Reserved. 48 ●Mount RO /usr ●Private /tmp Typical Container Uses of MNT
  • 49. © 2016 Mesosphere, Inc. All Rights Reserved. 49 ●Processes within a given network namespace get their own private network stack, including: ●network interfaces (including lo) ●routing tables ●iptables rules ●sockets (s, netstat) net namespace
  • 50. © 2016 Mesosphere, Inc. All Rights Reserved. 50 ●Root namespace ●Bridging ●Private namespace with socket activation Typical Container Uses of NET
  • 51. © 2016 Mesosphere, Inc. All Rights Reserved. 51 ●gethostname ●sethostname uts namespace
  • 52. © 2016 Mesosphere, Inc. All Rights Reserved. 52 ●Allows a process (or group of processes) to have own: ●IPC semaphores ●IPC message queues ●IPC shared memory IPC namespace
  • 53. © 2016 Mesosphere, Inc. All Rights Reserved. 53 ●Allows to map UID/GID; e.g.: ●UID 0→1999 in container C1 is mapped to UID 10000→11999 on host
 UID 0→1999 in container C2 is mapped to UID 12000→13999 on host ●
 Avoids extra configuration in containers
 UID 0 (root) can be squashed to a non-privileged user User namespace
  • 54. © 2016 Mesosphere, Inc. All Rights Reserved. 54 ●Namespaces are created with the clone() system call (i.e. with extra flags when creating a new process) ●Namespaces are materialized by pseudo-files in ●/proc/<pid>/ns ●When the last process of a namespace exits, it is destroyed (but can be preserved by bind-mounting the pseudo-file) Namespace manipulation
  • 55. © 2016 Mesosphere, Inc. All Rights Reserved. 55 ●Can be used independently ●Use a few cgroups if you just need resource isolation ●Simulate a network of routers with network namespaces ●Put the debugger in a container's namespaces, but not its cgroups (to not use its resource quotas) ●Setup a network interface in an isolated environment, then move it to another cgroups and namespaces
  • 56. © 2016 Mesosphere, Inc. All Rights Reserved. 56 Containers
  • 57. © 2016 Mesosphere, Inc. All Rights Reserved. 57 ●Even when you don't run containers ... ●you are in a container You are always in a container
  • 58. © 2016 Mesosphere, Inc. All Rights Reserved. 58 ●Set of user-land tools ●A container is a directory in /var/lib/lxc ●Small config file + root filesystem ●Early versions had no support to move images around ●Requires significant amount of elbow grease (easy for sysadmins/ops, hard for devs) LXC
  • 59. © 2016 Mesosphere, Inc. All Rights Reserved. 59 ●Daemon controlled by REST(ish) API ●First versions shelled out to LXC, ●now uses its own lib container runtime ●Manages containers, images, builds, and more Docker Engine
  • 60. © 2016 Mesosphere, Inc. All Rights Reserved. 60 ●rkt, runC ●Focus on container execution
 (no API, no image management, no build, etc.) ●They implement different specifications: rkt implements appc (App Container) ●runC implements OCP (Open Container Project), leverages Docker's libcontainer ●Mesos Container Other Containers
  • 61. © 2016 Mesosphere, Inc. All Rights Reserved. 61 ●They all use the same kernel features ●Performance will be exactly the same Which container is right for you?
  • 62. © 2016 Mesosphere, Inc. All Rights Reserved. 62 Lets Talk Java
  • 63. © 2016 Mesosphere, Inc. All Rights Reserved. 63 ●Java Language + Java Specification + Java Runtime Java
  • 64. © 2016 Mesosphere, Inc. All Rights Reserved. 64 ●Memory ●JIT Optimizations ●Mode: client vs. server ●Thread Management ●GC Java Runtime Considerations
  • 65. © 2016 Mesosphere, Inc. All Rights Reserved. 65 ●Native JRE ●Heap ●Perm / meta ●JIT bytecode ●JNI ●NIO ●Threads Java Memory Impact on a Machine
  • 66. © 2016 Mesosphere, Inc. All Rights Reserved. 66 Java Memory -Xms / -Xmx Eden Old SpaceSS0 SS1
  • 67. © 2016 Mesosphere, Inc. All Rights Reserved. 67 Java Memory -XX:MaxPermSize Eden Old SpaceSS0 SS1 Perm Space
  • 68. © 2016 Mesosphere, Inc. All Rights Reserved. 68 Java Memory -XX:SurvivorRatio -XX:MaxNewSize -XX:NewRatio Eden Old SpaceSS0 SS1 Perm Space
  • 69. © 2016 Mesosphere, Inc. All Rights Reserved. 69
  • 70. © 2016 Mesosphere, Inc. All Rights Reserved. 70 Metaspace
  • 71. © 2016 Mesosphere, Inc. All Rights Reserved. 71 Congratulations!! Leaky classloaders now effect the entire machine (or the container)
  • 72. © 2016 Mesosphere, Inc. All Rights Reserved. 72 NIO with Native Memory Buffer
  • 73. © 2016 Mesosphere, Inc. All Rights Reserved. 73 ●Every thread in an application requires memory to store its stack ●Default sizes usually: 512K to 1024K / thread Threads
  • 74. © 2016 Mesosphere, Inc. All Rights Reserved. 74 ●JIT differences ●larger old spaces ●code cache (JRE 7) ●client = 32M ●server = 48M ●JRE8 = 96M client vs server mode
  • 75. © 2016 Mesosphere, Inc. All Rights Reserved. 75 ●Sets the default # threads for GC ●Initial value of the ForkJoin Pool Core / Process Counts -Djava.util.concurrent.ForkJoinPool.common.parallelism=1 -XX:ParallelGCThreads -XX:ConcGCThreads
  • 76. © 2016 Mesosphere, Inc. All Rights Reserved. 76 ●JIT compiler threads ●HotSpot thresholds and optimizations ●Number of thread in the common fork-join pool ●and more… JRE initializations based on core count
  • 77. © 2016 Mesosphere, Inc. All Rights Reserved. 77 ●JIT Optimization ●Another Pause Opportunity ●Affected when the number of threads outnumbers the number of cores Time To Safe Point (TTSP)
  • 78. © 2016 Mesosphere, Inc. All Rights Reserved. 78 Bringing it together
  • 79. © 2016 Mesosphere, Inc. All Rights Reserved. 79 ●Memory limitations are naive and most be set Where Java Gets it’s Information
  • 80. © 2016 Mesosphere, Inc. All Rights Reserved. 80 ●JDK 7/8 - resources from sysconf sysconf(_SC_NPROCESSORS_ONLN); ●JDK 9 - sched_getaffinity ●accounts for cpusets Where Java Gets it’s CPU Information
  • 81. © 2016 Mesosphere, Inc. All Rights Reserved. 81 ●CPUSET ●pin to specific CPUs ●Runtime.getRuntime().availableProcessors(); == # cores assigned Java with CPU Set docker run -ti --cpuset=0,4,6 …
  • 82. © 2016 Mesosphere, Inc. All Rights Reserved. 82 ●CPU Share ●Priority Weighting across all the cores ●Runtime.getRuntime().availableProcessors(); == # cores on node Java with CPU Share docker run -ti -c 512 …
  • 83. © 2016 Mesosphere, Inc. All Rights Reserved. 83 ●Land on a 32 core box ●32 cores are seen by the JRE ●32 threads set by default for ForkJoinPool Java and CPU Shares
  • 84. © 2016 Mesosphere, Inc. All Rights Reserved. 84 ●“We resisted making the JVM resource pool aware on Solaris and that turned out to be a win because Zones became dominant. ●But now we face a similar problem with cgroups on Linux and environments like Docker. ●We were lucky that cpusets are reflected in the output of sched_getaffinity - a nice simple change.” Dr. David Holmes
  • 85. © 2016 Mesosphere, Inc. All Rights Reserved. 85 ●“But memory constraints are far more problematic and may not even be queryable in general. ●If there are no API's to tell the VM the real resource story what is the VM supposed to do? I don't have any answers to that.” ●“When the environment lies to the VM about what is available it makes it very hard for the VM to try to adjust.” Dr. David Holmes
  • 86. © 2016 Mesosphere, Inc. All Rights Reserved. 86 The JRE needs help
  • 87. © 2016 Mesosphere, Inc. All Rights Reserved. 87
  • 88. © 2016 Mesosphere, Inc. All Rights Reserved. 88 The Solution!!!
  • 89. © 2016 Mesosphere, Inc. All Rights Reserved. 89 The Solution!!!
  • 90. © 2016 Mesosphere, Inc. All Rights Reserved. 90 ●“The good thing about docker containers (and some other like containers) is that they don’t hide the underlying hardware from processes like VM technology does.” ●“The bad thing about docker containers (and some other like containers) is that they don’t hide the underlying hardware from processes like VM technology does.” Kirk Pepperdine
  • 91. © 2016 Mesosphere, Inc. All Rights Reserved. 91 ●We need a JDK Enhancement Proposal Call to action
  • 92. © 2016 Mesosphere, Inc. All Rights Reserved. 92 ●Java Memory ●Java Performance ●IBM: Thanks for the memory References http://www.ibm.com/developerworks/library/j-nativememory-linux/
  • 93. © 2016 Mesosphere, Inc. All Rights Reserved. 93 VISIT OUR BOOTH Located at D1, near the main entrance Learn more by visiting dcos.io and mesosphere.com
  • 94. © 2016 Mesosphere, Inc. All Rights Reserved. THANK YOU! 94