Messages in this thread | | | From | Lai Jiangshan <> | Subject | [PATCH 0/4] workqueue: reduce the sizeof pool_workqueue | Date | Mon, 1 Jun 2020 08:44:38 +0000 |
| |
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.
Lai Jiangshan (4): workqueue: fix a piece of comment about reserved bits for work flags workqueue: use BUILD_BUG_ON() for compile time test instead of WARN_ON() workqueue: add a BUILD_BUG_ON() to check the size of struct pool_workqueue workqueue: slash half memory usage in 32bit system
Cc: Tejun Heo <tj@kernel.org>
include/linux/workqueue.h | 8 +++++++- kernel/workqueue.c | 10 +++++++++- 2 files changed, 16 insertions(+), 2 deletions(-)
-- 2.20.1
| |