Select devices to disable APM
This commit is a part of the solution to mitigate a known issue that the Advanced Power Management (APM) disk settings impacted read performance. These settings are dynamically set based on the enabled StarlingX tuned service profiles. On some specific hardware configurations (for example, PowerEdge XR11 with an integrated storage controller), degraded read performance was observed where the Tuned Disk Monitor didn't detect high usage, maintaining a limited and low APM level (default 20). For write operations, a delay of about 60 seconds was noticed to achive the highest disk performance. Each unlocking will ensure the APM is disabled, but it can still be set manually at runtime using: "sudo hdparm -B <apm_level> /dev/sda". Ensuring it's disabled for all devices, we need to provide the names, as Tuned retrieves all devices from /sys/block and attempts to apply the apm_level setting for each one. After failing to apply it three times (for example, with DRBD block devices), Tuned will disable the set_apm command for the others. For populate this parameter, it will needed to use the disks persistent name (by-path value) from the inventory. For example: devices_udev_regex=(ID_PATH=pci-...-ata-1.0)|(ID_PATH=pci-...-ata-2.0) Test Plan: PASS: All packages built successfully PASS: Fresh Install SX/DX/STD in virtual environments PASS: After unlocking, verify that APM and Tuned Disk Monitor are disabled PASS: After unlocking, verify that /etc/tuned/starlingx/tuned.conf is populated with the selected devices PASS: All previous tests using XR11 lab PASS: After the initial unlock, the virtual host is locked, powered off, a disk is added, powered on, and after a new unlock, the new disk is added to devices_udev_regex. Partial-bug: 2086509 Depends-on: https://review.opendev.org/c/starlingx/config/+/933893 Change-Id: Ifc81e6236f7d5a59d22c2c824ea0e30f137e9e79 Signed-off-by: Hediberto C Silva <hediberto.cavalcantedasilva@windriver.com>
This commit is contained in:
parent
58b05f7451
commit
920106ef17
@ -252,6 +252,26 @@
|
|||||||
line: "platform::config::hosts::host_records: {{ user_dns_host_records_lines }}"
|
line: "platform::config::hosts::host_records: {{ user_dns_host_records_lines }}"
|
||||||
when: user_dns_host_records
|
when: user_dns_host_records
|
||||||
|
|
||||||
|
- name: Getting supported disk devices from udev
|
||||||
|
shell: |
|
||||||
|
import pyudev
|
||||||
|
from sysinv.common import constants as sysinv_constants
|
||||||
|
context = pyudev.Context()
|
||||||
|
output = ""
|
||||||
|
for device in context.list_devices(DEVTYPE='disk'):
|
||||||
|
if device.properties['MAJOR'] in sysinv_constants.VALID_MAJOR_LIST:
|
||||||
|
if 'ID_PATH' in device:
|
||||||
|
output += "(ID_PATH=%s)|" % device.properties['ID_PATH']
|
||||||
|
print(output[:-1])
|
||||||
|
args:
|
||||||
|
executable: /usr/bin/python
|
||||||
|
register: tuned_devices
|
||||||
|
|
||||||
|
- name: Write disk devices to StarlingX Tuned profile
|
||||||
|
lineinfile:
|
||||||
|
path: "{{ hieradata_workdir }}/runtime.yaml"
|
||||||
|
line: "platform::sysctl::params::tuned_devices: {{ tuned_devices.stdout }}"
|
||||||
|
|
||||||
when: mode == 'bootstrap'
|
when: mode == 'bootstrap'
|
||||||
|
|
||||||
- name: Add L4 service ports value to bootstrap runtime hieradata
|
- name: Add L4 service ports value to bootstrap runtime hieradata
|
||||||
|
Loading…
Reference in New Issue
Block a user