Lack of free pages in the buffer pool is not diagnosed with innodb_empty_free_list_algorithm=backoff

Bug #1657026 reported by Laurynas Biveinis
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Percona Server moved to https://jira.percona.com/projects/PS
Status tracked in 5.7
5.5
Invalid
Undecided
Unassigned
5.6
Fix Released
Medium
Laurynas Biveinis
5.7
Fix Released
Medium
Laurynas Biveinis

Bug Description

If innodb_empty_free_list_algorithm=backoff (which is the default), then the following code is potentially skipped in buf_LRU_get_free_block:

1) Error log diagnostics and InnoDB monitor trigger:

                fprintf(stderr,
                        " InnoDB: Warning: difficult to find free blocks in\n"
                        "InnoDB: the buffer pool (%lu search iterations)!\n"
                        "InnoDB: %lu failed attempts to flush a page!"
                        " Consider\n"
                        "InnoDB: increasing the buffer pool size.\n"
                        "InnoDB: It is also possible that"
                        " in your Unix version\n"
                        "InnoDB: fsync is very slow, or"
                        " completely frozen inside\n"
                        "InnoDB: the OS kernel. Then upgrading to"
                        " a newer version\n"
                        "InnoDB: of your operating system may help."
                        " Look at the\n"
                        "InnoDB: number of fsyncs in diagnostic info below.\n"
                        "InnoDB: Pending flushes (fsync) log: %lu;"
                        " buffer pool: %lu\n"
                        "InnoDB: %lu OS file reads, %lu OS file writes,"
                        " %lu OS fsyncs\n"
                        "InnoDB: Starting InnoDB Monitor to print further\n"
                        "InnoDB: diagnostics to the standard output.\n",
                        (ulong) n_iterations,
                        (ulong) flush_failures,
                        (ulong) fil_n_pending_log_flushes,
                        (ulong) fil_n_pending_tablespace_flushes,
                        (ulong) os_n_file_reads, (ulong) os_n_file_writes,
                        (ulong) os_n_fsyncs);

                mon_value_was = srv_print_innodb_monitor;
                started_monitor = TRUE;
                srv_print_innodb_monitor = TRUE;
                os_event_set(lock_sys->timeout_event);

2) Innodb_buffer_pool_wait_free status variable and associated InnoDB monitor bump:

        srv_stats.buf_pool_wait_free.add(n_iterations, 1);

tags: added: lru-flusher regression xtradb
Revision history for this message
Laurynas Biveinis (laurynas-biveinis) wrote :
Revision history for this message
Shahriyar Rzayev (rzayev-sehriyar) wrote :

Percona now uses JIRA for bug reports so this bug report is migrated to: https://jira.percona.com/browse/PS-1775

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.