1 /* Copyright (c) 2014, 2021, Oracle and/or its affiliates.
2
3 This program is free software; you can redistribute it and/or modify
4 it under the terms of the GNU General Public License, version 2.0,
5 as published by the Free Software Foundation.
6
7 This program is also distributed with certain software (including
8 but not limited to OpenSSL) that is licensed under separate terms,
9 as designated in a particular file or component or in included license
10 documentation. The authors of MySQL hereby grant you an additional
11 permission to link the program and your derivative works with the
12 separately licensed software that they have included with MySQL.
13
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License, version 2.0, for more details.
18
19 You should have received a copy of the GNU General Public License
20 along with this program; if not, write to the Free Software Foundation,
21 51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA */
22
23 #include "my_global.h"
24 #include "m_string.h"
25 #include "pfs_global.h"
26 #include "pfs_builtin_memory.h"
27
28 PFS_builtin_memory_class builtin_memory_mutex;
29 PFS_builtin_memory_class builtin_memory_rwlock;
30 PFS_builtin_memory_class builtin_memory_cond;
31 PFS_builtin_memory_class builtin_memory_file;
32 PFS_builtin_memory_class builtin_memory_socket;
33 PFS_builtin_memory_class builtin_memory_mdl;
34 PFS_builtin_memory_class builtin_memory_file_handle;
35
36 PFS_builtin_memory_class builtin_memory_account;
37 PFS_builtin_memory_class builtin_memory_account_waits;
38 PFS_builtin_memory_class builtin_memory_account_stages;
39 PFS_builtin_memory_class builtin_memory_account_statements;
40 PFS_builtin_memory_class builtin_memory_account_transactions;
41 PFS_builtin_memory_class builtin_memory_account_memory;
42
43 PFS_builtin_memory_class builtin_memory_global_stages;
44 PFS_builtin_memory_class builtin_memory_global_statements;
45 PFS_builtin_memory_class builtin_memory_global_memory;
46
47 PFS_builtin_memory_class builtin_memory_host;
48 PFS_builtin_memory_class builtin_memory_host_waits;
49 PFS_builtin_memory_class builtin_memory_host_stages;
50 PFS_builtin_memory_class builtin_memory_host_statements;
51 PFS_builtin_memory_class builtin_memory_host_transactions;
52 PFS_builtin_memory_class builtin_memory_host_memory;
53
54 PFS_builtin_memory_class builtin_memory_thread;
55 PFS_builtin_memory_class builtin_memory_thread_waits;
56 PFS_builtin_memory_class builtin_memory_thread_stages;
57 PFS_builtin_memory_class builtin_memory_thread_statements;
58 PFS_builtin_memory_class builtin_memory_thread_transactions;
59 PFS_builtin_memory_class builtin_memory_thread_memory;
60
61 PFS_builtin_memory_class builtin_memory_thread_waits_history;
62 PFS_builtin_memory_class builtin_memory_thread_stages_history;
63 PFS_builtin_memory_class builtin_memory_thread_statements_history;
64 PFS_builtin_memory_class builtin_memory_thread_statements_history_tokens;
65 PFS_builtin_memory_class builtin_memory_thread_statements_history_sqltext;
66 PFS_builtin_memory_class builtin_memory_thread_statements_stack;
67 PFS_builtin_memory_class builtin_memory_thread_statements_stack_tokens;
68 PFS_builtin_memory_class builtin_memory_thread_statements_stack_sqltext;
69 PFS_builtin_memory_class builtin_memory_thread_transaction_history;
70 PFS_builtin_memory_class builtin_memory_thread_session_connect_attrs;
71
72 PFS_builtin_memory_class builtin_memory_user;
73 PFS_builtin_memory_class builtin_memory_user_waits;
74 PFS_builtin_memory_class builtin_memory_user_stages;
75 PFS_builtin_memory_class builtin_memory_user_statements;
76 PFS_builtin_memory_class builtin_memory_user_transactions;
77 PFS_builtin_memory_class builtin_memory_user_memory;
78
79 PFS_builtin_memory_class builtin_memory_mutex_class;
80 PFS_builtin_memory_class builtin_memory_rwlock_class;
81 PFS_builtin_memory_class builtin_memory_cond_class;
82 PFS_builtin_memory_class builtin_memory_thread_class;
83 PFS_builtin_memory_class builtin_memory_file_class;
84 PFS_builtin_memory_class builtin_memory_socket_class;
85 PFS_builtin_memory_class builtin_memory_stage_class;
86 PFS_builtin_memory_class builtin_memory_statement_class;
87 PFS_builtin_memory_class builtin_memory_memory_class;
88
89 PFS_builtin_memory_class builtin_memory_setup_actor;
90 PFS_builtin_memory_class builtin_memory_setup_object;
91
92 PFS_builtin_memory_class builtin_memory_digest;
93 PFS_builtin_memory_class builtin_memory_digest_tokens;
94
95 PFS_builtin_memory_class builtin_memory_stages_history_long;
96 PFS_builtin_memory_class builtin_memory_statements_history_long;
97 PFS_builtin_memory_class builtin_memory_statements_history_long_tokens;
98 PFS_builtin_memory_class builtin_memory_statements_history_long_sqltext;
99 PFS_builtin_memory_class builtin_memory_transactions_history_long;
100 PFS_builtin_memory_class builtin_memory_waits_history_long;
101
102 PFS_builtin_memory_class builtin_memory_table;
103 PFS_builtin_memory_class builtin_memory_table_share;
104 PFS_builtin_memory_class builtin_memory_table_share_index;
105 PFS_builtin_memory_class builtin_memory_table_share_lock;
106
107 PFS_builtin_memory_class builtin_memory_program;
108 PFS_builtin_memory_class builtin_memory_prepared_stmt;
109
110 PFS_builtin_memory_class builtin_memory_scalable_buffer;
111
init_builtin_memory_class(PFS_builtin_memory_class * klass,const char * name)112 static void init_builtin_memory_class(PFS_builtin_memory_class *klass, const char* name)
113 {
114 klass->m_class.m_type= PFS_CLASS_MEMORY;
115 klass->m_class.m_enabled= true; /* Immutable */
116 klass->m_class.m_timed= false; /* Immutable */
117 klass->m_class.m_flags= PSI_FLAG_GLOBAL;
118 klass->m_class.m_event_name_index= 0;
119 my_snprintf(klass->m_class.m_name, sizeof(klass->m_class.m_name), "%.*s",
120 PFS_MAX_INFO_NAME_LENGTH - 1, name);
121 klass->m_class.m_name_length= strlen(name);
122 assert(klass->m_class.m_name_length < sizeof(klass->m_class.m_name));
123 klass->m_class.m_timer= NULL;
124
125 klass->m_stat.reset();
126 }
127
init_all_builtin_memory_class()128 void init_all_builtin_memory_class()
129 {
130 init_builtin_memory_class( & builtin_memory_mutex,
131 "memory/performance_schema/mutex_instances");
132 init_builtin_memory_class( & builtin_memory_rwlock,
133 "memory/performance_schema/rwlock_instances");
134 init_builtin_memory_class( & builtin_memory_cond,
135 "memory/performance_schema/cond_instances");
136 init_builtin_memory_class( & builtin_memory_file,
137 "memory/performance_schema/file_instances");
138 init_builtin_memory_class( & builtin_memory_socket,
139 "memory/performance_schema/socket_instances");
140 init_builtin_memory_class( & builtin_memory_mdl,
141 "memory/performance_schema/metadata_locks");
142 init_builtin_memory_class( & builtin_memory_file_handle,
143 "memory/performance_schema/file_handle");
144
145 init_builtin_memory_class( & builtin_memory_account,
146 "memory/performance_schema/accounts");
147 init_builtin_memory_class( & builtin_memory_account_waits,
148 "memory/performance_schema/events_waits_summary_by_account_by_event_name");
149 init_builtin_memory_class( & builtin_memory_account_stages,
150 "memory/performance_schema/events_stages_summary_by_account_by_event_name");
151 init_builtin_memory_class( & builtin_memory_account_statements,
152 "memory/performance_schema/events_statements_summary_by_account_by_event_name");
153 init_builtin_memory_class( & builtin_memory_account_transactions,
154 "memory/performance_schema/events_transactions_summary_by_account_by_event_name");
155 init_builtin_memory_class( & builtin_memory_account_memory,
156 "memory/performance_schema/memory_summary_by_account_by_event_name");
157
158 init_builtin_memory_class( & builtin_memory_global_stages,
159 "memory/performance_schema/events_stages_summary_global_by_event_name");
160 init_builtin_memory_class( & builtin_memory_global_statements,
161 "memory/performance_schema/events_statements_summary_global_by_event_name");
162 init_builtin_memory_class( & builtin_memory_global_memory,
163 "memory/performance_schema/memory_summary_global_by_event_name");
164
165 init_builtin_memory_class( & builtin_memory_host,
166 "memory/performance_schema/hosts");
167 init_builtin_memory_class( & builtin_memory_host_waits,
168 "memory/performance_schema/events_waits_summary_by_host_by_event_name");
169 init_builtin_memory_class( & builtin_memory_host_stages,
170 "memory/performance_schema/events_stages_summary_by_host_by_event_name");
171 init_builtin_memory_class( & builtin_memory_host_statements,
172 "memory/performance_schema/events_statements_summary_by_host_by_event_name");
173 init_builtin_memory_class( & builtin_memory_host_transactions,
174 "memory/performance_schema/events_transactions_summary_by_host_by_event_name");
175 init_builtin_memory_class( & builtin_memory_host_memory,
176 "memory/performance_schema/memory_summary_by_host_by_event_name");
177
178 init_builtin_memory_class( & builtin_memory_thread,
179 "memory/performance_schema/threads");
180 init_builtin_memory_class( & builtin_memory_thread_waits,
181 "memory/performance_schema/events_waits_summary_by_thread_by_event_name");
182 init_builtin_memory_class( & builtin_memory_thread_stages,
183 "memory/performance_schema/events_stages_summary_by_thread_by_event_name");
184 init_builtin_memory_class( & builtin_memory_thread_statements,
185 "memory/performance_schema/events_statements_summary_by_thread_by_event_name");
186 init_builtin_memory_class( & builtin_memory_thread_transactions,
187 "memory/performance_schema/events_transactions_summary_by_thread_by_event_name");
188 init_builtin_memory_class( & builtin_memory_thread_memory,
189 "memory/performance_schema/memory_summary_by_thread_by_event_name");
190
191 init_builtin_memory_class( & builtin_memory_thread_waits_history,
192 "memory/performance_schema/events_waits_history");
193 init_builtin_memory_class( & builtin_memory_thread_stages_history,
194 "memory/performance_schema/events_stages_history");
195 init_builtin_memory_class( & builtin_memory_thread_statements_history,
196 "memory/performance_schema/events_statements_history");
197 init_builtin_memory_class( & builtin_memory_thread_statements_history_tokens,
198 "memory/performance_schema/events_statements_history.tokens");
199 init_builtin_memory_class( & builtin_memory_thread_statements_history_sqltext,
200 "memory/performance_schema/events_statements_history.sqltext");
201 init_builtin_memory_class( & builtin_memory_thread_statements_stack,
202 "memory/performance_schema/events_statements_current");
203 init_builtin_memory_class( & builtin_memory_thread_statements_stack_tokens,
204 "memory/performance_schema/events_statements_current.tokens");
205 init_builtin_memory_class( & builtin_memory_thread_statements_stack_sqltext,
206 "memory/performance_schema/events_statements_current.sqltext");
207 init_builtin_memory_class( & builtin_memory_thread_transaction_history,
208 "memory/performance_schema/events_transactions_history");
209 init_builtin_memory_class( & builtin_memory_thread_session_connect_attrs,
210 "memory/performance_schema/session_connect_attrs");
211
212 init_builtin_memory_class( & builtin_memory_user,
213 "memory/performance_schema/users");
214 init_builtin_memory_class( & builtin_memory_user_waits,
215 "memory/performance_schema/events_waits_summary_by_user_by_event_name");
216 init_builtin_memory_class( & builtin_memory_user_stages,
217 "memory/performance_schema/events_stages_summary_by_user_by_event_name");
218 init_builtin_memory_class( & builtin_memory_user_statements,
219 "memory/performance_schema/events_statements_summary_by_user_by_event_name");
220 init_builtin_memory_class( & builtin_memory_user_transactions,
221 "memory/performance_schema/events_transactions_summary_by_user_by_event_name");
222 init_builtin_memory_class( & builtin_memory_user_memory,
223 "memory/performance_schema/memory_summary_by_user_by_event_name");
224
225 init_builtin_memory_class( & builtin_memory_mutex_class,
226 "memory/performance_schema/mutex_class");
227 init_builtin_memory_class( & builtin_memory_rwlock_class,
228 "memory/performance_schema/rwlock_class");
229 init_builtin_memory_class( & builtin_memory_cond_class,
230 "memory/performance_schema/cond_class");
231 init_builtin_memory_class( & builtin_memory_thread_class,
232 "memory/performance_schema/thread_class");
233 init_builtin_memory_class( & builtin_memory_file_class,
234 "memory/performance_schema/file_class");
235 init_builtin_memory_class( & builtin_memory_socket_class,
236 "memory/performance_schema/socket_class");
237 init_builtin_memory_class( & builtin_memory_stage_class,
238 "memory/performance_schema/stage_class");
239 init_builtin_memory_class( & builtin_memory_statement_class,
240 "memory/performance_schema/statement_class");
241 init_builtin_memory_class( & builtin_memory_memory_class,
242 "memory/performance_schema/memory_class");
243
244 init_builtin_memory_class( & builtin_memory_setup_actor,
245 "memory/performance_schema/setup_actors");
246 init_builtin_memory_class( & builtin_memory_setup_object,
247 "memory/performance_schema/setup_objects");
248
249 init_builtin_memory_class( & builtin_memory_digest,
250 "memory/performance_schema/events_statements_summary_by_digest");
251 init_builtin_memory_class( & builtin_memory_digest_tokens,
252 "memory/performance_schema/events_statements_summary_by_digest.tokens");
253
254 init_builtin_memory_class( & builtin_memory_stages_history_long,
255 "memory/performance_schema/events_stages_history_long");
256 init_builtin_memory_class( & builtin_memory_statements_history_long,
257 "memory/performance_schema/events_statements_history_long");
258 init_builtin_memory_class( & builtin_memory_statements_history_long_tokens,
259 "memory/performance_schema/events_statements_history_long.tokens");
260 init_builtin_memory_class( & builtin_memory_statements_history_long_sqltext,
261 "memory/performance_schema/events_statements_history_long.sqltext");
262 init_builtin_memory_class( & builtin_memory_transactions_history_long,
263 "memory/performance_schema/events_transactions_history_long");
264 init_builtin_memory_class( & builtin_memory_waits_history_long,
265 "memory/performance_schema/events_waits_history_long");
266
267 init_builtin_memory_class( & builtin_memory_table,
268 "memory/performance_schema/table_handles");
269 init_builtin_memory_class( & builtin_memory_table_share,
270 "memory/performance_schema/table_shares");
271 init_builtin_memory_class( & builtin_memory_table_share_index,
272 "memory/performance_schema/table_io_waits_summary_by_index_usage");
273 init_builtin_memory_class( & builtin_memory_table_share_lock,
274 "memory/performance_schema/table_lock_waits_summary_by_table");
275
276 init_builtin_memory_class( & builtin_memory_program,
277 "memory/performance_schema/events_statements_summary_by_program");
278 init_builtin_memory_class( & builtin_memory_prepared_stmt,
279 "memory/performance_schema/prepared_statements_instances");
280
281 init_builtin_memory_class( & builtin_memory_scalable_buffer,
282 "memory/performance_schema/scalable_buffer");
283 }
284
285 static PFS_builtin_memory_class* all_builtin_memory[]=
286 {
287 & builtin_memory_mutex,
288 & builtin_memory_rwlock,
289 & builtin_memory_cond,
290 & builtin_memory_file,
291 & builtin_memory_socket,
292 & builtin_memory_mdl,
293 & builtin_memory_file_handle,
294
295 & builtin_memory_account,
296 & builtin_memory_account_waits,
297 & builtin_memory_account_stages,
298 & builtin_memory_account_statements,
299 & builtin_memory_account_transactions,
300 & builtin_memory_account_memory,
301
302 & builtin_memory_global_stages,
303 & builtin_memory_global_statements,
304 & builtin_memory_global_memory,
305
306 & builtin_memory_host,
307 & builtin_memory_host_waits,
308 & builtin_memory_host_stages,
309 & builtin_memory_host_statements,
310 & builtin_memory_host_transactions,
311 & builtin_memory_host_memory,
312
313 & builtin_memory_thread,
314 & builtin_memory_thread_waits,
315 & builtin_memory_thread_stages,
316 & builtin_memory_thread_statements,
317 & builtin_memory_thread_transactions,
318 & builtin_memory_thread_memory,
319
320 & builtin_memory_thread_waits_history,
321 & builtin_memory_thread_stages_history,
322 & builtin_memory_thread_statements_history,
323 & builtin_memory_thread_statements_history_tokens,
324 & builtin_memory_thread_statements_history_sqltext,
325 & builtin_memory_thread_statements_stack,
326 & builtin_memory_thread_statements_stack_tokens,
327 & builtin_memory_thread_statements_stack_sqltext,
328 & builtin_memory_thread_transaction_history,
329 & builtin_memory_thread_session_connect_attrs,
330
331 & builtin_memory_user,
332 & builtin_memory_user_waits,
333 & builtin_memory_user_stages,
334 & builtin_memory_user_statements,
335 & builtin_memory_user_transactions,
336 & builtin_memory_user_memory,
337
338 & builtin_memory_mutex_class,
339 & builtin_memory_rwlock_class,
340 & builtin_memory_cond_class,
341 & builtin_memory_thread_class,
342 & builtin_memory_file_class,
343 & builtin_memory_socket_class,
344 & builtin_memory_stage_class,
345 & builtin_memory_statement_class,
346 & builtin_memory_memory_class,
347
348 & builtin_memory_setup_actor,
349 & builtin_memory_setup_object,
350
351 & builtin_memory_digest,
352 & builtin_memory_digest_tokens,
353
354 & builtin_memory_stages_history_long,
355 & builtin_memory_statements_history_long,
356 & builtin_memory_statements_history_long_tokens,
357 & builtin_memory_statements_history_long_sqltext,
358 & builtin_memory_transactions_history_long,
359 & builtin_memory_waits_history_long,
360
361 & builtin_memory_table,
362 & builtin_memory_table_share,
363 & builtin_memory_table_share_index,
364 & builtin_memory_table_share_lock,
365
366 & builtin_memory_program,
367 & builtin_memory_prepared_stmt,
368
369 & builtin_memory_scalable_buffer,
370
371 NULL
372 };
373
374
find_builtin_memory_class(PFS_builtin_memory_key key)375 PFS_builtin_memory_class *find_builtin_memory_class(PFS_builtin_memory_key key)
376 {
377 if (key == 0)
378 return NULL;
379
380 return all_builtin_memory[key - 1];
381 }
382
383