diff mbox series

[U-Boot] drivers: block: Allow to cache 4K blocks by default

Message ID 76d83c2b-fd2c-35c1-cfd9-883037167716@siemens.com
State Not Applicable
Delegated to: Tom Rini
Headers show
Series [U-Boot] drivers: block: Allow to cache 4K blocks by default | expand

Commit Message

Jan Kiszka Dec. 9, 2018, 8:55 a.m. UTC
The default settings of the block cache so far only allow to hold single
1K blocks. However, larger filesystems tend to use 4K. Failing to cache
those massively degrades access performance unless you manually tune the
cache first. This is not desirable.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
---

My "load mmc is slow" problem reappeared on AM65xx after growing the
rootfs to almost 1 GB - despite an active block cache.

 drivers/block/blkcache.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Marek Vasut Dec. 10, 2018, 4:13 a.m. UTC | #1
On 12/09/2018 09:55 AM, Jan Kiszka wrote:
> The default settings of the block cache so far only allow to hold single
> 1K blocks. However, larger filesystems tend to use 4K. Failing to cache
> those massively degrades access performance unless you manually tune the
> cache first. This is not desirable.
> 
> Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>

I submitted the same patch before [1], oddly enough it was not picked by
Tom.

[1]
http://u-boot.10912.n7.nabble.com/PATCH-RFC-blk-Increase-cache-element-size-td337975.html

