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
