WL#13115: InnoDB: Add new option to control write IOPs when idle

Affects: Server-8.0   —   Status: Complete

Some users wants to reduce write IO as less as possible, for longer life of the
flash storage.

Currently, InnoDB does write IO in 100% of innodb_io_capacity when InnoDB is
idle. This behavior is not so urgent and just reduces the lifespan of the flash
storage. But lower innodb_io_capacity should cause lower performance.

The some users need to control idle-time write IOPs separated from not-idle IOPs.

1: Implementing new option innodb_idle_flush_pct to control write IOPs when idle

* based on BUG#88566 : CONTRIBUTION BY FACEBOOK: ENABLE LAZY FLUSHING IN PAGE
CLEANER
Functional requirements:
F-1: A new server variable added :
Name : innodb_idle_flush_pct
Default value : 100 (existing behavior)
Scope : global

F-2: User can control idle write IOPs based on innodb_io_capacity
     by specifying percentage to new option innodb_idle_flush_pct.

F-3: innodb_idle_flush_pct default value is 100
     and this means same to current behavior.

Non-Functional requirements:
NF-1: innodb_idle_flush_pct should not affect to the other InnoDB behavior
Changes to the interface specification:
I-1: No new files
I-2: New syntax
     SET GLOBAL VARIABLE innodb_idle_flush_pct=[0~100]
I-3: No new commands
I-4: No new tools
I-5: No impact on existing functionality
changing the following part to the variable.

storage/innodb/buf/buf0flu.cc: buf_flush_page_coordinator_thread()
    } else if (ret_sleep == OS_SYNC_TIME_EXCEEDED) {
      /* no activity, slept enough */
      buf_flush_lists(PCT_IO(100), LSN_MAX, &n_flushed);
                             ~~~<-this value