From 1afa0032801933bd162b301c5c0b0e6b05ab46b8 Mon Sep 17 00:00:00 2001 From: wangtq Date: Tue, 30 Mar 2021 17:07:35 +0800 Subject: [PATCH] fix (xtuner): fix the bug that shared_buffers has no round --- .../dbmind/tools/xtuner/tuner/recommend.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/gausskernel/dbmind/tools/xtuner/tuner/recommend.py b/src/gausskernel/dbmind/tools/xtuner/tuner/recommend.py index fef2e7852..9d6151237 100644 --- a/src/gausskernel/dbmind/tools/xtuner/tuner/recommend.py +++ b/src/gausskernel/dbmind/tools/xtuner/tuner/recommend.py @@ -28,6 +28,8 @@ SIZE_UNIT_MAP = {"kB": 1, "MB": 1024, "GB": 1024 * 1024} +def round4(v): + return v + (4 - v % 4) def recommend_knobs(mode, metric): advisor = OpenGaussKnobAdvisor(metric) @@ -250,16 +252,16 @@ class OpenGaussKnobAdvisor: default = 0.25 * mem_total # The value of this knob means the number of maximum cached blocks. - recommend = default / self.metric.block_size + recommend = round4(default / self.metric.block_size) if self.metric.is_64bit: database_blocks = self.metric.all_database_size / self.metric.block_size if database_blocks < recommend: self.report.print_warn("The total size of all databases is less than the memory size. " "Therefore, it is unnecessary to set shared_buffers to a large value.") - recommend = min(database_blocks, recommend) - upper = recommend * 1.15 - lower = min(0.15 * mem_total / self.metric.block_size, recommend) + recommend = round4(min(database_blocks, recommend)) + upper = round4(recommend * 1.15) + lower = round4(min(0.15 * mem_total / self.metric.block_size, recommend)) return Knob.new_instance(name="shared_buffers", value_default=recommend, @@ -268,8 +270,8 @@ class OpenGaussKnobAdvisor: value_min=lower, restart=True) else: - upper = min(recommend, 2 * SIZE_UNIT_MAP["GB"] / self.metric.block_size) # 32-bit OS only can use 2 GB mem. - lower = min(0.15 * mem_total / self.metric.block_size, recommend) + upper = round4(min(recommend, 2 * SIZE_UNIT_MAP["GB"] / self.metric.block_size)) # 32-bit OS only can use 2 GB mem. + lower = round4(min(0.15 * mem_total / self.metric.block_size, recommend)) return Knob.new_instance(name="shared_buffers", value_default=recommend, knob_type=Knob.TYPE.INT,