Message ID | 20250312000700.184573-3-npache@redhat.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | track memory used by balloon drivers | expand |
On Tue, Mar 11, 2025 at 06:06:57PM -0600, Nico Pache wrote: > Update the NR_BALLOON_PAGES counter when pages are added to or > removed from the virtio balloon. > > Signed-off-by: Nico Pache <npache@redhat.com> > --- > drivers/virtio/virtio_balloon.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/drivers/virtio/virtio_balloon.c b/drivers/virtio/virtio_balloon.c > index 89da052f4f68..406414dbb477 100644 > --- a/drivers/virtio/virtio_balloon.c > +++ b/drivers/virtio/virtio_balloon.c > @@ -274,6 +274,8 @@ static unsigned int fill_balloon(struct virtio_balloon *vb, size_t num) > > set_page_pfns(vb, vb->pfns + vb->num_pfns, page); > vb->num_pages += VIRTIO_BALLOON_PAGES_PER_PAGE; > + mod_node_page_state(page_pgdat(page), NR_BALLOON_PAGES, > + VIRTIO_BALLOON_PAGES_PER_PAGE); > if (!virtio_has_feature(vb->vdev, > VIRTIO_BALLOON_F_DEFLATE_ON_OOM)) > adjust_managed_page_count(page, -1); This means the counter is in virtio balloon page units, which runs counter to the declared goal of making the interface hypervisor-agnostic. > @@ -324,6 +326,8 @@ static unsigned int leak_balloon(struct virtio_balloon *vb, size_t num) > set_page_pfns(vb, vb->pfns + vb->num_pfns, page); > list_add(&page->lru, &pages); > vb->num_pages -= VIRTIO_BALLOON_PAGES_PER_PAGE; > + mod_node_page_state(page_pgdat(page), NR_BALLOON_PAGES, > + -VIRTIO_BALLOON_PAGES_PER_PAGE); Same. Thanks, > } > > num_freed_pages = vb->num_pfns; > -- > 2.48.1
diff --git a/drivers/virtio/virtio_balloon.c b/drivers/virtio/virtio_balloon.c index 89da052f4f68..406414dbb477 100644 --- a/drivers/virtio/virtio_balloon.c +++ b/drivers/virtio/virtio_balloon.c @@ -274,6 +274,8 @@ static unsigned int fill_balloon(struct virtio_balloon *vb, size_t num) set_page_pfns(vb, vb->pfns + vb->num_pfns, page); vb->num_pages += VIRTIO_BALLOON_PAGES_PER_PAGE; + mod_node_page_state(page_pgdat(page), NR_BALLOON_PAGES, + VIRTIO_BALLOON_PAGES_PER_PAGE); if (!virtio_has_feature(vb->vdev, VIRTIO_BALLOON_F_DEFLATE_ON_OOM)) adjust_managed_page_count(page, -1); @@ -324,6 +326,8 @@ static unsigned int leak_balloon(struct virtio_balloon *vb, size_t num) set_page_pfns(vb, vb->pfns + vb->num_pfns, page); list_add(&page->lru, &pages); vb->num_pages -= VIRTIO_BALLOON_PAGES_PER_PAGE; + mod_node_page_state(page_pgdat(page), NR_BALLOON_PAGES, + -VIRTIO_BALLOON_PAGES_PER_PAGE); } num_freed_pages = vb->num_pfns;
Update the NR_BALLOON_PAGES counter when pages are added to or removed from the virtio balloon. Signed-off-by: Nico Pache <npache@redhat.com> --- drivers/virtio/virtio_balloon.c | 4 ++++ 1 file changed, 4 insertions(+)