e3be3f913c
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
)
42 lines
1.6 KiB
Python
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')
|