-
Notifications
You must be signed in to change notification settings - Fork 1.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[services] make snmp.timer work again and delay telemetry.service #3742
Conversation
Signed-off-by: Stepan Blyschak <stepanb@mellanox.com>
swss.service but start with delay on boot Signed-off-by: Stepan Blyschak <stepanb@mellanox.com>
…enabled Signed-off-by: Stepan Blyschak <stepanb@mellanox.com>
Signed-off-by: Stepan Blyschak <stepanb@mellanox.com>
@@ -14,5 +15,3 @@ ExecStop=/usr/bin/{{docker_container_name}}.sh stop | |||
Restart=always | |||
RestartSec=30 | |||
|
|||
[Install] | |||
WantedBy=multi-user.target swss.service |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
By remove these 2 lines, restarting swss will no longer restarting snmp. You need to add snmp as a dependent of swss similar https://github.com/Azure/sonic-buildimage/blob/master/files/scripts/swss.sh#L5. But you need to add a logic to ignore this dependency if the uptime is less than 210 seconds.
I see that you did it with snmp.timer below.
I am wondering if we should use systemctrld to manage these dependencies that beyond the scope of systemctrld?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If we will ignore snmp dependency in swss.sh if uptime is less than 210 sec, then who will start snmp? looks like we still need snmp.timer so the complexity will not decrease and we will have 210 sec hard coded in two places.
If the desired behavior can be done with systemd then why to do that in scripts?
) Delay CPU intensive services at boot - How I did it Made snmp.timer work and add telemetry.timer. But this is not enough because it breaks the existing snmp dependency on swss. So, in this solution snmp timer is a wanted by swss service, but since OnBootSec timer expires only once it will not trigger snmp service, so I added line "OnUnitActiveSec=0 sec" which will start snmp service based on the last time it was active. On boot only OnBootSec will expire, on swss start/restarts only second timer will expire immediately and trigger snmp service. However, snmp service will not stop after "systemctl stop snmp" because of the second timer which will always expire when snmp service because unavailable. So there is a conflict which will be handled by systemd if we add "Conflicts=" line to both snmp.service and snmp.timer. So during boot: snmp does not start by default swss starts and starts snmp timer OnUnitActiveSec=0 does not expire since there is no snmp active OnBootSec expires and starts snmp service and snmp timer gets stopped During "systemctl restart swss" snmp stops because of Requisite on swss snmp unblocks snmp timer from running swss starts and starts snmp timer OnUnitActiveSec=0 expires imidiately and start snmp which stops snmp timer During "systemctl stop snmp" stop of snmp service unblocks snmp timer but no one starts the timer so it is not started by "OnUnitActiveSec=0"
…atically (#21343) #### Why I did it src/sonic-utilities ``` * 899ed9b9 - (HEAD -> master, origin/master, origin/HEAD) Remove Multi ASIC namespace Check. (#3783) (3 days ago) [Xincun Li] * 9f1eab43 - Memory Statistics Config and Show Commands (#3575) (3 days ago) [Kanza Latif] * 595c2aaa - Utilities Changes for DHCP DoS Mitigation Feature (#3301) (3 days ago) [Asad Raza] * a3d15bc1 - Add multi-asic support for dropconfig (#3735) (3 days ago) [HP] * 5ce06b27 - Add golden config check (#3770) (4 days ago) [Xincun Li] * 3c50deeb - Fix `vnet_route_check` for active and inactive routes, add `--all` option (#3763) (9 days ago) [mramezani95] * 40ba225f - Revert "enable pfcwd for backplane ports (#3759)" (#3767) (13 days ago) [Dashuai Zhang] * 2866ccd9 - enable pfcwd for backplane ports (#3759) (2 weeks ago) [Dashuai Zhang] * 3abd19e3 - [FC] remove FC delay field (#3577) (3 weeks ago) [Stepan Blyshchak] * 11c27163 - Improve SONiC disk checker to handle disk full case and mount overlay fs to allow remote user login. (#3700) (3 weeks ago) [Hua Liu] * 13619aa2 - [QOS] Skip showing unnecessary warning message (#3708) (3 weeks ago) [Vivek] * f4e6e5b8 - Fixing 'show ip bgp neighbor <ip>' in frr unified config mode (#3738) (3 weeks ago) [kalash-nexthop] * 9a18155e - Optimize lag_keepalive by crafting the LACPDU packet ourselves (#3170) (3 weeks ago) [Saikrishna Arcot] * a7deb8c0 - display proper message with proper errno for kvm. (#3750) (3 weeks ago) [Dawei Huang] * 865f196d - [Mellanox] Add new SN5640 platform and HwSKU (#3742) (4 weeks ago) [Noa Or] * 5fa85027 - [show_techsupport][pstore] Archive /var/lib/systemd/pstore info to techsupport (#3745) (4 weeks ago) [Marty Y. Lok] * 8f69d5a6 - sonic-utilities: WRED stats feature changes on sonic-utilities (#2807) (4 weeks ago) [Rajesh Perumal R] * 9d273f16 - Fix call for spanning-tree commands in dump script (#3723) (4 weeks ago) [DavidZagury] * 6d95d9bd - Make 'show ip bgp summary' work even when we don't have any peer groups (#3739) (4 weeks ago) [kalash-nexthop] * 7f3957c4 - Fix ssdhealth failure on VS platform (#3743) (4 weeks ago) [Vivek] * 97b4e4b8 - Fix show interface counters for Chassis Packet Supervisor (#3734) (4 weeks ago) [anamehra] * 414935b7 - Add recover asic_id config if load golden config. (#3711) (5 weeks ago) [Xincun Li] * 973cfdc3 - Remove partially installer image when image install failed. (#3712) (5 weeks ago) [Hua Liu] * 97c20ccd - CLI support for SmartSwitch PMON (#3271) (5 weeks ago) [rameshraghupathy] * 752c3d49 - [ACL] Display rule and table info written to APP DB (#3713) (5 weeks ago) [Vivek] * fbd0c3b1 - [show][interface] Add changes for show interface flap command (#3724) (5 weeks ago) [vdahiya12] * ddccabee - [show][interface] Add changes for show interface errors command (#3721) (5 weeks ago) [vdahiya12] * be870a6e - [config] Exit with non-zero when qos reload fail (#3710) (6 weeks ago) [Jianyue Wu] * ffa66e96 - Remove debug dump import by default (#3715) (6 weeks ago) [Vivek] * fc3a3cbe - [ssdhealth] Check for default device before falling back to discovery (#3693) (6 weeks ago) [Vivek] * 782c33a1 - [yang] Enforce yang full support in full config command (#3716) (6 weeks ago) [jingwenxie] * a5b7a904 - [show][interfaces] Add proposal for show interfaces flap (#3627) (6 weeks ago) [vdahiya12] * 0083a124 - sonic-utilities: add th5 hwskus to gcu conf file (#3714) (7 weeks ago) [Chris] * 81cf04f7 - [Mellanox] Add Mellanox-SN5610N-C256S2, Mellanox-SN5610N-C224O8 to GCU validators (#3658) (7 weeks ago) [noaOrMlnx] * 349a1018 - [db_migrator] Migrate tunnel table (#3704) (7 weeks ago) [Longxiang Lyu] * 0e327c5f - show ip interfaces: fix exception with BGP unnumbered (#3695) (8 weeks ago) [Brad House] * 7100f73b - [show_tech] modify generate_dump to includes BERT data and also the platform specified hw-mgmt info (#3676) (8 weeks ago) [Marty Y. Lok] * 80d46988 - Delete TRSNCEIVER tables while config reload (#3680) (8 weeks ago) [noaOrMlnx] * bf6ff9f9 - Enable multi asic golden config YANG validation. (#3685) (8 weeks ago) [Xincun Li] ``` #### How I did it #### How to verify it #### Description for the changelog
- What I did
Delay CPU intensive services at boot
- How I did it
Made snmp.timer work and add telemetry.timer.
But this is not enough because it breaks the existing snmp dependency on swss.
So, in this solution snmp timer is a wanted by swss service, but since OnBootSec timer expires only once it will not trigger snmp service, so I added line "OnUnitActiveSec=0 sec" which will start snmp service based on the last time it was active. On boot only OnBootSec will expire, on swss start/restarts only second timer will expire immediately and trigger snmp service.
However, snmp service will not stop after "systemctl stop snmp" because of the second timer which will always expire when snmp service because unavailable.
So there is a conflict which will be handled by systemd if we add "Conflicts=" line to both snmp.service and snmp.timer.
So during boot:
During "systemctl restart swss"
During "systemctl stop snmp"
- How to verify it
- Description for the changelog
- A picture of a cute animal (not mandatory but encouraged)