>> The preferred governor with the intel_pstate driver is powersave.

> Do you have some references/proof for that? This is contrary to what
> kernel developers say, see comment 1.

In my opinion, that reference is obsolete.

While I don't work for Intel, the intel_pstate CPU frequency driver is
pretty much the only thing that I work on, and for a few years now, and
through 3 maintainers. Why would Intel expend so much effort on
powersave mode, if it were better to merely set performance mode and
forget about it? The objective with powersave mode is best energy/
performance tradeoff. There are still issues, yes. For example whenever
clock modulation becomes involved. Also, there can be a tendency to
incorrectly drive up the CPU frequency. There is work in progress that
should address these issues (see: http://askubuntu.com/questions/812530
/cpu-frequency-scaling-not-working-as-intended-on-vanilla-
ubuntu-16-04/812721#812721 and the reference links therein.)

I'll try to come back, maybe this weekend, with some energy comparison
numbers.

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to sysvinit in Ubuntu.
https://bugs.launchpad.net/bugs/1579278

Title:
  Keep powersave CPU frequency scaling governor for CPUs that support
  intel_pstate

Status in linux package in Ubuntu:
  Invalid
Status in systemd package in Ubuntu:
  Fix Released
Status in sysvinit package in Ubuntu:
  Invalid
Status in linux source package in Xenial:
  Invalid
Status in systemd source package in Xenial:
  Invalid
Status in sysvinit source package in Xenial:
  Triaged

Bug description:
  Hi,

  With the new Ubuntu archive servers, we saw constantly high load and
  after some tinkering, we found that it was mostly CPUs being woken up
  to see if they should enter idle states. Changing the CPU frequency
  scaling governor to "performance" saw a considerable drop.

  Perf report using the following commands:

  | perf record -g -a sleep 10
  | perf report

  | Samples: 287K of event 'cycles:pp', Event count (approx.): 124776998906
  |   Children      Self  Command          Shared Object             Symbol
  | +   55.24%     0.20%  swapper          [kernel.kallsyms]         [k] 
cpu_startup_entry
  | +   53.51%     0.00%  swapper          [kernel.kallsyms]         [k] 
start_secondary
  | +   53.02%     0.08%  swapper          [kernel.kallsyms]         [k] 
call_cpuidle
  | +   52.94%     0.02%  swapper          [kernel.kallsyms]         [k] 
cpuidle_enter
  | +   31.81%     0.67%  swapper          [kernel.kallsyms]         [k] 
cpuidle_enter_state
  | +   29.59%     0.12%  swapper          [kernel.kallsyms]         [k] 
acpi_idle_enter
  | +   29.45%     0.05%  swapper          [kernel.kallsyms]         [k] 
acpi_idle_do_entry
  | +   29.43%    29.43%  swapper          [kernel.kallsyms]         [k] 
acpi_processor_ffh_cstate_enter
  | +   20.51%     0.04%  swapper          [kernel.kallsyms]         [k] 
ret_from_intr
  | +   20.47%     0.12%  swapper          [kernel.kallsyms]         [k] do_IRQ
  | +   19.30%     0.07%  swapper          [kernel.kallsyms]         [k] 
irq_exit
  | +   19.18%     0.07%  apache2          [kernel.kallsyms]         [k] 
entry_SYSCALL_64_fastpath
  | +   18.80%     0.17%  swapper          [kernel.kallsyms]         [k] 
__do_softirq
  | +   16.45%     0.11%  swapper          [kernel.kallsyms]         [k] 
net_rx_action
  | +   16.25%     0.43%  swapper          [kernel.kallsyms]         [k] be_poll
  | +   14.74%     0.21%  swapper          [kernel.kallsyms]         [k] 
be_process_rx
  | +   13.61%     0.07%  swapper          [kernel.kallsyms]         [k] 
napi_gro_frags
  | +   12.58%     0.04%  swapper          [kernel.kallsyms]         [k] 
netif_receive_skb_internal
  | +   12.48%     0.03%  swapper          [kernel.kallsyms]         [k] 
__netif_receive_skb
  | +   12.42%     0.24%  swapper          [kernel.kallsyms]         [k] 
__netif_receive_skb_core
  | +   12.41%     0.00%  apache2          [unknown]                 [k] 
0x00007f27983b5028
  | +   12.41%     0.00%  apache2          [unknown]                 [k] 
0x00007f2798369028
  | +   11.49%     0.16%  swapper          [kernel.kallsyms]         [k] ip_rcv
  | +   11.29%     0.09%  swapper          [kernel.kallsyms]         [k] 
ip_rcv_finish
  | +   10.77%     0.05%  swapper          [kernel.kallsyms]         [k] 
ip_local_deliver
  | +   10.70%     0.06%  swapper          [kernel.kallsyms]         [k] 
ip_local_deliver_finish
  | +   10.55%     0.22%  swapper          [kernel.kallsyms]         [k] 
tcp_v4_rcv
  | +   10.10%     0.00%  apache2          [unknown]                 [k] 
0000000000000000
  | +   10.01%     0.04%  swapper          [kernel.kallsyms]         [k] 
tcp_v4_do_rcv

  Expanding in a few of those, you'll see:

  | -   55.24%     0.20%  swapper          [kernel.kallsyms]         [k] 
cpu_startup_entry
  |    - 55.04% cpu_startup_entry
  |       - 52.98% call_cpuidle
  |          + 52.93% cpuidle_enter
  |          + 0.00% ret_from_intr
  |            0.00% cpuidle_enter_state
  |            0.00% irq_entries_start
  |       + 1.14% cpuidle_select
  |       + 0.47% schedule_preempt_disabled
  |         0.10% rcu_idle_enter
  |         0.09% rcu_idle_exit
  |       + 0.05% ret_from_intr
  |       + 0.05% tick_nohz_idle_enter
  |       + 0.04% arch_cpu_idle_enter
  |         0.02% cpuidle_enter
  |         0.02% tick_check_broadcast_expired
  |       + 0.01% cpuidle_reflect
  |         0.01% menu_reflect
  |         0.01% atomic_notifier_call_chain
  |         0.01% local_touch_nmi
  |         0.01% cpuidle_not_available
  |         0.01% menu_select
  |         0.01% cpuidle_get_cpu_driver
  |       + 0.01% tick_nohz_idle_exit
  |       + 0.01% sched_ttwu_pending
  |         0.00% set_cpu_sd_state_idle
  |         0.00% native_irq_return_iret
  |         0.00% schedule
  |       + 0.00% arch_cpu_idle_exit
  |         0.00% __tick_nohz_idle_enter
  |         0.00% irq_entries_start
  |         0.00% sched_clock_idle_wakeup_event
  |         0.00% reschedule_interrupt
  |       + 0.00% apic_timer_interrupt
  |    + 0.20% start_secondary
  |    + 0.00% x86_64_start_kernel
  | +   53.51%     0.00%  swapper          [kernel.kallsyms]         [k] 
start_secondary
  | +   53.02%     0.08%  swapper          [kernel.kallsyms]         [k] 
call_cpuidle
  | -   52.94%     0.02%  swapper          [kernel.kallsyms]         [k] 
cpuidle_enter
  |    - 52.92% cpuidle_enter
  |       + 31.81% cpuidle_enter_state
  |       + 20.01% ret_from_intr
  |       + 0.51% apic_timer_interrupt
  |         0.28% native_irq_return_iret
  |       + 0.09% reschedule_interrupt
  |         0.05% irq_entries_start
  |         0.05% do_IRQ
  |         0.05% common_interrupt
  |         0.02% sched_idle_set_state
  |         0.01% acpi_idle_enter
  |         0.01% ktime_get
  |         0.01% restore_regs_and_iret
  |         0.01% restore_c_regs_and_iret
  |       + 0.01% call_function_single_interrupt
  |         0.00% native_iret
  |       + 0.00% call_function_interrupt
  |         0.00% smp_apic_timer_interrupt
  |         0.00% smp_reschedule_interrupt
  |         0.00% smp_call_function_single_interrupt
  |    + 0.02% start_secondary

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1579278/+subscriptions

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

Reply via email to