Messages in this thread | | | From | Bart Van Assche <> | Subject | Re: [PATCH] ib_srpt: use kvmalloc to allocate ring pointers | Date | Tue, 10 Jul 2018 15:08:38 +0000 |
| |
On Tue, 2018-07-10 at 08:39 +0300, Leon Romanovsky wrote: > On Mon, Jul 09, 2018 at 04:51:08PM +0300, Jan Dakinevich wrote: > > An array of pointers to SRPT contexts in ib_device is over 30KiB even > > in default case, in which an amount of contexts is 4095. The patch > > is intended to weed out large contigous allocation for non-DMA memory. > > kvmalloc* doesn't "weed out" large contiguous allocations, but tries to > allocate them and gracefully fallback to vmalloc if kmalloc fails. > > More on that, for allocations less than page (64KB for PowerPC), it will > not call to vmalloc at all, which is fine too, because pages granularity. > > If you want to get rid of "contiguous allocations", use vmalloc instead.
vmalloc() has a very significant disadvantage compared to kvmalloc(): with vmalloc() it is guaranteed that memory allocations will be slow. That's not the case for kvmalloc() if the number of bytes that is allocated is small enough.
Bart.
| |