All of lore.kernel.org
 help / color / mirror / Atom feed
From: Joonsoo Kim <js1304@gmail.com>
To: Catalin Marinas <catalin.marinas@arm.com>
Cc: Robert Richter <rric@kernel.org>,
	Will Deacon <will.deacon@arm.com>,
	LKML <linux-kernel@vger.kernel.org>,
	Robert Richter <rrichter@cavium.com>,
	Tirumalesh Chalamarla <tchalamarla@cavium.com>,
	Joonsoo Kim <iamjoonsoo.kim@lge.com>,
	linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH] arm64: Increase the max granular size
Date: Mon, 9 Nov 2015 16:41:58 +0900	[thread overview]
Message-ID: <CAAmzW4POKyGCFETiR1gRtT0iK+iWH254PGivZDnpjU1CHizgUw@mail.gmail.com> (raw)
In-Reply-To: <20151105121706.GQ7637@e104818-lin.cambridge.arm.com>

2015-11-05 21:17 GMT+09:00 Catalin Marinas <catalin.marinas@arm.com>:
> On Thu, Nov 05, 2015 at 08:45:08PM +0900, Joonsoo Kim wrote:
>> 2015-11-05 19:32 GMT+09:00 Catalin Marinas <catalin.marinas@arm.com>:
>> > On ARM we have a notion of cache writeback granule (CWG) which tells us
>> > "the maximum size of memory that can be overwritten as a result of the
>> > eviction of a cache entry that has had a memory location in it
>> > modified". What we actually needed was ARCH_DMA_MINALIGN to be 128
>> > (currently defined to the L1_CACHE_BYTES value). However, this wouldn't
>> > have fixed the KMALLOC_MIN_SIZE, unless we somehow generate different
>> > kmalloc_caches[] and kmalloc_dma_caches[] and probably introduce a
>> > size_dma_index[].
>>
>> If we create separate kmalloc caches for dma, can we apply this alignment
>> requirement only to dma caches? I guess some memory allocation request
>> that will be used for DMA operation doesn't specify GFP_DMA because
>> it doesn't want the memory from ZONE_DMA. In this case, we should apply
>> dma alignment requirement to all types of caches.
>
> I think you are right. While something like swiotlb (through the
> streaming DMA API) could do bounce buffering and allocate one from
> ZONE_DMA, this is not guaranteed if the buffer physical address happens
> to match the dma_mask. Similarly with an IOMMU, no bouncing happens but
> the alignment is still required.
>
>> If it isn't possible, is there another way to reduce memory waste due to
>> increase of dma alignment requirement in arm64?
>
> I first need to see how significant the impact is (especially for
> embedded/mobiles platforms).

I don't have any ARM64 device. What I have just one report
about slab usage from our developer.

The report shows slab usage just after android boot is done
in ARM64.

Total slab usage: 90 MB
kmalloc usage: 25 MB
kmalloc (<=64) usage: 7 MB

This would be measured without slab_nomerge so there is
a possibility that some usages on kmem_cache is merged
into usage of kmalloc (<=64).

Anyway, if ARM64 increase L1_CACHE_BYTES to 128, roughly
7 MB would be wasted. I don't know how this picture is varied
in runtime, but, even boot time overhead, 7 MB looks large to me.

> An alternative is to leave L1_CACHE_BYTES to 64 by default but warn if
> the CWG is 128 on systems with non-coherent DMA (and hope that we won't
> have any). It's not really fix, rather an assumption. Anyway I would
> very much like the same kernel image for all platforms and no Kconfig
> entry for the cache line size but if the waste is significant, we may
> add one for some specific builds (like a mobile phone; or such vendors
> could patch the kernel themselves).

Okay. In fact, I'm not very familiar with android device so it'd be better
for you to ask some other android developer about how significant
the impact is in android or mobile device.

Thanks.

WARNING: multiple messages have this Message-ID (diff)
From: js1304@gmail.com (Joonsoo Kim)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] arm64: Increase the max granular size
Date: Mon, 9 Nov 2015 16:41:58 +0900	[thread overview]
Message-ID: <CAAmzW4POKyGCFETiR1gRtT0iK+iWH254PGivZDnpjU1CHizgUw@mail.gmail.com> (raw)
In-Reply-To: <20151105121706.GQ7637@e104818-lin.cambridge.arm.com>

