Hi Juergen,

On 24/07/2023 12:02, Juergen Gross wrote:
Today all Xenstore nodes are stored in a TDB data base. This data base
has several disadvantages:

- It is using a fixed sized hash table, resulting in high memory
   overhead for small installations with only very few VMs, and a rather
   large performance hit for systems with lots of VMs due to many
   collisions.
   The hash table size today is 7919 entries. This means that e.g. in
   case of a simple desktop use case with 2 or 3 VMs probably far less
   than 10% of the entries will be used (assuming roughly 100 nodes per
   VM). OTOH a setup on a large server with 500 VMs would result in
   heavy conflicts in the hash list with 5-10 nodes per hash table entry.

- TDB is using a single large memory area for storing the nodes. It
   only ever increases this area and will never shrink it afterwards.
   This will result in more memory usage than necessary after a peak of
   Xenstore usage.

- Xenstore is only single-threaded, while TDB is designed to be fit
   for multi-threaded use cases, resulting in much higher code
   complexity than needed.

- Special use cases of Xenstore are not possible to implement with TDB
   in an effective way, while an implementation of a data base tailored
   for Xenstore could simplify some handling (e.g. transactions) a lot.

So drop using TDB and store the nodes directly in memory making them
easily accessible. Use a hash-based lookup mechanism for fast lookup
of nodes by their full path.

For now only replace TDB keeping the current access functions.

Signed-off-by: Juergen Gross <jgr...@suse.com>

Reviewed-by: Julien Grall <jgr...@amazon.com>

Cheers,

--
Julien Grall

Reply via email to