Messages in this thread | | | From | Lai Jiangshan <> | Date | Tue, 2 Jun 2020 08:08:10 +0800 | Subject | Re: [PATCH 4/4] workqueue: slash half memory usage in 32bit system |
| |
On Mon, Jun 1, 2020 at 11:07 PM Tejun Heo <tj@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
| |