...
Both B+Tree and EVTree have a fixed tree order, which is the number of children can be added to a tree node, the default order of B+Tree in VOS is 20 and EVTree is 15. It means VOS will allocate a piece of memory which has 20 or 15 slots for addresses of children, even if there is only one child attached to the tree node. This is a big waste for small object, because each tree node consumes hundreds of bytes even if the actual need is tens of bytes. The current solution is while allocating the first level tree node (the first tree node attached to root), DAOS initially creates a small tree node with 1 slot for child. If more keys or values are added to the tree, DAOS will try to reallocate tree node with more slots: 3, 5, …, it will eventually reach the default tree order. After that, if more children are added to the tree, the algorithm will switch to the regular code path: split tree node and increase the depth of the tree.
...