[202012] [Fastboot] Delay PMON service for better fastboot performance (#10745)

#### Why I did it

Profiling the system state on init after fast-reboot during create_switch function execution, it is possible to see few python scripts running at the same time.
This parallel execution consume CPU time and the duration of create_switch is longer than it should be.
Following this finding, and the motivation to ensure these services will not interfere in the future, PMON is delayed in 90 seconds until the system finish the init flow after fastboot.

#### How I did it

Add a timer for PMON service.
Exclude for MLNX platform the start trigger of PMON when SYNCD starts in case of fastboot.
Copy the timer file to the host bin image.

#### How to verify it

Run fast-reboot on MLNX platform and observe faster create_switch execution time.
This commit is contained in:
shlomibitton 2022-05-16 09:31:32 +03:00 committed by GitHub
parent bca8a244c6
commit c71c91e2b0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 24 additions and 7 deletions

View File

@ -22,7 +22,7 @@
("database", "always_enabled", false, "always_enabled"), ("database", "always_enabled", false, "always_enabled"),
("dhcp_relay", "enabled", false, "enabled"), ("dhcp_relay", "enabled", false, "enabled"),
("lldp", "enabled", true, "enabled"), ("lldp", "enabled", true, "enabled"),
("pmon", "enabled", false, "enabled"), ("pmon", "enabled", true, "enabled"),
("radv", "enabled", false, "enabled"), ("radv", "enabled", false, "enabled"),
("snmp", "enabled", true, "enabled"), ("snmp", "enabled", true, "enabled"),
("swss", "enabled", false, "enabled"), ("swss", "enabled", false, "enabled"),

View File

@ -18,6 +18,3 @@ ExecStart=/usr/bin/{{docker_container_name}}.sh wait
ExecStop=/usr/bin/{{docker_container_name}}.sh stop ExecStop=/usr/bin/{{docker_container_name}}.sh stop
Restart=always Restart=always
RestartSec=30 RestartSec=30
[Install]
WantedBy=sonic.target

View File

@ -0,0 +1,12 @@
[Unit]
# This delay is for fast/warm reboot performance
Description=Delays pmon docker until SONiC has started
PartOf=pmon.service
[Timer]
OnUnitActiveSec=0 sec
OnBootSec=1min 30 sec
Unit=pmon.service
[Install]
WantedBy=timers.target sonic.target sonic-delayed.target

View File

@ -757,6 +757,9 @@ sudo cp $BUILD_TEMPLATES/mgmt-framework.timer $FILESYSTEM_ROOT_USR_LIB_SYSTEMD_S
echo "mgmt-framework.timer" | sudo tee -a $GENERATED_SERVICE_FILE echo "mgmt-framework.timer" | sudo tee -a $GENERATED_SERVICE_FILE
{% endif %} {% endif %}
sudo cp $BUILD_TEMPLATES/pmon.timer $FILESYSTEM_ROOT_USR_LIB_SYSTEMD_SYSTEM
echo "pmon.timer" | sudo tee -a $GENERATED_SERVICE_FILE
sudo cp $BUILD_TEMPLATES/sonic.target $FILESYSTEM_ROOT_USR_LIB_SYSTEMD_SYSTEM sudo cp $BUILD_TEMPLATES/sonic.target $FILESYSTEM_ROOT_USR_LIB_SYSTEMD_SYSTEM
sudo LANG=C chroot $FILESYSTEM_ROOT systemctl enable sonic.target sudo LANG=C chroot $FILESYSTEM_ROOT systemctl enable sonic.target

View File

@ -37,11 +37,16 @@ function startplatform() {
function waitplatform() { function waitplatform() {
BOOT_TYPE=`getBootType`
if [[ x"$sonic_asic_platform" == x"mellanox" ]]; then if [[ x"$sonic_asic_platform" == x"mellanox" ]]; then
if [[ x"$BOOT_TYPE" = @(x"fast"|x"warm"|x"fastfast") ]]; then
debug "PMON service is delayed by a timer for better fast/warm boot performance"
else
debug "Starting pmon service..." debug "Starting pmon service..."
/bin/systemctl start pmon /bin/systemctl start pmon
debug "Started pmon service" debug "Started pmon service"
fi fi
fi
if [[ x"$BOOT_TYPE" = @(x"fast"|x"warm"|x"fastfast") ]]; then if [[ x"$BOOT_TYPE" = @(x"fast"|x"warm"|x"fastfast") ]]; then
debug "LLDP service is delayed by a timer for better fast/warm boot performance" debug "LLDP service is delayed by a timer for better fast/warm boot performance"
else else