I found the following and though that I could post it in case anybody
else has the same questions:

The translation of pvfs offsets corresponding to striping takes place in:

PINT_process_request
PINT_distribute
src/io/description/dist-simple-stripe.c --> next_mapped_offset
src/io/description/dist-simple-stripe.c --> logical_to_physical_offset
src/io/description/dist-simple-stripe.c --> contiguous_length

There are 4 types of striping in pvfs (I have used only the default -
simple-stripe so far) and the offset translation is done in the
corresponding-stripe.c file as listed above.

**About the prefetching, if anybody has experience in state machines,
please do let me know. I would really apprecite the help**

Thanks and Regards,
Christina.



On Thu, Apr 16, 2009 at 4:29 PM, Christina Patrick
<[email protected]> wrote:
> Hi All,
>
> I am doing a project where I need to implement simple prefetching in
> pvfs. While I was going through the pvfs code, I couldn't understand
> the following and hence have to ask the below questions:
>
> 1. What is the file descriptor assigned by pvfs? Does this file
> descriptor correspond to actual descriptor (of the underlying
> filesystem) ... for eg. that which is seen by /proc filesystem?
>
> 2. When I traced the I/O calls in pvfs v2.8.0, I found the following
> function chain on the pvfs2 server side:
> main
>  -> PINT_state_machine_continue
>    -> PINT_state_machine_next
>      -> PINT_state_machine_invoke
>        -> io_start_flow
>          -> job_flow
>            -> PINT_flow_post
>              -> fp_multiqueue_post
>                -> bmi_send_callback_fn
>                  -> trove_bstream_read_list
>                    -> alt_aio_bstream_read_list
>                      -> dbpf_bstream_rw_list
>                        -> issue_or_delay_io_operation
>                          -> alt_lio_listio
>                            -> pthread_create => alt_lio_thread
> alt_lio_thread (new thread)
>  -> pread
> Since, pvfs is a parallel file system, are all the file descriptors
> assigned on all the servers the same? I saw one instance where the
> servers used descriptors 12, 12 & 17 and another instance where all
> the file servers used descriptor 12?
>
> 3. The most important question is how come all the file servers (the
> function alt_lio_thread) are passed the same offsets and also the
> total size of the data to be read? Shouldn't each file server be
> passed a list of offsets corresponding to what is stored on its own
> local disk (bcoz of the striping)? Where does this translation
> actually take place and how does the server read in the appropriate
> data in other words how is the striped data actually read?
>
> 4. In order to implement prefetching on the server side, how do I have
> to go about it? Can I do some shortcut method or do I need to
> introduce some new state machine etc? I could really do with some help
> here.
>
> I really appreciate your help,
> Thanks and Regards,
> Christina.
>

_______________________________________________
Pvfs2-developers mailing list
[email protected]
http://www.beowulf-underground.org/mailman/listinfo/pvfs2-developers

Reply via email to