Merge lp:~laurynas-biveinis/percona-server/bug1238039 into lp:percona-server/5.6

Proposed by Laurynas Biveinis
Status: Merged
Approved by: Laurynas Biveinis
Approved revision: no longer in the source branch.
Merged at revision: 522
Proposed branch: lp:~laurynas-biveinis/percona-server/bug1238039
Merge into: lp:percona-server/5.6
Prerequisite: lp:~laurynas-biveinis/percona-server/lru-manager
Diff against target: 37 lines (+11/-2)
1 file modified
Percona-Server/storage/innobase/buf/buf0flu.cc (+11/-2)
To merge this branch: bzr merge lp:~laurynas-biveinis/percona-server/bug1238039
Reviewer Review Type Date Requested Status
George Ormond Lorch III (community) g2 Approve
Review via email: mp+197343@code.launchpad.net

Description of the change

Fix bug 1238039: a regression in page cleaner thread furious flushing support. When page cleaner thread was allowed to skip sleeps in the case of empty free lists or large checkpoint age, each iteration was no longer required to take 1 second, the server could have been considered inactive if the sleep was skipped and the page cleaner iteration was short. Which had an effect of performing idle server flush list flushing for innodb I/O capacity-number of pages instead of a busy server adaptive flushing.

The fix is to maintain the timestamp of the last last_activity update
in the main page cleaner thread loop. Then, perform busy server tasks
not only if the server activity has advanced, but also if it has not
advanced for less than 1 second.

http://jenkins.percona.com/job/percona-server-5.6-param/425/

To post a comment you must log in.
Revision history for this message
George Ormond Lorch III (gl-az) :
review: Approve (g2)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'Percona-Server/storage/innobase/buf/buf0flu.cc'
--- Percona-Server/storage/innobase/buf/buf0flu.cc 2013-12-02 11:15:58 +0000
+++ Percona-Server/storage/innobase/buf/buf0flu.cc 2013-12-02 11:15:59 +0000
@@ -2645,6 +2645,7 @@
2645 ulint next_loop_time = ut_time_ms() + 1000;2645 ulint next_loop_time = ut_time_ms() + 1000;
2646 ulint n_flushed = 0;2646 ulint n_flushed = 0;
2647 ulint last_activity = srv_get_activity_count();2647 ulint last_activity = srv_get_activity_count();
2648 ulint last_activity_time = ut_time_ms();
26482649
2649 ut_ad(!srv_read_only_mode);2650 ut_ad(!srv_read_only_mode);
26502651
@@ -2666,6 +2667,7 @@
2666 while (srv_shutdown_state == SRV_SHUTDOWN_NONE) {2667 while (srv_shutdown_state == SRV_SHUTDOWN_NONE) {
26672668
2668 ulint page_cleaner_sleep_time;2669 ulint page_cleaner_sleep_time;
2670 ibool server_active;
26692671
2670 srv_current_thread_priority = srv_cleaner_thread_priority;2672 srv_current_thread_priority = srv_cleaner_thread_priority;
26712673
@@ -2683,8 +2685,15 @@
26832685
2684 next_loop_time = ut_time_ms() + page_cleaner_sleep_time;2686 next_loop_time = ut_time_ms() + page_cleaner_sleep_time;
26852687
2686 if (srv_check_activity(last_activity)) {2688 server_active = srv_check_activity(last_activity);
2687 last_activity = srv_get_activity_count();2689 if (server_active
2690 || ut_time_ms() - last_activity_time < 1000) {
2691
2692 if (server_active) {
2693
2694 last_activity = srv_get_activity_count();
2695 last_activity_time = ut_time_ms();
2696 }
26882697
2689 /* Flush pages from flush_list if required */2698 /* Flush pages from flush_list if required */
2690 n_flushed += page_cleaner_flush_pages_if_needed();2699 n_flushed += page_cleaner_flush_pages_if_needed();

Subscribers

People subscribed via source and target branches