On Mon, Jun 1, 2020 at 11:07 PM Tejun Heo <t...@kernel.org> wrote: > > On Mon, Jun 01, 2020 at 08:44:42AM +0000, Lai Jiangshan wrote: > > The major memory ussage in workqueue is on the pool_workqueue. > > The pool_workqueue has alignment requirement which often leads > > to padding. > > > > Reducing the memory usage for the pool_workqueue is valuable. > > > > And 32bit system often has less memory, less workqueues, > > less works, less concurrent flush_workqueue()s, so we can > > slash the flush color on 32bit system to reduce memory usage > > > > Before patch: > > The sizeof the struct pool_workqueue is 256 bytes, > > only 136 bytes is in use in 32bit system > > > > After patch: > > The sizeof the struct pool_workqueue is 128 bytes, > > only 104 bytes is in use in 32bit system, there is still > > room for future usage. > > > > Setting WORK_STRUCT_COLOR_BITS to 3 can't reduce the sizeof > > the struct pool_workqueue in 64bit system, unless combined > > with big refactor for unbound pwq. > > Have you calculated how much memory is actually saved this way on a typical > system?
It is not noticable from the "free" command. By counting the number of allocated pwq (mainly percpu pwq), it saves 20k in my simple kvm guest (4cpu). I guess it highly various in different boxes with various kernel modules loaded. > > Thanks. > > -- > tejun