neutron/neutron/conf/agent/ovs_conf.py
Slawek Kaplonski e3be3f913c [OVS] Add mac-table-size to be set on each ovs bridge
By default number of MAC addresses which ovs stores in memory
is quite low - 2048.

Any eviction of a MAC learning table entry triggers revalidation.
Such revalidation is very costly so it cause high CPU usage by
ovs-vswitchd process.

To workaround this problem, higher value of mac-table-size
option can be set for bridge. Then this revalidation will happen
less often and CPU usage will be lower.
This patch adds config option for neutron-openvswitch-agent to allow
users tune this setting in bridges managed by agent.
By default this value is set to 50000 which should be enough for most
systems.

Change-Id: If628f52d75c2b5fec87ad61e0219b3286423468c
Closes-Bug: #1775797
(cherry picked from commit 1f8378e0ac)
2018-06-19 07:12:45 +00:00

42 lines
1.6 KiB
Python

# Copyright 2011 VMware, Inc.
# All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
from oslo_config import cfg
from neutron._i18n import _
# Default timeout for ovsdb commands
DEFAULT_OVSDB_TIMEOUT = 10
OPTS = [
cfg.IntOpt('ovsdb_timeout',
default=DEFAULT_OVSDB_TIMEOUT,
deprecated_name='ovs_vsctl_timeout', deprecated_group='DEFAULT',
help=_('Timeout in seconds for ovsdb commands. '
'If the timeout expires, ovsdb commands will fail with '
'ALARMCLOCK error.')),
cfg.IntOpt('bridge_mac_table_size',
default=50000,
help=_('The maximum number of MAC addresses to learn on '
'a bridge managed by the Neutron OVS agent. Values '
'outside a reasonable range (10 to 1,000,000) might be '
'overridden by Open vSwitch according to the '
'documentation.')),
]
def register_ovs_agent_opts(cfg=cfg.CONF):
cfg.register_opts(OPTS, 'OVS')