[MDEV-11025] Make number of page cleaner threads variable dynamic Created: 2016-10-11  Updated: 2018-01-24  Resolved: 2017-10-24

Status: Closed
Project: MariaDB Server
Component/s: Storage Engine - InnoDB
Fix Version/s: 10.3.3

Type: Task Priority: Major
Reporter: Jan Lindström (Inactive) Assignee: Jan Lindström (Inactive)
Resolution: Fixed Votes: 0
Labels: None

Issue Links:
Problem/Incident
causes MDEV-15016 multiple page cleaner threads use a l... Closed

 Description   

Currently number of page cleaner threads is static variable and requires server shutdown and restart to be able to change.



 Comments   
Comment by Jan Lindström (Inactive) [ 2017-09-01 ]

https://github.com/MariaDB/server/commit/5ecaae034e9cc829685b8cefc2533b0d353d5c3f

Comment by Marko Mäkelä [ 2017-09-04 ]

I think that making parameters dynamic is a good idea.
I requested some changes to the patch, and would like to re-review this.

Comment by Jan Lindström (Inactive) [ 2017-09-05 ]

https://github.com/MariaDB/server/commit/a3eaae42295499c242689aebfb9a5b001cdef614

Comment by Jan Lindström (Inactive) [ 2017-09-05 ]

Condition variables at the moment are used only to implement os_event_t, I do not want to make this patch bigger just by introducing a new OS-dependent object (yes, I could use/copy code from os_event_t).

Comment by Marko Mäkelä [ 2017-09-08 ]

It seems that moving from events to condition variables would also require a move from InnoDB mutexes to native mutexes. OK, that would be a huge task on its own.

The patch looks mostly OK, but it seems possible that it could introduce a hang on shutdown.

Comment by Jan Lindström (Inactive) [ 2017-10-24 ]

commit b23a1096956c21df037bd851494f11509b5514dd
Author: Jan Lindström <jan.lindstrom@mariadb.com>
Date: Sat Sep 9 11:34:12 2017 +0300

MDEV-11025: Make number of page cleaner threads variable dynamic
New test cases
innodb-page-cleaners

Modified test cases
innodb_page_cleaners_basic

New function buf_flush_set_page_cleaner_thread_cnt
Increase or decrease the amount of page cleaner worker threads.
In case of increase this function creates based on current
abount and requested amount how many new threads should be
created. In case of decrease this function sets up the
requested amount of threads and uses is_requested event
to signal workers. Then we wait until all new treads
are started, old threads that should exit signal
is_finished or shutdown has marked that page cleaner
should finish.

buf_flush_page_cleaner_worker
Store current thread id and thread_no and then signal
event is_finished. If number of used page cleaner threads
decrease we shut down those threads that have thread_no
greater or equal than number of page configured page
cleaners - 1 (note that there will be always page cleaner
coordinator). Before exiting we signal is_finished.

New function innodb_page_cleaners_threads_update
Update function for innodb-page-cleaners system variable.

innobase_start_or_create_for_mysql
If more than one page cleaner threads is configured
we use new function buf_flush_set_page_cleaner_thread_cnt
to set up the requested threads (-1 coordinator).

Generated at Thu Feb 08 07:46:44 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.