Flattened object and memory consumption

In the current VOS implementation, metadata of an object consumes 104 bytes (vos_obj_df), which includes object ID, index tree root, incarnation log header, etc. After flattening, most of these information are not necessary anymore: keeping the object ID and BIO address of the flattened buffer is sufficient, these metadata roughly consume 48 bytes based on the current estimate. During I/O processing, VOS can look up the object index tree and check if the object is stored in flattened or hierarchical format, it shall load its keys and values from DT-blob back to DRAM in the former case.

Flattened objects

As shown in the diagram above, hierarchical objects and all the tree indexes remain in MD-blob and DRAM, whereas flattened objects only keeps a little metadata in DRAM and saves all keys and values in DT-blob. In this model, assuming each object consumes 48 bytes for metadata, VOS uses a few more bytes to index object, blob allocator also has its own overhead, overall bytes per object can be around 100 bytes. Based on the previous assumption, a storage server has 900GB DRAM for metadata, then a server can store up to 9 billion 4K files.