5
5
6
6
from util .workspace import DBGymConfig , is_fully_resolved
7
7
8
- # PostgresConn doesn't use these types because PostgresConn is used internally by tuning agents.
9
- # These types are only given as the outputs of tuning agents.
8
+ # PostgresConn doesn't use these types because PostgresConn is used internally by tuning agents
9
+ # while these types are only used in the interface between the orchestrator and the tuning agents.
10
10
IndexesDelta = NewType ("IndexesDelta" , list [str ])
11
11
SysKnobsDelta = NewType ("SysKnobsDelta" , dict [str , str ])
12
12
# TODO: I'm not decided whether these should be deltas or full configs. I'm going to figure this out once I integrate Proto-X and UDO.
13
13
QueryKnobsDelta = NewType ("QueryKnobsDelta" , dict [str , list [str ]])
14
14
15
15
16
16
@dataclass
17
- class TuningAgentMetadata :
18
- """Metadata for tuning agent """
17
+ class TuningMetadata :
18
+ """Metadata for the tuning process. """
19
19
20
20
workload_path : Path
21
21
pristine_dbdata_snapshot_path : Path
@@ -68,26 +68,26 @@ class DBMSConfigDelta:
68
68
qknobs : QueryKnobsDelta
69
69
70
70
71
- def get_delta_at_step_fpath (tuning_agent_artifacts_dpath : Path , step_num : int ) -> Path :
72
- return tuning_agent_artifacts_dpath / f"step{ step_num } _delta.json"
71
+ def get_delta_at_step_fpath (tuning_artifacts_dpath : Path , step_num : int ) -> Path :
72
+ return tuning_artifacts_dpath / f"step{ step_num } _delta.json"
73
73
74
74
75
- def get_metadata_fpath (tuning_agent_artifacts_dpath : Path ) -> Path :
76
- return tuning_agent_artifacts_dpath / "metadata.json"
75
+ def get_metadata_fpath (tuning_artifacts_dpath : Path ) -> Path :
76
+ return tuning_artifacts_dpath / "metadata.json"
77
77
78
78
79
79
class TuningAgent :
80
80
def __init__ (self , dbgym_cfg : DBGymConfig ) -> None :
81
81
self .dbgym_cfg = dbgym_cfg
82
- self .tuning_agent_artifacts_dpath = self .dbgym_cfg .cur_task_runs_artifacts_path (
83
- "tuning_agent_artifacts " , mkdir = True
82
+ self .tuning_artifacts_dpath = self .dbgym_cfg .cur_task_runs_artifacts_path (
83
+ "tuning_artifacts " , mkdir = True
84
84
)
85
- assert is_fully_resolved (self .tuning_agent_artifacts_dpath )
85
+ assert is_fully_resolved (self .tuning_artifacts_dpath )
86
86
self .next_step_num = 0
87
87
88
88
# Write metadata file
89
89
metadata = self ._get_metadata ()
90
- with get_metadata_fpath (self .tuning_agent_artifacts_dpath ).open ("w" ) as f :
90
+ with get_metadata_fpath (self .tuning_artifacts_dpath ).open ("w" ) as f :
91
91
json .dump (metadata .asdict (), f )
92
92
93
93
def step (self ) -> None :
@@ -97,12 +97,12 @@ def step(self) -> None:
97
97
curr_step_num = self .next_step_num
98
98
self .next_step_num += 1
99
99
dbms_cfg_delta = self ._step ()
100
- with get_delta_at_step_fpath (
101
- self . tuning_agent_artifacts_dpath , curr_step_num
102
- ). open ( "w" ) as f :
100
+ with get_delta_at_step_fpath (self . tuning_artifacts_dpath , curr_step_num ). open (
101
+ "w"
102
+ ) as f :
103
103
json .dump (asdict (dbms_cfg_delta ), f )
104
104
105
- def _get_metadata (self ) -> TuningAgentMetadata :
105
+ def _get_metadata (self ) -> TuningMetadata :
106
106
"""
107
107
This should be overridden by subclasses.
108
108
@@ -120,20 +120,18 @@ def _step(self) -> DBMSConfigDelta:
120
120
121
121
122
122
class TuningAgentArtifactsReader :
123
- def __init__ (self , tuning_agent_artifacts_dpath : Path ) -> None :
124
- self .tuning_agent_artifacts_dpath = tuning_agent_artifacts_dpath
125
- assert is_fully_resolved (self .tuning_agent_artifacts_dpath )
123
+ def __init__ (self , tuning_artifacts_dpath : Path ) -> None :
124
+ self .tuning_artifacts_dpath = tuning_artifacts_dpath
125
+ assert is_fully_resolved (self .tuning_artifacts_dpath )
126
126
num_steps = 0
127
- while get_delta_at_step_fpath (
128
- self .tuning_agent_artifacts_dpath , num_steps
129
- ).exists ():
127
+ while get_delta_at_step_fpath (self .tuning_artifacts_dpath , num_steps ).exists ():
130
128
num_steps += 1
131
129
self .num_steps = num_steps
132
130
133
- def get_metadata (self ) -> TuningAgentMetadata :
134
- with get_metadata_fpath (self .tuning_agent_artifacts_dpath ).open ("r" ) as f :
131
+ def get_metadata (self ) -> TuningMetadata :
132
+ with get_metadata_fpath (self .tuning_artifacts_dpath ).open ("r" ) as f :
135
133
data = json .load (f )
136
- return TuningAgentMetadata (
134
+ return TuningMetadata (
137
135
workload_path = Path (data ["workload_path" ]),
138
136
pristine_dbdata_snapshot_path = Path (
139
137
data ["pristine_dbdata_snapshot_path" ]
@@ -144,7 +142,7 @@ def get_metadata(self) -> TuningAgentMetadata:
144
142
145
143
def get_delta_at_step (self , step_num : int ) -> DBMSConfigDelta :
146
144
assert step_num >= 0 and step_num < self .num_steps
147
- with get_delta_at_step_fpath (self .tuning_agent_artifacts_dpath , step_num ).open (
145
+ with get_delta_at_step_fpath (self .tuning_artifacts_dpath , step_num ).open (
148
146
"r"
149
147
) as f :
150
148
data = json .load (f )
0 commit comments