John,

do you mind if we put this into the SDK docs like this, or do you
think it needs some touching up?

----- Original Message -----
> Each bucket points to a linked list of directory entrys (Dir) which
> point
> to  "fragment"s which is a contiguous piece of an "object" or
> "document".
>
> For performance reasons (to take advantage of the L1 cache) Dir
> entries
> allocated for a bucket are taken first from the other 3 entries in
> the
> bucket.
>
> Each "fragment" (part of an object up to 2MB) has a Dir entry.  The
> 8K
> figure is a lower bound on the size of objects and hence the number
> of
> fragments and therefore the number of Dir entries the cache must
> provide for.
>
> The freelist in Part is used to store the linked list of free Dir
> entries
> within a segment.
>
> The method evacuateWrite is used to evacuate documents when the
> write_pos is about to write over a document.  The cache is organized
> like a cyclone buffer or a log-based file system and evacuateWrite is
> part of the "cleaner".
>
> The method "aggWrite" collects all the pending fragments and groups
> them into a single write (for seek efficiency) of up to 4MB.  It then
> does the write and notifies the CacheVC's (some of which might
> be doing evacuations) when the write is complete.
>
> john
>
>
> On Tue, Mar 8, 2011 at 4:25 AM, 张练 <wahu0315...@gmail.com> wrote:
>
> >    I have some questions with the design of class Part. I think the
> >    Part is
> > divided into several Segments, and each Segments contain 2^16
> > buckets, and
> > each buckets contain 4 object. In default, every object's size is
> > 8000(proxy.config.cache.min_average_object_size), and each object
> > has an
> > opposite element Dir to store their position in Part. The member
> > named
> > header in Part, whose type is PartHeaderFooter, has an array member
> > freelist
> > used to store each Segment's position message, and with these
> > message, Part
> > use some macro, such as part_dirlen and so on, to find every
> > object's exact
> > position.
> >    But i can't understand the following members' usage:
> >    What are the meaning of method evacuateWrite and aggWrite? And
> >    what is
> > the logic of the implement of these methods?
> >
> > --
> > Best regards,
> > mohan_zl
> >
>

--
Igor Galić

Tel: +43 (0) 664 886 22 883
Mail: i.ga...@brainsware.org
URL: http://brainsware.org/

Reply via email to