Merge lp:~laurynas-biveinis/percona-server/lru-manager into lp:percona-server/5.6
Status: | Merged |
---|---|
Approved by: | Stewart Smith |
Approved revision: | no longer in the source branch. |
Merged at revision: | 521 |
Proposed branch: | lp:~laurynas-biveinis/percona-server/lru-manager |
Merge into: | lp:percona-server/5.6 |
Diff against target: |
374 lines (+134/-27) 8 files modified
Percona-Server/mysql-test/suite/perfschema/r/threads_innodb.result (+1/-0) Percona-Server/storage/innobase/buf/buf0flu.cc (+77/-12) Percona-Server/storage/innobase/buf/buf0lru.cc (+8/-6) Percona-Server/storage/innobase/handler/ha_innodb.cc (+23/-6) Percona-Server/storage/innobase/include/buf0flu.h (+15/-1) Percona-Server/storage/innobase/include/srv0srv.h (+5/-1) Percona-Server/storage/innobase/srv/srv0srv.cc (+4/-1) Percona-Server/storage/innobase/srv/srv0start.cc (+1/-0) |
To merge this branch: | bzr merge lp:~laurynas-biveinis/percona-server/lru-manager |
Related bugs: | |
Related blueprints: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Stewart Smith (community) | Approve | ||
Vlad Lesin (community) | g2 | Approve | |
Review via email: mp+192321@code.launchpad.net |
Description of the change
http://
Split an LRU manager thread out of the page cleaner thread,
implementing
https:/
Declare new thread entry point buf_lru_
flushing-
this thread from innobase_
Revert the change that was needed by
https:/
in buf_flush_
latched pages again.
Introduce a new flag buf_lru_
buf_
Adjust innodb_
both cleaner and LRU manager threads.
Define a PFS key for the new thread. Re-record
perfschema.
1) Lines 33,34: Why do we need this?
2) buf_flush_ wait_LRU_ batch_end( ) call in buf_flush_ page_cleaner_ thread( ): LRU_tail( ) waits for batch LRU end. Do we really need to invoke buf_flush_ wait_LRU_ batch_end( ) from buf_flush_ page_cleaner_ thread( )?
Actually buf_flush_
3) buf_flush_ LRU_tail( ): wait_batch_ end() call would allow us to avoid waiting for LRU batch flushing for the current buffer pool instance. I mean we could invoke buf_flush_ wait_batch_ end() before buf_flush_LRU() to follow the restriction "one LRU batch per one buffer pool instance" from one hand and to have possibility to launch batch LRU flushing for other buffer pool instances not waiting the end of the current buffer pool instance batch flushing from another hand.
Interestingly how often
do {
...
} while (active_instance[i]
&& free_len <= free_list_lwm);
loop is repeated for each buffer pool instance? If not so often then replacing the order of buf_flush_LRU() and buf_flush_