diff --git a/ansible/environments/home/host_vars/homeserver b/ansible/environments/home/host_vars/homeserver index f7829ae..e9f1645 100644 --- a/ansible/environments/home/host_vars/homeserver +++ b/ansible/environments/home/host_vars/homeserver @@ -11,3 +11,4 @@ network_rc: "homeserver_network.conf" rc_conf: "homeserver_rc.conf" loader_conf: "homeserver_loader.conf" cputype: "intel" +hwpstate: false diff --git a/ansible/environments/laptop/host_vars/odofreebsd b/ansible/environments/laptop/host_vars/odofreebsd index 07f9f49..cf80901 100644 --- a/ansible/environments/laptop/host_vars/odofreebsd +++ b/ansible/environments/laptop/host_vars/odofreebsd @@ -12,3 +12,4 @@ rc_conf: "odofreebsd_rc.conf" loader_conf: "odofreebsd_loader.conf" cputype: "intel" hwpstate: true +cores: 8 diff --git a/ansible/roles/cpu/files/cpu_set_perf_perc b/ansible/roles/cpu/files/cpu_set_perf_perc new file mode 100644 index 0000000..28ad2f9 --- /dev/null +++ b/ansible/roles/cpu/files/cpu_set_perf_perc @@ -0,0 +1,14 @@ +#!/usr/bin/env bash +# +# Tell speedshift 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 +epp=$((100 - perc)) + +sysctl -N dev.hwpstate_intel | grep -E 'dev.hwpstate_intel.[0-9]+.epp' | while read var; do + sysctl "$var=$epp" +done diff --git a/ansible/roles/cpu/files/percorespeedshift_loader.conf b/ansible/roles/cpu/files/percorespeedshift_loader.conf new file mode 100644 index 0000000..dd0645c --- /dev/null +++ b/ansible/roles/cpu/files/percorespeedshift_loader.conf @@ -0,0 +1,2 @@ +# Control each core individually +machdep.hwpstate_pkg_ctrl=0 diff --git a/ansible/roles/cpu/tasks/freebsd_intel.yaml b/ansible/roles/cpu/tasks/freebsd_intel.yaml index b3f7891..9b743c1 100644 --- a/ansible/roles/cpu/tasks/freebsd_intel.yaml +++ b/ansible/roles/cpu/tasks/freebsd_intel.yaml @@ -46,3 +46,35 @@ with_items: - src: powerdxxrc.conf dest: /etc/rc.conf.d/powerdxx + +- name: Favor energy efficiency for Speed Shift + when: hwpstate is defined and hwpstate and cores is defined + sysctl: + name: "dev.hwpstate_intel.{{ item }}.epp" + value: 100 + state: present + sysctl_file: "/etc/sysctl.conf.local" + loop: "{{ range(0, cores, 1)|list }}" + +- 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 + dest: /usr/local/bin/cpu_set_perf_perc + +- name: Install loader.conf + when: hwpstate is defined and hwpstate + copy: + src: "files/{{ item }}_loader.conf" + dest: "/boot/loader.conf.d/{{ item }}.conf" + mode: 0644 + owner: root + group: wheel + loop: + - percorespeedshift