This patch set aims to solve the issue of database conversion for
reasonably sized databases in high-scale OVN setups discussed here:
  https://mail.openvswitch.org/pipermail/ovs-discuss/2022-December/052140.html

The general approach is described in this email:
  https://mail.openvswitch.org/pipermail/ovs-discuss/2023-January/052158.html

The first patch in the set is a pure bug fix that should be backported.
The second patch also can be considered as a bug fix, though not very
important one.

Patch 3 is a ground work for the database file format change.
Patch 4 is an actual file format change that allows performance
improvements.

Patch 5 is an additional performance improvement on top of 4.

The last patch is covering a bit different area and can generally be
considered outside of this patch set.  It is aimed to solve the
initial monitor request storm caused by the conversion.  Without it,
conversion is passing, but it may take up to an hour to catch up
all the clients, with ovsdb-server being non-responsive for tens
of minutes, depending on a scale.

More details are in commit messages of each patch.

We may consider backporting patch 3 to branch 3.1 (earlier?) in order
to simplify upgrades for OpenStack or ovn-kubernetes deployments.

The patch set allows to successfully perform database conversion
on a 250-node cluster loaded with ovn-heater's cluster-density test.

500-node version of the test can also succeed with a small hiccup
caused by a short RAFT disconnection due to busy-sending of 100 GB
of initial monitor replies to all the clients.  In my testing, cluster
recovers from it in just 30 seconds though (16 second election timer).
There are ways to solve this as well, but the issue is outside of
the scope for this patch set.  See the last patch for more details
on the issue.

Before this change, conversion with either 250 or 500 nodes in this
test is practically impossible.


Ilya Maximets (6):
  ovsdb-tool: Fix cluster-to-standalone for DB conversion records.
  ovsdb: Check for ephemeral columns before writing a new schema.
  ovsdb: Allow conversion records with no data in a clustered storage.
  ovsdb: Perform conversion with no data for clustered databases.
  ovsdb: Avoid converting database twice on an initiator.
  ovsdb: monitor: Keep and maintain the initial change set.

 Documentation/ref/ovsdb.7.rst | 63 +++++++++++++++++++++++++++
 NEWS                          | 10 +++++
 ovsdb/log.c                   | 17 ++++++++
 ovsdb/log.h                   |  3 ++
 ovsdb/monitor.c               |  5 ++-
 ovsdb/ovsdb-server.c          | 80 ++++++++++++++++++++++++++---------
 ovsdb/ovsdb-tool.c            | 43 +++++++++++++++++--
 ovsdb/ovsdb.c                 | 34 +++++++++++++++
 ovsdb/ovsdb.h                 |  3 ++
 ovsdb/relay.c                 | 20 +++++++--
 ovsdb/relay.h                 |  9 +++-
 ovsdb/storage.c               | 24 ++++++++---
 ovsdb/storage.h               |  2 +-
 ovsdb/transaction.c           |  8 ++--
 ovsdb/transaction.h           |  4 +-
 ovsdb/trigger.c               | 53 ++++++++++++++++++-----
 ovsdb/trigger.h               |  7 +++
 tests/ovsdb-tool.at           | 69 ++++++++++++++++++++++++++++++
 18 files changed, 399 insertions(+), 55 deletions(-)

-- 
2.39.2

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to