Thank you very much.

Regards,
Christina.

On Tue, Apr 21, 2009 at 9:59 AM, Phil Carns <[email protected]> wrote:
> Hi Christina,
>
> I answered some of your specific questions in line below:
>
> Christina Patrick 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?
>
> The file descriptor used on the client side has no relation to the file
> descriptors used by the servers.  The client's file descriptor is assigned
> by the Linux kernel when a file is opened.
>
>> 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?
>
> I think the previous question sort of answered that, but the servers get
> their own file descriptors as needed; they have no relation to the client's
> file descriptor.  If the servers happen to match it is just coincidence.
>
>> 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?
>
> The offsets used by the client have to get mapped to what makes sense
> relative to each server's part of the data.  The default striping unit is 64
> KB.  This means that if you read at offset 64 KB, for example, then it will
> actually correspond to offset 0 of the 2nd server's data. It is pretty
> common to hit the same local offset on every server.
>
>> 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
>
>

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

Reply via email to