Object Forms
There will be three different object forms in DAOS:
Hierarchical object
Hierarchical object in memory bucket
Flattened object
This diagram shows the DAOS object forms, all elements in the blue rectangle are stored in DT-blob, they only consume memory during I/O processing, they can be evicted from DRAM if the system is under memory pressure. All the elements outside the rectangle are stored in MD-blob, it means that they stay in DRAM permanently when the pool is opened.
When an object is created, it is always hierarchical, but it can either be in MD-blob or in DT-blob (memory bucket), it can be flattened by flattening service late if it is a WORM object. If a hierarchical object is put in MD-blob, then it will be pinned in DRAM, otherwise it is loaded into DRAM on demand.
If it still cannot fit into DRAM, as described in previous section, DAOS can flatten the object index tree and move object structures into DT-blob and only keep internal index in MD-blob and DRAM. However, flattening object index tree requires extra works like defragmentation after punching objects, so this is an optional feature.