Announcement

Collapse
No announcement yet.

AMD Ryzen 9 3900X SMT Linux Performance Benchmarks

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

  • AMD Ryzen 9 3900X SMT Linux Performance Benchmarks

    Phoronix: AMD Ryzen 9 3900X SMT Linux Performance Benchmarks

    For those wondering what the SMT performance impact is for new Zen 2 processors, here are some tests done using a Ryzen 9 3900X with Ubuntu Linux when testing at the default 12-core / 24-threads and then again when disabling SMT to look at just the twelve physical cores...

    Phoronix, Linux Hardware Reviews, Linux hardware benchmarks, Linux server benchmarks, Linux benchmarking, Desktop Linux, Linux performance, Open Source graphics, Linux How To, Ubuntu benchmarks, Ubuntu hardware, Phoronix Test Suite

  • #2
    Hallo Michael,
    why using different Scalling Governors for enabled and disabled SMT?

    Comment


    • #3
      Originally posted by SomeoneElse View Post
      Hallo Michael,
      why using different Scalling Governors for enabled and disabled SMT?
      Good catch, not sure how that happened. Looking into it to see if disabling SMT caused some odd CPUfreq behavior.
      Michael Larabel
      https://www.michaellarabel.com/

      Comment


      • #4
        Very nice graph showing test results

        Comment


        • #5
          Originally posted by atomsymbol

          Additionally, before running "taskset -c cpulist application", it is required to temporarily lower the number CPUs by using echo or chcpu:

          Code:
          $ nproc
          12
          $ echo 0 > /sys/devices/system/cpu/cpu1/online
          $ nproc
          11
          $ chcpu -d 3
          $ nproc
          10
          ...
          Applications which are using sysconf(_SC_NPROCESSORS_CONF) or get_nprocs() to determine the number of threads to start - instead of using sysconf(_SC_NPROCESSORS_ONLN) or get_nprocs_conf() - will not work well.
          Have you tried the cpu isolation feature in recent kernels?

          Comment


          • #6
            Originally posted by atomsymbol
            Conclusion: Managing SMT on per-application basis results in significant performance gains.
            Prediction: In the future, SMT is going to be managed on a per-application basis.
            You mean just like Windows does by avoiding scheduling 2 threads onto the same physical core if possible?

            It also tries to keep the threads confined within a CCX to avoid increased latencies on Ryzen as tested by Tom's Hardware.

            Comment


            • #7
              Originally posted by numacross View Post
              You mean just like Windows does by avoiding scheduling 2 threads onto the same physical core if possible?

              It also tries to keep the threads confined within a CCX to avoid increased latencies on Ryzen as tested by Tom's Hardware.
              None of that helps with the issue at hand here.

              Optimizing for SMT has always been in the hand of the application developers but not many ever did.

              atomsymbol's prediction makes a lot of sense. Since application developers fail to optimize their applications for different CPU architectures with SMT it would make sense to have tools with per-application profiles.
              Actually, such tools already exist.

              Comment


              • #8
                One thing I'd like to know is the power consumption differences. in my limited SMT/hyperthread experience (fist gen I7...) it causes a pretty substantial increase in thermal output, and therefore wattage.

                I suspect that disabling SMT could lead to easier overclocking, especially on high-density chips or when not using beefy water cooling.
                Gaming performance is usually better without SMT, anyway.

                Comment


                • #9
                  ffmpeg running slower when using SMT? That sounds unlikely, if reasonably configured. I can attest for the opposite observation on a Ryzen 1800X.

                  Comment


                  • #10
                    Originally posted by Qaridarium
                    very interesting test. other scaling tests show that the overhead of hyperthreading is higher than the benefit if you have more than 32-64 cores.
                    Since SMT is internal to each core, it seems likely that the "overhead vs benefit" equation is a function of cache & memory subsystems being overloaded rather than something inherent to SMT.

                    If so, then the point where it stops helping would be a function of workload (memory accesses relative to CPU cycles) and cache/memory performance per core rather than core count alone - does that make sense ?
                    Test signature

                    Comment

                    Working...
                    X