[MDEV-7035] Remove innodb_io_capacity setting depending on setting of innodb_io_capacity_max Created: 2014-11-06 Updated: 2021-01-19 Resolved: 2014-11-13 |
|
| Status: | Closed |
| Project: | MariaDB Server |
| Component/s: | Storage Engine - InnoDB, Storage Engine - XtraDB |
| Affects Version/s: | 10.0.14 |
| Fix Version/s: | 10.0.15 |
| Type: | Bug | Priority: | Minor |
| Reporter: | Jan Lindström (Inactive) | Assignee: | Jan Lindström (Inactive) |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Issue Links: |
|
||||||||
| Description |
|
http://bugs.mysql.com/bug.php?id=71747 Setting innodb_io_capacity does not work if it changes it higher than the value of innodb_io_capacity_max. How to repeat: This server was started with /etc/my.cnf having: innodb_io_capacity = 2000 Subsequently the configuration has been changed (and we have a scripted mechanism to sync the /etc/my.cnf settings to the db server if they are different: <pre>
-----------------------
----------------------- root@myserver [(none)]> set global innodb_io_capacity = 2500; root@myserver [(none)]> show warnings;
--------
-------- root@myserver [(none)]> show global variables like '%_io_capacity%';
-----------------------
----------------------- root@myserver [(none)]> http://dev.mysql.com/doc/refman/5.6/en/innodb-parameters.html#sysvar_innodb_io_capacity_ma... says: Suggested fix: (1a) Change the behaviour so that if I explicitly set innodb_io_capacity to a value > innodb_io_capacity_max that the value is accepted AND that innodb_io_capacity_max is increased (if necessary) at least until the new setting of Innodb_io_capacity. (1b) Given that the default setting for innodb_io_capacity_max = 2 x innodb_io_capacity, I would suggest that if innodb_io_capacity is adjusted the _max value is adjusted to 2 x the innodb_io_capacity value if the current value of innodb_io_capacity_max is below that value. (1c) If someone wants to reduce innodb_io_capacity_max and reduce it below innodb_io_capacity then I guess innodb_io_capacity should be reduced to the same level as innodb_io_capacity. (2a) describe for the "max" parameter what the "in case of emergency" really means. If necessary point directly to another section of the manual if this description is going to be long. Personally I find the variable innodb_io_capacity_max rather confusing. It has already been renamed from the name it had in pre-5.6 GA to its current name and it seems to be a value which depends exclusively on the innodb_io_capacity setting, so I'm not sure why we really need an additional configuration setting. |
| Comments |
| Comment by Jan Lindström (Inactive) [ 2014-11-07 ] | |||||||||||||||||||||
|
There is 2 places at code where innodb_io_capacity_max is used. Firstly, on page cleaner. This function is called approximately once every second by the page_cleaner thread. Based on various factors it decides if there is a need to do flushing. If flushing is needed it is performed and the number of pages flushed is returned. In this function the number of pages requested to be flushed is modified to be no more than max setting:
On InnoDB only the first calculation exists. | |||||||||||||||||||||
| Comment by Jan Lindström (Inactive) [ 2014-11-13 ] | |||||||||||||||||||||
|
revno: 4482 (a) Changed the behaviour so that if you set innodb_io_capacity to a (b) If someone wants to reduce innodb_io_capacity_max and In both cases give a warning to user. |