Announcement

Collapse
No announcement yet.

Java Performance: Ubuntu Linux vs. Windows Vista

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • #21
    real world realtime experience

    Thanks fort the article. quite interresting, I must say.
    Seems like you are mostly testing floating-point performance and quite small benchmarks. Java is, however, not so much used for that kind of applications. Rather, it is used for server-side request- and transaction processing where global optimization and integer performance is more important.

    I was recently to a talk by a leading vendor of stock-exchange software (actually, the IT department of a stock exchange). They do massively parallel request processing with real-time requirements. Often the stock exchanges cooperate, and the deal is closed (with earnings to the stock exchange company) on the server with the fastest response.

    After a very thorough selection process, they also ended up with java on linux as the technology of choice for this task, with superior global application performance being one of the reasons for that. After a lot of experiments, they found that the best performance with acceptable realtime requirements is achieved by using plain vanilla java and leaving most settings at default. Instead, they tweak the linux setup and kernel (gentoo). The most critical systems are run on "applicance-style" servers with no support for any other hardware or software other than the trading server software. I guess that means bash, ssh and java and not even usb support. Naturally, I haven't tried it myself, but as long as you are doing performance measurements I hope you do. I'm already looking forward to the article :-)

    Comment


    • #22
      Java server ergonomics

      As someone already said, you are benchmarking a server VM on Linux vs a client VM on Windows.
      Java has this "server ergonomics mode" that changes the default JVM configuration when a "server" enviroment is detected. On Linux, it only takes 2 cores and 2GB of memory, so basically on any decently recent computer running Linux you're in server mode by default.
      Vista is not considered, on the other side, a server OS, so there you're running a client VM.
      The difference you're seeing matches my experience, the server VM is 40% faster on heavy computation math. About the I/O tests, not sure, never run one that was I/O bound so not sure if the two VM have significant differences.

      For more information on server ergonomics see here (a bit old, but still applies):
      http://java.sun.com/docs/hotspot/gc5.0/ergo5.html

      If you want to see if you're in server ergonomics mode just run "java -version" from the command line. Here is what I get on XP:
      java version "1.6.0_10"
      Java(TM) SE Runtime Environment (build 1.6.0_10-b33)
      Java HotSpot(TM) Client VM (build 11.0-b15, mixed mode, sharing)

      And here is what I get on an Ubuntu 7.10 headless machine sitting below my desk:
      java version "1.6.0_03"
      Java(TM) SE Runtime Environment (build 1.6.0_03-b05)
      Java HotSpot(TM) Server VM (build 1.6.0_03-b05, mixed mode)

      Comment


      • #23
        I wonder if i'm the only one who has "problems" with java on linux when using kernelpreemption = voluntary.

        Comment


        • #24
          Phoronix discovered that the server HotSpot VM is about 60% faster* than the client VM.
          Guess what, this is true on both Windows and Linux.

          The real result is not "Linux is 60% faster than Windows" but "server VM is 60% faster than client VM".

          Anyone who has doubts, can repeat the tests on their own PC.

          * - depends on actual code; for Bork File Encryptor it is about 60%

          Comment


          • #25
            I guess benchmark was ment to compare stock configurations on both systems - in other words - what typical user will receive. That being said Linux user will most likely experience better overall performance while Windows user better GUI responsiveness.
            So, in general, conclusions drawn from this benchmark are perfectly valid.
            It would be more infotmative though to compare same JVM's on different platforms (OpenSolaris, Linux, Windows) with exact configurations (eliminate client/server differences), because so far this benchmark doesn't tell anything new really.
            Last edited by reavertm; 12-21-2008, 11:46 PM.

            Comment


            • #26
              I guess benchmark was ment to compare stock configurations on both systems - in other words - what typical user will receive..
              ...(etc etc and also several other comments by other authors)

              My point was that a more large-scale and "scientific" approach concluded that 1) the default settings actually are the "best" setttings for general performance with soft-realtime behaviour, and 2) settings and configurations of the operating system kernel (especially linux) is more important for java performance than fiddeling with java's own settings.

              I find that last point particularily interresting, as all other performance tests I've seen with java so far has neglected this issue completely.

              Comment


              • #27
                Originally posted by RealNC View Post
                Linux got owned where it matters the most: Graphics.
                Really? It depends for who... And there are much better Linux drivers than driver used in benchmark. And different versions of java were used, just think a little before you comment.

                @reavertm

                I completely agree with you. In my opinion such benchmarks are useless and misleading like one with Ubuntu vs Macos...
                Last edited by kraftman; 12-24-2008, 08:47 AM.

                Comment


                • #28
                  Questions about benchmark

                  I posted this in the JavaChampions mailing list, and got these questions:

                  "I wonder why he used JDK 1.6.0_10 on Ubuntu and 1.6.0_07 on Windows. There has been enough work on the _10 JIT that it's not a fair comparison.

                  Also, he does not say whether he is using the -server of -client hotspot compilers for these tests. It could be that Ubuntu defaulted to -server and Windows to -client, which would explain the results..."

                  I think these are fair questions, and I'd like to know the answers so I can report back.

                  Thanks,

                  Cay

                  Comment


                  • #29
                    I did some testing on my own. Having run tests with -server switch on windows shows great improvement. The test was multithreaded heavy math calculations.

                    Linux was latest kernel from Ubuntu 9.04 (tried both server and desktop flavor) and best result on Vista using SUN Java 6_13 was 15% better than best result on Linux using Open JVM.

                    Solaris on the other hand was about 25% faster using 64 bit java 1.5

                    Regards
                    Alex

                    Comment


                    • #30
                      Originally posted by akpch View Post
                      I did some testing on my own. Having run tests with -server switch on windows shows great improvement. The test was multithreaded heavy math calculations.

                      Linux was latest kernel from Ubuntu 9.04 (tried both server and desktop flavor) and best result on Vista using SUN Java 6_13 was 15% better than best result on Linux using Open JVM.

                      Solaris on the other hand was about 25% faster using 64 bit java 1.5

                      Regards
                      Alex
                      If you want to compare OS'es not different versions of java use the SAME java on each OS...

                      Comment

                      Working...
                      X