Files
2023-12-21 20:07:48 +08:00

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())