On 2015/8/5 12:40, Ryan Ding wrote:
> Hi Joseph,
> 
> 
> On 08/04/2015 05:03 PM, Joseph Qi wrote:
>> Hi Ryan,
>>
>> On 2015/8/4 14:16, Ryan Ding wrote:
>>> Hi Joseph,
>>>
>>> Sorry for bothering you with the old patches. But I really need to know 
>>> what this patch is for.
>>>
>>> https://oss.oracle.com/pipermail/ocfs2-devel/2015-January/010496.html
>>>
>>>  From above email archive, you mentioned those patches aim to reduce the 
>>> host page cache consumption. But in my opinion, after append direct io, the 
>>> page used for buffer is clean. System can realloc those cached pages. We 
>>> can even call invalidate_mapping_pages to fast that process. Maybe more 
>>> pages will be needed during direct io. But direct io size can not be too 
>>> large, right?
>>>
>> We introduced the append direct io because originally ocfs2 would fall
>> back to buffer io in case of thin provision, which was not the actual
>> behavior that user expect.
> direct io has 2 semantics:
> 1. io is performed synchronously, data is guaranteed to be transferred after 
> write syscall return.
> 2. File I/O is done directly to/from user space buffers. No page buffer 
> involved.
> But I think #2 is invisible to user space, #1 is the only thing that user 
> space is really interested in.
> We should balance the benefit and disadvantage to determine whether #2 should 
> be supported.
> The disadvantage is: bring too much complexity to the code, bugs will come 
> along. And involved a incompatible feature.
> For example, I did a single node sparse file test, and it failed.
> The original way of ocfs2 handling direct io(turn to buffer io when it's 
> append write or write to a file hole) has 2 consideration:
> 1. easier to support cluster wide coherence.
> 2. easier to support sparse file.
> But it seems that your patch handle #2 not very well.
> There may be more issues that I have not found.
>> I didn't get you that more pages would be needed during direct io. Could
>> you please explain it more clearly?
> I mean the original way of handle append-dio will consume some page cache. 
> The page cache size it consume depend on the direct io size. For example, 1MB 
> direct io will consume 1MB page cache.But since direct io size can not be too 
> large, the page cache it consume can not be too large also. And those pages 
> can be freed after direct io finished by calling invalidate_mapping_pages().
>>
One more thing, in ocfs2, o2net_wq is single thread workqueue and has
many responsibilities, including unlock when reclaiming cache. That
means the path will be much longer and involve network.

>> Thanks,
>> Joseph
>>
>>> Thanks,
>>> Ryan
>>>
>>>
>>
> 
> 
> .
> 



_______________________________________________
Ocfs2-devel mailing list
Ocfs2-devel@oss.oracle.com
https://oss.oracle.com/mailman/listinfo/ocfs2-devel

Reply via email to