From: Andrei Elkin Date: November 14 2011 3:45pm Subject: bzr push into mysql-trunk branch (andrei.elkin:3607 to 3608) List-Archive: http://lists.mysql.com/commits/141940 Message-Id: <201111141545.pAEFjVca014454@mysql1000.dsl.inet.fi> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit 3608 Andrei Elkin 2011-11-14 Fixing timeouts on rpl_parallel{_benchmark}. The latter test does not really check anything but rather was designed to produce benchmarking figures. On PB the test is just redundant and is removed by this patch. @ mysql-test/extra/rpl_tests/rpl_parallel_load.test decreasing load yet another time in order to cope with slow PB machines/env:s. removed: mysql-test/extra/rpl_tests/rpl_parallel_benchmark_load.test mysql-test/suite/rpl/t/rpl_parallel_benchmark-master.opt mysql-test/suite/rpl/t/rpl_parallel_benchmark-slave.opt mysql-test/suite/rpl/t/rpl_parallel_benchmark.test modified: mysql-test/extra/rpl_tests/rpl_parallel_load.test 3607 Inaam Rana 2011-11-14 Bug#13371000 - ADAPTIVE LRU FOR COMPRESSED PAGES BROKEN BY RECENT LRU CHANGES rb://812 approved by: Marko Makela When calling buf_flush_LRU_list_batch() use appropriate LRU list i.e.: either the regular LRU list or the unzip_LRU for cleaning and eviction. If it is decided to use the unzip_LRU then we can simply skip the flushing part because we are going to keep the compressed frames. modified: storage/innobase/buf/buf0flu.c === removed file 'mysql-test/extra/rpl_tests/rpl_parallel_benchmark_load.test' --- a/mysql-test/extra/rpl_tests/rpl_parallel_benchmark_load.test 2011-08-19 13:04:28 +0000 +++ b/mysql-test/extra/rpl_tests/rpl_parallel_benchmark_load.test 1970-01-01 00:00:00 +0000 @@ -1,308 +0,0 @@ -# -# This is a load generator to call from rpl_parallel and rpl_sequential tests -# - -# -# load volume parameter -# - -let $iter= 02; -let $tables= 2; -let $wk_i_queries= 2; -let $wk_m_queries= 0; -let $nk_i_queries= 0; -let $nk_m_queries= 0; -let $pre_inserted_rows= 50; - -connection slave; - -call mtr.add_suppression('Slave: Error dropping database'); ## todo: fix - -source include/stop_slave.inc; -start slave; - -connection master; - ---disable_query_log ---disable_result_log - -use test; -delimiter |; -create procedure one_session(k int) -begin - while k > 0 do - insert into tm_nk values(k, 0); - insert into tm_wk values(null, 0); - insert into ti_nk values(k, 0); - insert into ti_wk values(null, 0); - set k = k - 1; - end while; -end| -delimiter ;| - -## let $i = $workers + 1; -##eval -# delimiter |; -# create procedure p1(i int) -# begin -# while i > 0 -# ##while ($i) -# ##{ -# ## let $i1=$i; -# ## dec $i1; -# ## use test$i1; -# ## call on_session(); -# ## dec $i; -# ##} -# use test0; -# call one_session(); -# use test1; -# call one_session(); -# use test2; -# call one_session(); -# use test3; -# call one_session(); -# i= i-1; -# end while; -# end| -# delimiter ;| - - -let $i = $databases; -while($i) -{ - eval create database test$i; - - let $m= $tables; - while ($m) - { - eval create table test$i.tm_nk_$m (a int, b int, c text) engine=myisam; - eval create table test$i.tm_wk_$m (a int auto_increment primary key, b int, c text) engine=myisam; - eval create table test$i.ti_nk_$m (a int, b int, c text) engine=innodb; - eval create table test$i.ti_wk_$m (a int auto_increment primary key, b int, c text) engine=innodb; - let $k= $pre_inserted_rows; - while ($k) - { - eval insert into test$i.ti_wk_$m values(null, $i, uuid()); - eval insert into test$i.ti_nk_$m values(null, $i, uuid()); - eval insert into test$i.tm_wk_$m values(null, $i, uuid()); - eval insert into test$i.tm_nk_$m values(null, $i, uuid()); - - dec $k; - } - dec $m; - } - - - # this table is special - just for timing. It's more special on test1 db - # where it contains master timing of the load as well. - eval create table test$i.benchmark (state text) engine=myisam; # timestamp keep on the slave side - - dec $i; -} - ---enable_result_log ---enable_query_log - - -sync_slave_with_master; -#connection slave; - ---disable_query_log ---disable_result_log - -let $i = $databases; -while($i) -{ - eval alter table test$i.benchmark add ts timestamp not null default current_timestamp; - - dec $i; -} ---enable_result_log ---enable_query_log - - -# not gather events into relay log w/o executing yet -stop slave sql_thread; - -##call p1(1); - -connection master; - ---disable_query_log ---disable_result_log - -# -# Load producer -# - -# initial timestamp to record - -# the extra ts col on slave is effective only with the STMT format (todo: bug-report) -set @save.binlog_format= @@session.binlog_format; -set @@session.binlog_format=STATEMENT; -let $i = $databases; -while($i) -{ - eval insert into test$i.benchmark set state='slave takes on load'; - - dec $i; -} -set @@session.binlog_format= @save.binlog_format; - -connection slave; - -insert into test1.benchmark set state='master started load'; - - -connection master; - -while ($iter) -{ - let $i = $databases; - - while ($i) - { - - begin; - ###eval insert into tm_nk values($iter, $i1, repeat('a', round(rand()*10))); - - let $q= $wk_m_queries; - while ($q) - { - let $m= `select 1 + floor(rand() * $tables)`; - eval update test$i.tm_wk_$m set c= uuid(); - eval insert into test$i.tm_wk_$m values(null, $i, uuid()); - - dec $q; - } - - let $q= $wk_i_queries; - while ($q) - { - let $m= `select 1 + floor(rand() * $tables)`; - eval update test$i.ti_wk_$m set c= uuid(); - - eval insert into test$i.ti_wk_$m values(null, $i, uuid()); - - dec $q; - } - - # NK - - let $q= $nk_m_queries; - while ($q) - { - let $m= `select 1 + floor(rand() * $tables)`; - eval update test$i.tm_nk_$m set c= uuid(); - eval insert into test$i.tm_nk_$m values(null, $i, uuid()); - - dec $q; - } - - let $q= $nk_i_queries; - while ($q) - { - let $m= `select 1 + floor(rand() * $tables)`; - eval update test$i.ti_nk_$m set c= uuid(); - eval insert into test$i.ti_nk_$m values(null, $i, uuid()); - - dec $q; - } - commit; - - dec $i; - } - - dec $iter; -} - -connection slave; - -##use test1; -insert into test1.benchmark set state='master ends load'; - -connection master; - -# terminal timestamp to record - -let $i = $databases; -set @save.binlog_format= @@session.binlog_format; -set @@session.binlog_format=STATEMENT; -while($i) -{ - eval insert into test$i.benchmark set state='slave ends load'; - - dec $i; -} -set @@session.binlog_format= @save.binlog_format; - ---enable_result_log ---enable_query_log - -connection slave; - -## todo: record start and end time of appying to compare times of -# parallel and sequential execution. - ---disable_query_log ---disable_result_log - -insert into test1.benchmark set state='slave is processing load'; - -# To force filling timestamp cols with the slave local clock values -# to implement benchmarking. - -# TODO: replace with another alg -#set @save.mts_exp_slave_local_timestamp=@@global.mts_exp_slave_local_timestamp; -#set @@global.mts_exp_slave_local_timestamp=1; - ---sleep 1 - -start slave sql_thread; - -let $wait_timeout= 600; -let $wait_condition= SELECT count(*)+sleep(1) = 5 FROM test1.benchmark; -source include/wait_condition.inc; - -# cleanup for files that could not be removed in the end of previous invocation. -let $MYSQLD_DATADIR= `select @@datadir`; ---remove_files_wildcard $MYSQLD_DATADIR *.out - -use test; -let $benchmark_file= `select replace(concat("benchmark_",uuid(),".out"),"-","_")`; ---replace_regex /benchmark_.*.out/benchmark.out/ -eval select * from test1.benchmark into outfile '$benchmark_file'; -select ts from test1.benchmark where state like 'master started load' into @m_0; -select ts from test1.benchmark where state like 'master ends load' into @m_1; -select ts from test1.benchmark where state like 'slave takes on load' into @s_0; -select ts from test1.benchmark where state like 'slave ends load' into @s_1; -let $delta_file= `select replace(concat("delta_",uuid(),".out"),"-","_")`; ---replace_regex /delta_.*.out/delta.out/ -eval select time_to_sec(@m_1) - time_to_sec(@m_0) as 'delta_m', - time_to_sec(@s_1) - time_to_sec(@s_0) as 'delta_s' into outfile '$delta_file'; - ---enable_result_log ---enable_query_log - - -connection master; - ---disable_query_log ---disable_result_log - -let $i = $databases; -while($i) -{ - eval drop database test$i; - - dec $i; -} - -use test; -drop procedure one_session; - ---enable_result_log ---enable_query_log - -sync_slave_with_master; === modified file 'mysql-test/extra/rpl_tests/rpl_parallel_load.test' --- a/mysql-test/extra/rpl_tests/rpl_parallel_load.test 2011-10-31 13:52:32 +0000 +++ b/mysql-test/extra/rpl_tests/rpl_parallel_load.test 2011-11-14 15:44:42 +0000 @@ -6,16 +6,9 @@ # load volume parameter # -let $iter = 50; - -# windows run on PB2 is too slow to time out -disable_query_log; -if (`select convert(@@version_compile_os using latin1) IN ("Win32","Win64","Windows") as "TRUE"`) -{ - let $iter = 30; -} -enable_query_log; - +# The value of iteration is chosen to be rather low to satisfy +# slow PB environments that are not just Win. +let $iter = 20; let $databases = 16; connection slave; === removed file 'mysql-test/suite/rpl/t/rpl_parallel_benchmark-master.opt' --- a/mysql-test/suite/rpl/t/rpl_parallel_benchmark-master.opt 2011-08-19 13:04:28 +0000 +++ b/mysql-test/suite/rpl/t/rpl_parallel_benchmark-master.opt 1970-01-01 00:00:00 +0000 @@ -1 +0,0 @@ ---log-warnings=0 === removed file 'mysql-test/suite/rpl/t/rpl_parallel_benchmark-slave.opt' --- a/mysql-test/suite/rpl/t/rpl_parallel_benchmark-slave.opt 2011-08-19 13:04:28 +0000 +++ b/mysql-test/suite/rpl/t/rpl_parallel_benchmark-slave.opt 1970-01-01 00:00:00 +0000 @@ -1 +0,0 @@ ---log-warnings=0 --slave-transaction-retries=0 === removed file 'mysql-test/suite/rpl/t/rpl_parallel_benchmark.test' --- a/mysql-test/suite/rpl/t/rpl_parallel_benchmark.test 2011-08-19 13:04:28 +0000 +++ b/mysql-test/suite/rpl/t/rpl_parallel_benchmark.test 1970-01-01 00:00:00 +0000 @@ -1,29 +0,0 @@ -# -# WL#5569 MTS -# -# The test is similar to rpl_parallel but focuses more to -# provide benchmarking data. -# See rpl_parallel.test comments and rpl_parallel_benchmark_load for -# how to vary running configuration. -# - ---source include/master-slave.inc - -connection slave; -set @save.slave_parallel_workers= @@global.slave_parallel_workers; -###select @@global.slave_parallel_workers as 'non-zero means parallel'; - -let $workers = `select @@global.slave_parallel_workers`; -###let $databases= $workers; -# workers vary db:s do not -let $databases= 16; - -connection master; -source extra/rpl_tests/rpl_parallel_benchmark_load.test; - -connection slave; ---disable_query_log -set @@global.slave_parallel_workers= @save.slave_parallel_workers; ---enable_result_log - ---source include/rpl_end.inc No bundle (reason: useless for push emails).