[Pvfs2-developers] Re: Question in pvfs I/O
Seung Woo Son
sson at mcs.anl.gov
Sat Apr 18 20:33:18 EDT 2009
On Apr 18, 2009, at 5:45 PM, Christina Patrick wrote:
> 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**
Christina,
There is a design doc about state machines under the pvfs2 doc
directory,
which you might want to take a look at:
pvfs-2.8.1/doc/design/state-machine.tex
Seung
>
> 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.
>>
>
> _______________________________________________
> Pvfs2-developers mailing list
> Pvfs2-developers at beowulf-underground.org
> http://www.beowulf-underground.org/mailman/listinfo/pvfs2-developers
More information about the Pvfs2-developers
mailing list