/
/
/
1---
2- name: Apply sysctl performance settings
3 sysctl:
4 name: "{{ item.key }}"
5 value: "{{ item.value }}"
6 state: present
7 reload: true
8 loop: "{{ nas_sysctl_settings | dict2items }}"
9 become: true
10
11- name: Set TCP congestion control algorithm
12 sysctl:
13 name: net.ipv4.tcp_congestion_control
14 value: "{{ nas_tcp_congestion_control }}"
15 state: present
16 reload: true
17 become: true
18 when: nas_tcp_congestion_control is defined
19
20- name: Enable TCP window scaling
21 sysctl:
22 name: net.ipv4.tcp_window_scaling
23 value: "1"
24 state: present
25 reload: true
26 become: true
27 when: nas_tcp_window_scaling | bool
28
29- name: Configure I/O scheduler for storage devices
30 shell: |
31 for dev in $(lsblk -nd -o NAME | grep -E '^(sd|nvme|md)'); do
32 echo mq-deadline > /sys/block/$dev/queue/scheduler 2>/dev/null || true
33 done
34 become: true
35 changed_when: false
36
37- name: Set read-ahead values for storage devices
38 shell: |
39 for dev in $(lsblk -nd -o NAME | grep -E '^(sd|nvme|md)'); do
40 blockdev --setra 4096 /dev/$dev 2>/dev/null || true
41 done
42 become: true
43 changed_when: false
44
45- name: Configure NFS performance settings
46 lineinfile:
47 path: /etc/default/nfs-kernel-server
48 regexp: '^{{ item.key }}='
49 line: "{{ item.key }}={{ item.value }}"
50 backup: true
51 loop:
52 - { key: "RPCNFSDCOUNT", value: "16" }
53 - { key: "RPCNFSDPRIORITY", value: "0" }
54 become: true
55 notify: restart nfs services
56
57- name: Create performance monitoring script
58 template:
59 src: nas-performance-monitor.sh.j2
60 dest: /usr/local/bin/nas-performance-monitor.sh
61 mode: '0755'
62 owner: root
63 group: root
64 become: true
65
66- name: Set up performance monitoring cron job
67 cron:
68 name: "NAS Performance Monitor"
69 minute: "*/5"
70 job: "/usr/local/bin/nas-performance-monitor.sh >> {{ nas_log_file }} 2>&1"
71 user: root
72 become: true
73 when: nas_monitoring_enabled | bool