2015-11-05 21:17 GMT+09:00 Catalin Marinas <catalin.marinas@arm.com>:
> On Thu, Nov 05, 2015 at 08:45:08PM +0900, Joonsoo Kim wrote:
>> 2015-11-05 19:32 GMT+09:00 Catalin Marinas <catalin.marinas@arm.com>:
>> > On ARM we have a notion of cache writeback granule (CWG) which tells us
>> > "the maximum size of memory that can be overwritten as a result of the
>> > eviction of a cache entry that has had a memory location in it
>> > modified". What we actually needed was ARCH_DMA_MINALIGN to be 128
>> > (currently defined to the L1_CACHE_BYTES value). However, this wouldn't
>> > have fixed the KMALLOC_MIN_SIZE, unless we somehow generate different
>> > kmalloc_caches[] and kmalloc_dma_caches[] and probably introduce a
>> > size_dma_index[].
>>
>> If we create separate kmalloc caches for dma, can we apply this alignment
>> requirement only to dma caches? I guess some memory allocation request
>> that will be used for DMA operation doesn't specify GFP_DMA because
>> it doesn't want the memory from ZONE_DMA. In this case, we should apply
>> dma alignment requirement to all types of caches.
>
> I think you are right. While something like swiotlb (through the
> streaming DMA API) could do bounce buffering and allocate one from
> ZONE_DMA, this is not guaranteed if the buffer physical address happens
> to match the dma_mask. Similarly with an IOMMU, no bouncing happens but
> the alignment is still required.
>
>> If it isn't possible, is there another way to reduce memory waste due to
>> increase of dma alignment requirement in arm64?
>
> I first need to see how significant the impact is (especially for
> embedded/mobiles platforms).

I don't have any ARM64 device. What I have just one report
about slab usage from our developer.

The report shows slab usage just after android boot is done
in ARM64.

Total slab usage: 90 MB
kmalloc usage: 25 MB
kmalloc (<=64) usage: 7 MB

This would be measured without slab_nomerge so there is
a possibility that some usages on kmem_cache is merged
into usage of kmalloc (<=64).

Anyway, if ARM64 increase L1_CACHE_BYTES to 128, roughly
7 MB would be wasted. I don't know how this picture is varied
in runtime, but, even boot time overhead, 7 MB looks large to me.

> An alternative is to leave L1_CACHE_BYTES to 64 by default but warn if
> the CWG is 128 on systems with non-coherent DMA (and hope that we won't
> have any). It's not really fix, rather an assumption. Anyway I would
> very much like the same kernel image for all platforms and no Kconfig
> entry for the cache line size but if the waste is significant, we may
> add one for some specific builds (like a mobile phone; or such vendors
> could patch the kernel themselves).

Okay. In fact, I'm not very familiar with android device so it'd be better
for you to ask some other android developer about how significant
the impact is in android or mobile device.

Thanks.

  reply	other threads:[~2015-11-09  7:42 UTC|newest]

