From c87ac216a971ae33582eda9dbf1c980b356feae9 Mon Sep 17 00:00:00 2001 From: Tom Alexander Date: Mon, 18 Dec 2023 20:08:06 -0500 Subject: [PATCH] Set the energy performance preference for AMD. --- .../cpu/files/cpu_set_perf_perc_linux_amd | 21 ++++++++++++++++ ...rc_linux => cpu_set_perf_perc_linux_intel} | 0 ansible/roles/cpu/tasks/linux_amd.yaml | 24 +++++++++++++++++++ ansible/roles/cpu/tasks/linux_intel.yaml | 2 +- .../energy_performance_preference.conf.j2 | 2 +- 5 files changed, 47 insertions(+), 2 deletions(-) create mode 100644 ansible/roles/cpu/files/cpu_set_perf_perc_linux_amd rename ansible/roles/cpu/files/{cpu_set_perf_perc_linux => cpu_set_perf_perc_linux_intel} (100%) diff --git a/ansible/roles/cpu/files/cpu_set_perf_perc_linux_amd b/ansible/roles/cpu/files/cpu_set_perf_perc_linux_amd new file mode 100644 index 0000000..74d04b1 --- /dev/null +++ b/ansible/roles/cpu/files/cpu_set_perf_perc_linux_amd @@ -0,0 +1,21 @@ +#!/usr/bin/env bash +# +# Tell hardware p-states whether to maximize CPU performance (100) or +# energy efficiency (0). +set -euo pipefail +IFS=$'\n\t' +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +perc=$1 + +if [ "$perc" -ge 80 ]; then + echo "performance" | tee /sys/devices/system/cpu/cpufreq/policy*/energy_performance_preference +elif [ "$perc" -ge 60 ]; then + echo "balance_performance" | tee /sys/devices/system/cpu/cpufreq/policy*/energy_performance_preference +elif [ "$perc" -ge 40 ]; then + echo "default" | tee /sys/devices/system/cpu/cpufreq/policy*/energy_performance_preference +elif [ "$perc" -ge 20 ]; then + echo "balance_power" | tee /sys/devices/system/cpu/cpufreq/policy*/energy_performance_preference +else + echo "power" | tee /sys/devices/system/cpu/cpufreq/policy*/energy_performance_preference +fi diff --git a/ansible/roles/cpu/files/cpu_set_perf_perc_linux b/ansible/roles/cpu/files/cpu_set_perf_perc_linux_intel similarity index 100% rename from ansible/roles/cpu/files/cpu_set_perf_perc_linux rename to ansible/roles/cpu/files/cpu_set_perf_perc_linux_intel diff --git a/ansible/roles/cpu/tasks/linux_amd.yaml b/ansible/roles/cpu/tasks/linux_amd.yaml index b521f5a..fa1c279 100644 --- a/ansible/roles/cpu/tasks/linux_amd.yaml +++ b/ansible/roles/cpu/tasks/linux_amd.yaml @@ -3,3 +3,27 @@ name: - powertop state: present + +- name: Favor energy efficiency for Speed Shift + when: hwpstate is defined and hwpstate and cores is defined + template: + src: "templates/{{ item.src }}.j2" + dest: "{{ item.dest }}" + mode: 0755 + owner: root + group: wheel + loop: + - src: energy_performance_preference.conf + dest: /etc/tmpfiles.d/energy_performance_preference.conf + +- name: Install scripts + when: hwpstate is defined and hwpstate + copy: + src: "files/{{ item.src }}" + dest: "{{ item.dest }}" + mode: 0755 + owner: root + group: wheel + loop: + - src: cpu_set_perf_perc_linux_amd + dest: /usr/local/bin/cpu_set_perf_perc diff --git a/ansible/roles/cpu/tasks/linux_intel.yaml b/ansible/roles/cpu/tasks/linux_intel.yaml index f49196c..6cac6c5 100644 --- a/ansible/roles/cpu/tasks/linux_intel.yaml +++ b/ansible/roles/cpu/tasks/linux_intel.yaml @@ -35,5 +35,5 @@ owner: root group: wheel loop: - - src: cpu_set_perf_perc_linux + - src: cpu_set_perf_perc_linux_intel dest: /usr/local/bin/cpu_set_perf_perc diff --git a/ansible/roles/cpu/templates/energy_performance_preference.conf.j2 b/ansible/roles/cpu/templates/energy_performance_preference.conf.j2 index b5a4239..bb97375 100644 --- a/ansible/roles/cpu/templates/energy_performance_preference.conf.j2 +++ b/ansible/roles/cpu/templates/energy_performance_preference.conf.j2 @@ -1,4 +1,4 @@ -# Favor energy efficiency for Speed Shift +# Favor energy efficiency for hardware p-states {% for core in range(0, cores, 1) %} w- /sys/devices/system/cpu/cpufreq/policy{{core}}/energy_performance_preference - - - - power {% endfor %}