SlideShare une entreprise Scribd logo
1  sur  44
Télécharger pour lire hors ligne
Put	
  your	
  Java	
  Apps	
  to	
  Sleep?	
  
Find	
  out	
  How…	
  
	
  
John	
  Ma(hew	
  Holt	
  |	
  JAX	
  London	
  2013	
  

!

© Copyright Waratek 2013
John Matthew Holt!
•  CTO	
  and	
  co-­‐Founder	
  of	
  Waratek	
  
•  Been	
  doing	
  JVM	
  engineering	
  for	
  10	
  years	
  
•  Invented	
  “Java	
  VirtualizaCon”	
  to	
  transform	
  
how	
  JVMs	
  operate	
  in	
  virtualized	
  and	
  cloud-­‐
compuCng	
  environments	
  
•  Lead	
  the	
  design	
  of	
  the	
  first	
  Type-­‐1	
  VMM	
  for	
  a	
  
JVM	
  
© Copyright Waratek 2013
What will we cover?!
•  First	
  some	
  background…	
  
– Why	
  virtualize	
  INSIDE	
  the	
  JVM?	
  
– Think	
  “VMware	
  for	
  Java”	
  

•  PuSng	
  you	
  Java	
  Apps	
  to	
  Sleep…	
  
– Why	
  are	
  Java	
  apps	
  Cred?	
  	
  
(or	
  restated:	
  why	
  should	
  they	
  be	
  slept?)	
  
– Let	
  your	
  apps	
  nap:	
  “wake-­‐on-­‐LAN	
  for	
  JVCs”	
  	
  
© Copyright Waratek 2013
First some background…!
	
  
	
  
•  Why	
  virtualize	
  INSIDE	
  the	
  JVM?	
  

© Copyright Waratek 2013
Because…!
•  Because	
  JVMs	
  make	
  bad	
  bedfellows	
  with	
  HW	
  
hypervisors	
  (HV)	
  
•  A	
  JVM	
  thwarts	
  HW	
  hypervisor	
  features	
  like:	
  

–  The	
  GC	
  in	
  a	
  JVM	
  thwarts	
  memory-­‐overcommit	
  in	
  a	
  HW	
  
HV	
  
–  The	
  GC’s	
  heap	
  memory,	
  and	
  the	
  JIT’s	
  permgen/
codecache,	
  thwarts	
  ‘transparent	
  page	
  
sharing’	
  (memory	
  de-­‐dup)	
  in	
  a	
  HW	
  HV	
  
–  Dedicated	
  GC	
  and	
  JIT	
  for	
  EVERY	
  Java	
  applicaCon	
  wastes	
  
lots	
  and	
  lots	
  of	
  CPU	
  Cme	
  and	
  memory	
  capacity	
  doing	
  
the	
  same	
  thing	
  over,	
  and	
  over,	
  and	
  over,	
  and…	
  
	
  
© Copyright Waratek 2013
Today’s JVMs are OLD!
•  Were	
  designed	
  ~20	
  years	
  ago,	
  and	
  haven’t	
  
changed	
  design	
  since	
  then	
  
•  JVM	
  design	
  PREDATES	
  the	
  major	
  2	
  trends	
  of	
  
last	
  decade:	
  virtualizaCon	
  and	
  cloud-­‐compuCng	
  
•  Only	
  2	
  innovaCons	
  in	
  JVMs	
  in	
  20	
  years:	
  	
  
– Beder	
  JIT	
  compilers	
  
– Concurrent	
  GCs	
  
– ….all	
  blindly	
  focused	
  on	
  single-­‐tenant	
  performance	
  
at	
  the	
  expense	
  of	
  mulC-­‐tenant	
  efficiency	
  
© Copyright Waratek 2013
Server Java has problems!
•  JVMs	
  are	
  grossly	
  inefficient	
  users	
  of	
  CPU	
  and	
  memory	
  
–  A	
  JVM	
  assumes	
  it	
  can	
  use	
  all	
  available	
  CPU	
  and	
  memory	
  capacity	
  
for	
  itself	
  and	
  its	
  single	
  applicaCon,	
  eg:	
  
–  1	
  JBoss	
  can	
  consume	
  up	
  to	
  500MB	
  RSS	
  with	
  no	
  apps	
  
–  1	
  Tomcat	
  can	
  consume	
  up	
  to	
  250MB	
  RSS	
  with	
  no	
  webapps	
  
–  Running	
  mulCple	
  JVMs	
  on	
  a	
  server	
  rapidly	
  exhausts	
  physically	
  
memory	
  while	
  CPU	
  uClisaCon	
  averages	
  5%	
  

•  >100	
  different	
  JVM	
  versions	
  makes	
  compliance/support	
  a	
  
NIGHTMARE	
  
•  Security	
  vulnerabiliCes	
  and	
  compromises	
  are	
  EVERYWHERE	
  
inside	
  Java	
  
© Copyright Waratek 2013
VMWare does not virtualize 

Java well!
•  Realworld	
  stats	
  using	
  VMware:	
  
–  >80%	
  of	
  Server	
  JVMs	
  have	
  <=2GB	
  of	
  heap	
  memory	
  
•  Yet	
  actual	
  applicaCon	
  heap	
  uClisaCon	
  averages	
  <20%	
  

–  A	
  2GB	
  JVM	
  heap	
  needs	
  ~3GB	
  of	
  OS	
  RSS	
  memory,	
  which	
  
in	
  turn	
  needs	
  ~4GB	
  of	
  VMWare	
  tenant	
  memory	
  
•  …reducing	
  actual	
  applicaCon	
  memory	
  uClisaCon	
  to	
  <10%	
  

–  CPU	
  uClisaCon	
  running	
  Java	
  on	
  Vmware	
  averages	
  <7%	
  
•  Yet	
  physical	
  memory	
  is	
  exhausted	
  because	
  of	
  running	
  
mulCple	
  JVMs	
  

© Copyright Waratek 2013
Java is a compliance nightmare!
•  Realworld	
  stats:	
  
–  93%	
  of	
  organisaCons	
  are	
  running	
  versions	
  of	
  Java	
  at	
  
least	
  5	
  years	
  old	
  
–  The	
  average	
  organisaCon	
  has	
  51	
  disCnct	
  versions	
  of	
  
Java	
  installed	
  
–  <1%	
  of	
  installed	
  Java	
  is	
  upgraded	
  to	
  the	
  latest	
  version	
  

•  Recurring	
  enterprise	
  conversaCon:	
  
–  QuesCon:	
  “what	
  version	
  of	
  Java	
  do	
  you	
  run?”	
  
–  Answer:	
  “every	
  version	
  except	
  the	
  latest	
  version!”	
  
© Copyright Waratek 2013
Java is a security nightmare!
•  Realworld	
  stats:	
  
–  In	
  last	
  12	
  months	
  alone,	
  >250	
  CVE	
  alerts	
  issued	
  by	
  US-­‐
CERT/NIST	
  for	
  Java	
  
–  The	
  most	
  prevalent	
  version	
  of	
  Java	
  has	
  96	
  “perfect	
  10”	
  
vulnerabiliCes	
  
–  “There	
  are	
  virtually	
  no	
  modern	
  versions	
  of	
  Java	
  without	
  
any	
  known	
  severe	
  vulnerabiliCes”	
  (source:	
  Bit9)	
  

•  CriCcal	
  Security	
  Patch	
  Updates	
  are	
  released	
  so	
  
oven	
  that	
  developers	
  and	
  admins	
  can’t	
  keep	
  up	
  	
  
© Copyright Waratek 2013
Virtualization is the answer…!
•  …but	
  HIGHER	
  up	
  the	
  Server	
  Stack	
  
•  VirtualizaCon	
  is	
  creeping	
  up	
  the	
  Server	
  Stack	
  
already	
  
–  x86	
  HW	
  got	
  virtualized	
  in	
  1999	
  (VMware	
  et	
  al)	
  
–  x86	
  OS	
  got	
  virtualized	
  in	
  2006	
  (OpenVZ,	
  LXC,	
  et	
  al)	
  
–  …now	
  it’s	
  Java’s	
  turn	
  in	
  2013	
  

•  Virtualizing	
  Java	
  means	
  virtualizing	
  at	
  the	
  TOP	
  of	
  
the	
  Server	
  Stack,	
  whereas	
  VMware	
  virtualizes	
  at	
  
the	
  BOTTOM	
  
© Copyright Waratek 2013
Cost-per-tentant to zero !
•  The	
  higher	
  up	
  virtualizaCon	
  goes	
  up	
  the	
  Server	
  
Stack,	
  the	
  cheaper	
  a	
  “tenant”	
  becomes	
  
•  Virtualizing	
  INSIDE	
  the	
  JVM	
  gets	
  close	
  to	
  “zero-­‐
cost	
  tenants”:	
  
– Helloworld	
  in	
  <1MB	
  of	
  tenant	
  memory	
  
– Examples.war	
  (Tomcat	
  demo	
  webapps)	
  in	
  <5MB	
  of	
  
tenant	
  memory	
  
– …Java	
  becomes	
  CHEAPER	
  than	
  python/ruby/perl	
  
when	
  the	
  JVM	
  itself	
  gets	
  virtualized!	
  	
  
© Copyright Waratek 2013
Virtualization == Security!
•  Virtualizing	
  the	
  JVM	
  makes	
  Server	
  Java	
  secure	
  and	
  
compliant	
  
–  Virtualized	
  Java	
  Apps	
  run	
  as	
  “tenants”	
  in	
  a	
  shared	
  JVM	
  
–  Tenants	
  run	
  in	
  Java	
  Virtual	
  Container	
  (JVC)	
  “jails”	
  
–  Tenants	
  are	
  isolated	
  and	
  “locked-­‐down”	
  
–  Tenants	
  can	
  run	
  any	
  Java	
  version	
  
•  Doesn’t	
  mader	
  what	
  “Java	
  version”	
  a	
  tenant	
  uses,	
  it	
  gets	
  the	
  latest	
  
JVM	
  
•  Means	
  a	
  “Java	
  version”	
  becomes	
  just	
  a	
  tenant	
  API	
  for	
  the	
  
convenience	
  of	
  developers	
  
•  Admins	
  control	
  the	
  REAL	
  version	
  at	
  the	
  JVM	
  level	
  so	
  that	
  tenants	
  
(developers)	
  can	
  stop	
  caring	
  about	
  “versions”	
  altogether	
  
© Copyright Waratek 2013
First some background…!
	
  
•  Think	
  “VMWare	
  for	
  Java”	
  

© Copyright Waratek 2013
A hypervisor INSIDE a JVM!
•  Waratek	
  has	
  wriden	
  a	
  type-­‐1	
  VMM	
  that	
  runs	
  INSIDE	
  the	
  
Oracle	
  HotSpot	
  and	
  OpenJDK	
  JVMs	
  

–  >300,000	
  lines	
  of	
  Java	
  code,	
  <5K	
  lines	
  of	
  C-­‐code	
  
–  Can	
  easily	
  run	
  on	
  any	
  OS/CPU	
  pair	
  (only	
  Linux/x86	
  supported	
  so	
  
far)	
  
–  Does	
  EVERYTHING	
  VMware	
  does,	
  but	
  INSIDE	
  the	
  JVM	
  
• 
• 
• 
• 
• 
• 

Virtual	
  FS	
  
Virtual	
  networks/IPs/NICs	
  
CPU	
  pinning	
  and	
  quotas	
  
Memory	
  overcommit,	
  elasCc	
  memory,	
  memory	
  quotas	
  
I/O	
  QoS,	
  rate-­‐limiCng	
  
Etc…	
  

–  …all	
  with	
  ZERO	
  code	
  change	
  to	
  Java	
  applicaCons	
  

© Copyright Waratek 2013
A real VMM inside the JVM!

© Copyright Waratek 2013
VMWare for Java!
Java Code
JVC
Java App
java.* APIs
SecurityManager
Waratek Java
Hypervisor
Process

C/C++ Code

JNI
Libs

•  Waratek	
  virtualizes	
  Java	
  exactly	
  
like	
  VMware	
  virtualizes	
  HW	
  
–  Waratek	
  inserts	
  a	
  “Java	
  
Hypervisor”	
  between	
  the	
  JVM	
  and	
  
the	
  Java	
  App	
  +	
  java.*	
  APIs	
  +	
  
SecurityManager	
  
–  The	
  Java	
  app	
  PLUS	
  java.*	
  APIs	
  and	
  
SecurityManager	
  run	
  inside	
  a	
  Java	
  
Virtual	
  Container	
  (JVC)	
  “jail”	
  
–  For	
  a	
  Java	
  App	
  to	
  go	
  outside	
  of	
  its	
  
JVC	
  “jail”	
  it	
  has	
  to	
  “trap”	
  to	
  the	
  
Java	
  Hypervisor	
  

Waratek
JVM
© Copyright Waratek 2013
VMWare for Java!
Java Code
JVC
Java App
java.* APIs
SecurityManager
Waratek Java
Hypervisor
Process

C/C++ Code

JNI
Libs

Waratek
JVM

•  Every	
  incoming	
  and	
  outgoing	
  access	
  
by	
  a	
  JVC	
  is	
  intercepted	
  and	
  checked	
  by	
  
the	
  Java	
  Hypervisor,	
  e.g:	
  
– 
– 
– 
– 
– 
– 
– 
– 
– 
– 
– 
– 
– 
– 

Class	
  loading	
  intercepted	
  and	
  checked	
  
JNI	
  invocaCon	
  intercepted	
  
Parameter	
  and	
  return	
  value	
  checks	
  
File	
  access	
  (delete/copy/move)	
  checks	
  
Network	
  operaCon	
  checks	
  
IO	
  rate-­‐limiCng	
  and	
  flow-­‐control	
  
CPU	
  Cme	
  control	
  
Memory	
  consumpCon	
  control	
  
Buffer	
  overflow	
  checks	
  
Null	
  pointer	
  checks	
  
Type	
  safety	
  checks	
  
OS	
  access	
  checks	
  	
  
JNI	
  Libraries	
  isolated	
  
…	
  
© Copyright Waratek 2013
Slots into existing VM tools!
•  You	
  can	
  manage	
  the	
  Java	
  hypervisor	
  exactly	
  like	
  you	
  manage	
  
exisCng	
  HW	
  hypervisors:	
  
– 
– 
– 
– 

SSH	
  CLI	
  
RedHat	
  LibVirt/KVM	
  integraCon	
  (beta)	
  
VMWare	
  vCAC	
  integraCon	
  shortly	
  
OpenStack	
  integraCon	
  shortly	
  

•  Plus	
  other	
  management	
  interfaces	
  
– 
– 
– 
– 
– 

HTTP	
  REST	
  API	
  
Local	
  and	
  remote	
  JMX	
  APIs	
  
/proc/PID/*	
  pseudo-­‐filesystem	
  for	
  JVM	
  and	
  each	
  JVC	
  
Vmware	
  CloudFoundry	
  integraCon	
  (beta)	
  
RedHat	
  OpenShiv	
  integraCon	
  soon	
  
© Copyright Waratek 2013
A HelloWorld JVC in LibVirt XML!

© Copyright Waratek 2013
JVCs make Java secure!
Java Code
JVC
Java App
java.* APIs
SecurityManager
Waratek Java
Hypervisor
Process

C/C++ Code

JNI
Libs

Waratek
JVM

•  If	
  a	
  Java	
  App	
  inside	
  a	
  JVC	
  
compromises	
  either/both	
  of	
  
java.*	
  APIs	
  or	
  SecurityManager,	
  
then	
  only	
  that	
  JVC	
  is	
  effected	
  
and	
  NOT	
  the	
  Java	
  Hypervisor	
  or	
  
JVM	
  or	
  other	
  JVCs	
  
•  JNI	
  Libraries	
  are	
  isolatable	
  in	
  
their	
  own	
  OS	
  process	
  
•  Thus	
  a	
  compromised	
  JVC	
  
cannot:	
  
– 
– 
– 
– 
– 
– 
– 

Insert	
  malicious	
  code	
  outside	
  its	
  JVC	
  
Delete/move/copy	
  files	
  outside	
  its	
  VROOT	
  
Trigger	
  buffer	
  overflows	
  
Do	
  null-­‐pointer	
  segmentaCon	
  faults	
  
Perform	
  unsafe	
  heap	
  memory	
  access	
  
Fork	
  OS	
  processes	
  
etc…	
  
© Copyright Waratek 2013
“Come in, we’re open”!
•  The	
  Java	
  Hypervisor	
  has	
  an	
  open	
  API	
  for	
  unlimited	
  
customizaCon	
  and	
  extensibility	
  
•  Anyone	
  can	
  write	
  their	
  own	
  PURE-­‐JAVA	
  plugins	
  to	
  
the	
  Java	
  hypervisor	
  to	
  customize	
  ANYTHING	
  about	
  
JVCs,	
  eg:	
  

–  Make	
  a	
  DropBox.com	
  account	
  the	
  virtual	
  filesystem	
  for	
  
a	
  JVC	
  
–  Create	
  a	
  virtual	
  LAN	
  between	
  distributed	
  JVCs	
  
anywhere	
  in	
  the	
  world	
  
–  Clone	
  live	
  network	
  I/O	
  of	
  an	
  acCve	
  JVC	
  to	
  a	
  test	
  JVC	
  for	
  
side-­‐by-­‐side	
  applicaCon	
  tesCng	
  
© Copyright Waratek 2013
Example hypervisor plugin!
•  Waratek	
  wrote	
  ElasCcat	
  as	
  one	
  example	
  of	
  a	
  Java	
  
Hypervisor	
  plugin	
  
•  ElasCcat	
  is	
  open	
  source,	
  is	
  <1000	
  lines	
  of	
  Java	
  code,	
  and	
  
loads	
  into	
  the	
  Java	
  hypervisor	
  at	
  startup	
  
•  ElasCcat	
  virtualizes	
  Apache	
  Tomcat	
  so	
  it	
  becomes	
  the	
  
world’s	
  first	
  mulC-­‐tenant	
  JavaEE	
  container:	
  
–  Tomcat	
  runs	
  in	
  one	
  JVC	
  and	
  each	
  webapp	
  runs	
  in	
  it’s	
  own	
  
dedicated	
  JVC	
  
–  If	
  one	
  webapp	
  crashes	
  it	
  won’t	
  crash	
  any	
  other	
  JVC	
  
–  …all	
  this	
  achieved	
  with	
  ZERO	
  code	
  change	
  to	
  Tomcat	
  or	
  
webapps,	
  and	
  without	
  them	
  knowing	
  they’ve	
  been	
  
virtualized!	
  

© Copyright Waratek 2013
© Copyright Waratek 2013
Putting Java to jSleep…!
	
  
	
  
•  Why	
  are	
  Java	
  apps	
  Cred?	
  
(or:	
  why	
  should	
  they	
  be	
  slept?)	
  

© Copyright Waratek 2013
Java Apps are tired!!
•  Realworld	
  stats:	
  
– >50%	
  of	
  PaaS	
  apps	
  are	
  “dead	
  bone	
  idle”	
  at	
  any	
  
given	
  Cme	
  
– The	
  average	
  Dev/Test	
  environment	
  runs	
  at	
  <10%	
  
sustained	
  uClizaCon	
  
– Lots	
  and	
  lots	
  of	
  enterprise	
  Java	
  apps	
  are	
  only	
  used	
  
periodically,	
  e.g.	
  end-­‐of-­‐week,	
  end-­‐of-­‐month…	
  

•  But	
  these	
  apps	
  have	
  SLAs	
  and	
  can’t	
  be	
  shut-­‐off!	
  
© Copyright Waratek 2013
Fact from the field:!
•  So	
  frustrated	
  was	
  one	
  Fortune500	
  admin	
  that	
  he	
  
shut-­‐off	
  a	
  bunch	
  of	
  Java	
  apps	
  that	
  had	
  been	
  idle	
  for	
  
2	
  weeks	
  (no	
  TCP	
  traffic)	
  and	
  waited	
  to	
  see	
  what	
  
would	
  happen…	
  the	
  results	
  were:	
  
–  …a	
  small	
  number	
  of	
  app-­‐owners	
  noCced	
  immediately	
  
(1-­‐2	
  days)	
  
–  …the	
  largest	
  number	
  of	
  app-­‐owners	
  noCced	
  within	
  1-­‐2	
  
weeks	
  
–  …and	
  a	
  small	
  number	
  of	
  app-­‐owners	
  NEVER	
  noCced	
  at	
  
all!	
  
© Copyright Waratek 2013
Wouldn’t it be great if…!
•  …you	
  could	
  “compress”	
  an	
  idle	
  app	
  and	
  re-­‐
awaken	
  it	
  instantly	
  WITHOUT	
  THE	
  APP	
  
KNOWING?	
  
•  …and	
  without	
  the	
  END-­‐POINTS	
  knowing?	
  
•  …and	
  without	
  ever	
  RESTARTING	
  the	
  app	
  later?	
  

© Copyright Waratek 2013
Actually it exists…almost!!
•  The	
  technology	
  for	
  this	
  nearly	
  already	
  exists:	
  
–  It’s	
  called	
  “wake-­‐on-­‐LAN”	
  (WoL)	
  

•  …but	
  there’s	
  a	
  problem:	
  WoL	
  only	
  works	
  at	
  the	
  
HARDWARE	
  level,	
  so	
  is	
  of	
  NO	
  USE	
  in	
  mulCtenant	
  
virtualized	
  cloud-­‐compuCng	
  environments	
  
•  Think	
  about	
  it:	
  
–  As	
  long	
  as	
  ONE	
  tenant	
  on	
  a	
  server	
  is	
  acCve	
  then	
  the	
  server	
  
HAS	
  to	
  stay	
  alive	
  and	
  WoL	
  CANNOT	
  be	
  used!	
  

© Copyright Waratek 2013
Putting Java to jSleep…!
	
  
	
  
•  Let	
  your	
  apps	
  nap:	
  wake-­‐on-­‐LAN	
  
for	
  JVCs	
  

© Copyright Waratek 2013
“Wake-on-LAN for JVCs”!
•  What’s	
  needed	
  is	
  a	
  NEW	
  kind	
  of	
  WoL	
  that	
  
“naps”	
  single	
  idle	
  tenants	
  on	
  a	
  mulCtenant	
  
server…	
  
•  …and	
  reclaims	
  the	
  memory/CPU/IO	
  quotas	
  
that	
  were	
  provisioned	
  for	
  the	
  now-­‐napped	
  app,	
  
to	
  be	
  used	
  to	
  run	
  other	
  new	
  apps	
  
•  This	
  is	
  what	
  Waratek	
  jSleep	
  does	
  for	
  Java	
  apps!	
  
© Copyright Waratek 2013
jSleep in a Slide!
•  Waratek	
  jSleep	
  works	
  inside	
  the	
  Java	
  Hypervisor	
  to	
  
do	
  four	
  things:	
  
–  1)	
  monitor	
  the	
  acCvity	
  of	
  individual	
  apps	
  (JVCs)	
  
–  2)	
  put	
  idle	
  JVCs	
  to	
  sleep	
  aver	
  defined	
  inacCvity	
  thresholds	
  
and	
  reclaim	
  their	
  CPU/mem/IO	
  quotas	
  
–  3)	
  monitor	
  the	
  I/O	
  connecCons	
  (TCP/UDP	
  Sockets,	
  
ServerSockets,	
  Files,	
  etc)	
  of	
  a	
  sleeping	
  JVC	
  
–  4)	
  and	
  awaken	
  a	
  sleeping	
  JVC	
  when	
  I/O	
  acCvity	
  is	
  
detected,	
  reinstaCng	
  reclaimed	
  quotas	
  

•  …it’s	
  wake-­‐on-­‐LAN	
  for	
  JVCs!	
  
© Copyright Waratek 2013
jSleep is Very Powerful!
•  Lots	
  of	
  “knobs	
  and	
  dials”	
  make	
  it	
  possible	
  to	
  define	
  
sophisCcated	
  sleep/awake	
  profiles	
  that	
  respond	
  to:	
  
–  CPU	
  acCvity	
  
–  Network/IO	
  acCvity	
  
–  IO	
  Cmeouts	
  
–  Wall-­‐clock	
  Cme	
  
–  …or	
  just	
  about	
  anything	
  else	
  

•  THERE’S	
  ALSO	
  a	
  built-­‐in	
  network	
  profile	
  that	
  allows	
  
for	
  immediate	
  configuraCon	
  via	
  the	
  JIRSH	
  CLI	
  
© Copyright Waratek 2013
Simple jSleep Example!
•  Set	
  a	
  jSleep	
  policy	
  based	
  on	
  network	
  traffic	
  of	
  defined	
  
sockets/ports,	
  eg:	
  
–  jirsh # sleepinfo 1 –-set
network=120000,include_local=:8080,10.1.0.8:4444

–  Above	
  command:	
  
•  Suspends	
  JVC	
  1	
  aver	
  the	
  network	
  interface	
  is	
  idle	
  120s	
  
•  The	
  include_local param	
  is	
  a	
  series	
  of	
  host:port	
  combinaCons	
  
that	
  specify	
  what	
  traffic	
  of	
  remote	
  hosts	
  and/or	
  local	
  ports	
  is	
  allowed	
  
to	
  wake	
  the	
  JVC,	
  so	
  in	
  above:	
  
–  Traffic	
  from	
  any	
  remote	
  host	
  to	
  local	
  port	
  8080	
  will	
  wake	
  the	
  JVC	
  
–  Traffic	
  from	
  remote	
  host	
  10.1.0.8	
  to	
  local	
  port	
  4444	
  will	
  wake	
  
the	
  JVC	
  
© Copyright Waratek 2013
jSleep API in 60 Seconds!
•  2	
  packages,	
  8	
  classes:	
  
–  cloudvm.jsleep.event.*
• 
• 
• 
• 

BytesReceivedEvent
CpuEvent
NetworkIdleEvent
TimeoutEvent

–  cloudvm.jsleep.profile.*
• 
• 
• 
• 

JSleepProfile
JSleepProfile.MemoryType
JSleepProfileState
NetworkProfile

© Copyright Waratek 2013
jSleep API in 60 Seconds!
•  Main	
  class:	
  cloudvm.jsleep.profile.JSleepProfile
–  Every	
  JVC	
  can	
  have	
  one	
  of	
  these	
  
–  Defines	
  the	
  two	
  CORE	
  methods:	
  
•  checkSuspend( VirtualContainerMXBean )
•  checkResume( VirtualContainerMXBean )

–  Is	
  an	
  abstract	
  class	
  so	
  anyone	
  can	
  write	
  their	
  own	
  custom	
  
sleep/resume	
  profile	
  
–  Loaded	
  and	
  configured	
  using	
  JMX	
  (local	
  or	
  remote)	
  

© Copyright Waratek 2013
Custom jSleep API Example!
•  Here’s	
  a	
  custom	
  jSleep	
  profile…	
  
	
  
public	
  boolean	
  checkSuspend(VirtualContainerMXBean	
  paramVirtualContainerMXBean)	
  {	
  
	
  	
  	
  	
  Date	
  currentDate	
  =	
  new	
  Date();	
  
	
  	
  	
  	
  if(currentDate.aver(sleepDate)	
  &&	
  currentDate.before(resumeDate))	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  return	
  true;	
  
	
  	
  	
  	
  }	
  else	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  return	
  false;	
  
	
  	
  	
  	
  }	
  
}	
  
	
  
public	
  boolean	
  checkResume(VirtualContainerMXBean	
  paramVirtualContainerMXBean)	
  {	
  
	
  	
  	
  	
  Date	
  currentDate	
  =	
  new	
  Date();	
  
	
  	
  	
  	
  if(currentDate.before(sleepDate)	
  ||	
  currentDate.aver(resumeDate))	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  return	
  true;	
  
	
  	
  	
  	
  }	
  else	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  return	
  false;	
  
	
  	
  	
  	
  }	
  	
  	
   	
  	
  	
  
}	
  
	
  

© Copyright Waratek 2013
What happens when…!
•  …a	
  JVC	
  sleeps?:	
  
–  The	
  threads	
  of	
  the	
  JVC	
  are	
  suspended	
  on	
  the	
  OS	
  kernel	
  
(but	
  NOT	
  destroyed)	
  
–  The	
  JVC’s	
  dead	
  objects	
  are	
  asynchronously	
  reclaimed	
  by	
  
the	
  GC	
  
–  If	
  the	
  JSleepProfile	
  was	
  configured	
  with	
  
MemoryType.VARIABLE,	
  the	
  JVCs	
  unused	
  memory	
  quota	
  
will	
  be	
  reclaimed	
  for	
  use	
  by	
  other	
  JVCs	
  
–  All	
  open	
  file	
  descriptors	
  will	
  be	
  kept	
  open	
  
–  …all	
  this	
  in	
  <1	
  second	
  
© Copyright Waratek 2013
What happens when…!
•  …a	
  JVC	
  wakes	
  up?:	
  
– The	
  threads	
  of	
  the	
  JVC	
  are	
  resumed	
  on	
  the	
  OS	
  
kernel	
  
– If	
  the	
  JSleepProfile	
  was	
  configured	
  with	
  
MemoryType.VARIABLE,	
  the	
  JVM	
  will	
  reinstate	
  
the	
  prior	
  memory	
  quota	
  of	
  the	
  JVC	
  	
  
– Any	
  file	
  descriptors	
  with	
  received	
  but	
  unread	
  data	
  
will	
  now	
  be	
  “readable”	
  by	
  the	
  applicaCon	
  
– …all	
  this	
  in	
  <1	
  second	
  
© Copyright Waratek 2013
Why you should care…!
•  Dev/Test,	
  PaaS,	
  and	
  middleware	
  environments	
  are	
  
characterized	
  by	
  LOTS	
  of	
  “applicaCon	
  idleness”	
  	
  
•  Idle	
  apps	
  today	
  are	
  treated	
  NO	
  DIFFERENTLY	
  than	
  acCve,	
  
busy	
  apps	
  
•  Years	
  ago	
  H/W	
  wake-­‐on-­‐LAN	
  was	
  an	
  effecCve	
  technology	
  for	
  
powering	
  down	
  idle	
  servers…	
  but	
  it	
  no	
  longer	
  works	
  in	
  
mulCtenant	
  cloud	
  infrastructure	
  
•  jSleep	
  is	
  “wake-­‐on-­‐LAN	
  for	
  JVCs”	
  and	
  can	
  increase	
  the	
  
number	
  of	
  Java	
  apps-­‐per-­‐server	
  by	
  up	
  to	
  10x	
  
–  …this	
  means	
  a	
  reducCon	
  in	
  server	
  sprawl	
  and	
  OpEx	
  up	
  to	
  90%	
  
© Copyright Waratek 2013
Summary!
	
  
	
  
•  Recap	
  and	
  links…	
  

© Copyright Waratek 2013
Biggest change to Java in yrs!
•  A	
  hypervisor	
  inside	
  the	
  JVM	
  transforms	
  Java	
  
with:	
  
– Ultra-­‐liteweight	
  JVCs	
  for	
  near	
  zero-­‐cost	
  tenants	
  
– JVC	
  “jails”	
  for	
  Java	
  security	
  and	
  isolaCon	
  
– Mixed-­‐version	
  JVCs	
  for	
  version	
  consolidaCon	
  and	
  
legacy	
  compliance	
  
– jSleep	
  (“Wake-­‐On-­‐LAN	
  for	
  JVCs”)	
  for	
  near-­‐zero	
  
footprint	
  of	
  idle	
  tenants	
  
© Copyright Waratek 2013
Links!
•  General	
  informaCon	
  about	
  the	
  Waratek	
  JVM	
  
– hdp://www.waratek.com	
  

•  jSleep,	
  JVI	
  (Java	
  VirtualizaCon	
  Interface),	
  and	
  
JMX	
  APIs	
  
– hdp://javadoc.waratek.com	
  

•  ElasCcat	
  source	
  code	
  
– hdps://github.com/waratek/elasCcat-­‐driver	
  

© Copyright Waratek 2013
!

© Copyright Waratek 2013

Contenu connexe

Tendances

Virtualization securityv2
Virtualization securityv2Virtualization securityv2
Virtualization securityv2vivekbhat
 
Zerto Virtual Replication 4.5
Zerto Virtual Replication 4.5Zerto Virtual Replication 4.5
Zerto Virtual Replication 4.5BusinesstoVirtual
 
Optimising Productivity with AWS Developer Tools
Optimising Productivity with AWS Developer ToolsOptimising Productivity with AWS Developer Tools
Optimising Productivity with AWS Developer ToolsAmazon Web Services
 
A journey to the cloud: Getting started migrating your on-premises service to...
A journey to the cloud: Getting started migrating your on-premises service to...A journey to the cloud: Getting started migrating your on-premises service to...
A journey to the cloud: Getting started migrating your on-premises service to...OVHcloud
 
SDN in Apache CloudStack (ApacheCon NA 2013)
SDN in Apache CloudStack (ApacheCon NA 2013)SDN in Apache CloudStack (ApacheCon NA 2013)
SDN in Apache CloudStack (ApacheCon NA 2013)Chiradeep Vittal
 
Virtualizing a Virtual Machine
Virtualizing a Virtual MachineVirtualizing a Virtual Machine
Virtualizing a Virtual Machineelliando dias
 
Linux, Virtualisation, and Clouds
Linux, Virtualisation, and CloudsLinux, Virtualisation, and Clouds
Linux, Virtualisation, and CloudsRobert Sutor
 
Liberty: The Right Fit for Micro Profile?
Liberty: The Right Fit for Micro Profile?Liberty: The Right Fit for Micro Profile?
Liberty: The Right Fit for Micro Profile?Dev_Events
 
XPDDS19: Xen API Archaeology: Creating a Full-Featured VMI Debugger for the...
XPDDS19:   Xen API Archaeology: Creating a Full-Featured VMI Debugger for the...XPDDS19:   Xen API Archaeology: Creating a Full-Featured VMI Debugger for the...
XPDDS19: Xen API Archaeology: Creating a Full-Featured VMI Debugger for the...The Linux Foundation
 
Symantec Delivers 30x Faster Failover For Microsoft Environments
Symantec Delivers 30x Faster Failover For Microsoft EnvironmentsSymantec Delivers 30x Faster Failover For Microsoft Environments
Symantec Delivers 30x Faster Failover For Microsoft EnvironmentsSymantec
 
Learn OpenStack from trystack.cn ——Folsom in practice
Learn OpenStack from trystack.cn  ——Folsom in practiceLearn OpenStack from trystack.cn  ——Folsom in practice
Learn OpenStack from trystack.cn ——Folsom in practiceOpenCity Community
 
Virtualization Manager 5.0 – Now with Hyper-V Support!
Virtualization Manager 5.0 – Now with Hyper-V Support!Virtualization Manager 5.0 – Now with Hyper-V Support!
Virtualization Manager 5.0 – Now with Hyper-V Support!SolarWinds
 
Building out a Microservices Architecture with WebSphere Liberty Profile and ...
Building out a Microservices Architecture with WebSphere Liberty Profile and ...Building out a Microservices Architecture with WebSphere Liberty Profile and ...
Building out a Microservices Architecture with WebSphere Liberty Profile and ...David Currie
 
IBM Impact session CICS & java a tale of liberty
IBM Impact session CICS & java a tale of libertyIBM Impact session CICS & java a tale of liberty
IBM Impact session CICS & java a tale of libertynick_garrod
 

Tendances (20)

XS Boston 2008 Fault Tolerance
XS Boston 2008 Fault ToleranceXS Boston 2008 Fault Tolerance
XS Boston 2008 Fault Tolerance
 
Virtualization securityv2
Virtualization securityv2Virtualization securityv2
Virtualization securityv2
 
Zerto Virtual Replication 4.5
Zerto Virtual Replication 4.5Zerto Virtual Replication 4.5
Zerto Virtual Replication 4.5
 
Optimising Productivity with AWS Developer Tools
Optimising Productivity with AWS Developer ToolsOptimising Productivity with AWS Developer Tools
Optimising Productivity with AWS Developer Tools
 
A journey to the cloud: Getting started migrating your on-premises service to...
A journey to the cloud: Getting started migrating your on-premises service to...A journey to the cloud: Getting started migrating your on-premises service to...
A journey to the cloud: Getting started migrating your on-premises service to...
 
XS Oracle 2009 Error Detection
XS Oracle 2009 Error DetectionXS Oracle 2009 Error Detection
XS Oracle 2009 Error Detection
 
SDN in Apache CloudStack (ApacheCon NA 2013)
SDN in Apache CloudStack (ApacheCon NA 2013)SDN in Apache CloudStack (ApacheCon NA 2013)
SDN in Apache CloudStack (ApacheCon NA 2013)
 
XS Oracle 2009 PVOps
XS Oracle 2009 PVOpsXS Oracle 2009 PVOps
XS Oracle 2009 PVOps
 
Virtualizing a Virtual Machine
Virtualizing a Virtual MachineVirtualizing a Virtual Machine
Virtualizing a Virtual Machine
 
Linux, Virtualisation, and Clouds
Linux, Virtualisation, and CloudsLinux, Virtualisation, and Clouds
Linux, Virtualisation, and Clouds
 
Liberty: The Right Fit for Micro Profile?
Liberty: The Right Fit for Micro Profile?Liberty: The Right Fit for Micro Profile?
Liberty: The Right Fit for Micro Profile?
 
XPDDS19: Xen API Archaeology: Creating a Full-Featured VMI Debugger for the...
XPDDS19:   Xen API Archaeology: Creating a Full-Featured VMI Debugger for the...XPDDS19:   Xen API Archaeology: Creating a Full-Featured VMI Debugger for the...
XPDDS19: Xen API Archaeology: Creating a Full-Featured VMI Debugger for the...
 
Symantec Delivers 30x Faster Failover For Microsoft Environments
Symantec Delivers 30x Faster Failover For Microsoft EnvironmentsSymantec Delivers 30x Faster Failover For Microsoft Environments
Symantec Delivers 30x Faster Failover For Microsoft Environments
 
Transitioning to vmWare ESXi
Transitioning to vmWare ESXiTransitioning to vmWare ESXi
Transitioning to vmWare ESXi
 
Learn OpenStack from trystack.cn ——Folsom in practice
Learn OpenStack from trystack.cn  ——Folsom in practiceLearn OpenStack from trystack.cn  ——Folsom in practice
Learn OpenStack from trystack.cn ——Folsom in practice
 
E2EVC SCVMM-Mania
E2EVC SCVMM-ManiaE2EVC SCVMM-Mania
E2EVC SCVMM-Mania
 
XS Oracle 2009 Vm Snapshots
XS Oracle 2009 Vm SnapshotsXS Oracle 2009 Vm Snapshots
XS Oracle 2009 Vm Snapshots
 
Virtualization Manager 5.0 – Now with Hyper-V Support!
Virtualization Manager 5.0 – Now with Hyper-V Support!Virtualization Manager 5.0 – Now with Hyper-V Support!
Virtualization Manager 5.0 – Now with Hyper-V Support!
 
Building out a Microservices Architecture with WebSphere Liberty Profile and ...
Building out a Microservices Architecture with WebSphere Liberty Profile and ...Building out a Microservices Architecture with WebSphere Liberty Profile and ...
Building out a Microservices Architecture with WebSphere Liberty Profile and ...
 
IBM Impact session CICS & java a tale of liberty
IBM Impact session CICS & java a tale of libertyIBM Impact session CICS & java a tale of liberty
IBM Impact session CICS & java a tale of liberty
 

En vedette

Design is a Process, not an Artefact - Trisha Gee (MongoDB)
Design is a Process, not an Artefact - Trisha Gee (MongoDB)Design is a Process, not an Artefact - Trisha Gee (MongoDB)
Design is a Process, not an Artefact - Trisha Gee (MongoDB)jaxLondonConference
 
Introducing Vert.x 2.0 - Taking polyglot application development to the next ...
Introducing Vert.x 2.0 - Taking polyglot application development to the next ...Introducing Vert.x 2.0 - Taking polyglot application development to the next ...
Introducing Vert.x 2.0 - Taking polyglot application development to the next ...jaxLondonConference
 
How Java got its Mojo Back - James Governor (Redmonk)
How Java got its Mojo Back - James Governor (Redmonk)					How Java got its Mojo Back - James Governor (Redmonk)
How Java got its Mojo Back - James Governor (Redmonk) jaxLondonConference
 
What makes Groovy Groovy - Guillaume Laforge (Pivotal)
What makes Groovy Groovy  - Guillaume Laforge (Pivotal)What makes Groovy Groovy  - Guillaume Laforge (Pivotal)
What makes Groovy Groovy - Guillaume Laforge (Pivotal)jaxLondonConference
 
How Windows 10 will change the way we use devices
How Windows 10 will change the way we use devicesHow Windows 10 will change the way we use devices
How Windows 10 will change the way we use devicesCommelius Solutions
 
What You Need to Know About Lambdas - Jamie Allen (Typesafe)
What You Need to Know About Lambdas - Jamie Allen (Typesafe)What You Need to Know About Lambdas - Jamie Allen (Typesafe)
What You Need to Know About Lambdas - Jamie Allen (Typesafe)jaxLondonConference
 
45 second video proposal
45 second video proposal45 second video proposal
45 second video proposalNicole174
 
Little words of wisdom for the developer - Guillaume Laforge (Pivotal)
Little words of wisdom for the developer - Guillaume Laforge (Pivotal)Little words of wisdom for the developer - Guillaume Laforge (Pivotal)
Little words of wisdom for the developer - Guillaume Laforge (Pivotal)jaxLondonConference
 
Databases and agile development - Dwight Merriman (MongoDB)
Databases and agile development - Dwight Merriman (MongoDB)Databases and agile development - Dwight Merriman (MongoDB)
Databases and agile development - Dwight Merriman (MongoDB)jaxLondonConference
 
Big Events, Mob Scale - Darach Ennis (Push Technology)
Big Events, Mob Scale - Darach Ennis (Push Technology)Big Events, Mob Scale - Darach Ennis (Push Technology)
Big Events, Mob Scale - Darach Ennis (Push Technology)jaxLondonConference
 
Bringing your app to the web with Dart - Chris Buckett (Entity Group)
Bringing your app to the web with Dart - Chris Buckett (Entity Group)Bringing your app to the web with Dart - Chris Buckett (Entity Group)
Bringing your app to the web with Dart - Chris Buckett (Entity Group)jaxLondonConference
 
Garbage Collection: the Useful Parts - Martijn Verburg & Dr John Oliver (jCla...
Garbage Collection: the Useful Parts - Martijn Verburg & Dr John Oliver (jCla...Garbage Collection: the Useful Parts - Martijn Verburg & Dr John Oliver (jCla...
Garbage Collection: the Useful Parts - Martijn Verburg & Dr John Oliver (jCla...jaxLondonConference
 
Practical Performance: Understand the Performance of Your Application - Chris...
Practical Performance: Understand the Performance of Your Application - Chris...Practical Performance: Understand the Performance of Your Application - Chris...
Practical Performance: Understand the Performance of Your Application - Chris...jaxLondonConference
 
Interactive media applications
Interactive media applicationsInteractive media applications
Interactive media applicationsNicole174
 
The state of the art biorepository at ILRI
The state of the art biorepository at ILRIThe state of the art biorepository at ILRI
The state of the art biorepository at ILRIAbsolomon Kihara
 
Streams and Things - Darach Ennis (Ubiquiti Networks)
Streams and Things - Darach Ennis (Ubiquiti Networks)Streams and Things - Darach Ennis (Ubiquiti Networks)
Streams and Things - Darach Ennis (Ubiquiti Networks)jaxLondonConference
 
Legal and ethical considerations redone
Legal and ethical considerations   redoneLegal and ethical considerations   redone
Legal and ethical considerations redoneNicole174
 
How Hailo fuels its growth using NoSQL storage and analytics - Dave Gardner (...
How Hailo fuels its growth using NoSQL storage and analytics - Dave Gardner (...How Hailo fuels its growth using NoSQL storage and analytics - Dave Gardner (...
How Hailo fuels its growth using NoSQL storage and analytics - Dave Gardner (...jaxLondonConference
 
Scaling Scala to the database - Stefan Zeiger (Typesafe)
Scaling Scala to the database - Stefan Zeiger (Typesafe)Scaling Scala to the database - Stefan Zeiger (Typesafe)
Scaling Scala to the database - Stefan Zeiger (Typesafe)jaxLondonConference
 
Are you better than a coin toss? - Richard Warbuton & John Oliver (jClarity)
Are you better than a coin toss?  - Richard Warbuton & John Oliver (jClarity)Are you better than a coin toss?  - Richard Warbuton & John Oliver (jClarity)
Are you better than a coin toss? - Richard Warbuton & John Oliver (jClarity)jaxLondonConference
 

En vedette (20)

Design is a Process, not an Artefact - Trisha Gee (MongoDB)
Design is a Process, not an Artefact - Trisha Gee (MongoDB)Design is a Process, not an Artefact - Trisha Gee (MongoDB)
Design is a Process, not an Artefact - Trisha Gee (MongoDB)
 
Introducing Vert.x 2.0 - Taking polyglot application development to the next ...
Introducing Vert.x 2.0 - Taking polyglot application development to the next ...Introducing Vert.x 2.0 - Taking polyglot application development to the next ...
Introducing Vert.x 2.0 - Taking polyglot application development to the next ...
 
How Java got its Mojo Back - James Governor (Redmonk)
How Java got its Mojo Back - James Governor (Redmonk)					How Java got its Mojo Back - James Governor (Redmonk)
How Java got its Mojo Back - James Governor (Redmonk)
 
What makes Groovy Groovy - Guillaume Laforge (Pivotal)
What makes Groovy Groovy  - Guillaume Laforge (Pivotal)What makes Groovy Groovy  - Guillaume Laforge (Pivotal)
What makes Groovy Groovy - Guillaume Laforge (Pivotal)
 
How Windows 10 will change the way we use devices
How Windows 10 will change the way we use devicesHow Windows 10 will change the way we use devices
How Windows 10 will change the way we use devices
 
What You Need to Know About Lambdas - Jamie Allen (Typesafe)
What You Need to Know About Lambdas - Jamie Allen (Typesafe)What You Need to Know About Lambdas - Jamie Allen (Typesafe)
What You Need to Know About Lambdas - Jamie Allen (Typesafe)
 
45 second video proposal
45 second video proposal45 second video proposal
45 second video proposal
 
Little words of wisdom for the developer - Guillaume Laforge (Pivotal)
Little words of wisdom for the developer - Guillaume Laforge (Pivotal)Little words of wisdom for the developer - Guillaume Laforge (Pivotal)
Little words of wisdom for the developer - Guillaume Laforge (Pivotal)
 
Databases and agile development - Dwight Merriman (MongoDB)
Databases and agile development - Dwight Merriman (MongoDB)Databases and agile development - Dwight Merriman (MongoDB)
Databases and agile development - Dwight Merriman (MongoDB)
 
Big Events, Mob Scale - Darach Ennis (Push Technology)
Big Events, Mob Scale - Darach Ennis (Push Technology)Big Events, Mob Scale - Darach Ennis (Push Technology)
Big Events, Mob Scale - Darach Ennis (Push Technology)
 
Bringing your app to the web with Dart - Chris Buckett (Entity Group)
Bringing your app to the web with Dart - Chris Buckett (Entity Group)Bringing your app to the web with Dart - Chris Buckett (Entity Group)
Bringing your app to the web with Dart - Chris Buckett (Entity Group)
 
Garbage Collection: the Useful Parts - Martijn Verburg & Dr John Oliver (jCla...
Garbage Collection: the Useful Parts - Martijn Verburg & Dr John Oliver (jCla...Garbage Collection: the Useful Parts - Martijn Verburg & Dr John Oliver (jCla...
Garbage Collection: the Useful Parts - Martijn Verburg & Dr John Oliver (jCla...
 
Practical Performance: Understand the Performance of Your Application - Chris...
Practical Performance: Understand the Performance of Your Application - Chris...Practical Performance: Understand the Performance of Your Application - Chris...
Practical Performance: Understand the Performance of Your Application - Chris...
 
Interactive media applications
Interactive media applicationsInteractive media applications
Interactive media applications
 
The state of the art biorepository at ILRI
The state of the art biorepository at ILRIThe state of the art biorepository at ILRI
The state of the art biorepository at ILRI
 
Streams and Things - Darach Ennis (Ubiquiti Networks)
Streams and Things - Darach Ennis (Ubiquiti Networks)Streams and Things - Darach Ennis (Ubiquiti Networks)
Streams and Things - Darach Ennis (Ubiquiti Networks)
 
Legal and ethical considerations redone
Legal and ethical considerations   redoneLegal and ethical considerations   redone
Legal and ethical considerations redone
 
How Hailo fuels its growth using NoSQL storage and analytics - Dave Gardner (...
How Hailo fuels its growth using NoSQL storage and analytics - Dave Gardner (...How Hailo fuels its growth using NoSQL storage and analytics - Dave Gardner (...
How Hailo fuels its growth using NoSQL storage and analytics - Dave Gardner (...
 
Scaling Scala to the database - Stefan Zeiger (Typesafe)
Scaling Scala to the database - Stefan Zeiger (Typesafe)Scaling Scala to the database - Stefan Zeiger (Typesafe)
Scaling Scala to the database - Stefan Zeiger (Typesafe)
 
Are you better than a coin toss? - Richard Warbuton & John Oliver (jClarity)
Are you better than a coin toss?  - Richard Warbuton & John Oliver (jClarity)Are you better than a coin toss?  - Richard Warbuton & John Oliver (jClarity)
Are you better than a coin toss? - Richard Warbuton & John Oliver (jClarity)
 

Similaire à Put Your Java Apps to Sleep and Improve Efficiency

D. Andreadis, Red Hat: Concepts and technical overview of Quarkus
D. Andreadis, Red Hat: Concepts and technical overview of QuarkusD. Andreadis, Red Hat: Concepts and technical overview of Quarkus
D. Andreadis, Red Hat: Concepts and technical overview of QuarkusUni Systems S.M.S.A.
 
javalightspeed-jakartatech-2023.pdf
javalightspeed-jakartatech-2023.pdfjavalightspeed-jakartatech-2023.pdf
javalightspeed-jakartatech-2023.pdfRichHagarty
 
Lec 1-of-oop2
Lec 1-of-oop2Lec 1-of-oop2
Lec 1-of-oop2SM Rasel
 
Performance comparison between Linux Containers and Virtual Machines
Performance comparison between Linux Containers and Virtual MachinesPerformance comparison between Linux Containers and Virtual Machines
Performance comparison between Linux Containers and Virtual MachinesSoheila Dehghanzadeh
 
JVMs in Containers - Best Practices
JVMs in Containers - Best PracticesJVMs in Containers - Best Practices
JVMs in Containers - Best PracticesDavid Delabassee
 
Spring: Your Next Java Micro-Framework
Spring: Your Next Java Micro-FrameworkSpring: Your Next Java Micro-Framework
Spring: Your Next Java Micro-FrameworkVMware Tanzu
 
20191201 kubernetes managed weblogic revival - part 1
20191201 kubernetes managed weblogic revival - part 120191201 kubernetes managed weblogic revival - part 1
20191201 kubernetes managed weblogic revival - part 1makker_nl
 
20150531 virtualizatino station 2.0 partner's day
20150531 virtualizatino station 2.0 partner's day20150531 virtualizatino station 2.0 partner's day
20150531 virtualizatino station 2.0 partner's dayqnapivan
 
Immutable infrastructure:觀念與實作 (建議)
Immutable infrastructure:觀念與實作 (建議)Immutable infrastructure:觀念與實作 (建議)
Immutable infrastructure:觀念與實作 (建議)William Yeh
 
vFabric - Ideal Platform for SaaS Apps
vFabric - Ideal Platform for SaaS AppsvFabric - Ideal Platform for SaaS Apps
vFabric - Ideal Platform for SaaS AppsVMware vFabric
 
Luca dell'oca - italian vmug usercon 2017
Luca dell'oca - italian vmug usercon 2017 Luca dell'oca - italian vmug usercon 2017
Luca dell'oca - italian vmug usercon 2017 VMUG IT
 
Going Serverless Using the Spring Framework Ecosystem
Going Serverless Using the Spring Framework EcosystemGoing Serverless Using the Spring Framework Ecosystem
Going Serverless Using the Spring Framework EcosystemVMware Tanzu
 
Unikernels: Rise of the Library Hypervisor
Unikernels: Rise of the Library HypervisorUnikernels: Rise of the Library Hypervisor
Unikernels: Rise of the Library HypervisorAnil Madhavapeddy
 
Unikernels: the rise of the library hypervisor in MirageOS
Unikernels: the rise of the library hypervisor in MirageOSUnikernels: the rise of the library hypervisor in MirageOS
Unikernels: the rise of the library hypervisor in MirageOSDocker, Inc.
 
AppCatalyst and Photon OS
AppCatalyst and Photon OSAppCatalyst and Photon OS
AppCatalyst and Photon OSJuan Manuel Rey
 
The Kubernetes WebLogic revival (part 1)
The Kubernetes WebLogic revival (part 1)The Kubernetes WebLogic revival (part 1)
The Kubernetes WebLogic revival (part 1)Simon Haslam
 

Similaire à Put Your Java Apps to Sleep and Improve Efficiency (20)

JVMs in Containers
JVMs in ContainersJVMs in Containers
JVMs in Containers
 
D. Andreadis, Red Hat: Concepts and technical overview of Quarkus
D. Andreadis, Red Hat: Concepts and technical overview of QuarkusD. Andreadis, Red Hat: Concepts and technical overview of Quarkus
D. Andreadis, Red Hat: Concepts and technical overview of Quarkus
 
Java hot spot
Java hot spotJava hot spot
Java hot spot
 
javalightspeed-jakartatech-2023.pdf
javalightspeed-jakartatech-2023.pdfjavalightspeed-jakartatech-2023.pdf
javalightspeed-jakartatech-2023.pdf
 
Lec 1-of-oop2
Lec 1-of-oop2Lec 1-of-oop2
Lec 1-of-oop2
 
Performance comparison between Linux Containers and Virtual Machines
Performance comparison between Linux Containers and Virtual MachinesPerformance comparison between Linux Containers and Virtual Machines
Performance comparison between Linux Containers and Virtual Machines
 
Splunking the JVM
Splunking the JVMSplunking the JVM
Splunking the JVM
 
JVMs in Containers - Best Practices
JVMs in Containers - Best PracticesJVMs in Containers - Best Practices
JVMs in Containers - Best Practices
 
Spring: Your Next Java Micro-Framework
Spring: Your Next Java Micro-FrameworkSpring: Your Next Java Micro-Framework
Spring: Your Next Java Micro-Framework
 
20191201 kubernetes managed weblogic revival - part 1
20191201 kubernetes managed weblogic revival - part 120191201 kubernetes managed weblogic revival - part 1
20191201 kubernetes managed weblogic revival - part 1
 
20150531 virtualizatino station 2.0 partner's day
20150531 virtualizatino station 2.0 partner's day20150531 virtualizatino station 2.0 partner's day
20150531 virtualizatino station 2.0 partner's day
 
Immutable infrastructure:觀念與實作 (建議)
Immutable infrastructure:觀念與實作 (建議)Immutable infrastructure:觀念與實作 (建議)
Immutable infrastructure:觀念與實作 (建議)
 
vFabric - Ideal Platform for SaaS Apps
vFabric - Ideal Platform for SaaS AppsvFabric - Ideal Platform for SaaS Apps
vFabric - Ideal Platform for SaaS Apps
 
Luca dell'oca - italian vmug usercon 2017
Luca dell'oca - italian vmug usercon 2017 Luca dell'oca - italian vmug usercon 2017
Luca dell'oca - italian vmug usercon 2017
 
Going Serverless Using the Spring Framework Ecosystem
Going Serverless Using the Spring Framework EcosystemGoing Serverless Using the Spring Framework Ecosystem
Going Serverless Using the Spring Framework Ecosystem
 
Unikernels: Rise of the Library Hypervisor
Unikernels: Rise of the Library HypervisorUnikernels: Rise of the Library Hypervisor
Unikernels: Rise of the Library Hypervisor
 
Unikernels: the rise of the library hypervisor in MirageOS
Unikernels: the rise of the library hypervisor in MirageOSUnikernels: the rise of the library hypervisor in MirageOS
Unikernels: the rise of the library hypervisor in MirageOS
 
AppCatalyst and Photon OS
AppCatalyst and Photon OSAppCatalyst and Photon OS
AppCatalyst and Photon OS
 
Java-java virtual machine
Java-java virtual machineJava-java virtual machine
Java-java virtual machine
 
The Kubernetes WebLogic revival (part 1)
The Kubernetes WebLogic revival (part 1)The Kubernetes WebLogic revival (part 1)
The Kubernetes WebLogic revival (part 1)
 

Plus de jaxLondonConference

Conflict Free Replicated Data-types in Eventually Consistent Systems - Joel J...
Conflict Free Replicated Data-types in Eventually Consistent Systems - Joel J...Conflict Free Replicated Data-types in Eventually Consistent Systems - Joel J...
Conflict Free Replicated Data-types in Eventually Consistent Systems - Joel J...jaxLondonConference
 
JVM Support for Multitenant Applications - Steve Poole (IBM)
JVM Support for Multitenant Applications - Steve Poole (IBM)JVM Support for Multitenant Applications - Steve Poole (IBM)
JVM Support for Multitenant Applications - Steve Poole (IBM)jaxLondonConference
 
Packed Objects: Fast Talking Java Meets Native Code - Steve Poole (IBM)
Packed Objects: Fast Talking Java Meets Native Code - Steve Poole (IBM)Packed Objects: Fast Talking Java Meets Native Code - Steve Poole (IBM)
Packed Objects: Fast Talking Java Meets Native Code - Steve Poole (IBM)jaxLondonConference
 
Are Hypermedia APIs Just Hype? - Aaron Phethean (Temenos) & Daniel Feist (Mul...
Are Hypermedia APIs Just Hype? - Aaron Phethean (Temenos) & Daniel Feist (Mul...Are Hypermedia APIs Just Hype? - Aaron Phethean (Temenos) & Daniel Feist (Mul...
Are Hypermedia APIs Just Hype? - Aaron Phethean (Temenos) & Daniel Feist (Mul...jaxLondonConference
 
Real-world polyglot programming on the JVM - Ben Summers (ONEIS)
Real-world polyglot programming on the JVM  - Ben Summers (ONEIS)Real-world polyglot programming on the JVM  - Ben Summers (ONEIS)
Real-world polyglot programming on the JVM - Ben Summers (ONEIS)jaxLondonConference
 
Java Testing With Spock - Ken Sipe (Trexin Consulting)
Java Testing With Spock - Ken Sipe (Trexin Consulting)Java Testing With Spock - Ken Sipe (Trexin Consulting)
Java Testing With Spock - Ken Sipe (Trexin Consulting)jaxLondonConference
 
The Java Virtual Machine is Over - The Polyglot VM is here - Marcus Lagergren...
The Java Virtual Machine is Over - The Polyglot VM is here - Marcus Lagergren...The Java Virtual Machine is Over - The Polyglot VM is here - Marcus Lagergren...
The Java Virtual Machine is Over - The Polyglot VM is here - Marcus Lagergren...jaxLondonConference
 
Java EE 7 Platform: Boosting Productivity and Embracing HTML5 - Arun Gupta (R...
Java EE 7 Platform: Boosting Productivity and Embracing HTML5 - Arun Gupta (R...Java EE 7 Platform: Boosting Productivity and Embracing HTML5 - Arun Gupta (R...
Java EE 7 Platform: Boosting Productivity and Embracing HTML5 - Arun Gupta (R...jaxLondonConference
 
Exploring the Talend unified Big Data toolset for sentiment analysis - Ben Br...
Exploring the Talend unified Big Data toolset for sentiment analysis - Ben Br...Exploring the Talend unified Big Data toolset for sentiment analysis - Ben Br...
Exploring the Talend unified Big Data toolset for sentiment analysis - Ben Br...jaxLondonConference
 
The Curious Clojurist - Neal Ford (Thoughtworks)
The Curious Clojurist - Neal Ford (Thoughtworks)The Curious Clojurist - Neal Ford (Thoughtworks)
The Curious Clojurist - Neal Ford (Thoughtworks)jaxLondonConference
 
Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)
Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)
Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)jaxLondonConference
 
Project Lambda: Functional Programming Constructs in Java - Simon Ritter (Ora...
Project Lambda: Functional Programming Constructs in Java - Simon Ritter (Ora...Project Lambda: Functional Programming Constructs in Java - Simon Ritter (Ora...
Project Lambda: Functional Programming Constructs in Java - Simon Ritter (Ora...jaxLondonConference
 
Do You Like Coffee with Your dessert? Java and the Raspberry Pi - Simon Ritte...
Do You Like Coffee with Your dessert? Java and the Raspberry Pi - Simon Ritte...Do You Like Coffee with Your dessert? Java and the Raspberry Pi - Simon Ritte...
Do You Like Coffee with Your dessert? Java and the Raspberry Pi - Simon Ritte...jaxLondonConference
 
Large scale, interactive ad-hoc queries over different datastores with Apache...
Large scale, interactive ad-hoc queries over different datastores with Apache...Large scale, interactive ad-hoc queries over different datastores with Apache...
Large scale, interactive ad-hoc queries over different datastores with Apache...jaxLondonConference
 
Lambda Expressions: Myths and Mistakes - Richard Warburton (jClarity)
Lambda Expressions: Myths and Mistakes - Richard Warburton (jClarity)Lambda Expressions: Myths and Mistakes - Richard Warburton (jClarity)
Lambda Expressions: Myths and Mistakes - Richard Warburton (jClarity)jaxLondonConference
 
Designing Resilient Application Platforms with Apache Cassandra - Hayato Shim...
Designing Resilient Application Platforms with Apache Cassandra - Hayato Shim...Designing Resilient Application Platforms with Apache Cassandra - Hayato Shim...
Designing Resilient Application Platforms with Apache Cassandra - Hayato Shim...jaxLondonConference
 

Plus de jaxLondonConference (18)

Conflict Free Replicated Data-types in Eventually Consistent Systems - Joel J...
Conflict Free Replicated Data-types in Eventually Consistent Systems - Joel J...Conflict Free Replicated Data-types in Eventually Consistent Systems - Joel J...
Conflict Free Replicated Data-types in Eventually Consistent Systems - Joel J...
 
JVM Support for Multitenant Applications - Steve Poole (IBM)
JVM Support for Multitenant Applications - Steve Poole (IBM)JVM Support for Multitenant Applications - Steve Poole (IBM)
JVM Support for Multitenant Applications - Steve Poole (IBM)
 
Packed Objects: Fast Talking Java Meets Native Code - Steve Poole (IBM)
Packed Objects: Fast Talking Java Meets Native Code - Steve Poole (IBM)Packed Objects: Fast Talking Java Meets Native Code - Steve Poole (IBM)
Packed Objects: Fast Talking Java Meets Native Code - Steve Poole (IBM)
 
Why other ppl_dont_get_it
Why other ppl_dont_get_itWhy other ppl_dont_get_it
Why other ppl_dont_get_it
 
Are Hypermedia APIs Just Hype? - Aaron Phethean (Temenos) & Daniel Feist (Mul...
Are Hypermedia APIs Just Hype? - Aaron Phethean (Temenos) & Daniel Feist (Mul...Are Hypermedia APIs Just Hype? - Aaron Phethean (Temenos) & Daniel Feist (Mul...
Are Hypermedia APIs Just Hype? - Aaron Phethean (Temenos) & Daniel Feist (Mul...
 
Real-world polyglot programming on the JVM - Ben Summers (ONEIS)
Real-world polyglot programming on the JVM  - Ben Summers (ONEIS)Real-world polyglot programming on the JVM  - Ben Summers (ONEIS)
Real-world polyglot programming on the JVM - Ben Summers (ONEIS)
 
Java Testing With Spock - Ken Sipe (Trexin Consulting)
Java Testing With Spock - Ken Sipe (Trexin Consulting)Java Testing With Spock - Ken Sipe (Trexin Consulting)
Java Testing With Spock - Ken Sipe (Trexin Consulting)
 
The Java Virtual Machine is Over - The Polyglot VM is here - Marcus Lagergren...
The Java Virtual Machine is Over - The Polyglot VM is here - Marcus Lagergren...The Java Virtual Machine is Over - The Polyglot VM is here - Marcus Lagergren...
The Java Virtual Machine is Over - The Polyglot VM is here - Marcus Lagergren...
 
Java EE 7 Platform: Boosting Productivity and Embracing HTML5 - Arun Gupta (R...
Java EE 7 Platform: Boosting Productivity and Embracing HTML5 - Arun Gupta (R...Java EE 7 Platform: Boosting Productivity and Embracing HTML5 - Arun Gupta (R...
Java EE 7 Platform: Boosting Productivity and Embracing HTML5 - Arun Gupta (R...
 
Exploring the Talend unified Big Data toolset for sentiment analysis - Ben Br...
Exploring the Talend unified Big Data toolset for sentiment analysis - Ben Br...Exploring the Talend unified Big Data toolset for sentiment analysis - Ben Br...
Exploring the Talend unified Big Data toolset for sentiment analysis - Ben Br...
 
The Curious Clojurist - Neal Ford (Thoughtworks)
The Curious Clojurist - Neal Ford (Thoughtworks)The Curious Clojurist - Neal Ford (Thoughtworks)
The Curious Clojurist - Neal Ford (Thoughtworks)
 
TDD at scale - Mash Badar (UBS)
TDD at scale - Mash Badar (UBS)TDD at scale - Mash Badar (UBS)
TDD at scale - Mash Badar (UBS)
 
Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)
Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)
Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)
 
Project Lambda: Functional Programming Constructs in Java - Simon Ritter (Ora...
Project Lambda: Functional Programming Constructs in Java - Simon Ritter (Ora...Project Lambda: Functional Programming Constructs in Java - Simon Ritter (Ora...
Project Lambda: Functional Programming Constructs in Java - Simon Ritter (Ora...
 
Do You Like Coffee with Your dessert? Java and the Raspberry Pi - Simon Ritte...
Do You Like Coffee with Your dessert? Java and the Raspberry Pi - Simon Ritte...Do You Like Coffee with Your dessert? Java and the Raspberry Pi - Simon Ritte...
Do You Like Coffee with Your dessert? Java and the Raspberry Pi - Simon Ritte...
 
Large scale, interactive ad-hoc queries over different datastores with Apache...
Large scale, interactive ad-hoc queries over different datastores with Apache...Large scale, interactive ad-hoc queries over different datastores with Apache...
Large scale, interactive ad-hoc queries over different datastores with Apache...
 
Lambda Expressions: Myths and Mistakes - Richard Warburton (jClarity)
Lambda Expressions: Myths and Mistakes - Richard Warburton (jClarity)Lambda Expressions: Myths and Mistakes - Richard Warburton (jClarity)
Lambda Expressions: Myths and Mistakes - Richard Warburton (jClarity)
 
Designing Resilient Application Platforms with Apache Cassandra - Hayato Shim...
Designing Resilient Application Platforms with Apache Cassandra - Hayato Shim...Designing Resilient Application Platforms with Apache Cassandra - Hayato Shim...
Designing Resilient Application Platforms with Apache Cassandra - Hayato Shim...
 

Dernier

WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 

Dernier (20)

WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 

Put Your Java Apps to Sleep and Improve Efficiency

  • 1. Put  your  Java  Apps  to  Sleep?   Find  out  How…     John  Ma(hew  Holt  |  JAX  London  2013   ! © Copyright Waratek 2013
  • 2. John Matthew Holt! •  CTO  and  co-­‐Founder  of  Waratek   •  Been  doing  JVM  engineering  for  10  years   •  Invented  “Java  VirtualizaCon”  to  transform   how  JVMs  operate  in  virtualized  and  cloud-­‐ compuCng  environments   •  Lead  the  design  of  the  first  Type-­‐1  VMM  for  a   JVM   © Copyright Waratek 2013
  • 3. What will we cover?! •  First  some  background…   – Why  virtualize  INSIDE  the  JVM?   – Think  “VMware  for  Java”   •  PuSng  you  Java  Apps  to  Sleep…   – Why  are  Java  apps  Cred?     (or  restated:  why  should  they  be  slept?)   – Let  your  apps  nap:  “wake-­‐on-­‐LAN  for  JVCs”     © Copyright Waratek 2013
  • 4. First some background…!     •  Why  virtualize  INSIDE  the  JVM?   © Copyright Waratek 2013
  • 5. Because…! •  Because  JVMs  make  bad  bedfellows  with  HW   hypervisors  (HV)   •  A  JVM  thwarts  HW  hypervisor  features  like:   –  The  GC  in  a  JVM  thwarts  memory-­‐overcommit  in  a  HW   HV   –  The  GC’s  heap  memory,  and  the  JIT’s  permgen/ codecache,  thwarts  ‘transparent  page   sharing’  (memory  de-­‐dup)  in  a  HW  HV   –  Dedicated  GC  and  JIT  for  EVERY  Java  applicaCon  wastes   lots  and  lots  of  CPU  Cme  and  memory  capacity  doing   the  same  thing  over,  and  over,  and  over,  and…     © Copyright Waratek 2013
  • 6. Today’s JVMs are OLD! •  Were  designed  ~20  years  ago,  and  haven’t   changed  design  since  then   •  JVM  design  PREDATES  the  major  2  trends  of   last  decade:  virtualizaCon  and  cloud-­‐compuCng   •  Only  2  innovaCons  in  JVMs  in  20  years:     – Beder  JIT  compilers   – Concurrent  GCs   – ….all  blindly  focused  on  single-­‐tenant  performance   at  the  expense  of  mulC-­‐tenant  efficiency   © Copyright Waratek 2013
  • 7. Server Java has problems! •  JVMs  are  grossly  inefficient  users  of  CPU  and  memory   –  A  JVM  assumes  it  can  use  all  available  CPU  and  memory  capacity   for  itself  and  its  single  applicaCon,  eg:   –  1  JBoss  can  consume  up  to  500MB  RSS  with  no  apps   –  1  Tomcat  can  consume  up  to  250MB  RSS  with  no  webapps   –  Running  mulCple  JVMs  on  a  server  rapidly  exhausts  physically   memory  while  CPU  uClisaCon  averages  5%   •  >100  different  JVM  versions  makes  compliance/support  a   NIGHTMARE   •  Security  vulnerabiliCes  and  compromises  are  EVERYWHERE   inside  Java   © Copyright Waratek 2013
  • 8. VMWare does not virtualize 
 Java well! •  Realworld  stats  using  VMware:   –  >80%  of  Server  JVMs  have  <=2GB  of  heap  memory   •  Yet  actual  applicaCon  heap  uClisaCon  averages  <20%   –  A  2GB  JVM  heap  needs  ~3GB  of  OS  RSS  memory,  which   in  turn  needs  ~4GB  of  VMWare  tenant  memory   •  …reducing  actual  applicaCon  memory  uClisaCon  to  <10%   –  CPU  uClisaCon  running  Java  on  Vmware  averages  <7%   •  Yet  physical  memory  is  exhausted  because  of  running   mulCple  JVMs   © Copyright Waratek 2013
  • 9. Java is a compliance nightmare! •  Realworld  stats:   –  93%  of  organisaCons  are  running  versions  of  Java  at   least  5  years  old   –  The  average  organisaCon  has  51  disCnct  versions  of   Java  installed   –  <1%  of  installed  Java  is  upgraded  to  the  latest  version   •  Recurring  enterprise  conversaCon:   –  QuesCon:  “what  version  of  Java  do  you  run?”   –  Answer:  “every  version  except  the  latest  version!”   © Copyright Waratek 2013
  • 10. Java is a security nightmare! •  Realworld  stats:   –  In  last  12  months  alone,  >250  CVE  alerts  issued  by  US-­‐ CERT/NIST  for  Java   –  The  most  prevalent  version  of  Java  has  96  “perfect  10”   vulnerabiliCes   –  “There  are  virtually  no  modern  versions  of  Java  without   any  known  severe  vulnerabiliCes”  (source:  Bit9)   •  CriCcal  Security  Patch  Updates  are  released  so   oven  that  developers  and  admins  can’t  keep  up     © Copyright Waratek 2013
  • 11. Virtualization is the answer…! •  …but  HIGHER  up  the  Server  Stack   •  VirtualizaCon  is  creeping  up  the  Server  Stack   already   –  x86  HW  got  virtualized  in  1999  (VMware  et  al)   –  x86  OS  got  virtualized  in  2006  (OpenVZ,  LXC,  et  al)   –  …now  it’s  Java’s  turn  in  2013   •  Virtualizing  Java  means  virtualizing  at  the  TOP  of   the  Server  Stack,  whereas  VMware  virtualizes  at   the  BOTTOM   © Copyright Waratek 2013
  • 12. Cost-per-tentant to zero ! •  The  higher  up  virtualizaCon  goes  up  the  Server   Stack,  the  cheaper  a  “tenant”  becomes   •  Virtualizing  INSIDE  the  JVM  gets  close  to  “zero-­‐ cost  tenants”:   – Helloworld  in  <1MB  of  tenant  memory   – Examples.war  (Tomcat  demo  webapps)  in  <5MB  of   tenant  memory   – …Java  becomes  CHEAPER  than  python/ruby/perl   when  the  JVM  itself  gets  virtualized!     © Copyright Waratek 2013
  • 13. Virtualization == Security! •  Virtualizing  the  JVM  makes  Server  Java  secure  and   compliant   –  Virtualized  Java  Apps  run  as  “tenants”  in  a  shared  JVM   –  Tenants  run  in  Java  Virtual  Container  (JVC)  “jails”   –  Tenants  are  isolated  and  “locked-­‐down”   –  Tenants  can  run  any  Java  version   •  Doesn’t  mader  what  “Java  version”  a  tenant  uses,  it  gets  the  latest   JVM   •  Means  a  “Java  version”  becomes  just  a  tenant  API  for  the   convenience  of  developers   •  Admins  control  the  REAL  version  at  the  JVM  level  so  that  tenants   (developers)  can  stop  caring  about  “versions”  altogether   © Copyright Waratek 2013
  • 14. First some background…!   •  Think  “VMWare  for  Java”   © Copyright Waratek 2013
  • 15. A hypervisor INSIDE a JVM! •  Waratek  has  wriden  a  type-­‐1  VMM  that  runs  INSIDE  the   Oracle  HotSpot  and  OpenJDK  JVMs   –  >300,000  lines  of  Java  code,  <5K  lines  of  C-­‐code   –  Can  easily  run  on  any  OS/CPU  pair  (only  Linux/x86  supported  so   far)   –  Does  EVERYTHING  VMware  does,  but  INSIDE  the  JVM   •  •  •  •  •  •  Virtual  FS   Virtual  networks/IPs/NICs   CPU  pinning  and  quotas   Memory  overcommit,  elasCc  memory,  memory  quotas   I/O  QoS,  rate-­‐limiCng   Etc…   –  …all  with  ZERO  code  change  to  Java  applicaCons   © Copyright Waratek 2013
  • 16. A real VMM inside the JVM! © Copyright Waratek 2013
  • 17. VMWare for Java! Java Code JVC Java App java.* APIs SecurityManager Waratek Java Hypervisor Process C/C++ Code JNI Libs •  Waratek  virtualizes  Java  exactly   like  VMware  virtualizes  HW   –  Waratek  inserts  a  “Java   Hypervisor”  between  the  JVM  and   the  Java  App  +  java.*  APIs  +   SecurityManager   –  The  Java  app  PLUS  java.*  APIs  and   SecurityManager  run  inside  a  Java   Virtual  Container  (JVC)  “jail”   –  For  a  Java  App  to  go  outside  of  its   JVC  “jail”  it  has  to  “trap”  to  the   Java  Hypervisor   Waratek JVM © Copyright Waratek 2013
  • 18. VMWare for Java! Java Code JVC Java App java.* APIs SecurityManager Waratek Java Hypervisor Process C/C++ Code JNI Libs Waratek JVM •  Every  incoming  and  outgoing  access   by  a  JVC  is  intercepted  and  checked  by   the  Java  Hypervisor,  e.g:   –  –  –  –  –  –  –  –  –  –  –  –  –  –  Class  loading  intercepted  and  checked   JNI  invocaCon  intercepted   Parameter  and  return  value  checks   File  access  (delete/copy/move)  checks   Network  operaCon  checks   IO  rate-­‐limiCng  and  flow-­‐control   CPU  Cme  control   Memory  consumpCon  control   Buffer  overflow  checks   Null  pointer  checks   Type  safety  checks   OS  access  checks     JNI  Libraries  isolated   …   © Copyright Waratek 2013
  • 19. Slots into existing VM tools! •  You  can  manage  the  Java  hypervisor  exactly  like  you  manage   exisCng  HW  hypervisors:   –  –  –  –  SSH  CLI   RedHat  LibVirt/KVM  integraCon  (beta)   VMWare  vCAC  integraCon  shortly   OpenStack  integraCon  shortly   •  Plus  other  management  interfaces   –  –  –  –  –  HTTP  REST  API   Local  and  remote  JMX  APIs   /proc/PID/*  pseudo-­‐filesystem  for  JVM  and  each  JVC   Vmware  CloudFoundry  integraCon  (beta)   RedHat  OpenShiv  integraCon  soon   © Copyright Waratek 2013
  • 20. A HelloWorld JVC in LibVirt XML! © Copyright Waratek 2013
  • 21. JVCs make Java secure! Java Code JVC Java App java.* APIs SecurityManager Waratek Java Hypervisor Process C/C++ Code JNI Libs Waratek JVM •  If  a  Java  App  inside  a  JVC   compromises  either/both  of   java.*  APIs  or  SecurityManager,   then  only  that  JVC  is  effected   and  NOT  the  Java  Hypervisor  or   JVM  or  other  JVCs   •  JNI  Libraries  are  isolatable  in   their  own  OS  process   •  Thus  a  compromised  JVC   cannot:   –  –  –  –  –  –  –  Insert  malicious  code  outside  its  JVC   Delete/move/copy  files  outside  its  VROOT   Trigger  buffer  overflows   Do  null-­‐pointer  segmentaCon  faults   Perform  unsafe  heap  memory  access   Fork  OS  processes   etc…   © Copyright Waratek 2013
  • 22. “Come in, we’re open”! •  The  Java  Hypervisor  has  an  open  API  for  unlimited   customizaCon  and  extensibility   •  Anyone  can  write  their  own  PURE-­‐JAVA  plugins  to   the  Java  hypervisor  to  customize  ANYTHING  about   JVCs,  eg:   –  Make  a  DropBox.com  account  the  virtual  filesystem  for   a  JVC   –  Create  a  virtual  LAN  between  distributed  JVCs   anywhere  in  the  world   –  Clone  live  network  I/O  of  an  acCve  JVC  to  a  test  JVC  for   side-­‐by-­‐side  applicaCon  tesCng   © Copyright Waratek 2013
  • 23. Example hypervisor plugin! •  Waratek  wrote  ElasCcat  as  one  example  of  a  Java   Hypervisor  plugin   •  ElasCcat  is  open  source,  is  <1000  lines  of  Java  code,  and   loads  into  the  Java  hypervisor  at  startup   •  ElasCcat  virtualizes  Apache  Tomcat  so  it  becomes  the   world’s  first  mulC-­‐tenant  JavaEE  container:   –  Tomcat  runs  in  one  JVC  and  each  webapp  runs  in  it’s  own   dedicated  JVC   –  If  one  webapp  crashes  it  won’t  crash  any  other  JVC   –  …all  this  achieved  with  ZERO  code  change  to  Tomcat  or   webapps,  and  without  them  knowing  they’ve  been   virtualized!   © Copyright Waratek 2013
  • 25. Putting Java to jSleep…!     •  Why  are  Java  apps  Cred?   (or:  why  should  they  be  slept?)   © Copyright Waratek 2013
  • 26. Java Apps are tired!! •  Realworld  stats:   – >50%  of  PaaS  apps  are  “dead  bone  idle”  at  any   given  Cme   – The  average  Dev/Test  environment  runs  at  <10%   sustained  uClizaCon   – Lots  and  lots  of  enterprise  Java  apps  are  only  used   periodically,  e.g.  end-­‐of-­‐week,  end-­‐of-­‐month…   •  But  these  apps  have  SLAs  and  can’t  be  shut-­‐off!   © Copyright Waratek 2013
  • 27. Fact from the field:! •  So  frustrated  was  one  Fortune500  admin  that  he   shut-­‐off  a  bunch  of  Java  apps  that  had  been  idle  for   2  weeks  (no  TCP  traffic)  and  waited  to  see  what   would  happen…  the  results  were:   –  …a  small  number  of  app-­‐owners  noCced  immediately   (1-­‐2  days)   –  …the  largest  number  of  app-­‐owners  noCced  within  1-­‐2   weeks   –  …and  a  small  number  of  app-­‐owners  NEVER  noCced  at   all!   © Copyright Waratek 2013
  • 28. Wouldn’t it be great if…! •  …you  could  “compress”  an  idle  app  and  re-­‐ awaken  it  instantly  WITHOUT  THE  APP   KNOWING?   •  …and  without  the  END-­‐POINTS  knowing?   •  …and  without  ever  RESTARTING  the  app  later?   © Copyright Waratek 2013
  • 29. Actually it exists…almost!! •  The  technology  for  this  nearly  already  exists:   –  It’s  called  “wake-­‐on-­‐LAN”  (WoL)   •  …but  there’s  a  problem:  WoL  only  works  at  the   HARDWARE  level,  so  is  of  NO  USE  in  mulCtenant   virtualized  cloud-­‐compuCng  environments   •  Think  about  it:   –  As  long  as  ONE  tenant  on  a  server  is  acCve  then  the  server   HAS  to  stay  alive  and  WoL  CANNOT  be  used!   © Copyright Waratek 2013
  • 30. Putting Java to jSleep…!     •  Let  your  apps  nap:  wake-­‐on-­‐LAN   for  JVCs   © Copyright Waratek 2013
  • 31. “Wake-on-LAN for JVCs”! •  What’s  needed  is  a  NEW  kind  of  WoL  that   “naps”  single  idle  tenants  on  a  mulCtenant   server…   •  …and  reclaims  the  memory/CPU/IO  quotas   that  were  provisioned  for  the  now-­‐napped  app,   to  be  used  to  run  other  new  apps   •  This  is  what  Waratek  jSleep  does  for  Java  apps!   © Copyright Waratek 2013
  • 32. jSleep in a Slide! •  Waratek  jSleep  works  inside  the  Java  Hypervisor  to   do  four  things:   –  1)  monitor  the  acCvity  of  individual  apps  (JVCs)   –  2)  put  idle  JVCs  to  sleep  aver  defined  inacCvity  thresholds   and  reclaim  their  CPU/mem/IO  quotas   –  3)  monitor  the  I/O  connecCons  (TCP/UDP  Sockets,   ServerSockets,  Files,  etc)  of  a  sleeping  JVC   –  4)  and  awaken  a  sleeping  JVC  when  I/O  acCvity  is   detected,  reinstaCng  reclaimed  quotas   •  …it’s  wake-­‐on-­‐LAN  for  JVCs!   © Copyright Waratek 2013
  • 33. jSleep is Very Powerful! •  Lots  of  “knobs  and  dials”  make  it  possible  to  define   sophisCcated  sleep/awake  profiles  that  respond  to:   –  CPU  acCvity   –  Network/IO  acCvity   –  IO  Cmeouts   –  Wall-­‐clock  Cme   –  …or  just  about  anything  else   •  THERE’S  ALSO  a  built-­‐in  network  profile  that  allows   for  immediate  configuraCon  via  the  JIRSH  CLI   © Copyright Waratek 2013
  • 34. Simple jSleep Example! •  Set  a  jSleep  policy  based  on  network  traffic  of  defined   sockets/ports,  eg:   –  jirsh # sleepinfo 1 –-set network=120000,include_local=:8080,10.1.0.8:4444 –  Above  command:   •  Suspends  JVC  1  aver  the  network  interface  is  idle  120s   •  The  include_local param  is  a  series  of  host:port  combinaCons   that  specify  what  traffic  of  remote  hosts  and/or  local  ports  is  allowed   to  wake  the  JVC,  so  in  above:   –  Traffic  from  any  remote  host  to  local  port  8080  will  wake  the  JVC   –  Traffic  from  remote  host  10.1.0.8  to  local  port  4444  will  wake   the  JVC   © Copyright Waratek 2013
  • 35. jSleep API in 60 Seconds! •  2  packages,  8  classes:   –  cloudvm.jsleep.event.* •  •  •  •  BytesReceivedEvent CpuEvent NetworkIdleEvent TimeoutEvent –  cloudvm.jsleep.profile.* •  •  •  •  JSleepProfile JSleepProfile.MemoryType JSleepProfileState NetworkProfile © Copyright Waratek 2013
  • 36. jSleep API in 60 Seconds! •  Main  class:  cloudvm.jsleep.profile.JSleepProfile –  Every  JVC  can  have  one  of  these   –  Defines  the  two  CORE  methods:   •  checkSuspend( VirtualContainerMXBean ) •  checkResume( VirtualContainerMXBean ) –  Is  an  abstract  class  so  anyone  can  write  their  own  custom   sleep/resume  profile   –  Loaded  and  configured  using  JMX  (local  or  remote)   © Copyright Waratek 2013
  • 37. Custom jSleep API Example! •  Here’s  a  custom  jSleep  profile…     public  boolean  checkSuspend(VirtualContainerMXBean  paramVirtualContainerMXBean)  {          Date  currentDate  =  new  Date();          if(currentDate.aver(sleepDate)  &&  currentDate.before(resumeDate))  {                  return  true;          }  else  {                  return  false;          }   }     public  boolean  checkResume(VirtualContainerMXBean  paramVirtualContainerMXBean)  {          Date  currentDate  =  new  Date();          if(currentDate.before(sleepDate)  ||  currentDate.aver(resumeDate))  {                  return  true;          }  else  {                  return  false;          }             }     © Copyright Waratek 2013
  • 38. What happens when…! •  …a  JVC  sleeps?:   –  The  threads  of  the  JVC  are  suspended  on  the  OS  kernel   (but  NOT  destroyed)   –  The  JVC’s  dead  objects  are  asynchronously  reclaimed  by   the  GC   –  If  the  JSleepProfile  was  configured  with   MemoryType.VARIABLE,  the  JVCs  unused  memory  quota   will  be  reclaimed  for  use  by  other  JVCs   –  All  open  file  descriptors  will  be  kept  open   –  …all  this  in  <1  second   © Copyright Waratek 2013
  • 39. What happens when…! •  …a  JVC  wakes  up?:   – The  threads  of  the  JVC  are  resumed  on  the  OS   kernel   – If  the  JSleepProfile  was  configured  with   MemoryType.VARIABLE,  the  JVM  will  reinstate   the  prior  memory  quota  of  the  JVC     – Any  file  descriptors  with  received  but  unread  data   will  now  be  “readable”  by  the  applicaCon   – …all  this  in  <1  second   © Copyright Waratek 2013
  • 40. Why you should care…! •  Dev/Test,  PaaS,  and  middleware  environments  are   characterized  by  LOTS  of  “applicaCon  idleness”     •  Idle  apps  today  are  treated  NO  DIFFERENTLY  than  acCve,   busy  apps   •  Years  ago  H/W  wake-­‐on-­‐LAN  was  an  effecCve  technology  for   powering  down  idle  servers…  but  it  no  longer  works  in   mulCtenant  cloud  infrastructure   •  jSleep  is  “wake-­‐on-­‐LAN  for  JVCs”  and  can  increase  the   number  of  Java  apps-­‐per-­‐server  by  up  to  10x   –  …this  means  a  reducCon  in  server  sprawl  and  OpEx  up  to  90%   © Copyright Waratek 2013
  • 41. Summary!     •  Recap  and  links…   © Copyright Waratek 2013
  • 42. Biggest change to Java in yrs! •  A  hypervisor  inside  the  JVM  transforms  Java   with:   – Ultra-­‐liteweight  JVCs  for  near  zero-­‐cost  tenants   – JVC  “jails”  for  Java  security  and  isolaCon   – Mixed-­‐version  JVCs  for  version  consolidaCon  and   legacy  compliance   – jSleep  (“Wake-­‐On-­‐LAN  for  JVCs”)  for  near-­‐zero   footprint  of  idle  tenants   © Copyright Waratek 2013
  • 43. Links! •  General  informaCon  about  the  Waratek  JVM   – hdp://www.waratek.com   •  jSleep,  JVI  (Java  VirtualizaCon  Interface),  and   JMX  APIs   – hdp://javadoc.waratek.com   •  ElasCcat  source  code   – hdps://github.com/waratek/elasCcat-­‐driver   © Copyright Waratek 2013