Added memory role

This commit is contained in:
2026-08-26 13:14:30 +02:00
parent 3147e4bf78
commit 75725ee688
3 changed files with 98 additions and 0 deletions
+92
View File
@@ -0,0 +1,92 @@
# Everything that lands on the kernel cmdline goes in one marked block, leaving
# the existing KERNEL_CMDLINE[default]+= line untouched.
#
# systemd.zram=0 - stop zram-generator creating the zram device
# zswap.* - module params, must be set before first swap-out
# ttm.pages_limit - hard cap on GTT allocation, lifted from the ~50% of RAM
# default. 3959290 pages of 4K = ~15.1 GiB
# ttm.page_pool_size - must match pages_limit or allocations can fail
- name: Add BC-250 kernel parameters
become: true
ansible.builtin.blockinfile:
path: /etc/default/limine
marker: '# {mark} ANSIBLE bc250 memory'
block: |
KERNEL_CMDLINE[default]+=" systemd.zram=0 zswap.enabled=1 zswap.shrinker_enabled=1 zswap.compressor=lz4 zswap.max_pool_percent=20 ttm.pages_limit=3959290 ttm.page_pool_size=3959290"
notify: Rebuild initramfs and limine entries
# lz4 must be in the initramfs for zswap to use it from early boot.
- name: Add lz4 to the initramfs modules
become: true
ansible.builtin.lineinfile:
path: /etc/mkinitcpio.conf
regexp: '^MODULES='
line: 'MODULES=(lz4)'
notify: Rebuild initramfs and limine entries
# CachyOS ships a udev rule that disables zswap when zram comes up.
# An empty file with the same name overrides it.
- name: Neutralise the CachyOS zram udev rule
become: true
ansible.builtin.copy:
content: ''
dest: /etc/udev/rules.d/30-zram.rules
mode: '0644'
- name: Lower swappiness
become: true
ansible.builtin.copy:
content: vm.swappiness=10
dest: /etc/sysctl.d/99-bc250.conf
mode: '0644'
register: sysctl_conf
- name: Apply swappiness now
become: true
ansible.builtin.command:
argv:
- sysctl
- --system
when: sysctl_conf.changed
changed_when: true
- name: Create the swap subvolume
become: true
ansible.builtin.command:
argv:
- btrfs
- subvolume
- create
- /swap
args:
creates: /swap
- name: Create the swapfile
become: true
ansible.builtin.command:
argv:
- btrfs
- filesystem
- mkswapfile
- --size
- 8g
- --uuid
- clear
- /swap/swapfile
args:
creates: /swap/swapfile
- name: Add the swapfile to fstab
become: true
ansible.builtin.lineinfile:
path: /etc/fstab
regexp: '^/swap/swapfile'
line: '/swap/swapfile none swap defaults 0 0'
- name: Apply pending initramfs changes
ansible.builtin.meta: flush_handlers
- name: Reboot to apply the new kernel parameters
become: true
ansible.builtin.reboot:
reboot_timeout: 600