* [tip: core/rcu] rcuperf: Add ability to increase object allocation size @ 2020-05-11 20:59 tip-bot2 for Joel Fernandes (Google) 2020-05-26 18:27 ` [PATCH] rcu/performance: Fix kfree_perf_init() build warning on 32-bit kernels Ingo Molnar 0 siblings, 1 reply; 8+ messages in thread From: tip-bot2 for Joel Fernandes (Google) @ 2020-05-11 20:59 UTC (permalink / raw) To: linux-tip-commits; +Cc: Joel Fernandes (Google), Paul E. McKenney, x86, LKML The following commit has been merged into the core/rcu branch of tip: Commit-ID: f87dc808009ac86c790031627698ef1a34c31e25 Gitweb: https://git.kernel.org/tip/f87dc808009ac86c790031627698ef1a34c31e25 Author: Joel Fernandes (Google) <joel@joelfernandes.org> AuthorDate: Mon, 16 Mar 2020 12:32:26 -04:00 Committer: Paul E. McKenney <paulmck@kernel.org> CommitterDate: Mon, 27 Apr 2020 11:02:50 -07:00 rcuperf: Add ability to increase object allocation size This allows us to increase memory pressure dynamically using a new rcuperf boot command line parameter called 'rcumult'. Signed-off-by: Joel Fernandes (Google) <joel@joelfernandes.org> Signed-off-by: Paul E. McKenney <paulmck@kernel.org> --- kernel/rcu/rcuperf.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/kernel/rcu/rcuperf.c b/kernel/rcu/rcuperf.c index a4a8d09..16dd1e6 100644 --- a/kernel/rcu/rcuperf.c +++ b/kernel/rcu/rcuperf.c @@ -88,6 +88,7 @@ torture_param(bool, shutdown, RCUPERF_SHUTDOWN, torture_param(int, verbose, 1, "Enable verbose debugging printk()s"); torture_param(int, writer_holdoff, 0, "Holdoff (us) between GPs, zero to disable"); torture_param(int, kfree_rcu_test, 0, "Do we run a kfree_rcu() perf test?"); +torture_param(int, kfree_mult, 1, "Multiple of kfree_obj size to allocate."); static char *perf_type = "rcu"; module_param(perf_type, charp, 0444); @@ -635,7 +636,7 @@ kfree_perf_thread(void *arg) } for (i = 0; i < kfree_alloc_num; i++) { - alloc_ptr = kmalloc(sizeof(struct kfree_obj), GFP_KERNEL); + alloc_ptr = kmalloc(kfree_mult * sizeof(struct kfree_obj), GFP_KERNEL); if (!alloc_ptr) return -ENOMEM; @@ -722,6 +723,8 @@ kfree_perf_init(void) schedule_timeout_uninterruptible(1); } + pr_alert("kfree object size=%lu\n", kfree_mult * sizeof(struct kfree_obj)); + kfree_reader_tasks = kcalloc(kfree_nrealthreads, sizeof(kfree_reader_tasks[0]), GFP_KERNEL); if (kfree_reader_tasks == NULL) { ^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH] rcu/performance: Fix kfree_perf_init() build warning on 32-bit kernels 2020-05-11 20:59 [tip: core/rcu] rcuperf: Add ability to increase object allocation size tip-bot2 for Joel Fernandes (Google) @ 2020-05-26 18:27 ` Ingo Molnar 2020-05-26 19:14 ` Paul E. McKenney 2020-05-27 1:14 ` Joel Fernandes 0 siblings, 2 replies; 8+ messages in thread From: Ingo Molnar @ 2020-05-26 18:27 UTC (permalink / raw) To: linux-kernel, Paul E. McKenney Cc: linux-tip-commits, Joel Fernandes (Google), Paul E. McKenney, x86 * tip-bot2 for Joel Fernandes (Google) <tip-bot2@linutronix.de> wrote: > The following commit has been merged into the core/rcu branch of tip: > > Commit-ID: f87dc808009ac86c790031627698ef1a34c31e25 > Gitweb: https://git.kernel.org/tip/f87dc808009ac86c790031627698ef1a34c31e25 > Author: Joel Fernandes (Google) <joel@joelfernandes.org> > AuthorDate: Mon, 16 Mar 2020 12:32:26 -04:00 > Committer: Paul E. McKenney <paulmck@kernel.org> > CommitterDate: Mon, 27 Apr 2020 11:02:50 -07:00 > > rcuperf: Add ability to increase object allocation size > > This allows us to increase memory pressure dynamically using a new > rcuperf boot command line parameter called 'rcumult'. > > Signed-off-by: Joel Fernandes (Google) <joel@joelfernandes.org> > Signed-off-by: Paul E. McKenney <paulmck@kernel.org> > --- > kernel/rcu/rcuperf.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/kernel/rcu/rcuperf.c b/kernel/rcu/rcuperf.c > index a4a8d09..16dd1e6 100644 > --- a/kernel/rcu/rcuperf.c > +++ b/kernel/rcu/rcuperf.c > @@ -88,6 +88,7 @@ torture_param(bool, shutdown, RCUPERF_SHUTDOWN, > torture_param(int, verbose, 1, "Enable verbose debugging printk()s"); > torture_param(int, writer_holdoff, 0, "Holdoff (us) between GPs, zero to disable"); > torture_param(int, kfree_rcu_test, 0, "Do we run a kfree_rcu() perf test?"); > +torture_param(int, kfree_mult, 1, "Multiple of kfree_obj size to allocate."); > > static char *perf_type = "rcu"; > module_param(perf_type, charp, 0444); > @@ -635,7 +636,7 @@ kfree_perf_thread(void *arg) > } > > for (i = 0; i < kfree_alloc_num; i++) { > - alloc_ptr = kmalloc(sizeof(struct kfree_obj), GFP_KERNEL); > + alloc_ptr = kmalloc(kfree_mult * sizeof(struct kfree_obj), GFP_KERNEL); > if (!alloc_ptr) > return -ENOMEM; > > @@ -722,6 +723,8 @@ kfree_perf_init(void) > schedule_timeout_uninterruptible(1); > } > > + pr_alert("kfree object size=%lu\n", kfree_mult * sizeof(struct kfree_obj)); There's a new build warning on certain 32-bit kernel builds due to this commit: In file included from ./include/linux/printk.h:7, from ./include/linux/kernel.h:15, from kernel/rcu/rcuperf.c:13: kernel/rcu/rcuperf.c: In function ‘kfree_perf_init’: ./include/linux/kern_levels.h:5:18: warning: format ‘%lu’ expects argument of type ‘long unsigned int’, but argument 2 has type ‘unsigned int’ [-Wformat=] 5 | #define KERN_SOH "\001" /* ASCII Start Of Header */ | ^~~~~~ ./include/linux/kern_levels.h:9:20: note: in expansion of macro ‘KERN_SOH’ 9 | #define KERN_ALERT KERN_SOH "1" /* action must be taken immediately */ | ^~~~~~~~ ./include/linux/printk.h:295:9: note: in expansion of macro ‘KERN_ALERT’ 295 | printk(KERN_ALERT pr_fmt(fmt), ##__VA_ARGS__) | ^~~~~~~~~~ kernel/rcu/rcuperf.c:726:2: note: in expansion of macro ‘pr_alert’ 726 | pr_alert("kfree object size=%lu\n", kfree_mult * sizeof(struct kfree_obj)); | ^~~~~~~~ kernel/rcu/rcuperf.c:726:32: note: format string is defined here 726 | pr_alert("kfree object size=%lu\n", kfree_mult * sizeof(struct kfree_obj)); | ~~^ | | | long unsigned int | %u The reason for the warning is that both kfree_mult and sizeof() are 'int' types on 32-bit kernels, while the format string expects a long. Instead of casting the type to long or tweaking the format string, the most straightforward solution is to upgrade kfree_mult to a long. Since this depends on CONFIG_RCU_PERF_TEST BTW., could we please also rename this code from 'PERF_TEST'/'perf test' to 'PERFORMANCE_TEST'/'performance test'? At first glance I always mistakenly believe that it's somehow related to perf, while it isn't. =B-) Thanks, Ingo Signed-off-by: Ingo Molnar <mingo@kernel.org> kernel/rcu/rcuperf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/rcu/rcuperf.c b/kernel/rcu/rcuperf.c index 16dd1e6b7c09..221a0a3810e4 100644 --- a/kernel/rcu/rcuperf.c +++ b/kernel/rcu/rcuperf.c @@ -88,7 +88,7 @@ torture_param(bool, shutdown, RCUPERF_SHUTDOWN, torture_param(int, verbose, 1, "Enable verbose debugging printk()s"); torture_param(int, writer_holdoff, 0, "Holdoff (us) between GPs, zero to disable"); torture_param(int, kfree_rcu_test, 0, "Do we run a kfree_rcu() perf test?"); -torture_param(int, kfree_mult, 1, "Multiple of kfree_obj size to allocate."); +torture_param(long, kfree_mult, 1, "Multiple of kfree_obj size to allocate."); static char *perf_type = "rcu"; module_param(perf_type, charp, 0444); ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH] rcu/performance: Fix kfree_perf_init() build warning on 32-bit kernels 2020-05-26 18:27 ` [PATCH] rcu/performance: Fix kfree_perf_init() build warning on 32-bit kernels Ingo Molnar @ 2020-05-26 19:14 ` Paul E. McKenney 2020-06-02 9:57 ` Geert Uytterhoeven 2020-05-27 1:14 ` Joel Fernandes 1 sibling, 1 reply; 8+ messages in thread From: Paul E. McKenney @ 2020-05-26 19:14 UTC (permalink / raw) To: Ingo Molnar; +Cc: linux-kernel, linux-tip-commits, Joel Fernandes (Google), x86 On Tue, May 26, 2020 at 08:27:44PM +0200, Ingo Molnar wrote: > > * tip-bot2 for Joel Fernandes (Google) <tip-bot2@linutronix.de> wrote: > > > The following commit has been merged into the core/rcu branch of tip: > > > > Commit-ID: f87dc808009ac86c790031627698ef1a34c31e25 > > Gitweb: https://git.kernel.org/tip/f87dc808009ac86c790031627698ef1a34c31e25 > > Author: Joel Fernandes (Google) <joel@joelfernandes.org> > > AuthorDate: Mon, 16 Mar 2020 12:32:26 -04:00 > > Committer: Paul E. McKenney <paulmck@kernel.org> > > CommitterDate: Mon, 27 Apr 2020 11:02:50 -07:00 > > > > rcuperf: Add ability to increase object allocation size > > > > This allows us to increase memory pressure dynamically using a new > > rcuperf boot command line parameter called 'rcumult'. > > > > Signed-off-by: Joel Fernandes (Google) <joel@joelfernandes.org> > > Signed-off-by: Paul E. McKenney <paulmck@kernel.org> > > --- > > kernel/rcu/rcuperf.c | 5 ++++- > > 1 file changed, 4 insertions(+), 1 deletion(-) > > > > diff --git a/kernel/rcu/rcuperf.c b/kernel/rcu/rcuperf.c > > index a4a8d09..16dd1e6 100644 > > --- a/kernel/rcu/rcuperf.c > > +++ b/kernel/rcu/rcuperf.c > > @@ -88,6 +88,7 @@ torture_param(bool, shutdown, RCUPERF_SHUTDOWN, > > torture_param(int, verbose, 1, "Enable verbose debugging printk()s"); > > torture_param(int, writer_holdoff, 0, "Holdoff (us) between GPs, zero to disable"); > > torture_param(int, kfree_rcu_test, 0, "Do we run a kfree_rcu() perf test?"); > > +torture_param(int, kfree_mult, 1, "Multiple of kfree_obj size to allocate."); > > > > static char *perf_type = "rcu"; > > module_param(perf_type, charp, 0444); > > @@ -635,7 +636,7 @@ kfree_perf_thread(void *arg) > > } > > > > for (i = 0; i < kfree_alloc_num; i++) { > > - alloc_ptr = kmalloc(sizeof(struct kfree_obj), GFP_KERNEL); > > + alloc_ptr = kmalloc(kfree_mult * sizeof(struct kfree_obj), GFP_KERNEL); > > if (!alloc_ptr) > > return -ENOMEM; > > > > @@ -722,6 +723,8 @@ kfree_perf_init(void) > > schedule_timeout_uninterruptible(1); > > } > > > > + pr_alert("kfree object size=%lu\n", kfree_mult * sizeof(struct kfree_obj)); > > There's a new build warning on certain 32-bit kernel builds due to > this commit: > > In file included from ./include/linux/printk.h:7, > from ./include/linux/kernel.h:15, > from kernel/rcu/rcuperf.c:13: > kernel/rcu/rcuperf.c: In function ‘kfree_perf_init’: > ./include/linux/kern_levels.h:5:18: warning: format ‘%lu’ expects argument of type ‘long unsigned int’, but argument 2 has type ‘unsigned int’ [-Wformat=] > 5 | #define KERN_SOH "\001" /* ASCII Start Of Header */ > | ^~~~~~ > ./include/linux/kern_levels.h:9:20: note: in expansion of macro ‘KERN_SOH’ > 9 | #define KERN_ALERT KERN_SOH "1" /* action must be taken immediately */ > | ^~~~~~~~ > ./include/linux/printk.h:295:9: note: in expansion of macro ‘KERN_ALERT’ > 295 | printk(KERN_ALERT pr_fmt(fmt), ##__VA_ARGS__) > | ^~~~~~~~~~ > kernel/rcu/rcuperf.c:726:2: note: in expansion of macro ‘pr_alert’ > 726 | pr_alert("kfree object size=%lu\n", kfree_mult * sizeof(struct kfree_obj)); > | ^~~~~~~~ > kernel/rcu/rcuperf.c:726:32: note: format string is defined here > 726 | pr_alert("kfree object size=%lu\n", kfree_mult * sizeof(struct kfree_obj)); > | ~~^ > | | > | long unsigned int > | %u > > > The reason for the warning is that both kfree_mult and sizeof() are > 'int' types on 32-bit kernels, while the format string expects a long. > > Instead of casting the type to long or tweaking the format string, the > most straightforward solution is to upgrade kfree_mult to a long. > Since this depends on CONFIG_RCU_PERF_TEST Makes sense, and I have queued the patch below, which I am assuming that you want in the upcoming merge window. If you don't tell me otherwise, I will send you an urgent pull request later today. Or, if you just put it directly into -tip yourself: Reviewed-by: Paul E. McKenney <paulmck@kernel.org> Either way, please let me know. > BTW., could we please also rename this code from 'PERF_TEST'/'perf test' > to 'PERFORMANCE_TEST'/'performance test'? At first glance I always > mistakenly believe that it's somehow related to perf, while it isn't. =B-) Fair enough, especially given that perf was there first and is also way more heavily used. ;-) But I am guessing that this one is OK for the v5.9 merge window. Either way, I will update as you say. Thanx, Paul ------------------------------------------------------------------------ commit 2fbc7d67a2ed108e3ac63296670fecb3a42fddd0 Author: Ingo Molnar <mingo@kernel.org> Date: Tue May 26 12:10:01 2020 -0700 rcuperf: Fix kfree_mult to match printk() format This commit changes the type of kfree_mult from int to long in order to match the printk() format on 32-bit systems. Reported-by: kbuild test robot <lkp@intel.com> Signed-off-by: Ingo Molnar <mingo@kernel.org> Signed-off-by: Paul E. McKenney <paulmck@kernel.org> diff --git a/kernel/rcu/rcuperf.c b/kernel/rcu/rcuperf.c index d906ca9..fb3a1f0 100644 --- a/kernel/rcu/rcuperf.c +++ b/kernel/rcu/rcuperf.c @@ -93,7 +93,7 @@ torture_param(bool, shutdown, RCUPERF_SHUTDOWN, torture_param(int, verbose, 1, "Enable verbose debugging printk()s"); torture_param(int, writer_holdoff, 0, "Holdoff (us) between GPs, zero to disable"); torture_param(int, kfree_rcu_test, 0, "Do we run a kfree_rcu() perf test?"); -torture_param(int, kfree_mult, 1, "Multiple of kfree_obj size to allocate."); +torture_param(long, kfree_mult, 1, "Multiple of kfree_obj size to allocate."); static char *perf_type = "rcu"; module_param(perf_type, charp, 0444); ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH] rcu/performance: Fix kfree_perf_init() build warning on 32-bit kernels 2020-05-26 19:14 ` Paul E. McKenney @ 2020-06-02 9:57 ` Geert Uytterhoeven 2020-06-02 15:56 ` Paul E. McKenney 0 siblings, 1 reply; 8+ messages in thread From: Geert Uytterhoeven @ 2020-06-02 9:57 UTC (permalink / raw) To: Paul E . McKenney Cc: Ingo Molnar, Linux Kernel Mailing List, linux-tip-commits, Joel Fernandes (Google), x86 Hi Paul, On Tue, May 26, 2020 at 9:17 PM Paul E. McKenney <paulmck@kernel.org> wrote: > On Tue, May 26, 2020 at 08:27:44PM +0200, Ingo Molnar wrote: > > * tip-bot2 for Joel Fernandes (Google) <tip-bot2@linutronix.de> wrote: > > > > > The following commit has been merged into the core/rcu branch of tip: > > > > > > Commit-ID: f87dc808009ac86c790031627698ef1a34c31e25 > > > Gitweb: https://git.kernel.org/tip/f87dc808009ac86c790031627698ef1a34c31e25 > > > Author: Joel Fernandes (Google) <joel@joelfernandes.org> > > > AuthorDate: Mon, 16 Mar 2020 12:32:26 -04:00 > > > Committer: Paul E. McKenney <paulmck@kernel.org> > > > CommitterDate: Mon, 27 Apr 2020 11:02:50 -07:00 > > > > > > rcuperf: Add ability to increase object allocation size > > > > > > This allows us to increase memory pressure dynamically using a new > > > rcuperf boot command line parameter called 'rcumult'. > > > > > > Signed-off-by: Joel Fernandes (Google) <joel@joelfernandes.org> > > > Signed-off-by: Paul E. McKenney <paulmck@kernel.org> > > > --- > > > kernel/rcu/rcuperf.c | 5 ++++- > > > 1 file changed, 4 insertions(+), 1 deletion(-) > > > > > > diff --git a/kernel/rcu/rcuperf.c b/kernel/rcu/rcuperf.c > > > index a4a8d09..16dd1e6 100644 > > > --- a/kernel/rcu/rcuperf.c > > > +++ b/kernel/rcu/rcuperf.c > > > @@ -722,6 +723,8 @@ kfree_perf_init(void) > > > schedule_timeout_uninterruptible(1); > > > } > > > > > > + pr_alert("kfree object size=%lu\n", kfree_mult * sizeof(struct kfree_obj)); > > > > There's a new build warning on certain 32-bit kernel builds due to > > this commit: > > > > In file included from ./include/linux/printk.h:7, > > from ./include/linux/kernel.h:15, > > from kernel/rcu/rcuperf.c:13: > > kernel/rcu/rcuperf.c: In function ‘kfree_perf_init’: > > ./include/linux/kern_levels.h:5:18: warning: format ‘%lu’ expects argument of type ‘long unsigned int’, but argument 2 has type ‘unsigned int’ [-Wformat=] > > 5 | #define KERN_SOH "\001" /* ASCII Start Of Header */ > > | ^~~~~~ > > ./include/linux/kern_levels.h:9:20: note: in expansion of macro ‘KERN_SOH’ > > 9 | #define KERN_ALERT KERN_SOH "1" /* action must be taken immediately */ > > | ^~~~~~~~ > > ./include/linux/printk.h:295:9: note: in expansion of macro ‘KERN_ALERT’ > > 295 | printk(KERN_ALERT pr_fmt(fmt), ##__VA_ARGS__) > > | ^~~~~~~~~~ > > kernel/rcu/rcuperf.c:726:2: note: in expansion of macro ‘pr_alert’ > > 726 | pr_alert("kfree object size=%lu\n", kfree_mult * sizeof(struct kfree_obj)); > > | ^~~~~~~~ > > kernel/rcu/rcuperf.c:726:32: note: format string is defined here > > 726 | pr_alert("kfree object size=%lu\n", kfree_mult * sizeof(struct kfree_obj)); > > | ~~^ > > | | > > | long unsigned int > > | %u This issue is now upstream. > > The reason for the warning is that both kfree_mult and sizeof() are > > 'int' types on 32-bit kernels, while the format string expects a long. sizeof() is of type size_t, which is either unsigned int (32-bit) or unsigned long (64-bit). Hence the result of the multiplication is also of type size_t. > > > > Instead of casting the type to long or tweaking the format string, the > > most straightforward solution is to upgrade kfree_mult to a long. > > Since this depends on CONFIG_RCU_PERF_TEST So the proper fix is Kefeng's patch from April: "[PATCH -next] rcuperf: Fix printk format warning" https://lore.kernel.org/r/20200417040245.66382-1-wangkefeng.wang@huawei.com ":"-- > Makes sense, and I have queued the patch below, which I am assuming > that you want in the upcoming merge window. If you don't tell me > otherwise, I will send you an urgent pull request later today. > Or, if you just put it directly into -tip yourself: > > Reviewed-by: Paul E. McKenney <paulmck@kernel.org> > > Either way, please let me know. > > > BTW., could we please also rename this code from 'PERF_TEST'/'perf test' > > to 'PERFORMANCE_TEST'/'performance test'? At first glance I always > > mistakenly believe that it's somehow related to perf, while it isn't. =B-) > > Fair enough, especially given that perf was there first and is also way > more heavily used. ;-) > > But I am guessing that this one is OK for the v5.9 merge window. > Either way, I will update as you say. > > Thanx, Paul > > ------------------------------------------------------------------------ > > commit 2fbc7d67a2ed108e3ac63296670fecb3a42fddd0 > Author: Ingo Molnar <mingo@kernel.org> > Date: Tue May 26 12:10:01 2020 -0700 > > rcuperf: Fix kfree_mult to match printk() format > > This commit changes the type of kfree_mult from int to long in order > to match the printk() format on 32-bit systems. > > Reported-by: kbuild test robot <lkp@intel.com> > Signed-off-by: Ingo Molnar <mingo@kernel.org> > Signed-off-by: Paul E. McKenney <paulmck@kernel.org> > > diff --git a/kernel/rcu/rcuperf.c b/kernel/rcu/rcuperf.c > index d906ca9..fb3a1f0 100644 > --- a/kernel/rcu/rcuperf.c > +++ b/kernel/rcu/rcuperf.c > @@ -93,7 +93,7 @@ torture_param(bool, shutdown, RCUPERF_SHUTDOWN, > torture_param(int, verbose, 1, "Enable verbose debugging printk()s"); > torture_param(int, writer_holdoff, 0, "Holdoff (us) between GPs, zero to disable"); > torture_param(int, kfree_rcu_test, 0, "Do we run a kfree_rcu() perf test?"); > -torture_param(int, kfree_mult, 1, "Multiple of kfree_obj size to allocate."); > +torture_param(long, kfree_mult, 1, "Multiple of kfree_obj size to allocate."); > > static char *perf_type = "rcu"; > module_param(perf_type, charp, 0444); Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] rcu/performance: Fix kfree_perf_init() build warning on 32-bit kernels 2020-06-02 9:57 ` Geert Uytterhoeven @ 2020-06-02 15:56 ` Paul E. McKenney 0 siblings, 0 replies; 8+ messages in thread From: Paul E. McKenney @ 2020-06-02 15:56 UTC (permalink / raw) To: Geert Uytterhoeven Cc: Ingo Molnar, Linux Kernel Mailing List, linux-tip-commits, Joel Fernandes (Google), x86 On Tue, Jun 02, 2020 at 11:57:51AM +0200, Geert Uytterhoeven wrote: > Hi Paul, > > On Tue, May 26, 2020 at 9:17 PM Paul E. McKenney <paulmck@kernel.org> wrote: > > On Tue, May 26, 2020 at 08:27:44PM +0200, Ingo Molnar wrote: > > > * tip-bot2 for Joel Fernandes (Google) <tip-bot2@linutronix.de> wrote: > > > > > > > The following commit has been merged into the core/rcu branch of tip: > > > > > > > > Commit-ID: f87dc808009ac86c790031627698ef1a34c31e25 > > > > Gitweb: https://git.kernel.org/tip/f87dc808009ac86c790031627698ef1a34c31e25 > > > > Author: Joel Fernandes (Google) <joel@joelfernandes.org> > > > > AuthorDate: Mon, 16 Mar 2020 12:32:26 -04:00 > > > > Committer: Paul E. McKenney <paulmck@kernel.org> > > > > CommitterDate: Mon, 27 Apr 2020 11:02:50 -07:00 > > > > > > > > rcuperf: Add ability to increase object allocation size > > > > > > > > This allows us to increase memory pressure dynamically using a new > > > > rcuperf boot command line parameter called 'rcumult'. > > > > > > > > Signed-off-by: Joel Fernandes (Google) <joel@joelfernandes.org> > > > > Signed-off-by: Paul E. McKenney <paulmck@kernel.org> > > > > --- > > > > kernel/rcu/rcuperf.c | 5 ++++- > > > > 1 file changed, 4 insertions(+), 1 deletion(-) > > > > > > > > diff --git a/kernel/rcu/rcuperf.c b/kernel/rcu/rcuperf.c > > > > index a4a8d09..16dd1e6 100644 > > > > --- a/kernel/rcu/rcuperf.c > > > > +++ b/kernel/rcu/rcuperf.c > > > > > @@ -722,6 +723,8 @@ kfree_perf_init(void) > > > > schedule_timeout_uninterruptible(1); > > > > } > > > > > > > > + pr_alert("kfree object size=%lu\n", kfree_mult * sizeof(struct kfree_obj)); > > > > > > There's a new build warning on certain 32-bit kernel builds due to > > > this commit: > > > > > > In file included from ./include/linux/printk.h:7, > > > from ./include/linux/kernel.h:15, > > > from kernel/rcu/rcuperf.c:13: > > > kernel/rcu/rcuperf.c: In function ‘kfree_perf_init’: > > > ./include/linux/kern_levels.h:5:18: warning: format ‘%lu’ expects argument of type ‘long unsigned int’, but argument 2 has type ‘unsigned int’ [-Wformat=] > > > 5 | #define KERN_SOH "\001" /* ASCII Start Of Header */ > > > | ^~~~~~ > > > ./include/linux/kern_levels.h:9:20: note: in expansion of macro ‘KERN_SOH’ > > > 9 | #define KERN_ALERT KERN_SOH "1" /* action must be taken immediately */ > > > | ^~~~~~~~ > > > ./include/linux/printk.h:295:9: note: in expansion of macro ‘KERN_ALERT’ > > > 295 | printk(KERN_ALERT pr_fmt(fmt), ##__VA_ARGS__) > > > | ^~~~~~~~~~ > > > kernel/rcu/rcuperf.c:726:2: note: in expansion of macro ‘pr_alert’ > > > 726 | pr_alert("kfree object size=%lu\n", kfree_mult * sizeof(struct kfree_obj)); > > > | ^~~~~~~~ > > > kernel/rcu/rcuperf.c:726:32: note: format string is defined here > > > 726 | pr_alert("kfree object size=%lu\n", kfree_mult * sizeof(struct kfree_obj)); > > > | ~~^ > > > | | > > > | long unsigned int > > > | %u > > This issue is now upstream. > > > > The reason for the warning is that both kfree_mult and sizeof() are > > > 'int' types on 32-bit kernels, while the format string expects a long. > > sizeof() is of type size_t, which is either unsigned int (32-bit) or > unsigned long (64-bit). > Hence the result of the multiplication is also of type size_t. > > > > > > > Instead of casting the type to long or tweaking the format string, the > > > most straightforward solution is to upgrade kfree_mult to a long. > > > Since this depends on CONFIG_RCU_PERF_TEST > > So the proper fix is Kefeng's patch from April: > "[PATCH -next] rcuperf: Fix printk format warning" > https://lore.kernel.org/r/20200417040245.66382-1-wangkefeng.wang@huawei.com Apologies for not having followed up on this one. I applied this commit and sent the pull request, CCing you. Thanx, Paul > ":"-- > > Makes sense, and I have queued the patch below, which I am assuming > > that you want in the upcoming merge window. If you don't tell me > > otherwise, I will send you an urgent pull request later today. > > Or, if you just put it directly into -tip yourself: > > > > Reviewed-by: Paul E. McKenney <paulmck@kernel.org> > > > > Either way, please let me know. > > > > > BTW., could we please also rename this code from 'PERF_TEST'/'perf test' > > > to 'PERFORMANCE_TEST'/'performance test'? At first glance I always > > > mistakenly believe that it's somehow related to perf, while it isn't. =B-) > > > > Fair enough, especially given that perf was there first and is also way > > more heavily used. ;-) > > > > But I am guessing that this one is OK for the v5.9 merge window. > > Either way, I will update as you say. > > > > Thanx, Paul > > > > ------------------------------------------------------------------------ > > > > commit 2fbc7d67a2ed108e3ac63296670fecb3a42fddd0 > > Author: Ingo Molnar <mingo@kernel.org> > > Date: Tue May 26 12:10:01 2020 -0700 > > > > rcuperf: Fix kfree_mult to match printk() format > > > > This commit changes the type of kfree_mult from int to long in order > > to match the printk() format on 32-bit systems. > > > > Reported-by: kbuild test robot <lkp@intel.com> > > Signed-off-by: Ingo Molnar <mingo@kernel.org> > > Signed-off-by: Paul E. McKenney <paulmck@kernel.org> > > > > diff --git a/kernel/rcu/rcuperf.c b/kernel/rcu/rcuperf.c > > index d906ca9..fb3a1f0 100644 > > --- a/kernel/rcu/rcuperf.c > > +++ b/kernel/rcu/rcuperf.c > > @@ -93,7 +93,7 @@ torture_param(bool, shutdown, RCUPERF_SHUTDOWN, > > torture_param(int, verbose, 1, "Enable verbose debugging printk()s"); > > torture_param(int, writer_holdoff, 0, "Holdoff (us) between GPs, zero to disable"); > > torture_param(int, kfree_rcu_test, 0, "Do we run a kfree_rcu() perf test?"); > > -torture_param(int, kfree_mult, 1, "Multiple of kfree_obj size to allocate."); > > +torture_param(long, kfree_mult, 1, "Multiple of kfree_obj size to allocate."); > > > > static char *perf_type = "rcu"; > > module_param(perf_type, charp, 0444); > > Gr{oetje,eeting}s, > > Geert > > -- > Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org > > In personal conversations with technical people, I call myself a hacker. But > when I'm talking to journalists I just say "programmer" or something like that. > -- Linus Torvalds ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] rcu/performance: Fix kfree_perf_init() build warning on 32-bit kernels 2020-05-26 18:27 ` [PATCH] rcu/performance: Fix kfree_perf_init() build warning on 32-bit kernels Ingo Molnar 2020-05-26 19:14 ` Paul E. McKenney @ 2020-05-27 1:14 ` Joel Fernandes 2020-06-03 18:11 ` Paul E. McKenney 1 sibling, 1 reply; 8+ messages in thread From: Joel Fernandes @ 2020-05-27 1:14 UTC (permalink / raw) To: Ingo Molnar; +Cc: linux-kernel, Paul E. McKenney, linux-tip-commits, x86 On Tue, May 26, 2020 at 08:27:44PM +0200, Ingo Molnar wrote: [...] > ./include/linux/kern_levels.h:5:18: warning: format ‘%lu’ expects argument > of type ‘long unsigned int’, but argument 2 has type ‘unsigned int’ > [-Wformat=] 5 | #define KERN_SOH "\001" /* ASCII Start Of Header */ | > ^~~~~~ > ./include/linux/kern_levels.h:9:20: note: in expansion of macro ‘KERN_SOH’ > 9 | #define KERN_ALERT KERN_SOH "1" /* action must be taken immediately */ > | ^~~~~~~~ > ./include/linux/printk.h:295:9: note: in expansion of macro ‘KERN_ALERT’ > 295 | printk(KERN_ALERT pr_fmt(fmt), ##__VA_ARGS__) > | ^~~~~~~~~~ > kernel/rcu/rcuperf.c:726:2: note: in expansion of macro ‘pr_alert’ > 726 | pr_alert("kfree object size=%lu\n", kfree_mult * sizeof(struct kfree_obj)); > | ^~~~~~~~ > kernel/rcu/rcuperf.c:726:32: note: format string is defined here > 726 | pr_alert("kfree object size=%lu\n", kfree_mult * sizeof(struct kfree_obj)); > | ~~^ > | | > | long unsigned int > | %u > > > The reason for the warning is that both kfree_mult and sizeof() are > 'int' types on 32-bit kernels, while the format string expects a long. > > Instead of casting the type to long or tweaking the format string, the > most straightforward solution is to upgrade kfree_mult to a long. > Since this depends on CONFIG_RCU_PERF_TEST Thanks for fixing it. > BTW., could we please also rename this code from 'PERF_TEST'/'perf test' > to 'PERFORMANCE_TEST'/'performance test'? At first glance I always > mistakenly believe that it's somehow related to perf, while it isn't. =B-) Would it be better to call it 'RCUPERF_TEST' instead of the 'RCU_PERFORMANCE_TEST' you are proposing? I feel the word 'PERFORMANCE' is too long. Also, 'rcuperf test' instead of the 'rcu performance test' you are proposing. I am Ok with doing it however you and Paul want it though, let me know. Paul, should I send you a renaming patch for the new performance tests as well (which I believe should be in the -dev branch). thanks, - Joel > > Thanks, > > Ingo > > Signed-off-by: Ingo Molnar <mingo@kernel.org> > > kernel/rcu/rcuperf.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/kernel/rcu/rcuperf.c b/kernel/rcu/rcuperf.c > index 16dd1e6b7c09..221a0a3810e4 100644 > --- a/kernel/rcu/rcuperf.c > +++ b/kernel/rcu/rcuperf.c > @@ -88,7 +88,7 @@ torture_param(bool, shutdown, RCUPERF_SHUTDOWN, > torture_param(int, verbose, 1, "Enable verbose debugging printk()s"); > torture_param(int, writer_holdoff, 0, "Holdoff (us) between GPs, zero to disable"); > torture_param(int, kfree_rcu_test, 0, "Do we run a kfree_rcu() perf test?"); > -torture_param(int, kfree_mult, 1, "Multiple of kfree_obj size to allocate."); > +torture_param(long, kfree_mult, 1, "Multiple of kfree_obj size to allocate."); > > static char *perf_type = "rcu"; > module_param(perf_type, charp, 0444); ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] rcu/performance: Fix kfree_perf_init() build warning on 32-bit kernels 2020-05-27 1:14 ` Joel Fernandes @ 2020-06-03 18:11 ` Paul E. McKenney 2020-06-17 18:06 ` Paul E. McKenney 0 siblings, 1 reply; 8+ messages in thread From: Paul E. McKenney @ 2020-06-03 18:11 UTC (permalink / raw) To: Joel Fernandes; +Cc: Ingo Molnar, linux-kernel, linux-tip-commits, x86 On Tue, May 26, 2020 at 09:14:13PM -0400, Joel Fernandes wrote: > On Tue, May 26, 2020 at 08:27:44PM +0200, Ingo Molnar wrote: > [...] > > ./include/linux/kern_levels.h:5:18: warning: format ‘%lu’ expects argument > > of type ‘long unsigned int’, but argument 2 has type ‘unsigned int’ > > [-Wformat=] 5 | #define KERN_SOH "\001" /* ASCII Start Of Header */ | > > ^~~~~~ > > ./include/linux/kern_levels.h:9:20: note: in expansion of macro ‘KERN_SOH’ > > 9 | #define KERN_ALERT KERN_SOH "1" /* action must be taken immediately */ > > | ^~~~~~~~ > > ./include/linux/printk.h:295:9: note: in expansion of macro ‘KERN_ALERT’ > > 295 | printk(KERN_ALERT pr_fmt(fmt), ##__VA_ARGS__) > > | ^~~~~~~~~~ > > kernel/rcu/rcuperf.c:726:2: note: in expansion of macro ‘pr_alert’ > > 726 | pr_alert("kfree object size=%lu\n", kfree_mult * sizeof(struct kfree_obj)); > > | ^~~~~~~~ > > kernel/rcu/rcuperf.c:726:32: note: format string is defined here > > 726 | pr_alert("kfree object size=%lu\n", kfree_mult * sizeof(struct kfree_obj)); > > | ~~^ > > | | > > | long unsigned int > > | %u > > > > > > The reason for the warning is that both kfree_mult and sizeof() are > > 'int' types on 32-bit kernels, while the format string expects a long. > > > > Instead of casting the type to long or tweaking the format string, the > > most straightforward solution is to upgrade kfree_mult to a long. > > Since this depends on CONFIG_RCU_PERF_TEST > > Thanks for fixing it. > > > BTW., could we please also rename this code from 'PERF_TEST'/'perf test' > > to 'PERFORMANCE_TEST'/'performance test'? At first glance I always > > mistakenly believe that it's somehow related to perf, while it isn't. =B-) > > Would it be better to call it 'RCUPERF_TEST' instead of the > 'RCU_PERFORMANCE_TEST' you are proposing? I feel the word 'PERFORMANCE' is > too long. Also, 'rcuperf test' instead of the 'rcu performance test' you are > proposing. I am Ok with doing it however you and Paul want it though, let me > know. As long as we are bikeshedding the name... How about refscale.c and RCU_REF_SCALE_TEST on the one hand and rcuscale.c and RCU_SCALE_TEST on the other? That keeps the names reasonably short and does not allude to perf at all. > Paul, should I send you a renaming patch for the new performance tests as > well (which I believe should be in the -dev branch). I am still modifying refperf/refscale/refwhatever, so I will update that one. Thanx, Paul ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] rcu/performance: Fix kfree_perf_init() build warning on 32-bit kernels 2020-06-03 18:11 ` Paul E. McKenney @ 2020-06-17 18:06 ` Paul E. McKenney 0 siblings, 0 replies; 8+ messages in thread From: Paul E. McKenney @ 2020-06-17 18:06 UTC (permalink / raw) To: Joel Fernandes; +Cc: Ingo Molnar, linux-kernel, linux-tip-commits, x86 On Wed, Jun 03, 2020 at 11:11:09AM -0700, Paul E. McKenney wrote: > On Tue, May 26, 2020 at 09:14:13PM -0400, Joel Fernandes wrote: > > On Tue, May 26, 2020 at 08:27:44PM +0200, Ingo Molnar wrote: [ . . . ] > > > BTW., could we please also rename this code from 'PERF_TEST'/'perf test' > > > to 'PERFORMANCE_TEST'/'performance test'? At first glance I always > > > mistakenly believe that it's somehow related to perf, while it isn't. =B-) > > > > Would it be better to call it 'RCUPERF_TEST' instead of the > > 'RCU_PERFORMANCE_TEST' you are proposing? I feel the word 'PERFORMANCE' is > > too long. Also, 'rcuperf test' instead of the 'rcu performance test' you are > > proposing. I am Ok with doing it however you and Paul want it though, let me > > know. > > As long as we are bikeshedding the name... How about refscale.c and > RCU_REF_SCALE_TEST on the one hand and rcuscale.c and RCU_SCALE_TEST on > the other? That keeps the names reasonably short and does not allude > to perf at all. Hearing no objections, I will go with the scale/SCALE names. Thanx, Paul ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2020-06-17 18:06 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2020-05-11 20:59 [tip: core/rcu] rcuperf: Add ability to increase object allocation size tip-bot2 for Joel Fernandes (Google) 2020-05-26 18:27 ` [PATCH] rcu/performance: Fix kfree_perf_init() build warning on 32-bit kernels Ingo Molnar 2020-05-26 19:14 ` Paul E. McKenney 2020-06-02 9:57 ` Geert Uytterhoeven 2020-06-02 15:56 ` Paul E. McKenney 2020-05-27 1:14 ` Joel Fernandes 2020-06-03 18:11 ` Paul E. McKenney 2020-06-17 18:06 ` Paul E. McKenney
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox