Discussions

News: Do You Know How to Optimize Your JVM? Video Tech Brief

  1. Dr. Holly Cummins from IBM talks about the performance characteristics of Java virtual machines and dispels a few myths about run-time behaviour, such as "long GC pauses are bad for my application". She explains why this view is inaccurate and how, overall, this may be better overall. Holly also tells us about the Extensible Verbose Toolkit, IBM's garbage collection analysis tool, and how to use it for optimizing IBM Java virtual machines. Playback time: 6'41" - click here if you can't play the video. Holly is a tooling developer within the IBM Java Technology Centre. She develops garbage collection analysis tools, building on her experience working as a performance engineer within the garbage collection development team. Holly has been with IBM for five years. Before joining IBM she completed a doctorate in quantum computation at the University of Oxford. Watch other Tech Briefs

    Threaded Messages (43)

  2. What happened to writing? What value does a video like this provide for technical information? Does it show the a cross-section of the JVM or something?
  3. What happened to writing? What value does a video like this provide for technical information? Does it show the a cross-section of the JVM or something?
    The video is a quick overview of the topics that Holly spoke at during JavaZone a couple of weeks ago; she discusses a few interesting topics regarding garbage collection and performance tuning, and explains when and how to use IBM's EVTK and other tools, and when they apply. We ask our speakers to provide a list of links so that we can enrich the video posts. Some times they are too busy and can't get the external links in time to us, so all the information we have is what's on the video itself. In other cases, like with Alberto Savoia from Agitar, the speaker provided additional information, tools, downloads, etc. that were included in the post. Cheers, E Non-stop action. A vulnerable hero. A quest to save the world. It's the most exciting novel of the decade: The Tesla Testament +1 415 387-3800 voice ISBN: 1-4116-7317-4 - BISAC: FIC031000
  4. Brief summary[ Go to top ]

    Here is a quick summary of the video: - GC is not a negative performance impact - increased pause times may actually indicate better performance - tools you can use - verbose GC (but look at more than just pause times) - EVTK (IBM tool to analyze verbose GC, part of ISI, targeted for IBM but will work with others, free but not OSS) - performance is very sensitive to the RE, so don't compare apples/oranges - you would use the same GC strategies regardless of RE EVTK: http://tinyurl.com/2pskk2
  5. Re: Brief summary[ Go to top ]

    Hi Andrew! Thanks for the summary. I was a bit disappointed that these tools are only available for the IBM JVMs. While it's understandable to some degree, it would be great if they were available for Hotspot because even IBM-based deployments will favour Hotspot in some scenarios. Last, the performance characteristics of IBM's vs. Sun's JVMs are quite different, especially when it comes to GC strategy and JIT. Cheers, E Non-stop action. A vulnerable hero. A quest to save the world. It's the most exciting novel of the decade: The Tesla Testament +1 415 387-3800 voice ISBN: 1-4116-7317-4 - BISAC: FIC031000
  6. Re: Brief summary[ Go to top ]

    "GC is not a negative performance impact" What a load of crap (pardon my Irish) and as usual such statements are made without very little context. A pause in one particular node/thread is a distributed environment could quite easily result in a performance impact in a clustered environment were external resource locks are held and there is a dependency between distributed execution units. Yes GC can sometimes be used inadvertently as a throughput throttling mechanism (reducing concurrency) that positively improves performance but I would hope people would prefer more deterministic mechanisms. More than likely excessive (prolonged) GC activity will have a negative impact on the runtime and lead to a a breach in a SLA which in most cases uses maximum values in deriving contractual obligations (because this is how users make judgments on the performance of an application). By the way most commercial performance tools can associated GC times (pauses) with particular transactions so that you do not spend time looking at why a few lines of code could in fact take 10 or more seconds. regards, William
  7. GC pauses can not be ignored[ Go to top ]

    How true, the SLA (Service Level Agreement with a 3rd party) part, and distributed scenario are intolerant of long Full GC pauses. I'm so glad someone brought that up. We load our web servers (that are usually tolerant to some dealys, as users can wait or, at worst, reload the page) so that Full GC pause does not exceed 5 seconds. For middle-tier services the threshold is even lower. 5 second GC there would cause a momentary overload soon thereafter... Maybe such advice to ignore longer GCs is a sign that n-tier systems are a thing of a past (and so delays in middle tier will not snowball into microscopic service outage), but the SLA part still holds true.
  8. Re: Brief summary[ Go to top ]

    "GC is not a negative performance impact"

    What a load of crap (pardon my Irish) and as usual such statements are made without very little context.
    So I got home and watched it. 6+ minutes to get 30 seconds worth of information if it were in writing. Not really an efficient way to get information. I'd like to see the longer talk (or read it please). But on the face of it, it seems to me that she is making a pretty common and fundamental logical error. It's very similar to the one that is made with respect to bandwidth and leads to a number of poor choices: assuming that because bandwidth is high, network communication is negligible. The problem is that bandwidth helps increases overall rate of transmission but doesn't mean that each communication is any faster. It's kind of analogous to determining that a freight-train is faster than a jet because the pounds per mile per hour is higher for the train. Relating this back to the GC pauses, I assume that she's referring to the overall throughput of the system. As long as you are doing asynchronous work I completely agree that GC pauses are not something to worry about. But if you are executing a transaction on a web page and the user's page times out, then you have a problem, no matter what your overall throughput is, you may lose the customer (and perhaps a lot more than one.) Another area where long GC pauses are unacceptable is in desktop software. Such applications tend to have a lot of 'think time' and should try to do GC during that time, not when the user is trying to do something. I can imagine a lot of gamers would be anmoyed if they are getting shot full of holes in an online game while their local VM stuck in a GC pause. I could also quibble with the use of the term memory-leak with respect to Java but I'm pretty sure she meant space-leak.
  9. Re: Brief summary[ Go to top ]

    I'd like to see the longer talk (or read it please).
    You can see it, at least - and the slides are already available. The videos are going to be put op on http://www.javazone.no in a couple of weeks - the videos are in post-processing now. The direct link to this talk is http://www4.java.no/web/show.do?page=92&articleid=5475 - there will be a video link in addition to the pdf link there in a while. Geir
  10. Re: Brief summary[ Go to top ]

    "GC is not a negative performance impact"

    What a load of crap
    William, this is a bit harsh. We both know that if GC is a problem it is most likely an indication of some deeper fundamental flaws in the application. Long pauses are generally caused by your application hanging onto to much stuff. This is improper scoping, incorrect use of caching, accidental use of caching, slow memory leaks (or space leaks or inadvertently retained object or how ever you want to label it), loitering objects and so on. These things lead to long pause times. Combine this with underlying points of serialization that span the cluster and lets face it, all you have is a mess. I'm not sure why you are trying to kill the messenger (GC that is, not Holly). We'd do better to listen to the messenger and eliminate the points of serialization, narrow the scope of your variables, question all uses of cache, objects are cheap to create and almost free to GC in Eden so let them die early. All GC is asking is that we use heap more efficiently or effectively or one of these ively words Kirk
  11. Re: Brief summary[ Go to top ]

    Long pauses does not necessarily mean your application is hanging onto too much memory for too long long a period. A long pause can easily occurred post (I said post) the execution of a query that that brings in the contents of a whole database table or large digital assets. Whilst such a large query is executing and the objects are being created from the result set and added to a collection for post processing at higher levels in the workflow you are creating a lot a large number of temporary objects that do not easily get reclaimed as quickly as one would expect because of the duration of the request processing which grows as more objects are created and more gc cycles are executed in an attempt to reclaim some memory. Unfortunately when GC does really kick in it tends to impact the other requests (with smaller working memory requirements) coming in afterwards. By the way I did listen to the interview and she was very clear in her statement about the positive benefits in GC. Yes tidying your desk up does help before you start working but I have never considered such an activity in a positive light. It's a necessity when the mess has been created but ideally I would like to reduce the mess and limit my time in preparation of work. Sorry I am not trying to kill the message(r) but saying "GC is not a negative performance impact" is likely to lead to a number of less experienced development teams and performance engineers completely ignoring this important symptom. Look I have seen cases were adding instrumentation to profile an application improved the overall performance of the application but again this was because the overhead (no matter how small) added a sufficient delay to processing queues which alleviated a serious contention problem elsewhere in the system. Did I then proclaim that instrumentation improves performance? NO. It most cases it only improves performance when the data collected and performance analysis lead to changes in the software. regards, William
  12. Re: Brief summary[ Go to top ]

    Long pauses does not necessarily mean your application is hanging onto too much memory for too long long a period. A long pause can easily occurred post (I said post) the execution of a query that that brings in the contents of a whole database table or large digital assets.
    I think we can edge case each other to death on this subject which is why I tried to qualify my position with a "not always". I don't doubt what you are seeing out in the wild. However my point is; I think you are too quick in pointing at GC when you should really be looking at the application. The message GC is giving you is that these are very very expensive operations and if you continue to ask me to perform them.. ok but it is going to cost you. Find another way to do it or live with the expense.
    saying "GC is not a negative performance impact" is likely to lead to a number of less experienced development teams and performance engineers completely ignoring this important symptom
    GC is a cost that one must pay for getting work done. And I think that is a subtle point in the message. So if you can equate cost to inefficiency, higher GC costs can be thought of as an indirect measure of efficiency. If GC costs are too high you need to look at the application. Blaming GC for poor performance is just more finger pointing.
    I have seen cases were adding instrumentation to profile an application improved the overall performance of the application but again this was because the overhead (no matter how small) added a sufficient delay to processing queues which alleviated a serious contention problem elsewhere in the system
    I've got some wonderful graphics that demonstrate this effect. I've got an exercise in my performance tuning course to demonstrate what this looks like and how properly setting thread pools sizes can help avoid one to thrash on an over utilized resource. Certainly you can use GC to achieve the same effect. However it will all come out in increased latency in user response times. It means you've got to dig in, find out how to reduce the pressure on the bottleneck and if the bottleneck is GC that means you need to find out who is creating the pressure and find a way to release it. IOWs, GC isn't the problem, it is only a symptom. I firmly believe that we are in agreement on this point. Kind regards, Kirk
  13. Re: Brief summary[ Go to top ]

    I would agree w/Kirk here that that's a bit too harsh. I watched Holly's presentation at JavaZone and it was one of the best from the technical content standpoint. I was actually quite surprised that I've learned so much about GC (I thought I knew pretty much everything :-) Most of the points Holly made required a bit of a thought process because she often rushed through them and some of them are very subtle and not immediately intuitive. Anyways, it was a great technical talk in my estimation. P.S. It is always refreshing when technology field attracts cute and smart gals (especially presenting on the conference where man account for 99% of population). Best, Nikita Ivanov. GridGain - Grid Computing Made Simple
  14. Re: Brief summary[ Go to top ]

    Most of the points Holly made required a bit of a thought process
    More fodder for the fire, a message from Gil Tene from Azul on GC and Escape analysis and the cost of GC.
  15. Re: Brief summary[ Go to top ]

    I was not really harsh on Holly and I think it would be better if we all just ignored the fact that the interviewee is a female with blue hair. You are all starting to sound like stereotype engineers, ;-). My initial post reflected my opinion of the summary statements that the editor also sensationalized with the "dispel myth" phrase that is so common today when people look to grab the attention of persons interested in performance. By the way I think it is wrong to use myth in this context as most people view a view as something that was never true when in fact this is not the case. Many myths supposedly dispelled by "performance experts" did exist, still exist and more than likely will re-emerge again when advances are made in areas in unequal amounts. regards, William
  16. Re: Brief summary[ Go to top ]

    I was not really harsh on Holly and I think it would be better if we all just ignored the fact that the interviewee is a female with blue hair. You are all starting to sound like stereotype engineers, ;-).
    Well, I think you got me there :-) Best, Nikita Ivanov. GridGain - Grid Computing Made Simple
  17. Re: Brief summary[ Go to top ]

    It is always refreshing when technology field attracts cute and smart gals (especially presenting on the conference where man account for 99% of population).
    Yeah it's weird how more women don't want to be engineers and hang out with a bunch of inept dorks with limited female contact. Judging female engineers based on whether they are 'cute' or not isn't going to encourage more females to be engineers. I'm going to go out on a limb and guess that Holly Cummings didn't get a doctorate in order to win the Miss Geek-Universe title.
  18. Re: Brief summary[ Go to top ]

    More than likely excessive (prolonged) GC activity will have a negative impact on the runtime and lead to a a breach in a SLA which in most cases uses maximum values in deriving contractual obligations
    Very well put, and very well anchored in reality. This goes beyond SLA:s though, because the user who has to wait 30 seconds once will make a lot more noice than the 2000 who has to wait an extra 20 milliseconds for every transaction.
  19. Re: Brief summary[ Go to top ]

    "GC is not a negative performance impact"

    What a load of crap (pardon my Irish) and as usual such statements are made without very little context.
    Looking at the actual slides (i.e. not watching the video), it turns out that what she actually said was that GC was "not JUST a performance cost". Her point was that GC should not only be considered under a negative light, since it can actually provide some performance benefits in the form of faster allocation & freeing of memory, as compared to the overhead of malloc/free. She cited a couple of studies where GC was taken out of the language and performance differences studied. She also stated that GC can help with memory fragmentation and contention (thread-local heaps). etc... Didn't look like a load of crap to me.
  20. Re: Brief summary[ Go to top ]

    Tony, Could you at least look back through the thread messages and tell us all when the slides were linked to. Was it before or after my initial posting? I have posted above and before you posted the assessment reflected more the manner of the summary and the sensationalization of a statement that was made during the interview with out little context. By the way she said very clearly that in relation to GC being a negative performance impact a that "it could not be further from the truth". This is not the same as "not JUST a performance cost" and I find it hard to see how one could miss this segment within the interview even if you are not a native english speaker. Again such statements whether made in an interview or posted on a thread or printed in a slide should be framed a context otherwise they are meaningless and even worse misleading. William
  21. Re: Brief summary[ Go to top ]

    By the way she said very clearly that in relation to GC being a negative performance impact a that "it could not be further from the truth". This is not the same as "not JUST a performance cost" and I find it hard to see how one could miss this segment within the interview even if you are not a native english speaker.
    As I stated already, I didn't watch the video. Slide 13's title is "Garbage Collection - not just a performance cost". I was commenting the slides, not the video. Although I was responding to your post (the "load of crap" statement), I was also addressing the lack of context of the brief summary posted at the beginning of the thread, by trying to provide that context and nuance the absolute statements made in that short summary. Not sure why you chose to be offended, or is it only my impression?
  22. Hair raising?[ Go to top ]

    But her hair is .... ermmmm BLUE.
  23. Re: Hair raising?[ Go to top ]

    But her hair is .... ermmmm BLUE.
    So? Mine is ... errmmmmmm BROWN.
  24. Re: Hair raising?[ Go to top ]

    But her hair is .... ermmmm BLUE.
    So? Mine is ... errmmmmmm BROWN.
    Mine **was** brown. (OK, I still have a few). Guido
  25. Re: Hair raising?[ Go to top ]

    Mine **was** BLUE, fortunately, there are no pictures to prove it or derail my aspirations for the Senate ;-)
  26. Re: Hair raising?[ Go to top ]

    But her hair is .... ermmmm BLUE.
    So? Mine is ... errmmmmmm BROWN.
    Mine **was** brown. (OK, I still have a few).
    mine is black,"loced" like bob Marely with a some grey :). good video, good information Dr. thx.
  27. Re: Hair raising?[ Go to top ]

    I got to talk to her a bit at JavaZone about her work at IBM/Hursley on the IBM JVM. Very interesting stuff, and she really enjoys the C++ side of it (which I can totally respect, having personally fled from C++ as fast as I could). While I find the GC algorithms to be very interesting to hear about, I am glad that someone else is writing them. The main benefits of all this work is that we should be able to choose between best overall throughput (with longer GC pauses as a possible side effect) versus predictably low pause (with lower overall throughput as a possible side effect).
    But her hair is .... ermmmm BLUE.
    She's cool. Ask Kirk .. he couldn't quite keep up ;-) Peace, Cameron Purdy Oracle Coherence: The Java Data Grid
  28. Re: Hair raising?[ Go to top ]

    I will probably never be interviewed by TSS for saying this but the real problem with this video and many of the other videos I have seen posted here is that the interviewer did not interview Dr. Cummins. When she made such controversial statements related to GC it should have been followed up with probing questions that would have clarified the context and reasoning. It was like the interviewer was asking the questions but not listening or worse not understanding the answers. Was the interviewer in the same room? Were the questions pre-recorded and feed into a text-to-voice translation system? Was the interview too busy thinking about what blue hair would look like on him? The clue was when he said "What are the bits you were talking about?". Bits? William
  29. Re: Hair raising?[ Go to top ]

    But her hair is .... ermmmm BLUE.
    What's wrong ? She works for Big Blue. ;-)
  30. Hair raising?[ Go to top ]

    Burn the witch! ;)
  31. So will you guys do an interview with homer as well ?
  32. So will you guys do an interview with homer as well ?
    hahahaha. That's the funniest thing I've read in a LONG time. Thanks. :)
  33. Video vs. text[ Go to top ]

    I agree with an earlier poster that video is being pushed all over the place in most inappropriate ways. I am not an American teenager plagued by ADD and incapable of swallowing anything other than a sound byte. I am a middle-aged developer/architect competent at reading and writing, and I hold that text is still by far the most economic and useful way to convey information on the Web. I can almost always live quite well without the sight and sound of some unkempt geek hemming and hawing into a microphone in some vaguely foreign accent. That said, I hope I don't come on as too unprofessional if I say that in this particular case I'm quite willing to forget my disapproval for video. *smile* Still, I was grateful to the poster who provided a summary. I'm fiddling with Linux on VMWare Server, and it seems there's no sound driver. Finally, for the benefit of the other poster who bemoaned the lack of EVTK for HotSpot: If the summary is correct then EVTK will work with other JVMs, hopefully including HotSpot.
  34. Re: Video vs. text[ Go to top ]

    I agree with an earlier poster that video is being pushed all over the place in most inappropriate ways. I am not an American teenager plagued by ADD and incapable of swallowing anything other than a sound byte. I am a middle-aged developer/architect competent at reading and writing, and I hold that text is still by far the most economic and useful way to convey information on the Web. I can almost always live quite well without the sight and sound of some unkempt geek hemming and hawing into a microphone in some vaguely foreign accent.
    +1 There is another aspect to take care. The web might happen to be visited by people that are not of english mother tongue. They might be able to read english but might have troubles in understanding speech. Guido
  35. Re: Video vs. text[ Go to top ]

    I agree with an earlier poster that video is being pushed all over the place in most inappropriate ways. I am not an American teenager plagued by ADD and incapable of swallowing anything other than a sound byte. I am a middle-aged developer/architect competent at reading and writing, and I hold that text is still by far the most economic and useful way to convey information on the Web. I can almost always live quite well without the sight and sound of some unkempt geek hemming and hawing into a microphone in some vaguely foreign accent.
    I'm also "middle aged" but this is the 21st century and we've got YouTube, Google, FaceBook etc. and have to go with the times. I'm fortunate enough to be English and have the luxury of being able to understand Canadians (of which Holly is a fine example). I think posting videos, as a compliment to text postings, is a great way for others to see what was being said at these conferences. Without multi-media we might as well go back into the 70s and 80s, this posting has already knocked up a huge amount of text. If you hadn't seen Holly you might have just thought she (or even "he") is just another clever middle-aged IBM developer, now you know she's a she, quite cute and has blue hair, +1 for videos :-) Getting back to technology, the slides are actually quite good and worth a read. In my own experience of high performance computing the GC is a serious hindrance and limits Java's success in the dealing rooms. Moving away from the latency critical applications, bad GC pauses are usually an indication that you've made some fundamental programming errors, as Holly points out, in her slides, memory allocation is a fact of life and whether you do it automatically or manually it has to be done. -John-
  36. Re: Video vs. text[ Go to top ]

    I'm fortunate enough to be English and have the luxury of being able to understand Canadians (of which Holly is a fine example).
    I live about 20 miles or so from Canada and I'm pretty sure that's not Canadian accent. I didn't hear an 'Eh' in the interview. She sounds British to me but I have a hard time distinguishing between accents from Zimbabwe or South Africa and Britain.
  37. Re: Video vs. text[ Go to top ]

    I'm fortunate enough to be English and have the luxury of being able to understand Canadians (of which Holly is a fine example).


    I live about 20 miles or so from Canada and I'm pretty sure that's not Canadian accent. I didn't hear an 'Eh' in the interview. She sounds British to me but I have a hard time distinguishing between accents from Zimbabwe or South Africa and Britain.
    I had a hard time with it also and I am Canadian. But she seems to have started picking up the UK accent after having lived there for a few years. But more to the point, the content that John has kindly linked to, tells a story that is more to the point than.. GC is bad. The thing to remember (which John pointed out), allocation happens no matter what language/environment you are working in. With GC you actually get to see just how badly you are abusing memory. Not only that, you get to do something about it. You maybe able to change VMs. You can change GC algorithms. Or better yet you can look at your application to see why it isn't playing nice. Eugene is (by his own admission), not a specialist in GC technologies. This makes it especially difficult to conduct a good interview on video or podcast in one continuous take. All I can say is that after doing them myself, I have a new found appreciation for those that do this on a regular basis. William, next time we meet up I'll invite you to conduct one 8^). BTW, I have a more indepth interview with Holly coming up. It is just in the process of being transcribed for all you still into 70s technology ;-) -- Kirk
  38. Escaped from Camden market[ Go to top ]

    Guys and Ladies Just pay attention to this long-long postlist She achieved her goal indeed
  39. Is Holly married?[ Go to top ]

    She's so hot! I want her to have my baby!
  40. Re: Is Holly married?[ Go to top ]

    She's so hot! I want her to have my baby!
    And what makes you thing that she would want to have your baby? And what this has to do with her technical merits anyway? This is not an singles meeting site, so please keep your pants on, Romeo.
  41. nice hair, by the way[ Go to top ]

    blue hair and black clothes truly an IBM girl ;-) but of course, a phd in Oxford is certainly impressive
  42. ;D[ Go to top ]

    Is she married? I loved her blue hair, her style rocks :P e-mail or gtfo
  43. Any documents?[ Go to top ]

    It seems interesting, but I cant play the video and cant access http://eugeneciurana.com/site.php?page=musings&contentTag=TSS-video.html#JavaPerformanceCummins. Are there documents about this?
  44. JVM Tuning and Patterns[ Go to top ]

    Is there a good book or a link to great reference material for troubleshooting JVM problems with the Webpshere Tools such as Heap Analyzer.? I've seen all the tools they have but how do you interpret the data being displayed? How do you know what parameters to tune in the JVM? I've seen some material on their developer works site but would like to see more information on it.