> ---
> 
> My "load mmc is slow" problem reappeared on AM65xx after growing the
> rootfs to almost 1 GB - despite an active block cache.
> 
>  drivers/block/blkcache.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/block/blkcache.c b/drivers/block/blkcache.c
> index 294511fcdb..1fa64989d3 100644
> --- a/drivers/block/blkcache.c
> +++ b/drivers/block/blkcache.c
> @@ -24,7 +24,7 @@ struct block_cache_node {
>  static LIST_HEAD(block_cache);
>  
>  static struct block_cache_stats _stats = {
> -	.max_blocks_per_entry = 2,
> +	.max_blocks_per_entry = 8,
>  	.max_entries = 32
>  };
>  
>
Jan Kiszka Dec. 10, 2018, 6:18 a.m. UTC | #2
On 10.12.18 05:13, Marek Vasut wrote:
> On 12/09/2018 09:55 AM, Jan Kiszka wrote:
>> The default settings of the block cache so far only allow to hold single
>> 1K blocks. However, larger filesystems tend to use 4K. Failing to cache
>> those massively degrades access performance unless you manually tune the
>> cache first. This is not desirable.
>>
>> Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
> 
> I submitted the same patch before [1], oddly enough it was not picked by
> Tom.

Maybe because the follow-up discussion felt like the topic didn't settle? I 
would vote for resolving this 4K think first, because it's very real. OTW: You 
patch should go in first of all, then better solutions can be developed on top.

Jan

> 
> [1]
> http://u-boot.10912.n7.nabble.com/PATCH-RFC-blk-Increase-cache-element-size-td337975.html
> 
>> ---
>>
>> My "load mmc is slow" problem reappeared on AM65xx after growing the
>> rootfs to almost 1 GB - despite an active block cache.
>>
>>   drivers/block/blkcache.c | 2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/drivers/block/blkcache.c b/drivers/block/blkcache.c
>> index 294511fcdb..1fa64989d3 100644
>> --- a/drivers/block/blkcache.c
>> +++ b/drivers/block/blkcache.c
>> @@ -24,7 +24,7 @@ struct block_cache_node {
>>   static LIST_HEAD(block_cache);
>>   
>>   static struct block_cache_stats _stats = {
>> -	.max_blocks_per_entry = 2,
>> +	.max_blocks_per_entry = 8,
>>   	.max_entries = 32
>>   };
>>   
>>
> 
>
Tom Rini Dec. 10, 2018, 12:28 p.m. UTC | #3
On Mon, Dec 10, 2018 at 05:13:58AM +0100, Marek Vasut wrote:
> On 12/09/2018 09:55 AM, Jan Kiszka wrote:
> > The default settings of the block cache so far only allow to hold single
> > 1K blocks. However, larger filesystems tend to use 4K. Failing to cache
> > those massively degrades access performance unless you manually tune the
> > cache first. This is not desirable.
> > 
> > Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
> 
> I submitted the same patch before [1], oddly enough it was not picked by
> Tom.
> 
> [1]
> http://u-boot.10912.n7.nabble.com/PATCH-RFC-blk-Increase-cache-element-size-td337975.html

Based on a quick re-read, I had filed that patch as "Marek says he'll
look into a more complex but general scheme".  If that's not the case
then yes, we can just do that.  Thanks!
Marek Vasut Dec. 20, 2018, 8:45 a.m. UTC | #4
On 12/10/2018 01:28 PM, Tom Rini wrote:
> On Mon, Dec 10, 2018 at 05:13:58AM +0100, Marek Vasut wrote:
>> On 12/09/2018 09:55 AM, Jan Kiszka wrote:
>>> The default settings of the block cache so far only allow to hold single
>>> 1K blocks. However, larger filesystems tend to use 4K. Failing to cache
>>> those massively degrades access performance unless you manually tune the
>>> cache first. This is not desirable.
>>>
>>> Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
>>
>> I submitted the same patch before [1], oddly enough it was not picked by
>> Tom.
>>
>> [1]
>> http://u-boot.10912.n7.nabble.com/PATCH-RFC-blk-Increase-cache-element-size-td337975.html
> 
> Based on a quick re-read, I had filed that patch as "Marek says he'll
> look into a more complex but general scheme".  If that's not the case
> then yes, we can just do that.  Thanks!

I still don't see the original patch in u-boot/master
Jan Kiszka Jan. 3, 2019, 3:42 p.m. UTC | #5
On 20.12.18 09:45, Marek Vasut wrote:
> On 12/10/2018 01:28 PM, Tom Rini wrote:
>> On Mon, Dec 10, 2018 at 05:13:58AM +0100, Marek Vasut wrote:
>>> On 12/09/2018 09:55 AM, Jan Kiszka wrote:
>>>> The default settings of the block cache so far only allow to hold single
>>>> 1K blocks. However, larger filesystems tend to use 4K. Failing to cache
>>>> those massively degrades access performance unless you manually tune the
>>>> cache first. This is not desirable.
>>>>
>>>> Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
>>>
>>> I submitted the same patch before [1], oddly enough it was not picked by
>>> Tom.
>>>
>>> [1]
>>> http://u-boot.10912.n7.nabble.com/PATCH-RFC-blk-Increase-cache-element-size-td337975.html
>>
>> Based on a quick re-read, I had filed that patch as "Marek says he'll
>> look into a more complex but general scheme".  If that's not the case
>> then yes, we can just do that.  Thanks!
> 
> I still don't see the original patch in u-boot/master
> 

Ping. Some form of this change should go into the next release, IMHO.

Jan
Tom Rini Jan. 3, 2019, 3:52 p.m. UTC | #6
On Thu, Jan 03, 2019 at 04:42:08PM +0100, Jan Kiszka wrote:
> On 20.12.18 09:45, Marek Vasut wrote:
> >On 12/10/2018 01:28 PM, Tom Rini wrote:
> >>On Mon, Dec 10, 2018 at 05:13:58AM +0100, Marek Vasut wrote:
> >>>On 12/09/2018 09:55 AM, Jan Kiszka wrote:
> >>>>The default settings of the block cache so far only allow to hold single
> >>>>1K blocks. However, larger filesystems tend to use 4K. Failing to cache
> >>>>those massively degrades access performance unless you manually tune the
> >>>>cache first. This is not desirable.
> >>>>
> >>>>Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
> >>>
> >>>I submitted the same patch before [1], oddly enough it was not picked by
> >>>Tom.
> >>>
> >>>[1]
> >>>http://u-boot.10912.n7.nabble.com/PATCH-RFC-blk-Increase-cache-element-size-td337975.html
> >>
> >>Based on a quick re-read, I had filed that patch as "Marek says he'll
> >>look into a more complex but general scheme".  If that's not the case
> >>then yes, we can just do that.  Thanks!
> >
> >I still don't see the original patch in u-boot/master
> >
> 
> Ping. Some form of this change should go into the next release, IMHO.

So, this initially tripped over some EFI related issue, which has been
fixed.  But at this point I'm going to pull it in from v2019.04 instead.
diff mbox series

Patch

diff --git a/drivers/block/blkcache.c b/drivers/block/blkcache.c
index 294511fcdb..1fa64989d3 100644
--- a/drivers/block/blkcache.c
+++ b/drivers/block/blkcache.c
@@ -24,7 +24,7 @@  struct block_cache_node {
 static LIST_HEAD(block_cache);
 
 static struct block_cache_stats _stats = {
-	.max_blocks_per_entry = 2,
+	.max_blocks_per_entry = 8,
 	.max_entries = 32
 };