Announcement

Collapse
No announcement yet.

SPARC optimizations

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

  • SPARC optimizations

    Hi

    Today at work I wanted to benchmark a new Sun SPARC server we received and PTS came to mind as something for me to try. The server is equipped with two 1.4 GHz T2+ 8 core processors, with a total of 128 vCPUs/threads and 64 GB RAM. The server is running OpenSolaris 2009.06.

    Due to the excessive amount of CPU threads available, I wanted to run the "multicore" test suite on the server, but to my big disappointment some of the tests doesn't seem to be multi threaded, and therefore runs quite slowly along at 1.4 GHz.

    I was wondering if I could be of some assistance with optimizing the tests in any way for running on SPARC servers, since I haven't been able to find any mention of SPARC based systems on global.phoronix-test-suite.com or here in the forums. I doubt that many people have access to SPARC based systems due to their price, and the fact that they are best used with certain workloads.

    As a first step, I am going to try the 2.2 alpha 2 release instead, to see if it has any improvements over the 2.0 version, but let me know if there is any thing you would like tested, since I can't really provide shell access to the server :P

    /Tenzer

  • #2
    Here's an example of some of the numbers I received from the "multicore" suite. I have compared it to the systems on the following page: http://global.phoronix-test-suite.co...283-29988-5582

    Apache compilation: 136 seconds (much slower - same goes for PHP)

    7-Zip compression: 22000 MIPS (faster than any of the systems on the page)

    OpenSSL: 136 s/s (about average, unfortunately the embedded cryptographic accelerators doesn't support RSA over 2048 bit atm :/)

    C-Ray: 36.3 seconds (as far as I can see, it's a bit faster than the other systems on the above page)

    POV-Ray: Don't know yet. I has been running for about an hour now, and only runs on one thread :/

    So for what I can get out of these results, not all of them are multi threaded, and hence doesn't belong in the "multicore" suite (imo). It may also be a matter of using the right flags during the testing, which is why I made this thread in the first place

    Comment


    • #3
      Can you provide the outputs from:

      phoronix-test-suite system-info

      and

      phoronix-test-suite diagnostics

      The tests should be multi-threaded, unless PTS is detecting your system as a single core or the incorrect core count.
      Michael Larabel
      http://www.michaellarabel.com/

      Comment


      • #4
        Originally posted by Michael View Post
        Can you provide the outputs from:

        phoronix-test-suite system-info
        Sure:
        Code:
        =====================================
        Phoronix Test Suite v2.0.0 (SANDTORG)
        System Information
        =====================================
        
        Hardware:
        Processor: Unknown @ 1.41GHz (Total Cores: 128), Motherboard: Unknown, Chipset: Unknown, System Memory: 32544 MB, Disk: 83GB
        
        Software:
        OS: Unknown 5.11, Kernel: 5.11 (sun4v), Display Server: X.Org Server 1.5.3, OpenGL: N/A, Compiler: N/A, File-System: zfs, Screen Resolution: Unknown
        Originally posted by Michael View Post
        and

        phoronix-test-suite diagnostics
        Code:
        =====================================
        Phoronix Test Suite v2.0.0 (SANDTORG)
        Diagnostics Dump                     
        =====================================
        
        PTS_PATH = /usr/share/phoronix-test-suite/
        PTS_MODE = CLIENT                         
        PTS_LIBRARY_PATH = /usr/share/phoronix-test-suite/pts-core/library/
        PTS_VERSION = 2.0.0                                                
        PTS_CODENAME = SANDTORG                                            
        PTS_MODULE_UNLOAD = PTS_MODULE_UNLOAD                              
        PTS_QUIT = PTS_QUIT                                                
        PTS_CORE_PATH = /usr/share/phoronix-test-suite/pts-core/           
        PTS_USER_DIR = /root/.phoronix-test-suite/                         
        XML_DISTRO_DIR = /usr/share/phoronix-test-suite/pts/distro-xml/    
        SCRIPT_DISTRO_DIR = /usr/share/phoronix-test-suite/pts/distro-scripts/
        ETC_DIR = /usr/share/phoronix-test-suite/pts/etc/                     
        MODULE_DIR = /usr/share/phoronix-test-suite/pts-core/modules/         
        MODULE_LOCAL_DIR = /root/.phoronix-test-suite/modules/                
        RESULTS_VIEWER_DIR = /usr/share/phoronix-test-suite/pts-core/results-viewer/
        TEST_LIBRARIES_DIR = /usr/share/phoronix-test-suite/pts-core/test-libraries/
        STATIC_DIR = /usr/share/phoronix-test-suite/pts-core/static/
        OPTIONS_DIR = /usr/share/phoronix-test-suite/pts-core/options/
        XML_PROFILE_DIR = /usr/share/phoronix-test-suite/pts/test-profiles/
        XML_PROFILE_CTP_BASE_DIR = /usr/share/phoronix-test-suite/pts/base-test-profiles/
        XML_SUITE_DIR = /usr/share/phoronix-test-suite/pts/test-suites/
        TEST_RESOURCE_DIR = /usr/share/phoronix-test-suite/pts/test-resources/
        TEST_RESOURCE_CTP_BASE_DIR = /usr/share/phoronix-test-suite/pts/base-test-resources/
        XML_PROFILE_LOCAL_DIR = /root/.phoronix-test-suite/test-profiles/
        XML_SUITE_LOCAL_DIR = /root/.phoronix-test-suite/test-suites/
        TEST_RESOURCE_LOCAL_DIR = /root/.phoronix-test-suite/test-resources/
        PTS_TEMP_DIR = /tmp/phoronix-test-suite/
        PHP_BIN = php
        PTS_INIT_TIME = 1253123579
        PHODEVI_AVOID_CACHE = 0
        PHODEVI_STAND_CACHE = 1
        PHODEVI_SMART_CACHE = 2
        OPERATING_SYSTEM = Solaris
        OS_PREFIX = solaris_
        TEST_ENV_DIR = /root/.phoronix-test-suite/installed-tests/
        SAVE_RESULTS_DIR = /root/.phoronix-test-suite/test-results/
        PTS_DOWNLOAD_CACHE_DIR = /root/.phoronix-test-suite/download-cache/
        PTS_USER_LOCK = /root/.phoronix-test-suite/run_lock
        PTS_STARTUP_TASK_PERFORMED = 1
        PTS_USER_AGREEMENT_CHECK = bd84cf4823e94021056fa8d64e4432b0
        
        End-User Run-Time Variables:
        VIDEO_RESOLUTION = Unknown
        VIDEO_CARD =
        VIDEO_DRIVER =
        OPERATING_SYSTEM = Unknown 5.11
        PROCESSOR = Unknown @ 1.41GHz (Total Cores: 128)
        MOTHERBOARD = Unknown
        CHIPSET = Unknown
        KERNEL_VERSION = 5.11
        COMPILER = N/A
        HOSTNAME = (anonymous)
        
        Environmental Variables (accessible via test scripts):
        PTS_VERSION = 2.0.0
        PTS_CODENAME = SANDTORG
        PTS_DIR = /usr/share/phoronix-test-suite/
        PHP_BIN = php
        NUM_CPU_CORES = 128
        NUM_CPU_JOBS = 256
        SYS_MEMORY = 32544
        VIDEO_MEMORY = 64
        VIDEO_WIDTH = -1
        VIDEO_HEIGHT = -1
        VIDEO_MONITOR_COUNT = 1
        VIDEO_MONITOR_LAYOUT = CENTER
        VIDEO_MONITOR_SIZES = Unknown
        OPERATING_SYSTEM = unknown
        OS_VERSION = 5.11
        OS_ARCH = sun4v
        OS_TYPE = Solaris
        THIS_RUN_TIME = 1253123579
        Btw, I forgot that we the server only has 32 GB ram in it at the moment, but that should still be sufficient for the tests

        Comment


        • #5
          Eww, not much of the hardware is being detected. Though I suspect since you're running (old) Solaris where all of my work on the Sun support has been with OpenSolaris and the newer device information access. But it is detecting 128 CPU cores so it should be running multi-threaded, though it may due to the compiler not optimizing well for the hardware perhaps.
          Michael Larabel
          http://www.michaellarabel.com/

          Comment


          • #6
            Originally posted by Michael View Post
            Though I suspect since you're running (old) Solaris where all of my work on the Sun support has been with OpenSolaris and the newer device information access.
            The server is running OpenSolaris 2009.06 (OS_VERSION = 5.11), have you been testing against 2010.02?

            Comment


            • #7
              Originally posted by Tenzer View Post
              The server is running OpenSolaris 2009.06 (OS_VERSION = 5.11), have you been testing against 2010.02?
              Hmm, sorry, for some reason I thought you were running Solaris 10. Though I think I might know for some of the hardware detection problems...

              /usr/ddu/bin/i386/dmi_info

              In /usr/ddu/bin/ what is the folder name for sparc?
              Michael Larabel
              http://www.michaellarabel.com/

              Comment


              • #8
                Originally posted by Michael View Post
                In /usr/ddu/bin/ what is the folder name for sparc?
                It is simply named "sparc": /usr/ddu/bin/sparc/dmi_info

                Comment


                • #9
                  Okay, what happens if you apply a patch like this (I am on 2.2, but this should still work with 2.0):

                  Code:
                  diff -Naur phoronix-test-suite.orig/pts-core/library/pts-functions_system_parsing.php phoronix-test-suite/pts-core/library/pts-functions_system_parsing.php
                  --- phoronix-test-suite.orig/pts-core/library/pts-functions_system_parsing.php    2009-09-15 20:06:00.000000000 -0500
                  +++ phoronix-test-suite/pts-core/library/pts-functions_system_parsing.php    2009-09-16 13:17:22.000000000 -0500
                  @@ -648,7 +648,7 @@
                       // Read Sun's Device Driver Utility for OpenSolaris
                       $values = array();
                   
                  -    if(is_executable(($dmi_info = "/usr/ddu/bin/dmi_info")) || is_executable(($dmi_info = "/usr/ddu/bin/i386/dmi_info")))
                  +    if(is_executable(($dmi_info = "/usr/ddu/bin/dmi_info")) || is_executable(($dmi_info = "/usr/ddu/bin/i386/dmi_info")) || is_executable(($dmi_info = "/usr/ddu/bin/sparc/dmi_info")))
                       {
                           $info = shell_exec($dmi_info . " " . $args . " 2>&1");
                           $lines = explode("\n", $info);
                  Does it then work? You may need to "rm -f ~/.phoronix-test-suite/phodevi.cache" after doing that, but then is more of the system-info filled in?
                  Michael Larabel
                  http://www.michaellarabel.com/

                  Comment


                  • #10
                    Originally posted by Michael View Post
                    Okay, what happens if you apply a patch like this...
                    Nothing changed with the path, but that is probably due to the fact that /usr/ddu/bin/i386/dmi_info also exists:
                    Code:
                    ls -lR /usr/ddu/bin/
                    /usr/ddu/bin/:
                    total 3
                    drwxr-xr-x 2 root bin 6 Sep  1 15:46 i386
                    drwxr-xr-x 2 root bin 5 Sep  1 15:46 sparc
                    
                    /usr/ddu/bin/i386:
                    total 971
                    -rwxr-xr-x 1 root bin 894064 Sep  1 15:46 all_devices
                    -rwxr-xr-x 1 root bin  11100 Sep  1 15:46 bat_detect
                    -rwxr-xr-x 1 root bin  38408 Sep  1 15:46 dmi_info
                    -rwxr-xr-x 1 root bin  21948 Sep  1 15:46 hd_detect
                    
                    /usr/ddu/bin/sparc:
                    total 942
                    -rwxr-xr-x 1 root bin 889244 Sep  1 15:46 all_devices
                    -rwxr-xr-x 1 root bin  15452 Sep  1 15:46 dmi_info
                    -rwxr-xr-x 1 root bin  27196 Sep  1 15:46 hd_detect
                    I can see that the sparc folder also exists on x86 installations of OpenSolaris 2009.06. However, if I put the sparc path in front of i386, then the output is correct:
                    Code:
                    =====================================
                    Phoronix Test Suite v2.0.0 (SANDTORG)
                    System Information
                    =====================================
                    
                    Hardware:
                    Processor: UltraSPARC-T2+ sparcv9 @ 1.41GHz (Total Cores: 128), Motherboard: Unknown, Chipset: Unknown, System Memory: 32544 MB, Disk: 83GB
                    
                    Software:
                    OS: Unknown 5.11, Kernel: 5.11 (sun4v), Display Server: X.Org Server 1.5.3, OpenGL: N/A, Compiler: N/A, File-System: zfs, Screen Resolution: Unknown
                    You would probably have to check if it's a x86 or sparc server before running dmi_info...

                    Comment


                    • #11
                      Okay, will add check in pts-core for it. Can you email to michael at phoronix your full dmi_info output? Wondering why your motherboard/chipset aren't being detected.
                      Michael Larabel
                      http://www.michaellarabel.com/

                      Comment


                      • #12
                        FYI, this is the patch that should fix the detection, which will be in GIt once I am back in the office.

                        Code:
                        diff -Naur phoronix-test-suite.orig/pts-core/library/pts-functions_system_parsing.php phoronix-test-suite/pts-core/library/pts-functions_system_parsing.php
                        --- phoronix-test-suite.orig/pts-core/library/pts-functions_system_parsing.php    2009-09-16 13:17:22.000000000 -0500
                        +++ phoronix-test-suite/pts-core/library/pts-functions_system_parsing.php    2009-09-16 13:44:46.000000000 -0500
                        @@ -648,7 +648,16 @@
                             // Read Sun's Device Driver Utility for OpenSolaris
                             $values = array();
                         
                        -    if(is_executable(($dmi_info = "/usr/ddu/bin/dmi_info")) || is_executable(($dmi_info = "/usr/ddu/bin/i386/dmi_info")) || is_executable(($dmi_info = "/usr/ddu/bin/sparc/dmi_info")))
                        +    if(in_array(phodevi::read_property("system", "kernel-architecture"), array("i686", "x86_64")))
                        +    {
                        +        $dmi_info = "/usr/ddu/bin/i386/dmi_info";
                        +    }
                        +    else
                        +    {
                        +        $dmi_info = "/usr/ddu/bin/sparc/dmi_info";
                        +    }
                        +
                        +    if(is_executable($dmi_info) || is_executable(($dmi_info = "/usr/ddu/bin/dmi_info")))
                             {
                                 $info = shell_exec($dmi_info . " " . $args . " 2>&1");
                                 $lines = explode("\n", $info);
                        Michael Larabel
                        http://www.michaellarabel.com/

                        Comment


                        • #13
                          I have mailed the dmi_info output to you. It doesn't contain any information about the motherboard, since there probably aren't a whole lot to choose from for these CPUs :P

                          Comment


                          • #14
                            SUN T5240 though could be extracted Thanks.
                            Michael Larabel
                            http://www.michaellarabel.com/

                            Comment


                            • #15
                              All of the SPARC changes should now be in Git.
                              Michael Larabel
                              http://www.michaellarabel.com/

                              Comment

                              Working...
                              X