XCP-ng
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Register
    • Login

    Please help me with the answer

    Scheduled Pinned Locked Moved Compute
    12 Posts 4 Posters 617 Views 3 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • M Offline
      MaratKzn
      last edited by

      Re: Monitoring actual current CPU frequency in guest OS

      D 1 Reply Last reply Reply Quote 0
      • D Offline
        DustinB @MaratKzn
        last edited by

        @MaratKzn repost with the content visible, not going to zoom out to try and read whatever is buried in that link.

        1 Reply Last reply Reply Quote 0
        • M Offline
          MaratKzn
          last edited by

          I have installed XCP-ng 8.2.1 on some testing HW (Lenovo SR650). I created Ubuntu 20.04 VM on it and am running some performance tests.

          I am able to monitor CPU frequency in Hypervisor via xenpm command:

          [13:50 test-xcp-ng ~]# xenpm get-cpufreq-average | grep 'frequency: '
          average cpu frequency: 1134540
          average cpu frequency: 2227060
          average cpu frequency: 1449690
          average cpu frequency: 2248070
          average cpu frequency: 1428680
          average cpu frequency: 1869890
          average cpu frequency: 2143020
          average cpu frequency: 1764840
          average cpu frequency: 2290090
          average cpu frequency: 1554740
          average cpu frequency: 2584230
          average cpu frequency: 1050500
          average cpu frequency: 2206050
          average cpu frequency: 1071510
          average cpu frequency: 1890900
          average cpu frequency: 1050500
          average cpu frequency: 1134540
          average cpu frequency: 1113530
          average cpu frequency: 1113530
          average cpu frequency: 1092520
          average cpu frequency: 1113530
          average cpu frequency: 1113530
          average cpu frequency: 1134540
          average cpu frequency: 1092520
          average cpu frequency: 1113530
          average cpu frequency: 1113530
          average cpu frequency: 1155550
          average cpu frequency: 1134540
          average cpu frequency: 1155550
          average cpu frequency: 1155550
          average cpu frequency: 1176560
          average cpu frequency: 1176560

          But /proc/cpuinfo in Ubuntu VM shows only fixed CPU frequency:

          root@test-vm:~# cat /proc/cpuinfo | grep -i mhz
          cpu MHz : 2095.211
          cpu MHz : 2095.211
          cpu MHz : 2095.211
          cpu MHz : 2095.211

          Adding also lscpu output (again same MHz as above):

          root@test-vm:~# lscpu
          Architecture: x86_64
          CPU op-mode(s): 32-bit, 64-bit
          Byte Order: Little Endian
          Address sizes: 46 bits physical, 48 bits virtual
          CPU(s): 4
          On-line CPU(s) list: 0-3
          Thread(s) per core: 1
          Core(s) per socket: 1
          Socket(s): 4
          NUMA node(s): 1
          Vendor ID: GenuineIntel
          CPU family: 6
          Model: 85
          Model name: Intel(R) Xeon(R) Silver 4216 CPU @ 2.10GHz
          Stepping: 7
          CPU MHz: 2095.211
          BogoMIPS: 4190.29
          Hypervisor vendor: Xen
          Virtualization type: full
          L1d cache: 128 KiB
          L1i cache: 128 KiB
          L2 cache: 4 MiB
          L3 cache: 88 MiB
          NUMA node0 CPU(s): 0-3
          Vulnerability Itlb multihit: KVM: Vulnerable
          Vulnerability L1tf: Mitigation; PTE Inversion
          Vulnerability Mds: Mitigation; Clear CPU buffers; SMT Host state unknown
          Vulnerability Meltdown: Mitigation; PTI
          Vulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl and seccomp
          Vulnerability Spectre v1: Mitigation; usercopy/swapgs barriers and __user pointer sanitization
          Vulnerability Spectre v2: Mitigation; Retpolines, IBPB conditional, IBRS_FW, STIBP disabled, RSB filling
          Vulnerability Srbds: Not affected
          Vulnerability Tsx async abort: Not affected
          Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush acpi mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl cpuid pni pclmulqdq sss
          e3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch cpuid_fault invpcid_single pti intel_ppin ssbd ibrs ibp
          b stibp fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid mpx rdseed adx smap clflushopt clwb xsaveopt xsavec xgetbv1 xsaves pku ospke md_clear flush_l1d

          In some cloud providers (e.g. AWS EC2), CPU frequency that is visible in /proc/cpuinfo looks like current CPU frequency (looks "live" - changing on every run):

          root@aws-instance:~# cat /proc/cpuinfo | grep -i mhz
          cpu MHz : 3499.906
          cpu MHz : 3500.627
          cpu MHz : 3499.477
          cpu MHz : 3501.732
          cpu MHz : 3499.307
          cpu MHz : 3499.868
          cpu MHz : 3500.009
          cpu MHz : 3499.829
          root@aws-instance:~# cat /proc/cpuinfo | grep -i mhz
          cpu MHz : 3500.867
          cpu MHz : 3500.318
          cpu MHz : 3500.907
          cpu MHz : 3499.985
          cpu MHz : 3500.236
          cpu MHz : 3500.225
          cpu MHz : 3499.921
          cpu MHz : 3501.104
          root@aws-instance:~# cat /proc/cpuinfo | grep -i mhz
          cpu MHz : 3500.423
          cpu MHz : 3500.150
          cpu MHz : 3500.372
          cpu MHz : 3500.026
          cpu MHz : 3501.071
          cpu MHz : 3500.911
          cpu MHz : 3500.316
          cpu MHz : 3500.048

          I would like to monitor current CPU frequency in my Ubuntu VM that is running in XCP-ng hypervisor, similar to what I can see in AWS EC2 instance. Is that possible?

          D 1 Reply Last reply Reply Quote 0
          • D Offline
            DustinB @MaratKzn
            last edited by

            @MaratKzn I'm not sure that you can do this through the CLI (you probably can), but you can see how any given VM is behaving through XO.

            21caba42-8c7a-4b18-a14a-ad408393f731-image.png

            1 Reply Last reply Reply Quote 0
            • M Offline
              MaratKzn
              last edited by

              @DustinB said in Please help me with the answer:

              I'm not sure that you can do this through the CLI (you probably can), but you can see how any given VM is behaving through XO.

              In XOA, I can only see CPU utilization, not CPU core frequency

              D 1 Reply Last reply Reply Quote 0
              • D Offline
                DustinB @MaratKzn
                last edited by

                @MaratKzn said in Please help me with the answer:

                @DustinB said in Please help me with the answer:

                I'm not sure that you can do this through the CLI (you probably can), but you can see how any given VM is behaving through XO.

                In XOA, I can only see CPU utilization, not CPU core frequency

                Why do you think the frequency would change from whatever the physical hardware has?

                M 1 Reply Last reply Reply Quote 0
                • M Offline
                  MaratKzn @DustinB
                  last edited by

                  @DustinB

                  The frequency on the XEN host and in the VM on that host are different

                  For example

                  CPU: AMD EPYC 7702P
                  Base Clock 2.0GHz
                  Max. Boost Clock Up to 3.35GHz

                  On the XEN host:

                  [16:57 edge05 ~]# xenpm start 1|grep "Avg freq"
                  Avg freq 2540000 KHz
                  Avg freq 3200000 KHz
                  Avg freq 3340000 KHz
                  Avg freq 3340000 KHz
                  Avg freq 3340000 KHz
                  Avg freq 3280000 KHz
                  Avg freq 3320000 KHz
                  Avg freq 3340000 KHz
                  Avg freq 3320000 KHz
                  Avg freq 3340000 KHz
                  Avg freq 3320000 KHz
                  Avg freq 3240000 KHz
                  Avg freq 3140000 KHz
                  Avg freq 3340000 KHz
                  Avg freq 3300000 KHz
                  Avg freq 3240000 KHz
                  Avg freq 3340000 KHz
                  Avg freq 3280000 KHz
                  Avg freq 3320000 KHz
                  Avg freq 3340000 KHz
                  Avg freq 3340000 KHz
                  Avg freq 3340000 KHz
                  Avg freq 3260000 KHz
                  Avg freq 3340000 KHz
                  Avg freq 3280000 KHz
                  Avg freq 3340000 KHz
                  Avg freq 3320000 KHz
                  Avg freq 3280000 KHz
                  Avg freq 3280000 KHz
                  Avg freq 3240000 KHz
                  Avg freq 3340000 KHz
                  Avg freq 3340000 KHz
                  Avg freq 3300000 KHz
                  Avg freq 3340000 KHz
                  Avg freq 3320000 KHz
                  Avg freq 3160000 KHz
                  Avg freq 3080000 KHz
                  Avg freq 3340000 KHz
                  Avg freq 3100000 KHz
                  Avg freq 3340000 KHz
                  Avg freq 3240000 KHz
                  Avg freq 3340000 KHz
                  Avg freq 3340000 KHz
                  Avg freq 3340000 KHz
                  Avg freq 3340000 KHz
                  Avg freq 3320000 KHz
                  Avg freq 3040000 KHz
                  Avg freq 3100000 KHz
                  Avg freq 3320000 KHz
                  Avg freq 3220000 KHz
                  Avg freq 3220000 KHz
                  Avg freq 3060000 KHz
                  Avg freq 3320000 KHz
                  Avg freq 3340000 KHz
                  Avg freq 3300000 KHz
                  Avg freq 3320000 KHz
                  Avg freq 3180000 KHz
                  Avg freq 3320000 KHz
                  Avg freq 3240000 KHz
                  Avg freq 3240000 KHz
                  Avg freq 3160000 KHz
                  Avg freq 3140000 KHz
                  Avg freq 3160000 KHz
                  Avg freq 3260000 KHz
                  Avg freq 3260000 KHz
                  Avg freq 3200000 KHz
                  Avg freq 3180000 KHz
                  Avg freq 3340000 KHz
                  Avg freq 3340000 KHz
                  Avg freq 3080000 KHz
                  Avg freq 3000000 KHz
                  Avg freq 3000000 KHz
                  Avg freq 3340000 KHz
                  Avg freq 3100000 KHz
                  Avg freq 3200000 KHz
                  Avg freq 3220000 KHz
                  Avg freq 3160000 KHz
                  Avg freq 3120000 KHz
                  Avg freq 3220000 KHz
                  Avg freq 3200000 KHz
                  Avg freq 3200000 KHz
                  Avg freq 3200000 KHz
                  Avg freq 3200000 KHz
                  Avg freq 3300000 KHz
                  Avg freq 3320000 KHz
                  Avg freq 3340000 KHz
                  Avg freq 3160000 KHz
                  Avg freq 3340000 KHz
                  Avg freq 3240000 KHz
                  Avg freq 3340000 KHz
                  Avg freq 3180000 KHz
                  Avg freq 3340000 KHz
                  Avg freq 3140000 KHz
                  Avg freq 3080000 KHz
                  Avg freq 3260000 KHz
                  Avg freq 3240000 KHz
                  Avg freq 3220000 KHz
                  Avg freq 3180000 KHz
                  Avg freq 3240000 KHz
                  Avg freq 3240000 KHz
                  Avg freq 3260000 KHz
                  Avg freq 3280000 KHz
                  Avg freq 3060000 KHz
                  Avg freq 3020000 KHz
                  Avg freq 3200000 KHz
                  Avg freq 3200000 KHz
                  Avg freq 3180000 KHz
                  Avg freq 3180000 KHz
                  Avg freq 3200000 KHz
                  Avg freq 3200000 KHz
                  Avg freq 3240000 KHz
                  Avg freq 3180000 KHz
                  Avg freq 3320000 KHz
                  Avg freq 3320000 KHz
                  Avg freq 3240000 KHz
                  Avg freq 3200000 KHz
                  Avg freq 3280000 KHz
                  Avg freq 3280000 KHz
                  Avg freq 3020000 KHz
                  Avg freq 3020000 KHz
                  Avg freq 3180000 KHz
                  Avg freq 3200000 KHz
                  Avg freq 3040000 KHz
                  Avg freq 3320000 KHz
                  Avg freq 3320000 KHz
                  Avg freq 3340000 KHz
                  Avg freq 3360000 KHz
                  Avg freq 3340000 KHz

                  On the VM on this host:
                  watch "grep 'cpu MHz' /proc/cpuinfo"

                  Every 2.0s: grep 'cpu MHz' /proc/cpuinfo virtual.ml.srv.mq: Fri Feb 2 16:14:32 2024

                  cpu MHz : 2000.127
                  cpu MHz : 2000.127
                  cpu MHz : 2000.127
                  cpu MHz : 2000.127
                  cpu MHz : 2000.127
                  cpu MHz : 2000.127
                  cpu MHz : 2000.127
                  cpu MHz : 2000.127
                  cpu MHz : 2000.127
                  cpu MHz : 2000.127
                  cpu MHz : 2000.127
                  cpu MHz : 2000.127
                  cpu MHz : 2000.127
                  cpu MHz : 2000.127
                  cpu MHz : 2000.127
                  cpu MHz : 2000.127

                  Thank you!

                  1 Reply Last reply Reply Quote 0
                  • planedropP Offline
                    planedrop Top contributor
                    last edited by

                    You have the tools installed in the VM correct?

                    I'm also curious, is there a reason you need to see correct CPU frequency in the VM guest? CPU usage % should still be accurate in terms of whatever is assigned to the VM. But not sure why frequency would be needed.

                    Still very curious if this is possible though so will help however I can, would be nice to have regardless.

                    M 1 Reply Last reply Reply Quote 0
                    • M Offline
                      MaratKzn @planedrop
                      last edited by

                      @planedrop

                      You have the tools installed in the VM correct?
                      If you mean xen-tools, the VM has the latest version installed (7.30.0-11)

                      I'm also curious, is there a reason you need to see correct CPU frequency in the VM guest? CPU usage % should still be accurate in terms of whatever is assigned to the VM. But not sure why frequency would be needed.

                      I have a suspicion that the VM is running at base CPU frequency and not using "Turbo mode"

                      watch "grep 'cpu MHz' /proc/cpuinfo"

                      Every 2.0s: grep 'cpu MHz' /proc/cpuinfo virtual.ml.srv.mq: Fri Feb 2 16:14:32 2024

                      cpu MHz : 2000.127
                      cpu MHz : 2000.127
                      cpu MHz : 2000.127
                      cpu MHz : 2000.127
                      cpu MHz : 2000.127
                      cpu MHz : 2000.127
                      cpu MHz : 2000.127
                      cpu MHz : 2000.127
                      cpu MHz : 2000.127
                      cpu MHz : 2000.127
                      cpu MHz : 2000.127
                      cpu MHz : 2000.127
                      cpu MHz : 2000.127
                      cpu MHz : 2000.127
                      cpu MHz : 2000.127
                      cpu MHz : 2000.127

                      Even though "Turbo mode" works on the host itself.

                      [16:57 edge05 ~]# xenpm start 1|grep "Avg freq"
                      Avg freq 2540000 KHz
                      Avg freq 3200000 KHz
                      Avg freq 3340000 KHz
                      Avg freq 3340000 KHz
                      Avg freq 3340000 KHz
                      Avg freq 3280000 KHz
                      Avg freq 3320000 KHz
                      Avg freq 3340000 KHz
                      Avg freq 3320000 KHz
                      Avg freq 3340000 KHz
                      Avg freq 3320000 KHz
                      Avg freq 3240000 KHz
                      Avg freq 3140000 KHz
                      Avg freq 3340000 KHz
                      Avg freq 3300000 KHz
                      Avg freq 3240000 KHz
                      Avg freq 3340000 KHz

                      As a consequence, I am losing CPU performance on the VM

                      D 1 Reply Last reply Reply Quote 0
                      • D Offline
                        DustinB @MaratKzn
                        last edited by

                        @MaratKzn Do you have Guest Tools installed within the VM?

                        M 1 Reply Last reply Reply Quote 0
                        • M Offline
                          MaratKzn @DustinB
                          last edited by

                          Yes, VM has the latest version Guest Tools installed (7.30.0-11)

                          1 Reply Last reply Reply Quote 0
                          • bleaderB Offline
                            bleader Vates 🪐 XCP-ng Team
                            last edited by

                            Hello, not sure I can actually help, but I'll try to bring some info.

                            1. As far as I know, Xen handles the cpu scaling by default, as you checked with xenpm. Therefore I would guess it does not expose the p-states to the guest. When reading /proc/cpuinfo the kernel will call show_cpuinfo() function will call arch_freq_get_on_cpu() which ends up checking support for p-states on fallback to a simpler version that will in our case probably always report the base clock. At least that's my understanding, I went through this quickly and may have missed bits, but sound "logical" to me.

                            2. I think the guest tools won't help you there, they report information from host to guest only, and as mentionned in the first point the guest frequency reporting is not live frequency.

                            3. The only way I see how to confirm your VM is using turbo clocks would be to pin your VM vcpus to fixed pcpus, load the VM and check these pcpu with xenpm as you were doing.

                            4. It is interesting to me you're seeing turbo clocks there at all, from my tests for some other stuff, on epyc I actually never saw the clock go above the base clock, did you do anything specific to enable it? I guess BIOS setup to enable turbo, and maybe enable it with xenpm?

                            1 Reply Last reply Reply Quote 0
                            • First post
                              Last post