diff --git a/ansible.cfg b/ansible.cfg index fd63fbd..56bf283 100644 --- a/ansible.cfg +++ b/ansible.cfg @@ -1,4 +1,2 @@ [defaults] -nocows = True -stdout_callback = yaml -retry_files_enabled = False +nocows=True diff --git a/host_vars/localhost.yml b/host_vars/localhost.yml deleted file mode 100644 index 578ca52..0000000 --- a/host_vars/localhost.yml +++ /dev/null @@ -1,41 +0,0 @@ ---- -# note: 'gpu_*' vars only apply with the 'custom' suffixed profiles created by this tooling -# profiles based on the 'default' amdgpu power profile mode use default clocks -# -# the connected AMD GPU is automatically discovered - assumes one -# on swap to other AMD cards to avoid instability: -# 'rm -rfv /etc/tuned/*amdgpu*' -# -# default 500, for best performance: near maximum. applies with 'overclock' tuned profile -gpu_clock_min: "500" - -# gpu_clock_max: "2675" # default somewhere around 2529 to 2660. -gpu_clock_max: "2750" - -gpumem_clock_static: "1075" - -gpu_power_multi: - default: 0.869969040247678 # 281W - real default - # overclock: 0.928792569659443 # 300W - slight boost - overclock: 1.0 # 323W - full board capability -# optional, applies offset (+/-) to GPU voltage by provided mV -# only counts for peak and overlock profiles -# gpu_mv_offset: "-20" - -gpu_mv_offset: "+125" # add 125mV or 0.125V -# gpu_mv_offset: "+50" # add 50mV or 0.05V -# gpu_mv_offset: "+75" # add 75mV or 0.075V -# '-50' undervolts GPU core voltage 50mV or 0.05V; untested - here be dragons/instability - -# optional kernel parameters to set as well -sysctl: # quote ints/cast to string to avoid surprises - kernel.dmesg_restrict: '0' # allow regular users to see the kernel ring buffer - net.core.default_qdisc: fq # congestion control - net.ipv4.tcp_congestion_control: bbr2 # cong. control part 2 - net.core.rmem_max: '33554432' - net.core.wmem_max: '33554432' - dev.raid.speed_limit_min: '2000000' - dev.raid.speed_limit_max: '6000000' - vm.compaction_proactiveness: '30' # improve THP allocation latency, compact in background - vm.page_lock_unfairness: '1' # make page lock theft slightly more fair - vm.max_map_count: '1048576' # allow some games to run (eg: DayZ) diff --git a/inventories/localhost.yml b/inventories/localhost.yml index bf2a06e..16c7496 100644 --- a/inventories/localhost.yml +++ b/inventories/localhost.yml @@ -1,5 +1,5 @@ --- lab: hosts: - workstation: + localhost: ansible_connection: local diff --git a/playbook.yml b/playbook.yml index ca760bd..eec99dd 100644 --- a/playbook.yml +++ b/playbook.yml @@ -5,6 +5,26 @@ # role prepares/modifies 'tuned' with AMD GPU power/clock parameters # creates a new tuned profile made for each permutation of (base) 'tuned' profile + AMD powerplay profile - role: tuned_amdgpu + # note: 'gpu_*' vars only apply with the 'custom' suffixed profiles created by this tooling + # profiles based on the 'default' amdgpu power profile mode use default clocks + # + # the connected AMD GPU is automatically discovered - assumes one + # on swap to other AMD cards to avoid instability: + # 'rm -rfv /etc/tuned/*amdgpu*' + gpu_clock_min: "750" # default 500, for best performance: near maximum. applies with 'overclock' tuned profile + gpu_clock_max: "2675" # default somewhere around 2529 to 2660 + gpumem_clock_static: "1075" + gpu_power_multi: + default: 0.869969040247678 # 281W - real default + overclock: 0.928792569659443 # 300W - slight boost +# overclock: 1.0 # 323W - full board capability + # optional, applies offset (+/-) to GPU voltage by provided mV + # gpu_mv_offset: "-25" + # gpu_mv_offset: "+50" # add 50mV or 0.05V + gpu_mv_offset: "+25" # add 25mV or 0.025V + # '-50' undervolts GPU core voltage 50mV or 0.05V + # mostly untested, there be dragons/instability + # # list of source tuned profiles available on Fedora (TODO: should dynamically discover) base_profiles: - balanced diff --git a/roles/tuned_amdgpu/templates/tuned.conf.j2 b/roles/tuned_amdgpu/templates/tuned.conf.j2 index a10ec3e..729e025 100644 --- a/roles/tuned_amdgpu/templates/tuned.conf.j2 +++ b/roles/tuned_amdgpu/templates/tuned.conf.j2 @@ -2,16 +2,35 @@ include={{ item.1 }} summary={{ item.1 }} + TCP/RAID tweaks + AMDGPU {{ item.0 }} -{% if sysctl is defined %} [sysctl] -{% for _sysctl, value in sysctl.items() %} -{{ _sysctl }}={{ value }} -{% endfor %} +# allow regular users to see the kernel ring buffer +kernel.dmesg_restrict=0 +net.core.default_qdisc=fq +# 'bbr2' requires a [modified] supporting kernel - stock Fedora kernels do *not* support it (currently) +# eg: 'kernel-xanmode-edge' from COPR 'rmnscnce/kernel-xanmod' +net.ipv4.tcp_congestion_control=bbr2 +net.core.rmem_max=33554432 +net.core.wmem_max=33554432 +dev.raid.speed_limit_min=1000000 +dev.raid.speed_limit_max=6000000 +# improve THP allocation latency, compact in background +vm.compaction_proactiveness=30 +# make page lock theft slightly more fair +vm.page_lock_unfairness=1 +# allow some games to run (eg: DayZ) +vm.max_map_count=1048576 -{% endif %} # reference/execute AMDGPU control script # used because some sysfs interfaces are transactional # cannot be set by a single param in 'tuned'/[sysfs] [gpuclockscript] type=script script=${i:PROFILE_DIR}/amdgpu-clock.sh + +# for SSDs with no RPM, set no IO scheduler +[ssdnosched] +type=disk +devices_udev_regex=(ID_ATA_ROTATION_RATE_RPM=0) +# elevator=none +elevator=kyber +# elevator=mq-deadline