The way it is currently done, I don't think valid CPU frequency listing
via "scaling_cur_freq", or /proc/cpuinfo, is expected to work. Why not?
Because the required code is never executed, on purpose. Here is an
excerpt from a commit (see the bit about NOHZ full)


commit f3eca381bd49d708073ba1a9af4fa6ea5d5810a6
Author: Thomas Gleixner <t...@linutronix.de>
Date:   Fri Apr 15 21:20:04 2022 +0200

    x86/aperfmperf: Replace arch_freq_get_on_cpu()

    Reading the current CPU frequency from /sys/..../scaling_cur_freq involves
    in the worst case two IPIs due to the ad hoc sampling.

    The frequency invariance infrastructure provides the APERF/MPERF samples
    already. Utilize them and consolidate this with the /proc/cpuinfo readout.

    The sample is considered valid for 20ms. So for idle or isolated NOHZ full
    CPUs the function returns 0, which is matching the previous behaviour.

There was couple of later commits and now it prints out the minimum CPU
frequency when it thinks the number are stale. With NOHz full it always
thinks the numbers are stale.

The intel_cpufreq driver seems to display CPU frequencies okay, but only
the pstate that was requested, not the actual frequency granted.

-- 
You received this bug notification because you are a member of Kernel
Packages, which is subscribed to linux-signed-lowlatency-hwe-6.5 in
Ubuntu.
https://bugs.launchpad.net/bugs/2051733

Title:
  Specifying nohz_full breaks CPU frequency reporting

Status in linux-signed-lowlatency-hwe-6.5 package in Ubuntu:
  Confirmed

Bug description:
  With the lowlatency kernel, if I specify "nohz_full=1-15" boot
  parameter then CPU frequency reporting doesn't work for the logical
  cores 1-15. That is, only logical core 0 shows varying CPU frequency
  in its /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq file, all
  other cores constantly show 800000 in their scaling_cur_freq files
  (which is the lowest supported frequency) regardless of the CPU load.

  Steps to reproduce:

  1. Add "nohz_full=1-15" (specify the core numbers to include all logical 
cores except 0) to kernel boot options in /etc/default/grub.
  2. Run `sudo update-grub` and reboot.
  3. Upon booting, run a multithreaded workload. For example, run `openssl 
speed -multi $(nproc --all)`.
  4. In another console, monitor CPU frequencies by running `watch cat 
/sys/devices/system/cpu/cpu[0-9]*/cpufreq/scaling_cur_freq`.

  Actual results:

  All cores specified in "nohz_full" parameter always report their
  lowest frequency.

  Despite that, the actual performance seems to be as if frequency
  scaling actually works (i.e. according to benchmarks, the performance
  seems to be similar with and without the "nohz_full" parameter).

  Expected results:

  All cores must report their actual frequency depending on the load.

  ProblemType: Bug
  DistroRelease: Ubuntu 22.04
  Package: linux-image-6.5.0-15-lowlatency 6.5.0-15.15.1.1~22.04.1
  ProcVersionSignature: Ubuntu 6.5.0-15.15.1.1~22.04.1-lowlatency 6.5.3
  Uname: Linux 6.5.0-15-lowlatency x86_64
  NonfreeKernelModules: nvidia_modeset nvidia
  ApportVersion: 2.20.11-0ubuntu82.5
  Architecture: amd64
  CasperMD5CheckResult: unknown
  CurrentDesktop: KDE
  Date: Tue Jan 30 23:39:51 2024
  InstallationDate: Installed on 2015-05-01 (3196 days ago)
  InstallationMedia: Kubuntu 15.04 "Vivid Vervet" - Release amd64 (20150422)
  SourcePackage: linux-signed-lowlatency-hwe-6.5
  UpgradeStatus: Upgraded to jammy on 2022-05-14 (626 days ago)

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux-signed-lowlatency-hwe-6.5/+bug/2051733/+subscriptions


-- 
Mailing list: https://launchpad.net/~kernel-packages
Post to     : kernel-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kernel-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to