To elaborate a bit on Patrick's answer, there is no mechanism to do this on the 
*client*, because the performance difference between client RAM and server 
storage is still fairly significant, especially if the application is doing 
sub-page read or write operations.

However, on the *server* the OSS and MDS will *not* put flash storage into the 
page cache, because using the kernel page cache has a measurable overhead, and 
(at least in our testing) the performance of NVMe IOPS is actually better 
*without* the page cache because more CPU is available to handle RPCs.  This is 
controlled on the server with 
osd-ldiskfs.*.{read_cache_enable,writethrough_cache_enable}, default to 0 if 
the block device is non-rotational, default to 1 if block device is rotational.

Separately, there is a tunable for avoiding the page cache for large read/write 
RPCs, osd-ldiskfs.*.readcache_max_io_mb=8 by default, so RPCs >= 8MB go 
directly to the disk, to avoid blowing out the page cache on the server.

Cheers, Andreas

> On May 19, 2022, at 12:21, Patrick Farrell via lustre-discuss 
> <[email protected]> wrote:
> 
> Well, you could use two file descriptors, one for O_DIRECT one otherwise. 🙂
> 
> SSD is a fast medium but my instinct is the desirability of having data in 
> RAM is much more about I/O pattern and hard to optimize for in advance - Do 
> you read the data you wrote?  (Or read data repeatedly?)
> 
> In any case, there's no mechanism today.  It's also relatively marginal if 
> we're just doing buffered I/O then forcing the data out - it will reduce 
> memory usage but it won't improve performance.
> 
> -Patrick
> 
> From: John Bauer <[email protected]>
> Sent: Thursday, May 19, 2022 1:16 PM
> To: Patrick Farrell <[email protected]>; [email protected] 
> <[email protected]>
> Subject: Re: [lustre-discuss] Avoiding system cache when using ssd pfl extent
>  
> Pat,
> No, not in  general.  It just seems that if one is storing data on an SSD it 
> should be optional to have it not stored in memory ( why store in 2 fast 
> mediums ).
> O_DIRECT is not of value as that would apply to all extents, whether on SSD 
> on HDD.   O_DIRECT on Lustre has been problematic for me in the past, 
> performance wise.
> John
> On 5/19/22 13:05, Patrick Farrell wrote:
>> No, and I'm not sure I agree with you at first glance.
>> 
>> Is this just generally an idea that data stored on SSD should not be in RAM? 
>>  If so, there's no mechanism for that other than using direct I/O.
>> 
>> -Patrick
>> From: lustre-discuss <[email protected]> on behalf of 
>> John Bauer <[email protected]>
>> Sent: Thursday, May 19, 2022 12:48 PM
>> To: [email protected] <[email protected]>
>> Subject: [lustre-discuss] Avoiding system cache when using ssd pfl extent
>>  
>> When using PFL, and using an SSD as the first extent, it seems it would 
>> be advantageous to not have that extent's file data consume memory in 
>> the client's system buffers.  It would be similar to using O_DIRECT, but 
>> on a per-extent basis.  Is there a mechanism for that already?
>> 
>> Thanks,
>> 
>> John
>> 
>> _______________________________________________
>> lustre-discuss mailing list
>> [email protected]
>> http://lists.lustre.org/listinfo.cgi/lustre-discuss-lustre.org
> _______________________________________________
> lustre-discuss mailing list
> [email protected]
> http://lists.lustre.org/listinfo.cgi/lustre-discuss-lustre.org

Cheers, Andreas
--
Andreas Dilger
Lustre Principal Architect
Whamcloud







_______________________________________________
lustre-discuss mailing list
[email protected]
http://lists.lustre.org/listinfo.cgi/lustre-discuss-lustre.org

Reply via email to