 We're here at the Linaro Connect, and who are you? So my name's Stuart Montice. I work for Linaro, working on OpenJDK. So what is OpenJDK? OpenJDK is the open source project that works on Java virtual machine and runtime. So Java virtual machine. So that's a big deal, no? It's used very heavily in terms of commercial workloads. It's a middleware. Your bank will do it run on it. Lots of websites use it. There's a good deal of technology that depends upon it. So how long have you been working with this? What have you done with it? Well, with OpenJDK in particular, I've been working on the past couple of years on that, prior to 64, doing some performance work, some feature work, some building work, and a little bit some pieces here and there. So is it great support right now on the ARM64? It's only getting better. The very core of all of this effort is Red Hat. So Andrew Haley's team have been there from the beginning and wrote it initially. Various different members are starting to engage more with it. And so how long have you been involved with it in the narrow? My involvement goes back probably to around about 2013, 2014. We're initially worked on Android work, the Android runtime and 64-bit Java. And you just made it work? You just worked? Nothing's just, of course. So myself and my colleagues in ARM had been working on that for a good year or so before it became public. And so it's been continuing ever since then. It's become mainstream. And so what is the target of this project right now? OpenJDK needs better optimization on the ARM? So what various people and partners are interested in are the performance. That's always going to continue. Understanding the performance characteristics of OpenJDK is one thing you do when you're working on server chips. Another is making sure we have all the features you would come to expect on a virtual machine. Because as far as I understand, some of the ARM server chips are very cool, very awesome, very powerful. But if some software is not optimized, that could be an issue. So Java is a big deal. Everybody wants it. Yes, and Java has been around for a long time. Pre-AR64, people have been optimizing Java on their chips for the past 20 years. So there is going to be lots of work to do. And how does it work? How do you do that? It's one of these things where we have two strands. There's working on features. So things that are not there, you initially write, get working. Performance is a lot of in-depth, detailed work that doesn't necessarily produce lots of results. So you have to spend a lot of time understanding how things work, understanding what it does on your machine, looking for areas and even proving it, whether it be in your architecture or whether it be in the language implementation itself. A lot of what we will look at are the tooling that's available. So OpenJDK doesn't run in isolation. It is compiled by GCC. GCC has to work well. We use debugging tools. GDB has to work well. It's obviously running on the C libraries. We have to work well. It runs on the Linux kernel. That needs to be understood and improved to where necessary. And tools such as Perf and all the tool chain on top of that also need to work well. So Java is very good at bringing all of these things together. It uses lots of memory. It does lots of things concurrently, it stresses locks. So there's lots of analysis that needs to be done and has been done. Do you have a nice team around you also working together with you? The OpenJDK team is massive as a whole. There are various people with various interests. In ART64 in particular, we have Red Hat very much at the core and driving this. We have quite a number of folks in ARM who are working on this. There's myself and Leonardo. And we have a speaker coming tomorrow from Bellsoft who will be talking about their optimizations. And so you just work in the open source, collaborate, figure out some things, make it better and better. Every week, does it get better? When have you reached perfect optimization and then you can go do something else? Never. Never? If you look at folks such as IBM, they've been optimizing Java since 1995 and they haven't stopped since. So I don't expect this ever to go away. How many other things are required to optimize? So Java is just one thing, right? How many other things are there in the neural, in the Linux world that's out of many different kind of languages around it that are also each of them optimized? Well, I mean, if you talk about the Linux world in particular, my colleagues in ARM do deal with many runtimes. I'm sure you can find folks to talk about Lua. There's people working on Go. Rust, not so much, I can think of. Obviously, GCC for C and C++. Anywhere where there is a particular need for optimization, it's important to get engineering resources on that. So what happens in the neural connect? Are you having some meetings with some people you were only chatting with? Yes, you'll notice from the schedule there are four talks this year on OpenJDK, which I'm quite pleased. So there's Sean Kelly from Ampere. He was speaking yesterday about what he's doing for performance. There was Ninshain, who was talking about the scalable vector extensions in Java, and we were going with that. That was my talk. And then tomorrow there's Dimitri's talk on optimizing, analyzing, and performance on OpenJDK. So it's been very good. Is it ready for prime time? Can people just take the servers and be super happy? I believe so. There are people who do believe we have a solid runtime. In terms of performance, work loads are as variable as individuals. We will continue to optimize it, and if there are issues, I'm certainly getting contact with the community. Is there a lot of hardware acceleration going on and these ARM chips that helps? For Java in particular, hardware acceleration is an interesting area. Where we are mostly interested are, and the soundings in this work has been done is for, say, crypto, where there are Java APIs that do cryptography. And so we make sure that the instructions supported in ARM for crypto are actually used, especially defaults. So that is mostly cryptography. You can't just have a hardware accelerated Java stuff for all the rest of the Java. You have to think about what that would mean. Is there offload off to GPUs? Not so much just now. Java is very much used for, obviously, databases. There's transaction handling. So your traditional middleware, you're doing enterprise and all of that business. You're really looking at moving memory around and doing network operations. So the acceleration may be a little bit beyond Java itself. And to do software optimizations, does that mean you're very good at mathematics? Or what is involved? You're looking at the whole code and you kind of see what can be optimized. How does it work? It's a difficult area. In terms of mathematics, there are certainly areas where it's advisable to have a good basis in numerical analysis. So if you're optimizing mathematical functions, you need to be very solid in that. That's not something I have a background in. Not something I've touched. For, there's lots of aspects to this. So there's understanding what the CPUs are doing, what's bad, what's good there. So understanding how caches work, understanding pipelines, and what's significant there is quite important. Having the ability to analyze and actually drill down to something you can actually work with is where the skill comes. And I believe what we've got just now is pretty good that any further gains are going to be small incremental gains. That may be very difficult to measure, fractions of a percent. So it's a case of iterating over this, seeing what workloads there are, because your optimizations are very workload dependent very often. You optimize for what is common. All right, so hopefully the ARM servers are going to take over the whole market, right? And your software optimizations are going to be in there. Yeah, we'll make sure that that's not where the blockers are.