From: Wei Wang <wei.w.wang@intel.com> To: mst@redhat.com, penguin-kernel@I-love.SAKURA.ne.jp, mhocko@kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, virtualization@lists.linux-foundation.org Cc: Wei Wang <wei.w.wang@intel.com> Subject: [PATCH v1 2/3] virtio-balloon: deflate up to oom_pages on OOM Date: Fri, 20 Oct 2017 19:54:25 +0800 [thread overview] Message-ID: <1508500466-21165-3-git-send-email-wei.w.wang@intel.com> (raw) In-Reply-To: <1508500466-21165-1-git-send-email-wei.w.wang@intel.com> The current implementation only deflates 256 pages even when a user specifies more than that via the oom_pages module param. This patch enables the deflating of up to oom_pages pages if there are enough inflated pages. Signed-off-by: Wei Wang <wei.w.wang@intel.com> Cc: Michael S. Tsirkin <mst@redhat.com> Cc: Michal Hocko <mhocko@kernel.org> Cc: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp> --- drivers/virtio/virtio_balloon.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/drivers/virtio/virtio_balloon.c b/drivers/virtio/virtio_balloon.c index 1ecd15a..ab55cf8 100644 --- a/drivers/virtio/virtio_balloon.c +++ b/drivers/virtio/virtio_balloon.c @@ -43,8 +43,8 @@ #define OOM_VBALLOON_DEFAULT_PAGES 256 #define VIRTBALLOON_OOM_NOTIFY_PRIORITY 80 -static int oom_pages = OOM_VBALLOON_DEFAULT_PAGES; -module_param(oom_pages, int, S_IRUSR | S_IWUSR); +static unsigned int oom_pages = OOM_VBALLOON_DEFAULT_PAGES; +module_param(oom_pages, uint, 0600); MODULE_PARM_DESC(oom_pages, "pages to free on OOM"); #ifdef CONFIG_BALLOON_COMPACTION @@ -359,16 +359,20 @@ static int virtballoon_oom_notify(struct notifier_block *self, { struct virtio_balloon *vb; unsigned long *freed; - unsigned num_freed_pages; + unsigned int npages = oom_pages; vb = container_of(self, struct virtio_balloon, nb); if (!virtio_has_feature(vb->vdev, VIRTIO_BALLOON_F_DEFLATE_ON_OOM)) return NOTIFY_OK; freed = parm; - num_freed_pages = leak_balloon(vb, oom_pages); + + /* Don't deflate more than the number of inflated pages */ + while (npages && atomic64_read(&vb->num_pages)) + npages -= leak_balloon(vb, npages); + update_balloon_size(vb); - *freed += num_freed_pages; + *freed += oom_pages - npages; return NOTIFY_OK; } -- 2.7.4
WARNING: multiple messages have this Message-ID (diff)
From: Wei Wang <wei.w.wang@intel.com> To: mst@redhat.com, penguin-kernel@I-love.SAKURA.ne.jp, mhocko@kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, virtualization@lists.linux-foundation.org Cc: Wei Wang <wei.w.wang@intel.com> Subject: [PATCH v1 2/3] virtio-balloon: deflate up to oom_pages on OOM Date: Fri, 20 Oct 2017 19:54:25 +0800 [thread overview] Message-ID: <1508500466-21165-3-git-send-email-wei.w.wang@intel.com> (raw) In-Reply-To: <1508500466-21165-1-git-send-email-wei.w.wang@intel.com> The current implementation only deflates 256 pages even when a user specifies more than that via the oom_pages module param. This patch enables the deflating of up to oom_pages pages if there are enough inflated pages. Signed-off-by: Wei Wang <wei.w.wang@intel.com> Cc: Michael S. Tsirkin <mst@redhat.com> Cc: Michal Hocko <mhocko@kernel.org> Cc: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp> --- drivers/virtio/virtio_balloon.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/drivers/virtio/virtio_balloon.c b/drivers/virtio/virtio_balloon.c index 1ecd15a..ab55cf8 100644 --- a/drivers/virtio/virtio_balloon.c +++ b/drivers/virtio/virtio_balloon.c @@ -43,8 +43,8 @@ #define OOM_VBALLOON_DEFAULT_PAGES 256 #define VIRTBALLOON_OOM_NOTIFY_PRIORITY 80 -static int oom_pages = OOM_VBALLOON_DEFAULT_PAGES; -module_param(oom_pages, int, S_IRUSR | S_IWUSR); +static unsigned int oom_pages = OOM_VBALLOON_DEFAULT_PAGES; +module_param(oom_pages, uint, 0600); MODULE_PARM_DESC(oom_pages, "pages to free on OOM"); #ifdef CONFIG_BALLOON_COMPACTION @@ -359,16 +359,20 @@ static int virtballoon_oom_notify(struct notifier_block *self, { struct virtio_balloon *vb; unsigned long *freed; - unsigned num_freed_pages; + unsigned int npages = oom_pages; vb = container_of(self, struct virtio_balloon, nb); if (!virtio_has_feature(vb->vdev, VIRTIO_BALLOON_F_DEFLATE_ON_OOM)) return NOTIFY_OK; freed = parm; - num_freed_pages = leak_balloon(vb, oom_pages); + + /* Don't deflate more than the number of inflated pages */ + while (npages && atomic64_read(&vb->num_pages)) + npages -= leak_balloon(vb, npages); + update_balloon_size(vb); - *freed += num_freed_pages; + *freed += oom_pages - npages; return NOTIFY_OK; } -- 2.7.4 -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2017-10-20 12:09 UTC|newest] Thread overview: 47+ messages / expand[flat|nested] mbox.gz Atom feed top 2017-10-20 11:54 [PATCH v1 0/3] Virtio-balloon Improvement Wei Wang 2017-10-20 11:54 ` Wei Wang 2017-10-20 11:54 ` [PATCH v1 1/3] virtio-balloon: replace the coarse-grained balloon_lock Wei Wang 2017-10-20 11:54 ` Wei Wang 2017-10-22 5:20 ` Tetsuo Handa 2017-10-22 5:20 ` Tetsuo Handa 2017-10-22 5:20 ` Tetsuo Handa 2017-10-22 11:24 ` Wei Wang 2017-10-22 11:24 ` Wei Wang 2017-10-22 11:24 ` Wei Wang 2017-10-22 11:50 ` Tetsuo Handa 2017-10-22 11:50 ` Tetsuo Handa 2017-10-24 1:46 ` Wei Wang 2017-10-24 1:46 ` Wei Wang 2017-10-24 1:46 ` Wei Wang 2017-10-22 11:50 ` Tetsuo Handa 2017-10-20 11:54 ` Wei Wang 2017-10-20 11:54 ` [PATCH v1 2/3] virtio-balloon: deflate up to oom_pages on OOM Wei Wang 2017-10-20 11:54 ` Wei Wang [this message] 2017-10-20 11:54 ` Wei Wang 2017-10-22 3:21 ` Michael S. Tsirkin 2017-10-22 3:21 ` Michael S. Tsirkin 2017-10-22 3:21 ` Michael S. Tsirkin 2017-10-22 4:11 ` Tetsuo Handa 2017-10-22 4:11 ` Tetsuo Handa 2017-10-22 4:11 ` Tetsuo Handa 2017-10-22 11:31 ` Wei Wang 2017-10-22 11:31 ` Wei Wang 2017-10-22 11:31 ` Wei Wang 2017-10-20 11:54 ` [PATCH v1 3/3] virtio-balloon: stop inflating when OOM occurs Wei Wang 2017-10-20 11:54 ` Wei Wang 2017-10-22 17:13 ` Michael S. Tsirkin 2017-10-22 17:13 ` Michael S. Tsirkin 2017-10-22 17:13 ` Michael S. Tsirkin 2017-10-24 1:58 ` Wei Wang 2017-10-24 1:58 ` Wei Wang 2017-10-24 1:58 ` Wei Wang 2017-10-20 11:54 ` Wei Wang 2017-10-22 3:19 ` [PATCH v1 0/3] Virtio-balloon Improvement Michael S. Tsirkin 2017-10-22 3:19 ` Michael S. Tsirkin 2017-10-22 3:19 ` Michael S. Tsirkin 2017-10-22 11:19 ` Wei Wang 2017-10-22 11:19 ` Wei Wang 2017-10-22 11:19 ` Wei Wang 2017-11-03 8:35 ` Wei Wang 2017-11-03 8:35 ` Wei Wang 2017-11-03 8:35 ` Wei Wang
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=1508500466-21165-3-git-send-email-wei.w.wang@intel.com \ --to=wei.w.wang@intel.com \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-mm@kvack.org \ --cc=mhocko@kernel.org \ --cc=mst@redhat.com \ --cc=penguin-kernel@I-love.SAKURA.ne.jp \ --cc=virtualization@lists.linux-foundation.org \ /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: linkBe 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.