Le lundi 03 mai 2010 à 11:19 +0200, Jiri Slaby a écrit : > On 05/03/2010 11:13 AM, Eric Dumazet wrote: > > /* > > * Warning: if size is not a power of two, kmalloc() might > > * waste memory because of its requirements. > > */ > > void *kvmalloc(size_t size) > > { > > void *ptr = kmalloc(size, GFP_KERNEL | __GFP_NOWARN); > > This is kind of waste of high-order pages, isn't it? Wouldn't it be > better to have a watermark where we skip kmalloc completely? > > There are many drawbacks using kmalloc() instead of vmalloc(). (NUMA comes to mind, if you want a zone spreaded on all available nodes) So this kvmalloc() is not meant to be a generic replacement of all vmalloc() users, only selected ones. In some spots, allocating 8192 bytes in a driver setup for example, it should be fine. Using a high order page for this is perfect, as long as we can have a fallback to vmalloc() grep bnx2_alloc_mem /proc/vmallocinfo 0xf8690000-0xf8692000 8192 bnx2_alloc_mem+0x111/0x6d0 pages=1 vmalloc -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html