]>
Commit | Line | Data |
---|---|---|
b4e1fa2c AM |
1 | # name : innodb_show_status_extend.patch |
2 | # introduced : XtraDB based 5.5.8 | |
3 | # maintainer : Yasufumi | |
4 | # | |
5 | #!!! notice !!! | |
6 | # Any small change to this file in the main branch | |
7 | # should be done or reviewed by the maintainer! | |
8 | diff -ruN a/storage/innobase/handler/ha_innodb.cc b/storage/innobase/handler/ha_innodb.cc | |
9 | --- a/storage/innobase/handler/ha_innodb.cc 2011-01-21 19:53:42.369599743 +0900 | |
10 | +++ b/storage/innobase/handler/ha_innodb.cc 2011-01-21 19:54:44.659599699 +0900 | |
df1b5770 | 11 | @@ -638,6 +638,16 @@ |
b4e1fa2c AM |
12 | trx_t* trx); /*!< in: transaction handle */ |
13 | ||
14 | static SHOW_VAR innodb_status_variables[]= { | |
15 | + {"adaptive_hash_cells", | |
16 | + (char*) &export_vars.innodb_adaptive_hash_cells, SHOW_LONG}, | |
17 | + {"adaptive_hash_heap_buffers", | |
18 | + (char*) &export_vars.innodb_adaptive_hash_heap_buffers, SHOW_LONG}, | |
19 | + {"adaptive_hash_hash_searches", | |
20 | + (char*) &export_vars.innodb_adaptive_hash_hash_searches, SHOW_LONG}, | |
21 | + {"adaptive_hash_non_hash_searches", | |
22 | + (char*) &export_vars.innodb_adaptive_hash_non_hash_searches, SHOW_LONG}, | |
23 | + {"background_log_sync", | |
24 | + (char*) &export_vars.innodb_background_log_sync, SHOW_LONG}, | |
25 | {"buffer_pool_pages_data", | |
26 | (char*) &export_vars.innodb_buffer_pool_pages_data, SHOW_LONG}, | |
27 | {"buffer_pool_pages_dirty", | |
df1b5770 | 28 | @@ -652,8 +662,14 @@ |
b4e1fa2c AM |
29 | {"buffer_pool_pages_latched", |
30 | (char*) &export_vars.innodb_buffer_pool_pages_latched, SHOW_LONG}, | |
31 | #endif /* UNIV_DEBUG */ | |
32 | + {"buffer_pool_pages_made_not_young", | |
33 | + (char*) &export_vars.innodb_buffer_pool_pages_made_not_young, SHOW_LONG}, | |
34 | + {"buffer_pool_pages_made_young", | |
35 | + (char*) &export_vars.innodb_buffer_pool_pages_made_young, SHOW_LONG}, | |
36 | {"buffer_pool_pages_misc", | |
37 | (char*) &export_vars.innodb_buffer_pool_pages_misc, SHOW_LONG}, | |
38 | + {"buffer_pool_pages_old", | |
39 | + (char*) &export_vars.innodb_buffer_pool_pages_old, SHOW_LONG}, | |
40 | {"buffer_pool_pages_total", | |
41 | (char*) &export_vars.innodb_buffer_pool_pages_total, SHOW_LONG}, | |
42 | {"buffer_pool_read_ahead", | |
df1b5770 | 43 | @@ -668,6 +684,12 @@ |
b4e1fa2c AM |
44 | (char*) &export_vars.innodb_buffer_pool_wait_free, SHOW_LONG}, |
45 | {"buffer_pool_write_requests", | |
46 | (char*) &export_vars.innodb_buffer_pool_write_requests, SHOW_LONG}, | |
47 | + {"checkpoint_age", | |
48 | + (char*) &export_vars.innodb_checkpoint_age, SHOW_LONG}, | |
49 | + {"checkpoint_max_age", | |
50 | + (char*) &export_vars.innodb_checkpoint_max_age, SHOW_LONG}, | |
51 | + {"checkpoint_target_age", | |
52 | + (char*) &export_vars.innodb_checkpoint_target_age, SHOW_LONG}, | |
53 | {"data_fsyncs", | |
54 | (char*) &export_vars.innodb_data_fsyncs, SHOW_LONG}, | |
55 | {"data_pending_fsyncs", | |
df1b5770 | 56 | @@ -694,12 +716,66 @@ |
b4e1fa2c AM |
57 | (char*) &export_vars.innodb_dict_tables, SHOW_LONG}, |
58 | {"have_atomic_builtins", | |
59 | (char*) &export_vars.innodb_have_atomic_builtins, SHOW_BOOL}, | |
60 | + {"history_list_length", | |
61 | + (char*) &export_vars.innodb_history_list_length, SHOW_LONG}, | |
62 | + {"ibuf_discarded_delete_marks", | |
63 | + (char*) &export_vars.innodb_ibuf_discarded_delete_marks, SHOW_LONG}, | |
64 | + {"ibuf_discarded_deletes", | |
65 | + (char*) &export_vars.innodb_ibuf_discarded_deletes, SHOW_LONG}, | |
66 | + {"ibuf_discarded_inserts", | |
67 | + (char*) &export_vars.innodb_ibuf_discarded_inserts, SHOW_LONG}, | |
68 | + {"ibuf_free_list", | |
69 | + (char*) &export_vars.innodb_ibuf_free_list, SHOW_LONG}, | |
70 | + {"ibuf_merged_delete_marks", | |
71 | + (char*) &export_vars.innodb_ibuf_merged_delete_marks, SHOW_LONG}, | |
72 | + {"ibuf_merged_deletes", | |
73 | + (char*) &export_vars.innodb_ibuf_merged_deletes, SHOW_LONG}, | |
74 | + {"ibuf_merged_inserts", | |
75 | + (char*) &export_vars.innodb_ibuf_merged_inserts, SHOW_LONG}, | |
76 | + {"ibuf_merges", | |
77 | + (char*) &export_vars.innodb_ibuf_merges, SHOW_LONG}, | |
78 | + {"ibuf_segment_size", | |
79 | + (char*) &export_vars.innodb_ibuf_segment_size, SHOW_LONG}, | |
80 | + {"ibuf_size", | |
81 | + (char*) &export_vars.innodb_ibuf_size, SHOW_LONG}, | |
82 | {"log_waits", | |
83 | (char*) &export_vars.innodb_log_waits, SHOW_LONG}, | |
84 | {"log_write_requests", | |
85 | (char*) &export_vars.innodb_log_write_requests, SHOW_LONG}, | |
86 | {"log_writes", | |
87 | (char*) &export_vars.innodb_log_writes, SHOW_LONG}, | |
88 | + {"lsn_current", | |
89 | + (char*) &export_vars.innodb_lsn_current, SHOW_LONGLONG}, | |
90 | + {"lsn_flushed", | |
91 | + (char*) &export_vars.innodb_lsn_flushed, SHOW_LONGLONG}, | |
92 | + {"lsn_last_checkpoint", | |
93 | + (char*) &export_vars.innodb_lsn_last_checkpoint, SHOW_LONGLONG}, | |
94 | + {"master_thread_1_second_loops", | |
95 | + (char*) &export_vars.innodb_master_thread_1_second_loops, SHOW_LONG}, | |
96 | + {"master_thread_10_second_loops", | |
97 | + (char*) &export_vars.innodb_master_thread_10_second_loops, SHOW_LONG}, | |
98 | + {"master_thread_background_loops", | |
99 | + (char*) &export_vars.innodb_master_thread_background_loops, SHOW_LONG}, | |
100 | + {"master_thread_main_flush_loops", | |
101 | + (char*) &export_vars.innodb_master_thread_main_flush_loops, SHOW_LONG}, | |
102 | + {"master_thread_sleeps", | |
103 | + (char*) &export_vars.innodb_master_thread_sleeps, SHOW_LONG}, | |
104 | + {"max_trx_id", | |
105 | + (char*) &export_vars.innodb_max_trx_id, SHOW_LONGLONG}, | |
106 | + {"mem_adaptive_hash", | |
107 | + (char*) &export_vars.innodb_mem_adaptive_hash, SHOW_LONG}, | |
108 | + {"mem_dictionary", | |
109 | + (char*) &export_vars.innodb_mem_dictionary, SHOW_LONG}, | |
110 | + {"mem_total", | |
111 | + (char*) &export_vars.innodb_mem_total, SHOW_LONG}, | |
112 | + {"mutex_os_waits", | |
113 | + (char*) &export_vars.innodb_mutex_os_waits, SHOW_LONGLONG}, | |
114 | + {"mutex_spin_rounds", | |
115 | + (char*) &export_vars.innodb_mutex_spin_rounds, SHOW_LONGLONG}, | |
116 | + {"mutex_spin_waits", | |
117 | + (char*) &export_vars.innodb_mutex_spin_waits, SHOW_LONGLONG}, | |
118 | + {"oldest_view_low_limit_trx_id", | |
119 | + (char*) &export_vars.innodb_oldest_view_low_limit_trx_id, SHOW_LONGLONG}, | |
120 | {"os_log_fsyncs", | |
121 | (char*) &export_vars.innodb_os_log_fsyncs, SHOW_LONG}, | |
122 | {"os_log_pending_fsyncs", | |
df1b5770 | 123 | @@ -716,8 +792,14 @@ |
b4e1fa2c AM |
124 | (char*) &export_vars.innodb_pages_read, SHOW_LONG}, |
125 | {"pages_written", | |
126 | (char*) &export_vars.innodb_pages_written, SHOW_LONG}, | |
127 | + {"purge_trx_id", | |
128 | + (char*) &export_vars.innodb_purge_trx_id, SHOW_LONGLONG}, | |
129 | + {"purge_undo_no", | |
130 | + (char*) &export_vars.innodb_purge_undo_no, SHOW_LONGLONG}, | |
131 | {"row_lock_current_waits", | |
132 | (char*) &export_vars.innodb_row_lock_current_waits, SHOW_LONG}, | |
a9ee80b9 ER |
133 | + {"current_row_locks", |
134 | + (char*) &export_vars.innodb_current_row_locks, SHOW_LONG}, | |
b4e1fa2c AM |
135 | {"row_lock_time", |
136 | (char*) &export_vars.innodb_row_lock_time, SHOW_LONGLONG}, | |
137 | {"row_lock_time_avg", | |
df1b5770 | 138 | @@ -734,8 +816,20 @@ |
b4e1fa2c AM |
139 | (char*) &export_vars.innodb_rows_read, SHOW_LONG}, |
140 | {"rows_updated", | |
141 | (char*) &export_vars.innodb_rows_updated, SHOW_LONG}, | |
142 | + {"s_lock_os_waits", | |
143 | + (char*) &export_vars.innodb_s_lock_os_waits, SHOW_LONGLONG}, | |
144 | + {"s_lock_spin_rounds", | |
145 | + (char*) &export_vars.innodb_s_lock_spin_rounds, SHOW_LONGLONG}, | |
146 | + {"s_lock_spin_waits", | |
147 | + (char*) &export_vars.innodb_s_lock_spin_waits, SHOW_LONGLONG}, | |
148 | {"truncated_status_writes", | |
149 | (char*) &export_vars.innodb_truncated_status_writes, SHOW_LONG}, | |
150 | + {"x_lock_os_waits", | |
151 | + (char*) &export_vars.innodb_x_lock_os_waits, SHOW_LONGLONG}, | |
152 | + {"x_lock_spin_rounds", | |
153 | + (char*) &export_vars.innodb_x_lock_spin_rounds, SHOW_LONGLONG}, | |
154 | + {"x_lock_spin_waits", | |
155 | + (char*) &export_vars.innodb_x_lock_spin_waits, SHOW_LONGLONG}, | |
156 | {NullS, NullS, SHOW_LONG} | |
157 | }; | |
158 | ||
d8778560 AM |
159 | diff -ruN a/storage/innobase/ibuf/ibuf0ibuf.c b/storage/innobase/ibuf/ibuf0ibuf.c |
160 | --- a/storage/innobase/ibuf/ibuf0ibuf.c 2011-02-03 15:05:04.000000000 +0900 | |
161 | +++ b/storage/innobase/ibuf/ibuf0ibuf.c 2011-02-03 15:19:47.000000000 +0900 | |
162 | @@ -479,6 +479,45 @@ | |
163 | } | |
164 | ||
165 | /******************************************************************//** | |
166 | +Function to pass ibuf status variables */ | |
167 | +UNIV_INTERN | |
168 | +void | |
169 | +ibuf_export_ibuf_status( | |
170 | +/*====================*/ | |
171 | + ulint* size, | |
172 | + ulint* free_list, | |
173 | + ulint* segment_size, | |
174 | + ulint* merges, | |
175 | + ulint* merged_inserts, | |
176 | + ulint* merged_delete_marks, | |
177 | + ulint* merged_deletes, | |
178 | + ulint* discarded_inserts, | |
179 | + ulint* discarded_delete_marks, | |
180 | + ulint* discarded_deletes) | |
181 | +{ | |
182 | + *size | |
183 | + = ibuf->size; | |
184 | + *free_list | |
185 | + = ibuf->free_list_len; | |
186 | + *segment_size | |
187 | + = ibuf->seg_size; | |
188 | + *merges | |
189 | + = ibuf->n_merges; | |
190 | + *merged_inserts | |
191 | + = ibuf->n_merged_ops[IBUF_OP_INSERT]; | |
192 | + *merged_delete_marks | |
193 | + = ibuf->n_merged_ops[IBUF_OP_DELETE_MARK]; | |
194 | + *merged_deletes | |
195 | + = ibuf->n_merged_ops[IBUF_OP_DELETE]; | |
196 | + *discarded_inserts | |
197 | + = ibuf->n_discarded_ops[IBUF_OP_INSERT]; | |
198 | + *discarded_delete_marks | |
199 | + = ibuf->n_discarded_ops[IBUF_OP_DELETE_MARK]; | |
200 | + *discarded_deletes | |
201 | + = ibuf->n_discarded_ops[IBUF_OP_DELETE]; | |
202 | +} | |
203 | + | |
204 | +/******************************************************************//** | |
205 | Updates the size information of the ibuf, assuming the segment size has not | |
206 | changed. */ | |
207 | static | |
208 | diff -ruN a/storage/innobase/include/ibuf0ibuf.h b/storage/innobase/include/ibuf0ibuf.h | |
209 | --- a/storage/innobase/include/ibuf0ibuf.h 2010-12-04 02:58:26.000000000 +0900 | |
210 | +++ b/storage/innobase/include/ibuf0ibuf.h 2011-02-03 15:19:47.000000000 +0900 | |
211 | @@ -420,6 +420,22 @@ | |
212 | void | |
213 | ibuf_close(void); | |
214 | /*============*/ | |
215 | +/******************************************************************//** | |
216 | +Function to pass ibuf status variables */ | |
217 | +UNIV_INTERN | |
218 | +void | |
219 | +ibuf_export_ibuf_status( | |
220 | +/*====================*/ | |
221 | + ulint* size, | |
222 | + ulint* free_list, | |
223 | + ulint* segment_size, | |
224 | + ulint* merges, | |
225 | + ulint* merged_inserts, | |
226 | + ulint* merged_delete_marks, | |
227 | + ulint* merged_deletes, | |
228 | + ulint* discarded_inserts, | |
229 | + ulint* discarded_delete_marks, | |
230 | + ulint* discarded_deletes); | |
231 | ||
232 | #define IBUF_HEADER_PAGE_NO FSP_IBUF_HEADER_PAGE_NO | |
233 | #define IBUF_TREE_ROOT_PAGE_NO FSP_IBUF_TREE_ROOT_PAGE_NO | |
b4e1fa2c AM |
234 | diff -ruN a/storage/innobase/include/lock0lock.h b/storage/innobase/include/lock0lock.h |
235 | --- a/storage/innobase/include/lock0lock.h 2011-01-21 19:52:38.967683738 +0900 | |
236 | +++ b/storage/innobase/include/lock0lock.h 2011-01-21 19:54:44.660599140 +0900 | |
237 | @@ -816,6 +816,7 @@ | |
238 | /** The lock system struct */ | |
239 | struct lock_sys_struct{ | |
240 | hash_table_t* rec_hash; /*!< hash table of the record locks */ | |
241 | + ulint rec_num; | |
242 | }; | |
243 | ||
244 | /** The lock system */ | |
245 | diff -ruN a/storage/innobase/include/srv0srv.h b/storage/innobase/include/srv0srv.h | |
246 | --- a/storage/innobase/include/srv0srv.h 2011-01-21 19:53:42.380638228 +0900 | |
247 | +++ b/storage/innobase/include/srv0srv.h 2011-01-21 19:54:44.662600032 +0900 | |
11822e22 | 248 | @@ -753,6 +753,11 @@ |
b4e1fa2c AM |
249 | |
250 | /** Status variables to be passed to MySQL */ | |
251 | struct export_var_struct{ | |
252 | + ulint innodb_adaptive_hash_cells; | |
253 | + ulint innodb_adaptive_hash_heap_buffers; | |
254 | + ulint innodb_adaptive_hash_hash_searches; | |
255 | + ulint innodb_adaptive_hash_non_hash_searches; | |
256 | + ulint innodb_background_log_sync; | |
257 | ulint innodb_data_pending_reads; /*!< Pending reads */ | |
258 | ulint innodb_data_pending_writes; /*!< Pending writes */ | |
259 | ulint innodb_data_pending_fsyncs; /*!< Pending fsyncs */ | |
11822e22 | 260 | @@ -770,6 +775,9 @@ |
b4e1fa2c AM |
261 | #ifdef UNIV_DEBUG |
262 | ulint innodb_buffer_pool_pages_latched; /*!< Latched pages */ | |
263 | #endif /* UNIV_DEBUG */ | |
264 | + ulint innodb_buffer_pool_pages_made_not_young; | |
265 | + ulint innodb_buffer_pool_pages_made_young; | |
266 | + ulint innodb_buffer_pool_pages_old; | |
267 | ulint innodb_buffer_pool_read_requests; /*!< buf_pool->stat.n_page_gets */ | |
268 | ulint innodb_buffer_pool_reads; /*!< srv_buf_pool_reads */ | |
269 | ulint innodb_buffer_pool_wait_free; /*!< srv_buf_pool_wait_free */ | |
11822e22 | 270 | @@ -778,13 +786,43 @@ |
b4e1fa2c AM |
271 | ulint innodb_buffer_pool_write_requests;/*!< srv_buf_pool_write_requests */ |
272 | ulint innodb_buffer_pool_read_ahead; /*!< srv_read_ahead */ | |
273 | ulint innodb_buffer_pool_read_ahead_evicted;/*!< srv_read_ahead evicted*/ | |
274 | + ulint innodb_checkpoint_age; | |
275 | + ulint innodb_checkpoint_max_age; | |
276 | + ulint innodb_checkpoint_target_age; | |
277 | ulint innodb_dblwr_pages_written; /*!< srv_dblwr_pages_written */ | |
278 | ulint innodb_dblwr_writes; /*!< srv_dblwr_writes */ | |
279 | ulint innodb_deadlocks; | |
280 | ibool innodb_have_atomic_builtins; /*!< HAVE_ATOMIC_BUILTINS */ | |
281 | + ulint innodb_history_list_length; | |
282 | + ulint innodb_ibuf_size; | |
283 | + ulint innodb_ibuf_free_list; | |
284 | + ulint innodb_ibuf_segment_size; | |
285 | + ulint innodb_ibuf_merges; | |
286 | + ulint innodb_ibuf_merged_inserts; | |
287 | + ulint innodb_ibuf_merged_delete_marks; | |
288 | + ulint innodb_ibuf_merged_deletes; | |
289 | + ulint innodb_ibuf_discarded_inserts; | |
290 | + ulint innodb_ibuf_discarded_delete_marks; | |
291 | + ulint innodb_ibuf_discarded_deletes; | |
292 | ulint innodb_log_waits; /*!< srv_log_waits */ | |
293 | ulint innodb_log_write_requests; /*!< srv_log_write_requests */ | |
294 | ulint innodb_log_writes; /*!< srv_log_writes */ | |
295 | + ib_int64_t innodb_lsn_current; | |
296 | + ib_int64_t innodb_lsn_flushed; | |
297 | + ib_int64_t innodb_lsn_last_checkpoint; | |
298 | + ulint innodb_master_thread_1_second_loops; | |
299 | + ulint innodb_master_thread_10_second_loops; | |
300 | + ulint innodb_master_thread_background_loops; | |
301 | + ulint innodb_master_thread_main_flush_loops; | |
302 | + ulint innodb_master_thread_sleeps; | |
303 | + ib_int64_t innodb_max_trx_id; | |
304 | + ulint innodb_mem_adaptive_hash; | |
305 | + ulint innodb_mem_dictionary; | |
306 | + ulint innodb_mem_total; | |
307 | + ib_int64_t innodb_mutex_os_waits; | |
308 | + ib_int64_t innodb_mutex_spin_rounds; | |
309 | + ib_int64_t innodb_mutex_spin_waits; | |
310 | + ib_int64_t innodb_oldest_view_low_limit_trx_id; | |
311 | ulint innodb_os_log_written; /*!< srv_os_log_written */ | |
312 | ulint innodb_os_log_fsyncs; /*!< fil_n_log_flushes */ | |
313 | ulint innodb_os_log_pending_writes; /*!< srv_os_log_pending_writes */ | |
11822e22 | 314 | @@ -793,6 +831,8 @@ |
b4e1fa2c AM |
315 | ulint innodb_pages_created; /*!< buf_pool->stat.n_pages_created */ |
316 | ulint innodb_pages_read; /*!< buf_pool->stat.n_pages_read */ | |
317 | ulint innodb_pages_written; /*!< buf_pool->stat.n_pages_written */ | |
318 | + ib_int64_t innodb_purge_trx_id; | |
319 | + ib_int64_t innodb_purge_undo_no; | |
320 | ulint innodb_row_lock_waits; /*!< srv_n_lock_wait_count */ | |
321 | ulint innodb_row_lock_current_waits; /*!< srv_n_lock_wait_current_count */ | |
322 | ib_int64_t innodb_row_lock_time; /*!< srv_n_lock_wait_time | |
11822e22 | 323 | @@ -802,11 +842,18 @@ |
b4e1fa2c AM |
324 | / srv_n_lock_wait_count */ |
325 | ulint innodb_row_lock_time_max; /*!< srv_n_lock_max_wait_time | |
326 | / 1000 */ | |
a9ee80b9 | 327 | + ulint innodb_current_row_locks; |
b4e1fa2c AM |
328 | ulint innodb_rows_read; /*!< srv_n_rows_read */ |
329 | ulint innodb_rows_inserted; /*!< srv_n_rows_inserted */ | |
330 | ulint innodb_rows_updated; /*!< srv_n_rows_updated */ | |
331 | ulint innodb_rows_deleted; /*!< srv_n_rows_deleted */ | |
332 | ulint innodb_truncated_status_writes; /*!< srv_truncated_status_writes */ | |
333 | + ib_int64_t innodb_s_lock_os_waits; | |
334 | + ib_int64_t innodb_s_lock_spin_rounds; | |
335 | + ib_int64_t innodb_s_lock_spin_waits; | |
336 | + ib_int64_t innodb_x_lock_os_waits; | |
337 | + ib_int64_t innodb_x_lock_spin_rounds; | |
338 | + ib_int64_t innodb_x_lock_spin_waits; | |
339 | }; | |
340 | ||
341 | /** Thread slot in the thread table */ | |
342 | diff -ruN a/storage/innobase/include/sync0sync.h b/storage/innobase/include/sync0sync.h | |
343 | --- a/storage/innobase/include/sync0sync.h 2011-01-21 19:48:45.982637372 +0900 | |
344 | +++ b/storage/innobase/include/sync0sync.h 2011-01-21 19:54:44.664638235 +0900 | |
a9ee80b9 | 345 | @@ -761,6 +761,10 @@ |
b4e1fa2c AM |
346 | |
347 | #define SYNC_SPIN_ROUNDS srv_n_spin_wait_rounds | |
348 | ||
349 | +extern ib_int64_t mutex_spin_round_count; | |
350 | +extern ib_int64_t mutex_spin_wait_count; | |
351 | +extern ib_int64_t mutex_os_wait_count; | |
352 | + | |
353 | /** The number of mutex_exit calls. Intended for performance monitoring. */ | |
354 | extern ib_int64_t mutex_exit_count; | |
355 | ||
356 | diff -ruN a/storage/innobase/lock/lock0lock.c b/storage/innobase/lock/lock0lock.c | |
357 | --- a/storage/innobase/lock/lock0lock.c 2011-01-21 19:52:38.998600121 +0900 | |
358 | +++ b/storage/innobase/lock/lock0lock.c 2011-01-21 19:54:44.668637536 +0900 | |
359 | @@ -571,6 +571,7 @@ | |
360 | lock_sys = mem_alloc(sizeof(lock_sys_t)); | |
361 | ||
362 | lock_sys->rec_hash = hash_create(n_cells); | |
363 | + lock_sys->rec_num = 0; | |
364 | ||
365 | /* hash_create_mutexes(lock_sys->rec_hash, 2, SYNC_REC_LOCK); */ | |
366 | ||
367 | @@ -1719,6 +1720,7 @@ | |
368 | ||
369 | HASH_INSERT(lock_t, hash, lock_sys->rec_hash, | |
370 | lock_rec_fold(space, page_no), lock); | |
371 | + lock_sys->rec_num++; | |
372 | if (UNIV_UNLIKELY(type_mode & LOCK_WAIT)) { | |
373 | ||
374 | lock_set_lock_and_trx_wait(lock, trx); | |
375 | @@ -2265,6 +2267,7 @@ | |
376 | ||
377 | HASH_DELETE(lock_t, hash, lock_sys->rec_hash, | |
378 | lock_rec_fold(space, page_no), in_lock); | |
379 | + lock_sys->rec_num--; | |
380 | ||
381 | UT_LIST_REMOVE(trx_locks, trx->trx_locks, in_lock); | |
382 | ||
383 | @@ -2308,6 +2311,7 @@ | |
384 | ||
385 | HASH_DELETE(lock_t, hash, lock_sys->rec_hash, | |
386 | lock_rec_fold(space, page_no), in_lock); | |
387 | + lock_sys->rec_num--; | |
388 | ||
389 | UT_LIST_REMOVE(trx_locks, trx->trx_locks, in_lock); | |
390 | } | |
391 | diff -ruN a/storage/innobase/srv/srv0srv.c b/storage/innobase/srv/srv0srv.c | |
392 | --- a/storage/innobase/srv/srv0srv.c 2011-01-21 19:53:42.390637840 +0900 | |
393 | +++ b/storage/innobase/srv/srv0srv.c 2011-01-21 19:54:44.673637084 +0900 | |
11822e22 | 394 | @@ -2269,12 +2269,49 @@ |
b4e1fa2c AM |
395 | ulint LRU_len; |
396 | ulint free_len; | |
397 | ulint flush_list_len; | |
398 | + ulint mem_adaptive_hash, mem_dictionary; | |
399 | + read_view_t* oldest_view; | |
400 | + ulint i; | |
401 | ||
402 | buf_get_total_stat(&stat); | |
403 | buf_get_total_list_len(&LRU_len, &free_len, &flush_list_len); | |
404 | ||
405 | + if (btr_search_sys && btr_search_sys->hash_index[0]->heap) { | |
406 | + mem_adaptive_hash = mem_heap_get_size(btr_search_sys->hash_index[0]->heap); | |
407 | + } else { | |
408 | + mem_adaptive_hash = 0; | |
409 | + for (i=0; i < btr_search_sys->hash_index[0]->n_mutexes; i++) { | |
410 | + mem_adaptive_hash += mem_heap_get_size(btr_search_sys->hash_index[0]->heaps[i]); | |
411 | + } | |
412 | + } | |
413 | + mem_adaptive_hash *= btr_search_index_num; | |
414 | + if (btr_search_sys) { | |
415 | + mem_adaptive_hash += (btr_search_sys->hash_index[0]->n_cells * btr_search_index_num * sizeof(hash_cell_t)); | |
416 | + } | |
417 | + | |
418 | + mem_dictionary = (dict_sys ? ((dict_sys->table_hash->n_cells | |
419 | + + dict_sys->table_id_hash->n_cells | |
420 | + ) * sizeof(hash_cell_t) | |
421 | + + dict_sys->size) : 0); | |
422 | + | |
423 | mutex_enter(&srv_innodb_monitor_mutex); | |
424 | ||
425 | + export_vars.innodb_adaptive_hash_cells = 0; | |
426 | + export_vars.innodb_adaptive_hash_heap_buffers = 0; | |
427 | + for (i = 0; i < btr_search_index_num; i++) { | |
428 | + hash_table_t* table = btr_search_get_hash_index((index_id_t)i); | |
429 | + | |
430 | + export_vars.innodb_adaptive_hash_cells | |
431 | + += hash_get_n_cells(table); | |
432 | + export_vars.innodb_adaptive_hash_heap_buffers | |
433 | + += (UT_LIST_GET_LEN(table->heap->base) - 1); | |
434 | + } | |
435 | + export_vars.innodb_adaptive_hash_hash_searches | |
436 | + = btr_cur_n_sea; | |
437 | + export_vars.innodb_adaptive_hash_non_hash_searches | |
438 | + = btr_cur_n_non_sea; | |
439 | + export_vars.innodb_background_log_sync | |
440 | + = srv_log_writes_and_flush; | |
441 | export_vars.innodb_data_pending_reads | |
442 | = os_n_pending_reads; | |
443 | export_vars.innodb_data_pending_writes | |
11822e22 | 444 | @@ -2311,6 +2348,92 @@ |
b4e1fa2c AM |
445 | |
446 | export_vars.innodb_buffer_pool_pages_misc | |
447 | = buf_pool_get_n_pages() - LRU_len - free_len; | |
448 | + | |
449 | + export_vars.innodb_buffer_pool_pages_made_young | |
450 | + = stat.n_pages_made_young; | |
451 | + export_vars.innodb_buffer_pool_pages_made_not_young | |
452 | + = stat.n_pages_not_made_young; | |
453 | + export_vars.innodb_buffer_pool_pages_old = 0; | |
454 | + for (i = 0; i < srv_buf_pool_instances; i++) { | |
455 | + buf_pool_t* buf_pool = buf_pool_from_array(i); | |
456 | + export_vars.innodb_buffer_pool_pages_old | |
457 | + += buf_pool->LRU_old_len; | |
458 | + } | |
459 | + export_vars.innodb_checkpoint_age | |
460 | + = (log_sys->lsn - log_sys->last_checkpoint_lsn); | |
461 | + export_vars.innodb_checkpoint_max_age | |
462 | + = log_sys->max_checkpoint_age; | |
463 | + export_vars.innodb_checkpoint_target_age | |
464 | + = srv_checkpoint_age_target | |
465 | + ? ut_min(log_sys->max_checkpoint_age_async, srv_checkpoint_age_target) | |
466 | + : log_sys->max_checkpoint_age_async; | |
467 | + export_vars.innodb_history_list_length | |
468 | + = trx_sys->rseg_history_len; | |
d8778560 AM |
469 | + ibuf_export_ibuf_status( |
470 | + &export_vars.innodb_ibuf_size, | |
471 | + &export_vars.innodb_ibuf_free_list, | |
472 | + &export_vars.innodb_ibuf_segment_size, | |
473 | + &export_vars.innodb_ibuf_merges, | |
474 | + &export_vars.innodb_ibuf_merged_inserts, | |
475 | + &export_vars.innodb_ibuf_merged_delete_marks, | |
476 | + &export_vars.innodb_ibuf_merged_deletes, | |
477 | + &export_vars.innodb_ibuf_discarded_inserts, | |
478 | + &export_vars.innodb_ibuf_discarded_delete_marks, | |
479 | + &export_vars.innodb_ibuf_discarded_deletes); | |
b4e1fa2c AM |
480 | + export_vars.innodb_lsn_current |
481 | + = log_sys->lsn; | |
482 | + export_vars.innodb_lsn_flushed | |
483 | + = log_sys->flushed_to_disk_lsn; | |
484 | + export_vars.innodb_lsn_last_checkpoint | |
485 | + = log_sys->last_checkpoint_lsn; | |
486 | + export_vars.innodb_master_thread_1_second_loops | |
487 | + = srv_main_1_second_loops; | |
488 | + export_vars.innodb_master_thread_10_second_loops | |
489 | + = srv_main_10_second_loops; | |
490 | + export_vars.innodb_master_thread_background_loops | |
491 | + = srv_main_background_loops; | |
492 | + export_vars.innodb_master_thread_main_flush_loops | |
493 | + = srv_main_flush_loops; | |
494 | + export_vars.innodb_master_thread_sleeps | |
495 | + = srv_main_sleeps; | |
496 | + export_vars.innodb_max_trx_id | |
497 | + = trx_sys->max_trx_id; | |
498 | + export_vars.innodb_mem_adaptive_hash | |
499 | + = mem_adaptive_hash; | |
500 | + export_vars.innodb_mem_dictionary | |
501 | + = mem_dictionary; | |
502 | + export_vars.innodb_mem_total | |
503 | + = ut_total_allocated_memory; | |
504 | + export_vars.innodb_mutex_os_waits | |
505 | + = mutex_os_wait_count; | |
506 | + export_vars.innodb_mutex_spin_rounds | |
507 | + = mutex_spin_round_count; | |
508 | + export_vars.innodb_mutex_spin_waits | |
509 | + = mutex_spin_wait_count; | |
510 | + export_vars.innodb_s_lock_os_waits | |
511 | + = rw_s_os_wait_count; | |
512 | + export_vars.innodb_s_lock_spin_rounds | |
513 | + = rw_s_spin_round_count; | |
514 | + export_vars.innodb_s_lock_spin_waits | |
515 | + = rw_s_spin_wait_count; | |
516 | + export_vars.innodb_x_lock_os_waits | |
517 | + = rw_x_os_wait_count; | |
518 | + export_vars.innodb_x_lock_spin_rounds | |
519 | + = rw_x_spin_round_count; | |
520 | + export_vars.innodb_x_lock_spin_waits | |
521 | + = rw_x_spin_wait_count; | |
522 | + | |
523 | + oldest_view = UT_LIST_GET_LAST(trx_sys->view_list); | |
524 | + export_vars.innodb_oldest_view_low_limit_trx_id | |
525 | + = oldest_view ? oldest_view->low_limit_id : 0; | |
526 | + | |
527 | + export_vars.innodb_purge_trx_id | |
528 | + = purge_sys->purge_trx_no; | |
529 | + export_vars.innodb_purge_undo_no | |
530 | + = purge_sys->purge_undo_no; | |
a9ee80b9 | 531 | + export_vars.innodb_current_row_locks |
b4e1fa2c AM |
532 | + = lock_sys->rec_num; |
533 | + | |
534 | #ifdef HAVE_ATOMIC_BUILTINS | |
535 | export_vars.innodb_have_atomic_builtins = 1; | |
536 | #else | |
537 | diff -ruN a/storage/innobase/sync/sync0sync.c b/storage/innobase/sync/sync0sync.c | |
538 | --- a/storage/innobase/sync/sync0sync.c 2011-01-21 19:53:03.458637954 +0900 | |
539 | +++ b/storage/innobase/sync/sync0sync.c 2011-01-21 19:54:44.676637686 +0900 | |
540 | @@ -170,13 +170,13 @@ | |
541 | ||
542 | /** The number of iterations in the mutex_spin_wait() spin loop. | |
543 | Intended for performance monitoring. */ | |
544 | -static ib_int64_t mutex_spin_round_count = 0; | |
545 | +UNIV_INTERN ib_int64_t mutex_spin_round_count = 0; | |
546 | /** The number of mutex_spin_wait() calls. Intended for | |
547 | performance monitoring. */ | |
548 | -static ib_int64_t mutex_spin_wait_count = 0; | |
549 | +UNIV_INTERN ib_int64_t mutex_spin_wait_count = 0; | |
550 | /** The number of OS waits in mutex_spin_wait(). Intended for | |
551 | performance monitoring. */ | |
552 | -static ib_int64_t mutex_os_wait_count = 0; | |
553 | +UNIV_INTERN ib_int64_t mutex_os_wait_count = 0; | |
554 | /** The number of mutex_exit() calls. Intended for performance | |
555 | monitoring. */ | |
556 | UNIV_INTERN ib_int64_t mutex_exit_count = 0; |