Messages in this thread | | | From | Aaron Conole <> | Subject | Re: [ovs-dev] [PATCH net-next v2] openvswitch: reduce stack usage in do_execute_actions | Date | Wed, 27 Sep 2023 16:24:45 -0400 |
| |
Ilya Maximets <i.maximets@ovn.org> writes:
> do_execute_actions() function can be called recursively multiple > times while executing actions that require pipeline forking or > recirculations. It may also be re-entered multiple times if the packet > leaves openvswitch module and re-enters it through a different port. > > Currently, there is a 256-byte array allocated on stack in this > function that is supposed to hold NSH header. Compilers tend to > pre-allocate that space right at the beginning of the function: > > a88: 48 81 ec b0 01 00 00 sub $0x1b0,%rsp > > NSH is not a very common protocol, but the space is allocated on every > recursive call or re-entry multiplying the wasted stack space. > > Move the stack allocation to push_nsh() function that is only used > if NSH actions are actually present. push_nsh() is also a simple > function without a possibility for re-entry, so the stack is returned > right away. > > With this change the preallocated space is reduced by 256 B per call: > > b18: 48 81 ec b0 00 00 00 sub $0xb0,%rsp > > Signed-off-by: Ilya Maximets <i.maximets@ovn.org> > ---
Thanks, Ilya.
Reviewed-by: Aaron Conole <aconole@redhat.com>
| |