linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* FYI, tiny-kernel fix for rcu_segcblist separate .c file
@ 2017-05-05 16:13 Paul E. McKenney
  2017-05-06  7:15 ` Ingo Molnar
  0 siblings, 1 reply; 3+ messages in thread
From: Paul E. McKenney @ 2017-05-05 16:13 UTC (permalink / raw)
  To: mingo; +Cc: linux-kernel

Hello, Ingo,

Just in case you get complaints about kernel size...

In response to Linus's feedback, I did commit 98059b98619d ("rcu:
Separately compile large rcu_segcblist functions"), which of course
has the side-effect of bloating Tiny SRCU, which 0day Test Robot
complains about.

So I have queued commit 7bf7fa5acc92 ("srcu: Apply trivial callback
lists to shrink Tiny SRCU"), which makes up for the bloating and then some.

I don't believe that this debloating is at all urgent because people
building kernels for small-memory devices have to do a lot of other
tweaking, so that applying this additional commit as a patch should
not be too much incremental pain.

So again, if you get complaints about 98059b98619d bloating tiny
kernel builds, 7bf7fa5acc92 is the fix.

							Thanx, Paul

----- Forwarded message from kbuild test robot <fengguang.wu@intel.com> -----

Date: Fri, 05 May 2017 20:57:16 +0800
From: kbuild test robot <fengguang.wu@intel.com>
To: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
Subject: [rcu:dev.2017.05.04c] BUILD INCOMPLETE
	b015d142a08cdd2b69b9a59dd664a14a64e383bb

https://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git  dev.2017.05.04c
b015d142a08cdd2b69b9a59dd664a14a64e383bb  fixup! torture: Add --kconfig argument to kvm.sh

i386-tinyconfig vmlinux size:

+-------+----------------------------+---------------------------------------------------------------------+
| DELTA |           SYMBOL           |                               COMMIT                                |
+-------+----------------------------+---------------------------------------------------------------------+
|  -407 | TOTAL                      | 96fd20cf3f16..b015d142a08c (ALL COMMITS)                            |
|  +536 | TOTAL                      | 98059b98619d rcu: Separately compile large rcu_segcblist functions  |
|   +38 | TOTAL                      | 31a4bf8a8cc7 rcu: Make synchronize_rcu_mult() check for duplicates  |
|  -995 | TOTAL                      | 80360a9b1d95 srcu: Apply trivial callback lists to shrink Tiny SRCU |
|  -308 | TEXT                       | 96fd20cf3f16..b015d142a08c (ALL COMMITS)                            |
|  +544 | TEXT                       | 98059b98619d rcu: Separately compile large rcu_segcblist functions  |
|   +38 | TEXT                       | 31a4bf8a8cc7 rcu: Make synchronize_rcu_mult() check for duplicates  |
|  -915 | TEXT                       | 80360a9b1d95 srcu: Apply trivial callback lists to shrink Tiny SRCU |
|   +84 | rcu_segcblist_accelerate() | 98059b98619d rcu: Separately compile large rcu_segcblist functions  |
|   -84 | rcu_segcblist_accelerate() | 80360a9b1d95 srcu: Apply trivial callback lists to shrink Tiny SRCU |
|   +72 | rcu_segcblist_advance()    | 98059b98619d rcu: Separately compile large rcu_segcblist functions  |
|   -72 | rcu_segcblist_advance()    | 80360a9b1d95 srcu: Apply trivial callback lists to shrink Tiny SRCU |
|   +71 | rcu_segcblist_entrain()    | 98059b98619d rcu: Separately compile large rcu_segcblist functions  |
|   -71 | rcu_segcblist_entrain()    | 80360a9b1d95 srcu: Apply trivial callback lists to shrink Tiny SRCU |
|   +70 | rcu_segcblist_dequeue()    | 98059b98619d rcu: Separately compile large rcu_segcblist functions  |
|   -70 | rcu_segcblist_dequeue()    | 80360a9b1d95 srcu: Apply trivial callback lists to shrink Tiny SRCU |
|  -116 | drivers/base/              | 96fd20cf3f16..b015d142a08c (ALL COMMITS)                            |
|   -32 | drivers/base/              | 04e777c93128 srcu: Shrink Tiny SRCU a bit more                      |
|   -56 | drivers/base/              | 80360a9b1d95 srcu: Apply trivial callback lists to shrink Tiny SRCU |
|  -256 | drivers/hsi/               | 96fd20cf3f16..b015d142a08c (ALL COMMITS)                            |
|  +256 | drivers/hsi/               | 98059b98619d rcu: Separately compile large rcu_segcblist functions  |
|  +256 | drivers/hsi/               | 933dfbd7c437 rcu: Open-code the rcu_cblist_n_lazy_cbs() function    |
|  -256 | drivers/hsi/               | 45753c5f3157 srcu: Debloat the <linux/rcu_segcblist.h> header       |
|  -256 | drivers/hsi/               | 8ef0f37efb78 rcu: Open-code the rcu_cblist_empty() function         |
|  -256 | drivers/hsi/               | 167934c9150c lockdep: Use consistent printing primitives            |
|  -329 | srcu_drive_gp()            | 96fd20cf3f16..b015d142a08c (ALL COMMITS)                            |
|   -71 | srcu_drive_gp()            | 80360a9b1d95 srcu: Apply trivial callback lists to shrink Tiny SRCU |
|  -263 | srcu_drive_gp()            | 98059b98619d rcu: Separately compile large rcu_segcblist functions  |
|  -376 | kernel/rcu/                | 96fd20cf3f16..b015d142a08c (ALL COMMITS)                            |
| +1684 | kernel/rcu/                | 98059b98619d rcu: Separately compile large rcu_segcblist functions  |
|   +40 | kernel/rcu/                | 31a4bf8a8cc7 rcu: Make synchronize_rcu_mult() check for duplicates  |
|   -32 | kernel/rcu/                | 0cd4479ad0b2 srcu: Shrink Tiny SRCU a bit                           |
| -2068 | kernel/rcu/                | 80360a9b1d95 srcu: Apply trivial callback lists to shrink Tiny SRCU |
+-------+----------------------------+---------------------------------------------------------------------+

TIMEOUT after 608m


Sorry we cannot finish the testset for your branch within a reasonable time.
It's our fault -- either some build server is down or some build worker is busy
doing bisects for _other_ trees. The branch will get more complete coverage and
possible error reports when our build infrastructure is restored or catches up.
There will be no more build success notification for this branch head, but you
can expect reasonably good test coverage after waiting for 1 day.

configs timed out: 45

alpha                            allmodconfig
alpha                            allyesconfig
blackfin                         allmodconfig
blackfin                         allyesconfig
cris                             allmodconfig
cris                             allyesconfig
customconfig                                0
customconfig                                1
customconfig                                2
customconfig                                3
customconfig                                4
customconfig                                5
customconfig                                6
customconfig                                7
customconfig                                8
customconfig                                9
i386                            randconfig-s0
i386                            randconfig-s1
ia64                             allmodconfig
ia64                             allyesconfig
m68k                             allmodconfig
m68k                             allyesconfig
microblaze                      mmu_defconfig
microblaze                    nommu_defconfig
mips                             allmodconfig
mips                             allyesconfig
parisc                           allmodconfig
parisc                           allyesconfig
powerpc                          allmodconfig
powerpc                          allyesconfig
s390                             allmodconfig
s390                             allyesconfig
score                      spct6600_defconfig
sh                               allmodconfig
sh                               allyesconfig
sparc64                          allmodconfig
sparc64                          allyesconfig
sparc                            allmodconfig
sparc                            allyesconfig
tile                             allmodconfig
tile                             allyesconfig
x86_64                           allyesconfig
x86_64                                    lkp
xtensa                           allmodconfig
xtensa                           allyesconfig

configs tested: 142

powerpc                             defconfig
s390                        default_defconfig
powerpc                       ppc64_defconfig
powerpc                           allnoconfig
x86_64                             acpi-redef
x86_64                           allyesdebian
x86_64                                nfsroot
cris                 etrax-100lx_v2_defconfig
blackfin                  TCM-BF537_defconfig
blackfin            BF561-EZKIT-SMP_defconfig
blackfin                BF533-EZKIT_defconfig
blackfin                BF526-EZBRD_defconfig
parisc                        c3000_defconfig
parisc                         b180_defconfig
parisc                              defconfig
alpha                               defconfig
parisc                            allnoconfig
x86_64                 randconfig-x015-201718
x86_64                 randconfig-x012-201718
x86_64                 randconfig-x010-201718
x86_64                 randconfig-x017-201718
x86_64                 randconfig-x011-201718
x86_64                 randconfig-x018-201718
x86_64                 randconfig-x013-201718
x86_64                 randconfig-x014-201718
x86_64                 randconfig-x016-201718
x86_64                 randconfig-x019-201718
ia64                              allnoconfig
ia64                                defconfig
ia64                             alldefconfig
x86_64                                  kexec
x86_64                                   rhel
x86_64                               rhel-7.2
i386                   randconfig-a0-05010503
mn10300                     asb2364_defconfig
openrisc                    or1ksim_defconfig
um                           x86_64_defconfig
um                             i386_defconfig
avr32                      atngw100_defconfig
frv                                 defconfig
avr32                     atstk1006_defconfig
tile                         tilegx_defconfig
arm                       omap2plus_defconfig
arm                                    sa1100
arm                              allmodconfig
arm                                   samsung
arm                        mvebu_v7_defconfig
arm                          ixp4xx_defconfig
arm                       imx_v6_v7_defconfig
arm64                            allmodconfig
arm                           tegra_defconfig
arm                                      arm5
arm64                            alldefconfig
arm                                        sh
arm                                     arm67
m68k                           sun3_defconfig
m68k                          multi_defconfig
m68k                       m5475evb_defconfig
i386                               tinyconfig
x86_64                   randconfig-i0-201718
i386                     randconfig-i0-201718
i386                     randconfig-i1-201718
sparc                               defconfig
sparc64                           allnoconfig
sparc64                             defconfig
c6x                        evmc6678_defconfig
xtensa                       common_defconfig
m32r                       m32104ut_defconfig
xtensa                          iss_defconfig
m32r                         opsput_defconfig
m32r                           usrv_defconfig
m32r                     mappi3.smp_defconfig
nios2                         10m50_defconfig
h8300                    h8300h-sim_defconfig
i386                   randconfig-x016-201718
i386                   randconfig-x014-201718
i386                   randconfig-x010-201718
i386                   randconfig-x017-201718
i386                   randconfig-x019-201718
i386                   randconfig-x013-201718
i386                   randconfig-x018-201718
i386                   randconfig-x012-201718
i386                   randconfig-x015-201718
i386                   randconfig-x011-201718
i386                     randconfig-n0-201718
i386                             allmodconfig
sh                            titan_defconfig
sh                          rsk7269_defconfig
sh                  sh7785lcr_32bit_defconfig
sh                                allnoconfig
x86_64                           allmodconfig
arm                         at91_dt_defconfig
arm                               allnoconfig
arm                           efm32_defconfig
arm64                               defconfig
arm                        multi_v5_defconfig
arm                           sunxi_defconfig
arm64                             allnoconfig
arm                          exynos_defconfig
arm                        shmobile_defconfig
arm                        multi_v7_defconfig
i386                 randconfig-x072-05010711
i386                 randconfig-x079-05010711
i386                 randconfig-x071-05010711
i386                 randconfig-x076-05010711
i386                 randconfig-x074-05010711
i386                 randconfig-x078-05010711
i386                 randconfig-x077-05010711
i386                 randconfig-x075-05010711
i386                 randconfig-x070-05010711
i386                 randconfig-x073-05010711
i386                              allnoconfig
i386                                defconfig
i386                             alldefconfig
x86_64                 randconfig-x003-201718
x86_64                 randconfig-x004-201718
x86_64                 randconfig-x009-201718
x86_64                 randconfig-x002-201718
x86_64                 randconfig-x008-201718
x86_64                 randconfig-x000-201718
x86_64                 randconfig-x007-201718
x86_64                 randconfig-x005-201718
x86_64                 randconfig-x006-201718
x86_64                 randconfig-x001-201718
i386                     randconfig-r0-201718
i386                   randconfig-x005-201718
i386                   randconfig-x002-201718
i386                   randconfig-x006-201718
i386                   randconfig-x008-201718
i386                   randconfig-x001-201718
i386                   randconfig-x003-201718
i386                   randconfig-x007-201718
i386                   randconfig-x000-201718
i386                   randconfig-x009-201718
i386                   randconfig-x004-201718
mips                                   jz4740
mips                      malta_kvm_defconfig
mips                         64r6el_defconfig
mips                           32r2_defconfig
mips                              allnoconfig
mips                      fuloong2e_defconfig
mips                                     txx9

Thanks,
Fengguang


----- End forwarded message -----

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: FYI, tiny-kernel fix for rcu_segcblist separate .c file
  2017-05-05 16:13 FYI, tiny-kernel fix for rcu_segcblist separate .c file Paul E. McKenney
@ 2017-05-06  7:15 ` Ingo Molnar
  2017-05-06 16:51   ` Paul E. McKenney
  0 siblings, 1 reply; 3+ messages in thread
From: Ingo Molnar @ 2017-05-06  7:15 UTC (permalink / raw)
  To: Paul E. McKenney; +Cc: linux-kernel


* Paul E. McKenney <paulmck@linux.vnet.ibm.com> wrote:

> Hello, Ingo,
> 
> Just in case you get complaints about kernel size...
> 
> In response to Linus's feedback, I did commit 98059b98619d ("rcu:
> Separately compile large rcu_segcblist functions"), which of course
> has the side-effect of bloating Tiny SRCU, which 0day Test Robot
> complains about.
> 
> So I have queued commit 7bf7fa5acc92 ("srcu: Apply trivial callback
> lists to shrink Tiny SRCU"), which makes up for the bloating and then some.
> 
> I don't believe that this debloating is at all urgent because people
> building kernels for small-memory devices have to do a lot of other
> tweaking, so that applying this additional commit as a patch should
> not be too much incremental pain.
> 
> So again, if you get complaints about 98059b98619d bloating tiny
> kernel builds, 7bf7fa5acc92 is the fix.

Ok!

I do agree that it's not urgent: single CPU systems are rapidly becoming the 
exception for new hardware designed, even for embedded systems. At this point
I think the educational value of TinyRCU is its main quality.

Thanks,

	Ingo

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: FYI, tiny-kernel fix for rcu_segcblist separate .c file
  2017-05-06  7:15 ` Ingo Molnar
