We have got the privilege to borrow an Azul Vega 1 which is the smallest of Azul‘s monster machines. This evening a bunch of us Jaywayers gathered to try it out. Installing the Azul JVM was painless and all of us were up and running very quickly.

Here is screenshot from the management console showing 81 active CPUs and 23 GB free memory:

I tried some Scala actors which worked very well. By running some CPU intensive calculations I concluded that it scaled linearly up to the number of CPUs. No surprise, but very cool when you are running 80 threads at full speed! Also cool to see that Scala runs smoothly which means that neither Scala nor Azul does anything strange. Just pure bytecode.

Somebody tried to configure the Azul JVM in Eclipse and was able to run JUnit tests on Azul. We were also able to run maven without any problems.

We tried to allocate lots of memory. No problem there either, although we had to specify -Xmx10G or something. By default you only get 1.6 GB….

A colleague started tomcat, produced lots of garbage and tried garbage collection at 8 GB of heap. No pause! However, there was some synchronization problem with Log4j since all 16 CPUs had to coordinate their work.

We encountered two problems:

  • xstream apparently had a dependency to Unsafe which is not supported on Azul
  • the program must be headless, so no Swing

A quick rewrite later and we had generated a 64 megapixel mandelbrot calculated in parallel on 40 CPUs. The only problem was saving the PNG file which was a single threaded operation…

6 Responses to “Azul”

  1. Using XStream with a Vendor String other than “Sun Microsystems Inc.” or “BEA Systems Inc.” will cause the method com.thoughtworks.xstream.core.JVM#bestReflectionProvider
    to return a PureJavaReflectionProvider instead of a Sun14ReflectionProvider, leading to changed behaviour. See;; .

    Therfore to use XStream with Azul Systems Zing (or Vega) the Vendor String “Sun Microsystems Inc.” needs to be set with these two option flags:

    -Djava.vm.vendor=”Sun Microsystems Inc.”

    * Zing is the x86-64 Linux JVM from Azul Systems

  2. Unfortunately it seems this image has been lost…

  3. jessica says:

    Does anyone still have the Mandelbrot that was generated using the Azul appliance? I’d love to have a copy. :)

  4. Hugo Josefson says:

    Regarding XStream and the sun.misc.Unsafe dependency, there may have been a slight misunderstanding in all the excitement…

    I did try to run continuous integration server Hudson ( with the Azul JVM, and that’s where we saw a problem with XStream. Hudson started, but it gave an error message when I browsed to its web app.

    The error message was something about Hudson not being able to run on this JVM (specifying the identified Azul JVM including version number) because of XStream. I do believe it said something about enhanced mode.

    I don’t know if this has anything to do with sun.misc.Unsafe. Someone suggested it, and I think that’s why that statement ended up in the blog post.

    Anyway, these steps should reproduce the problem:
    1. Download Hudson from . I used the jar URL referenced from inside the .jnlp file on the “Meet Hudson” page’s “Launch” button.
    2. java -jar hudson.jar, of course using Azul’s JVM.
    3. Browse to http://localhost:8080/

    Additionally, these links are the ones I found googling for Hudson with XStream in enhanced mode. They may or may not contain helpful information on the subject:


  5. Björn Granvik says:

    It was good night for sure. Btw, Azul will be coming to Øredev conference ( in November. You will be able to fondle the machine for yourself, if you’re there ;-)

  6. Joakim Back says:

    Here’s a link to the Mandelbrot output:

Leave a Reply