136 lines
6.4 KiB
Python
136 lines
6.4 KiB
Python
#!/usr/bin/env python3
|
|
# -*- coding:utf-8 -*-
|
|
#############################################################################
|
|
# Copyright (c) 2023 Huawei Technologies Co.,Ltd.
|
|
#
|
|
# openGauss is licensed under Mulan PSL v2.
|
|
# You can use this software according to the terms
|
|
# and conditions of the Mulan PSL v2.
|
|
# You may obtain a copy of Mulan PSL v2 at:
|
|
#
|
|
# http://license.coscl.org.cn/MulanPSL2
|
|
#
|
|
# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OF ANY KIND,
|
|
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
|
|
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
|
|
# See the Mulan PSL v2 for more details.
|
|
# ----------------------------------------------------------------------------
|
|
# Description : gs_perfconfg is a utility to optimize system and database configure about openGauss
|
|
#############################################################################
|
|
|
|
|
|
import os
|
|
import json
|
|
import shutil
|
|
|
|
from impl.perf_config.basic.project import Project
|
|
from impl.perf_config.basic.anti import AntiLog
|
|
from impl.perf_config.basic.tuner import Tuner, TunerGroup
|
|
from impl.perf_config.basic.guc import GucRootTuner
|
|
from impl.perf_config.tuners.gucs.common import CommonGUC, FileLocationGUC, KernelResourceGUC, MemoryGUC, SysCacheGUC, \
|
|
AlarmGUC, RegionFormatGUC, ThreadPoolGUC, UpgradeGUC, MotGUC, GlobalTempTableGUC, UserDefineFuncGUC, JobScheduleGUC
|
|
from impl.perf_config.tuners.gucs.connection import ConnectionGUC, PoolerGUC
|
|
from impl.perf_config.tuners.gucs.execute import StmtBehaviorGUC, VersionCompatibilityGUC, EnvCompatibilityGUC
|
|
from impl.perf_config.tuners.gucs.ha_cluster import SenderServerGUC, PrimaryServerGUC, StandbyServerGUC, ReplConnInfoGUC
|
|
from impl.perf_config.tuners.gucs.ops import StatisticCollectGUC, WorkloadManagerGUC, TrackStmtGUC, WdrAspGUC, LogGUC
|
|
from impl.perf_config.tuners.gucs.optimizer import OptNodeCostGUC, OptRewriteGUC, OptPartTableGUC, OptGeqoGUC, \
|
|
OptCodeGenGUC, OptBypassGUC, OptExplainGUC, OptSmpGUC, OptNgrmGUC, OptPbeGUC, OptGlobalPlanCacheGUC, OptOtherGUC
|
|
from impl.perf_config.tuners.gucs.other import DoubleDbReplicationGUC, AiGUC, DcfGUC, NvmGUC, FaultToleranceGUC, \
|
|
HyperLogLogGUC, StandbyIUDGuc, DevelopOptionGUC, UndoGUC, OtherDefaultGUC, OtherOptionsGUC
|
|
from impl.perf_config.tuners.gucs.security import SecurityGUC, AuditGUC
|
|
from impl.perf_config.tuners.gucs.storage import VacuumGUC, CheckpointGUC, BackendWriteThreadGUC, DoubleWriteGUC, \
|
|
AsyncIoGUC, WalGUC, RecoveryGUC, BackoutRecoveryGUC, ArchiveGUC, LockManagerGUC, TransactionGUC, SharedStorageGUC
|
|
|
|
|
|
class GucTuner(GucRootTuner):
|
|
def __init__(self):
|
|
super(GucTuner, self).__init__()
|
|
###########################################################################################
|
|
# Register each GUC tune group. Theoretically, the adjustment strategy of different
|
|
# guc groups should be independent of each other, but it is inevitable that there
|
|
# are special cases. So, we still need to pay attention to the order.
|
|
###########################################################################################
|
|
# common
|
|
self.common = self.add(CommonGUC())
|
|
self.file_location = self.add(FileLocationGUC())
|
|
self.kernel_resource = self.add(KernelResourceGUC())
|
|
self.memory = self.add(MemoryGUC())
|
|
self.syscache = self.add(SysCacheGUC())
|
|
self.alarm = self.add(AlarmGUC())
|
|
self.region_format = self.add(RegionFormatGUC())
|
|
self.thread_pool = self.add(ThreadPoolGUC())
|
|
self.upgrade = self.add(UpgradeGUC())
|
|
self.mot = self.add(MotGUC())
|
|
self.gtt = self.add(GlobalTempTableGUC())
|
|
self.udf = self.add(UserDefineFuncGUC())
|
|
self.job = self.add(JobScheduleGUC())
|
|
|
|
# security
|
|
self.security = self.add(SecurityGUC())
|
|
self.audit = self.add(AuditGUC())
|
|
|
|
# connection
|
|
self.connection = self.add(ConnectionGUC())
|
|
self.pooler = self.add(PoolerGUC())
|
|
|
|
# optmizer
|
|
self.opt_nodecost = self.add(OptNodeCostGUC())
|
|
self.opt_rewrite = self.add(OptRewriteGUC())
|
|
self.opt_partition = self.add(OptPartTableGUC())
|
|
self.opt_geqo = self.add(OptGeqoGUC())
|
|
self.opt_codegen = self.add(OptCodeGenGUC())
|
|
self.opt_bypass = self.add(OptBypassGUC())
|
|
self.opt_explain = self.add(OptExplainGUC())
|
|
self.opt_smp = self.add(OptSmpGUC())
|
|
self.opt_ngrm = self.add(OptNgrmGUC())
|
|
self.opt_pbe = self.add(OptPbeGUC())
|
|
self.opt_gpc = self.add(OptGlobalPlanCacheGUC())
|
|
self.opt_other = self.add(OptOtherGUC())
|
|
|
|
# execute
|
|
self.stmt_behavior = self.add(StmtBehaviorGUC())
|
|
self.version_compa = self.add(VersionCompatibilityGUC())
|
|
self.env_compa = self.add(EnvCompatibilityGUC())
|
|
|
|
# storage
|
|
self.vacuum = self.add(VacuumGUC())
|
|
self.checkpoint = self.add(CheckpointGUC())
|
|
self.bgwrite = self.add(BackendWriteThreadGUC())
|
|
self.dw = self.add(DoubleWriteGUC())
|
|
self.async_io = self.add(AsyncIoGUC())
|
|
self.wal = self.add(WalGUC())
|
|
self.recovery = self.add(RecoveryGUC())
|
|
self.backout_recovery = self.add(BackoutRecoveryGUC())
|
|
self.archive = self.add(ArchiveGUC())
|
|
self.lock_mgr = self.add(LockManagerGUC())
|
|
self.transaction = self.add(TransactionGUC())
|
|
self.shared_storage = self.add(SharedStorageGUC())
|
|
|
|
# ha
|
|
self.repl_conn_info = self.add(ReplConnInfoGUC())
|
|
self.sender_server = self.add(SenderServerGUC())
|
|
self.primary_server = self.add(PrimaryServerGUC())
|
|
self.standby_server = self.add(StandbyServerGUC())
|
|
|
|
# ops
|
|
self.statistic = self.add(StatisticCollectGUC())
|
|
self.wlm = self.add(WorkloadManagerGUC())
|
|
self.track_stmt = self.add(TrackStmtGUC())
|
|
self.wdr_asp = self.add(WdrAspGUC())
|
|
self.log = self.add(LogGUC())
|
|
|
|
# other
|
|
self.dbrep = self.add(DoubleDbReplicationGUC())
|
|
self.ai = self.add(AiGUC())
|
|
self.dcf = self.add(DcfGUC())
|
|
self.nvm = self.add(NvmGUC())
|
|
self.fault_tolerance = self.add(FaultToleranceGUC())
|
|
self.hll = self.add(HyperLogLogGUC())
|
|
self.standby_iud = self.add(StandbyIUDGuc())
|
|
self.dev_options = self.add(DevelopOptionGUC())
|
|
self.undo = self.add(UndoGUC())
|
|
self.other_default = self.add(OtherDefaultGUC())
|
|
self.other_options = self.add(OtherOptionsGUC())
|
|
|