On 8/26/22 15:46, Dumitru Ceara wrote: > On 8/4/22 18:37, Ilya Maximets wrote: >> Transaction history is used to construct database updates for clients. >> But if the row didn't change it will never be used for monitor updates, >> because ovsdb_monitor_changes_classify() will always return >> OVSDB_CHANGES_NO_EFFECT. So, ovsdb_monitor_history_change_cb() >> will never add it to the update. >> >> This condition is very common for rows with references. While >> processing strong references in ovsdb_txn_adjust_atom_refs() the >> whole destination row will be cloned into transaction just to update >> the reference counter. If this row will not be changed later in >> the transaction, it will just stay in that state and will be added >> to the transaction history. Since the data didn't change, both 'old' >> and 'new' datums will be the same and equal to one in the database. >> So, we're keeping 2 copies of the same row in memory and we are >> never using them. In this case, we should just not add them to the >> transaction history in the first place. >> >> This change should save some space in the transaction history in case >> of transactions with rows with big number of strong references. >> This should also speed up the processing since we will not clone >> these rows for transaction history and will not count their atoms. >> >> Testing shows about 5-10% performance improvement in ovn-heater >> test scenarios. >> >> 'n_atoms' counter for transaction adjusted to count only changed >> rows, so we will have accurate value for a number of atoms in the >> history. >> >> Signed-off-by: Ilya Maximets <[email protected]> >> --- > > Looks good to me, thanks! > > Acked-by: Dumitru Ceara <[email protected]>
Applied. Thanks! Best regards, Ilya Maximets. _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
