Messages in this thread | | | From | "Li, Liang Z" <> | Subject | RE: [PATCH v2 repost 4/7] virtio-balloon: speed up inflate/deflate process | Date | Thu, 28 Jul 2016 01:13:35 +0000 |
| |
> Subject: Re: [PATCH v2 repost 4/7] virtio-balloon: speed up inflate/deflate > process > > On 07/26/2016 06:23 PM, Liang Li wrote: > > + vb->pfn_limit = VIRTIO_BALLOON_PFNS_LIMIT; > > + vb->pfn_limit = min(vb->pfn_limit, get_max_pfn()); > > + vb->bmap_len = ALIGN(vb->pfn_limit, BITS_PER_LONG) / > > + BITS_PER_BYTE + 2 * sizeof(unsigned long); > > + hdr_len = sizeof(struct balloon_bmap_hdr); > > + vb->bmap_hdr = kzalloc(hdr_len + vb->bmap_len, GFP_KERNEL); > > This ends up doing a 1MB kmalloc() right? That seems a _bit_ big. How big > was the pfn buffer before?
Yes, it is if the max pfn is more than 32GB. The size of the pfn buffer use before is 256*4 = 1024 Bytes, it's too small, and it's the main reason for bad performance. Use the max 1MB kmalloc is a balance between performance and flexibility, a large page bitmap covers the range of all the memory is no good for a system with huge amount of memory. If the bitmap is too small, it means we have to traverse a long list for many times, and it's bad for performance.
Thanks! Liang
| |