From 7fb0cd312ab3e79db24e58729219a20e85feb004 Mon Sep 17 00:00:00 2001 From: yuxianjiang Date: Sun, 29 May 2022 18:02:55 +0800 Subject: [PATCH] Fixup in-correct pfs memory/innodb/buf_buf_pool counter after resizing buffer pool. --- .../perfschema/r/pfs_buffer_pool_resize.result | 13 ++++++++ .../perfschema/t/pfs_buffer_pool_resize-master.opt | 1 + .../suite/perfschema/t/pfs_buffer_pool_resize.test | 36 ++++++++++++++++++++++ storage/innobase/ut/ut0new.cc | 2 +- 4 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 mysql-test/suite/perfschema/r/pfs_buffer_pool_resize.result create mode 100644 mysql-test/suite/perfschema/t/pfs_buffer_pool_resize-master.opt create mode 100644 mysql-test/suite/perfschema/t/pfs_buffer_pool_resize.test diff --git a/mysql-test/suite/perfschema/r/pfs_buffer_pool_resize.result b/mysql-test/suite/perfschema/r/pfs_buffer_pool_resize.result new file mode 100644 index 0000000..ad1593f --- /dev/null +++ b/mysql-test/suite/perfschema/r/pfs_buffer_pool_resize.result @@ -0,0 +1,13 @@ +resize before size is 1.02 GiB +set global innodb_buffer_pool_size = 1024*1024*1024*2; +select sleep(10); +sleep(10) +0 +After resizing the size is 2.05 GiB +set @before_size = '1.02 GiB';; +set @after_size = '2.05 GiB';; +include/assert.inc [resize buffer pool size should have difference value] +set global innodb_buffer_pool_size = @old_innodb_buffer_pool_size; +select sleep (10); +sleep (10) +0 diff --git a/mysql-test/suite/perfschema/t/pfs_buffer_pool_resize-master.opt b/mysql-test/suite/perfschema/t/pfs_buffer_pool_resize-master.opt new file mode 100644 index 0000000..0529146 --- /dev/null +++ b/mysql-test/suite/perfschema/t/pfs_buffer_pool_resize-master.opt @@ -0,0 +1 @@ +--innodb-buffer-pool-size=1G \ No newline at end of file diff --git a/mysql-test/suite/perfschema/t/pfs_buffer_pool_resize.test b/mysql-test/suite/perfschema/t/pfs_buffer_pool_resize.test new file mode 100644 index 0000000..fe34711 --- /dev/null +++ b/mysql-test/suite/perfschema/t/pfs_buffer_pool_resize.test @@ -0,0 +1,36 @@ +###Test for pfs memory/innodb/buf_buf_pool size +###copied from innodb_buffer_pool_resize.test + +--source include/have_innodb.inc + +--disable_query_log + +--disable_query_log +set @old_innodb_buffer_pool_size = @@innodb_buffer_pool_size; +if (`select (version() like '%debug%') > 0`) +{ + set @old_innodb_disable_resize = @@innodb_disable_resize_buffer_pool_debug; + set global innodb_disable_resize_buffer_pool_debug = OFF; +} +--enable_query_log + +###Get origin buffer pool size +--let $before_size= query_get_value(select current_alloc from sys.memory_global_by_current_bytes where event_name like '%buf_buf_pool%', current_alloc, 1) +--echo resize before size is $before_size + +###Set new buffer pool size +set global innodb_buffer_pool_size = 1024*1024*1024*2; +select sleep(10); + +###Get origin buffer pool size +--let $after_size= query_get_value(select current_alloc from sys.memory_global_by_current_bytes where event_name like '%buf_buf_pool%', current_alloc, 1) +--echo After resizing the size is $after_size + +--eval set @before_size = '$before_size'; +--eval set @after_size = '$after_size'; +--let $assert_text=resize buffer pool size should have difference value +--let $assert_cond= @before_size != @after_size +--source include/assert.inc + +set global innodb_buffer_pool_size = @old_innodb_buffer_pool_size; +select sleep (10); diff --git a/storage/innobase/ut/ut0new.cc b/storage/innobase/ut/ut0new.cc index c2e3eb8..e2a363e 100644 --- a/storage/innobase/ut/ut0new.cc +++ b/storage/innobase/ut/ut0new.cc @@ -60,7 +60,7 @@ the list below: Keep this list alphabetically sorted. */ static PSI_memory_info pfs_info[] = { {&mem_key_ahi, "adaptive hash index", 0}, - {&mem_key_buf_buf_pool, "buf_buf_pool", 0}, + {&mem_key_buf_buf_pool, "buf_buf_pool", PSI_FLAG_GLOBAL}, {&mem_key_dict_stats_bg_recalc_pool_t, "dict_stats_bg_recalc_pool_t", 0}, {&mem_key_dict_stats_index_map_t, "dict_stats_index_map_t", 0}, {&mem_key_dict_stats_n_diff_on_level, "dict_stats_n_diff_on_level", 0}, -- 1.8.3.1