]> git.pld-linux.org Git - packages/mysql.git/blob - innodb_show_status_extend.patch
2a0ecc7067a06d3a61c0ba035d5003fa97adb1ce
[packages/mysql.git] / innodb_show_status_extend.patch
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
11 @@ -638,6 +638,16 @@
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",
28 @@ -652,8 +662,14 @@
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",
43 @@ -668,6 +684,12 @@
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",
56 @@ -694,12 +716,66 @@
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",
123 @@ -716,8 +792,14 @@
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},
133 +  {"current_row_locks",
134 +  (char*) &export_vars.innodb_current_row_locks,                 SHOW_LONG},
135    {"row_lock_time",
136    (char*) &export_vars.innodb_row_lock_time,             SHOW_LONGLONG},
137    {"row_lock_time_avg",
138 @@ -734,8 +816,20 @@
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  
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 @@ -469,6 +469,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 @@ -438,6 +438,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
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
248 @@ -731,6 +731,11 @@
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 */
260 @@ -748,6 +753,9 @@
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 */
270 @@ -756,13 +764,43 @@
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 */
314 @@ -771,6 +809,8 @@
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
323 @@ -780,11 +820,18 @@
324                                                 / srv_n_lock_wait_count */
325         ulint innodb_row_lock_time_max;         /*!< srv_n_lock_max_wait_time
326                                                 / 1000 */
327 +       ulint innodb_current_row_locks;
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
345 @@ -769,6 +769,10 @@
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
394 @@ -2253,12 +2253,49 @@
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
444 @@ -2295,6 +2332,92 @@
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;
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);
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;
531 +       export_vars.innodb_current_row_locks
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 @@ -171,13 +171,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;
This page took 0.07014 seconds and 2 git commands to generate.