[Pvfs2-developers] Re: Question in pvfs I/O
Christina Patrick
christina.subscribes at gmail.com
Sat Apr 18 18:45:11 EDT 2009
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
<christina.subscribes at gmail.com> 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.
>
More information about the Pvfs2-developers
mailing list