From: Michal Hocko <mhocko@suse.cz> To: cgroups@vger.kernel.org Cc: Tejun Heo <tj@kernel.org>, Li Zefan <lizefan@huawei.com>, Anton Vorontsov <anton.vorontsov@linaro.org>, Johannes Weiner <hannes@cmpxchg.org>, KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>, KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>, linux-mm@kvack.org Subject: [PATCH v3 1/3] vmpressure: change vmpressure::sr_lock to spinlock Date: Mon, 15 Jul 2013 12:30:31 +0200 [thread overview] Message-ID: <1373884233-32441-1-git-send-email-mhocko@suse.cz> (raw) In-Reply-To: <20130711154408.GA9229@mtj.dyndns.org> There is nothing that can sleep inside critical sections protected by this lock and those sections are really small so there doesn't make much sense to use mutex for them. Change the log to a spinlock Brought-up-by: Tejun Heo <tj@kernel.org> Signed-off-by: Michal Hocko <mhocko@suse.cz> --- include/linux/vmpressure.h | 2 +- mm/vmpressure.c | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/include/linux/vmpressure.h b/include/linux/vmpressure.h index 76be077..2081680 100644 --- a/include/linux/vmpressure.h +++ b/include/linux/vmpressure.h @@ -12,7 +12,7 @@ struct vmpressure { unsigned long scanned; unsigned long reclaimed; /* The lock is used to keep the scanned/reclaimed above in sync. */ - struct mutex sr_lock; + struct spinlock sr_lock; /* The list of vmpressure_event structs. */ struct list_head events; diff --git a/mm/vmpressure.c b/mm/vmpressure.c index 736a601..f4ee6a1 100644 --- a/mm/vmpressure.c +++ b/mm/vmpressure.c @@ -180,12 +180,12 @@ static void vmpressure_work_fn(struct work_struct *work) if (!vmpr->scanned) return; - mutex_lock(&vmpr->sr_lock); + spin_lock(&vmpr->sr_lock); scanned = vmpr->scanned; reclaimed = vmpr->reclaimed; vmpr->scanned = 0; vmpr->reclaimed = 0; - mutex_unlock(&vmpr->sr_lock); + spin_unlock(&vmpr->sr_lock); do { if (vmpressure_event(vmpr, scanned, reclaimed)) @@ -240,11 +240,11 @@ void vmpressure(gfp_t gfp, struct mem_cgroup *memcg, if (!scanned) return; - mutex_lock(&vmpr->sr_lock); + spin_lock(&vmpr->sr_lock); vmpr->scanned += scanned; vmpr->reclaimed += reclaimed; scanned = vmpr->scanned; - mutex_unlock(&vmpr->sr_lock); + spin_unlock(&vmpr->sr_lock); if (scanned < vmpressure_win || work_pending(&vmpr->work)) return; @@ -367,7 +367,7 @@ void vmpressure_unregister_event(struct cgroup *cg, struct cftype *cft, */ void vmpressure_init(struct vmpressure *vmpr) { - mutex_init(&vmpr->sr_lock); + spin_lock_init(&vmpr->sr_lock); mutex_init(&vmpr->events_lock); INIT_LIST_HEAD(&vmpr->events); INIT_WORK(&vmpr->work, vmpressure_work_fn); -- 1.8.3.2 -- 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>
WARNING: multiple messages have this Message-ID (diff)
From: Michal Hocko <mhocko-AlSwsSmVLrQ@public.gmane.org> To: cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org Cc: Tejun Heo <tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>, Li Zefan <lizefan-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>, Anton Vorontsov <anton.vorontsov-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>, Johannes Weiner <hannes-druUgvl0LCNAfugRpC6u6w@public.gmane.org>, KAMEZAWA Hiroyuki <kamezawa.hiroyu-+CUm20s59erQFUHtdCDX3A@public.gmane.org>, KOSAKI Motohiro <kosaki.motohiro-+CUm20s59erQFUHtdCDX3A@public.gmane.org>, linux-mm-Bw31MaZKKs3YtjvyW6yDsg@public.gmane.org Subject: [PATCH v3 1/3] vmpressure: change vmpressure::sr_lock to spinlock Date: Mon, 15 Jul 2013 12:30:31 +0200 [thread overview] Message-ID: <1373884233-32441-1-git-send-email-mhocko@suse.cz> (raw) In-Reply-To: <20130711154408.GA9229-9pTldWuhBndy/B6EtB590w@public.gmane.org> There is nothing that can sleep inside critical sections protected by this lock and those sections are really small so there doesn't make much sense to use mutex for them. Change the log to a spinlock Brought-up-by: Tejun Heo <tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org> Signed-off-by: Michal Hocko <mhocko-AlSwsSmVLrQ@public.gmane.org> --- include/linux/vmpressure.h | 2 +- mm/vmpressure.c | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/include/linux/vmpressure.h b/include/linux/vmpressure.h index 76be077..2081680 100644 --- a/include/linux/vmpressure.h +++ b/include/linux/vmpressure.h @@ -12,7 +12,7 @@ struct vmpressure { unsigned long scanned; unsigned long reclaimed; /* The lock is used to keep the scanned/reclaimed above in sync. */ - struct mutex sr_lock; + struct spinlock sr_lock; /* The list of vmpressure_event structs. */ struct list_head events; diff --git a/mm/vmpressure.c b/mm/vmpressure.c index 736a601..f4ee6a1 100644 --- a/mm/vmpressure.c +++ b/mm/vmpressure.c @@ -180,12 +180,12 @@ static void vmpressure_work_fn(struct work_struct *work) if (!vmpr->scanned) return; - mutex_lock(&vmpr->sr_lock); + spin_lock(&vmpr->sr_lock); scanned = vmpr->scanned; reclaimed = vmpr->reclaimed; vmpr->scanned = 0; vmpr->reclaimed = 0; - mutex_unlock(&vmpr->sr_lock); + spin_unlock(&vmpr->sr_lock); do { if (vmpressure_event(vmpr, scanned, reclaimed)) @@ -240,11 +240,11 @@ void vmpressure(gfp_t gfp, struct mem_cgroup *memcg, if (!scanned) return; - mutex_lock(&vmpr->sr_lock); + spin_lock(&vmpr->sr_lock); vmpr->scanned += scanned; vmpr->reclaimed += reclaimed; scanned = vmpr->scanned; - mutex_unlock(&vmpr->sr_lock); + spin_unlock(&vmpr->sr_lock); if (scanned < vmpressure_win || work_pending(&vmpr->work)) return; @@ -367,7 +367,7 @@ void vmpressure_unregister_event(struct cgroup *cg, struct cftype *cft, */ void vmpressure_init(struct vmpressure *vmpr) { - mutex_init(&vmpr->sr_lock); + spin_lock_init(&vmpr->sr_lock); mutex_init(&vmpr->events_lock); INIT_LIST_HEAD(&vmpr->events); INIT_WORK(&vmpr->work, vmpressure_work_fn); -- 1.8.3.2
next prev parent reply other threads:[~2013-07-15 10:30 UTC|newest] Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top 2013-07-10 18:42 workqueue usage in vmpressure Tejun Heo [not found] ` <20130710184254.GA16979-9pTldWuhBndy/B6EtB590w@public.gmane.org> 2013-07-11 8:31 ` Michal Hocko [not found] ` <20130711083110.GC21667-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org> 2013-07-11 8:43 ` Li Zefan [not found] ` <51DE701C.6010800-hv44wF8Li93QT0dZR+AlfA@public.gmane.org> 2013-07-11 9:25 ` Michal Hocko [not found] ` <20130711092542.GD21667-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org> 2013-07-11 9:28 ` Li Zefan 2013-07-11 9:33 ` [PATCH v2] vmpressure: make sure memcg stays alive until all users are signaled Michal Hocko 2013-07-11 9:33 ` Michal Hocko 2013-07-11 15:44 ` Tejun Heo 2013-07-11 16:22 ` Michal Hocko 2013-07-11 16:22 ` Michal Hocko 2013-07-11 16:32 ` Tejun Heo 2013-07-12 8:40 ` Michal Hocko 2013-07-12 9:20 ` Li Zefan 2013-07-12 9:20 ` Li Zefan 2013-07-12 9:29 ` Michal Hocko 2013-07-12 9:29 ` Michal Hocko 2013-07-12 9:54 ` Li Zefan 2013-07-12 9:54 ` Li Zefan 2013-07-12 10:37 ` Michal Hocko 2013-07-15 3:07 ` Li Zefan 2013-07-15 3:07 ` Li Zefan 2013-07-15 9:20 ` Michal Hocko 2013-07-15 9:53 ` Li Zefan 2013-07-15 9:53 ` Li Zefan 2013-07-12 9:24 ` [PATCH 1/3] vmpressure: document why css_get/put is not necessary for work queue based signaling Michal Hocko 2013-07-12 9:24 ` [PATCH 2/3] vmpressure: change vmpressure::sr_lock to spinlock Michal Hocko 2013-07-12 9:24 ` [PATCH 3/3] vmpressure: do not check for pending work to prevent from new work Michal Hocko 2013-07-12 9:24 ` Michal Hocko 2013-07-12 18:48 ` [PATCH 1/3] vmpressure: document why css_get/put is not necessary for work queue based signaling Tejun Heo 2013-07-15 10:27 ` Michal Hocko 2013-07-15 10:27 ` Michal Hocko 2013-07-12 18:34 ` [PATCH v2] vmpressure: make sure memcg stays alive until all users are signaled Tejun Heo 2013-07-12 18:40 ` Tejun Heo 2013-07-12 6:03 ` Li Zefan 2013-07-12 6:03 ` Li Zefan 2013-07-15 10:30 ` Michal Hocko [this message] 2013-07-15 10:30 ` [PATCH v3 1/3] vmpressure: change vmpressure::sr_lock to spinlock Michal Hocko 2013-07-15 10:30 ` [PATCH v3 2/3] vmpressure: do not check for pending work to prevent from new work Michal Hocko 2013-07-15 10:30 ` [PATCH v3 3/3] vmpressure: Make sure there are no events queued after memcg is offlined Michal Hocko 2013-07-11 8:45 ` workqueue usage in vmpressure Li Zefan
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=1373884233-32441-1-git-send-email-mhocko@suse.cz \ --to=mhocko@suse.cz \ --cc=anton.vorontsov@linaro.org \ --cc=cgroups@vger.kernel.org \ --cc=hannes@cmpxchg.org \ --cc=kamezawa.hiroyu@jp.fujitsu.com \ --cc=kosaki.motohiro@jp.fujitsu.com \ --cc=linux-mm@kvack.org \ --cc=lizefan@huawei.com \ --cc=tj@kernel.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.