@ 2017-05-06 16:51   ` Paul E. McKenney
  0 siblings, 0 replies; 3+ messages in thread
From: Paul E. McKenney @ 2017-05-06 16:51 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: linux-kernel

On Sat, May 06, 2017 at 09:15:51AM +0200, Ingo Molnar wrote:
> 
> * Paul E. McKenney <paulmck@linux.vnet.ibm.com> wrote:
> 
> > Hello, Ingo,
> > 
> > Just in case you get complaints about kernel size...
> > 
> > In response to Linus's feedback, I did commit 98059b98619d ("rcu:
> > Separately compile large rcu_segcblist functions"), which of course
> > has the side-effect of bloating Tiny SRCU, which 0day Test Robot
> > complains about.
> > 
> > So I have queued commit 7bf7fa5acc92 ("srcu: Apply trivial callback
> > lists to shrink Tiny SRCU"), which makes up for the bloating and then some.
> > 
> > I don't believe that this debloating is at all urgent because people
> > building kernels for small-memory devices have to do a lot of other
> > tweaking, so that applying this additional commit as a patch should
> > not be too much incremental pain.
> > 
> > So again, if you get complaints about 98059b98619d bloating tiny
> > kernel builds, 7bf7fa5acc92 is the fix.
> 
> Ok!
> 
> I do agree that it's not urgent: single CPU systems are rapidly becoming the 
> exception for new hardware designed, even for embedded systems. At this point
> I think the educational value of TinyRCU is its main quality.

To your point, Tiny SRCU certainly is now quite self-contained and easy to
understand.  It is arguably even simpler than Tiny RCU because there are
explicit wakeups -- no indirect reasoning about context switches required.

Some people tell me that IoT-style microcontrollers for small devices
require things like Tiny {S,}RCU, with one prominent recent example being
Nicolas Pitre with his Tiny TTY layer.  On the other hand, perhaps your
argument about educational value applies to the TTY layer as well as
to RCU.  Maybe even more so -- it is quite possible that there are more
people who understand RCU than understand the TTY layer.  ;-)

							Thanx, Paul

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2017-05-06 16:52 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-05-05 16:13 FYI, tiny-kernel fix for rcu_segcblist separate .c file Paul E. McKenney
2017-05-06  7:15 ` Ingo Molnar
2017-05-06 16:51   ` 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;
as well as URLs for NNTP newsgroup(s).