object expiry tracking memroy usage ==================================== Bitrot daemon tracks objects for expiry in a data structure known as "timer-wheel" (after which the object is signed). It's a well known data structure for tracking million of objects of expiry. Let's see the memory usage involved when tracking 1 million objects (per brick). Bitrot daemon uses "br_object" structure to hold information needed for signing. An instance of this structure is allocated for each object that needs to be signed. struct br_object { xlator_t *this; br_child_t *child; void *data; uuid_t gfid; unsigned long signedversion; struct list_head list; }; Timer-wheel requires an instance of the structure below per object that needs to be tracked for expiry. struct gf_tw_timer_list { void *data; unsigned long expires; /** callback routine */ void (*function)(struct gf_tw_timer_list *, void *, unsigned long); struct list_head entry; }; Structure sizes: - sizeof (struct br_object): 64 bytes - sizeof (struct gf_tw_timer_list): 40 bytes Together, these structures take up 104 bytes. To track all 1 million objects at the same time, the amount of memory taken up would be: ** 1,000,000 * 104 bytes: ~100MB** Not so bad, I think.