ÁÖ ËÉÌÎ wrote:> Hi, > Thanks for your suggestions. There are some new questions: > According to your suggestions,the base RPC size is > PAGE_CACHE_SHIFT-3(512Bytes).The default optimal RPC size for file I/O is 512 kB.>From your previous question, (blksize >> (PAGE_CACHE_SHIFT - 3)) usuallyequals 512 kB multiplied by the stripe count of the file.> Once the ll_start_readahead is triggered, it readahead some pages,and the > number > of the pages equals the number of OSTs a file is striped over....multiplied by 512kB.> If i am right, the readahead maybe read pages that are outside the file > regions that > have locks on the client,because the client only lock the externt the > read() descripts.This is true, and has been fixed in Lustre 1.2.x.> There is another question about lustre architecture: > I think there should be two approach to trigger lustre''s functions,the > first one is mounting > the lustre filesystem,use the systemcall from the linux kernel, the other > is using > the lustre lib(liblustre) to just communicating the ost without > gnitcurtsnoc the local filesystm > or mount the lustre filesystm into the local filesystms,just as the mpi-io > links the pvfs lib > by adio interface. Am I right? > If i am right , in the second circurments, which module is responsible > for keeping the client > cache(page cache)?You are correct. liblustre can be used to access a Lustre file system without a native kernel driver, and without mounting it into the node''s VFS namespace. liblustre does not maintain a page cache in the same way that the kernel does. The OSC is responsible for aggregating updates into large RPCs, and the amount of caching is currently very limited. -Phil
Hi, Thanks for your suggestions. There are some new questions: According to your suggestions,the base RPC size is PAGE_CACHE_SHIFT-3(512Bytes). Once the ll_start_readahead is triggered, it readahead some pages,and the number of the pages equals the number of OSTs a file is striped over. And the page is 4K large in standard. Am I right? If i am right, the readahead maybe read pages that are outside the file regions that have locks on the client,because the client only lock the externt the read() descripts. There is another question about lustre architecture: I think there should be two approach to trigger lustre''s functions,the first one is mounting the lustre filesystem,use the systemcall from the linux kernel, the other is using the lustre lib(liblustre) to just communicating the ost without gnitcurtsnoc the local filesystm or mount the lustre filesystm into the local filesystms,just as the mpi-io links the pvfs lib by adio interface. Am I right? If i am right , in the second circurments, which module is responsible for keeping the client cache(page cache)? Thanks for any suggestion?>SongT.L <songtao_l@hotmail.com> wrote: >> I have a new question about lustre. >> In the func ll_start_readahead( llite/rw.c), the variable end_index is >> assigned to >> first_index+(inode->iblksize>>(PAGE_CACHE_SHIFT-3)). >> Why use this value? What is the difference in readahead strategybetween>> lustre and standard linux?>With Lustre the i_blksize value is a multiple of the RPC size and thenumber>of OSTs a file is striped over, so it is a good size for readahead. The >standard Linux VM readahead is not large enough for Lustre to get optimal >read performance on high-speed networks.>The reason Lustre uses its own readahead is because the VM readahead does >not know about Lustre locking and sometimes tries to read pages that are >outside the file regions that have locks on the client.>Cheers, Andreas¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡songtao_l ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡songtao_l@hotmail.com ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡2004-04-09 _________________________________________________________________ ÏíÓÃÊÀ½çÉÏ×î´óµÄµç×ÓÓʼþϵͳ¡ª MSN Hotmail¡£ http://www.hotmail.com