Thread overview: 85+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-09-22 17:59 [PATCH] arm64: Increase the max granular size Robert Richter
2015-09-22 17:59 ` Robert Richter
2015-09-22 18:29 ` Will Deacon
2015-09-22 18:29   ` Will Deacon
2015-09-25 14:45   ` Robert Richter
2015-09-25 14:45     ` Robert Richter
2015-09-25 16:31     ` Tirumalesh Chalamarla
2015-09-25 16:31       ` Tirumalesh Chalamarla
2015-10-10 17:39 ` Timur Tabi
2015-10-10 17:39   ` Timur Tabi
2015-10-12  9:16   ` Will Deacon
2015-10-12  9:16     ` Will Deacon
2015-10-16 19:57 ` Timur Tabi
2015-10-16 19:57   ` Timur Tabi
2015-10-28 19:09 ` Catalin Marinas
2015-10-28 19:09   ` Catalin Marinas
2015-11-03 11:07   ` Geert Uytterhoeven
2015-11-03 12:05     ` Catalin Marinas
2015-11-03 12:05       ` Catalin Marinas
2015-11-03 12:05       ` Catalin Marinas
2015-11-03 14:38       ` Catalin Marinas
2015-11-03 14:38         ` Catalin Marinas
2015-11-03 14:38         ` Catalin Marinas
2015-11-03 14:55         ` Geert Uytterhoeven
2015-11-03 14:55           ` Geert Uytterhoeven
2015-11-03 14:55           ` Geert Uytterhoeven
2015-11-03 18:50           ` Catalin Marinas
2015-11-03 18:50             ` Catalin Marinas
2015-11-03 18:50             ` Catalin Marinas
2015-11-03 23:33             ` Christoph Lameter
2015-11-03 23:33               ` Christoph Lameter
2015-11-03 23:33               ` Christoph Lameter
2015-11-04 12:36               ` Catalin Marinas
2015-11-04 12:36                 ` Catalin Marinas
2015-11-04 12:36                 ` Catalin Marinas
2015-11-04 12:36                 ` Catalin Marinas
2015-11-04 13:53                 ` Christoph Lameter
2015-11-04 13:53                   ` Christoph Lameter
2015-11-04 13:53                   ` Christoph Lameter
2015-11-04 13:53                   ` Christoph Lameter
2015-11-04 14:54                   ` Catalin Marinas
2015-11-04 14:54                     ` Catalin Marinas
2015-11-04 14:54                     ` Catalin Marinas
2015-11-04 14:54                     ` Catalin Marinas
2015-11-04 15:28                     ` Christoph Lameter
2015-11-04 15:28                       ` Christoph Lameter
2015-11-04 15:28                       ` Christoph Lameter
2015-11-04 15:28                       ` Christoph Lameter
2015-11-04 15:39                       ` Catalin Marinas
2015-11-04 15:39                         ` Catalin Marinas
2015-11-04 15:39                         ` Catalin Marinas
2015-11-04 15:39                         ` Catalin Marinas
2015-11-05  4:31                         ` Joonsoo Kim
2015-11-05  4:31                           ` Joonsoo Kim
2015-11-05  4:31                           ` Joonsoo Kim
2015-11-05  4:31                           ` Joonsoo Kim
2015-11-05 11:50                           ` [PATCH] mm: slab: Only move management objects off-slab for sizes larger than KMALLOC_MIN_SIZE Catalin Marinas
2015-11-05 11:50                             ` Catalin Marinas
2015-11-05 11:50                             ` Catalin Marinas
2015-11-05 13:31                             ` Andrew Morton
2015-11-05 13:31                               ` Andrew Morton
2015-11-05 13:31                               ` Andrew Morton
2015-11-05 16:08                               ` Catalin Marinas
2015-11-05 16:08                                 ` Catalin Marinas
2015-11-05 16:08                                 ` Catalin Marinas
2015-11-06 13:00                                 ` Geert Uytterhoeven
2015-11-06 13:00                                   ` Geert Uytterhoeven
2015-11-06 13:00                                   ` Geert Uytterhoeven
2015-11-05 17:39                             ` Christoph Lameter
2015-11-05 17:39                               ` Christoph Lameter
2015-11-05 17:39                               ` Christoph Lameter
2015-11-05  4:40 ` [PATCH] arm64: Increase the max granular size Joonsoo Kim
2015-11-05  4:40   ` Joonsoo Kim
2015-11-05 10:32   ` Catalin Marinas
2015-11-05 10:32     ` Catalin Marinas
2015-11-05 11:45     ` Joonsoo Kim
2015-11-05 11:45       ` Joonsoo Kim
2015-11-05 12:17       ` Catalin Marinas
2015-11-05 12:17         ` Catalin Marinas
2015-11-09  7:41         ` Joonsoo Kim [this message]
2015-11-09  7:41           ` Joonsoo Kim
2015-11-09 18:36           ` Catalin Marinas
2015-11-09 18:36             ` Catalin Marinas
2015-11-10  0:19             ` Joonsoo Kim
2015-11-10  0:19               ` Joonsoo Kim

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAAmzW4POKyGCFETiR1gRtT0iK+iWH254PGivZDnpjU1CHizgUw@mail.gmail.com \
    --to=js1304@gmail.com \
    --cc=catalin.marinas@arm.com \
    --cc=iamjoonsoo.kim@lge.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rric@kernel.org \
    --cc=rrichter@cavium.com \
    --cc=tchalamarla@cavium.com \
    --cc=will.deacon@arm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.