List:Internals« Previous MessageNext Message »
From:Heikki Tuuri Date:June 17 2004 4:30pm
Subject:bk commit into 4.0 tree (heikki:1.1878)
View as plain text  
Below is the list of changes that have just been committed into a local
4.0 repository of heikki. When heikki does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://www.mysql.com/doc/I/n/Installing_source_tree.html

ChangeSet
  1.1878 04/06/17 17:30:33 heikki@stripped +2 -0
  mem0dbg.h, mem0dbg.c:
    Put back mem_print_info() functions that are used to analyze memory leaks; Marko
removed them by accident in his Feb 20th, 2004 patch; these functions are very important
for debugging, and should always be kept in the source code base

  innobase/include/mem0dbg.h
    1.6 04/06/17 17:30:24 heikki@stripped +13 -0
    Put back mem_print_info() functions that are used to analyze memory leaks; Marko
removed them by accident in his Feb 20th, 2004 patch; these functions are very important
for debugging, and should always be kept in the source code base

  innobase/mem/mem0dbg.c
    1.14 04/06/17 17:30:16 heikki@stripped +125 -0
    Put back mem_print_info() functions that are used to analyze memory leaks; Marko
removed them by accident in his Feb 20th, 2004 patch; these functions are very important
for debugging, and should always be kept in the source code base

# This is a BitKeeper patch.  What follows are the unified diffs for the
# set of deltas contained in the patch.  The rest of the patch, the part
# that BitKeeper cares about, is below these diffs.
# User:	heikki
# Host:	hundin.mysql.fi
# Root:	/home/heikki/mysql-4.0

--- 1.5/innobase/include/mem0dbg.h	Wed Jun 16 13:09:28 2004
+++ 1.6/innobase/include/mem0dbg.h	Thu Jun 17 17:30:24 2004
@@ -116,4 +116,17 @@
 mem_analyze_corruption(
 /*===================*/
 	byte*	ptr);	/* in: pointer to place of possible corruption */
+/*********************************************************************
+Prints information of dynamic memory usage and currently allocated memory
+heaps or buffers. Can only be used in the debug version. */
 
+void
+mem_print_info(void);
+/*================*/
+/*********************************************************************
+Prints information of dynamic memory usage and currently allocated memory
+heaps or buffers since the last ..._print_info or..._print_new_info. */
+
+void
+mem_print_new_info(void);
+/*====================*/

--- 1.13/innobase/mem/mem0dbg.c	Wed Jun 16 13:09:28 2004
+++ 1.14/innobase/mem/mem0dbg.c	Thu Jun 17 17:30:16 2004
@@ -797,3 +797,128 @@
 		dist++;
 	}
 }
+
+/*********************************************************************
+Prints information of dynamic memory usage and currently allocated
+memory heaps or buffers. Can only be used in the debug version. */
+static
+void
+mem_print_info_low(
+/*===============*/
+	ibool	print_all)      /* in: if TRUE, all heaps are printed,
+				else only the heaps allocated after the
+				previous call of this function */	
+{
+#ifdef UNIV_MEM_DEBUG
+	mem_hash_node_t*	node;
+	ulint			n_heaps 		= 0;
+	ulint			allocated_mem;
+	ulint			ph_size;
+	ulint			total_allocated_mem 	= 0;
+	ibool			error;
+	ulint			n_blocks;
+#endif
+	FILE*			outfile;
+	
+	/* outfile = fopen("ibdebug", "a"); */
+
+	outfile = stdout;
+	
+	fprintf(outfile, "\n");	
+	fprintf(outfile,
+		"________________________________________________________\n");
+	fprintf(outfile, "MEMORY ALLOCATION INFORMATION\n\n");
+
+#ifndef UNIV_MEM_DEBUG
+
+	UT_NOT_USED(print_all);
+
+	mem_pool_print_info(outfile, mem_comm_pool);
+	
+	fprintf(outfile,
+		"Sorry, non-debug version cannot give more memory info\n");
+
+	/* fclose(outfile); */
+	
+	return;
+#else
+	mutex_enter(&mem_hash_mutex);
+	
+	fprintf(outfile, "LIST OF CREATED HEAPS AND ALLOCATED BUFFERS: \n\n");
+
+	if (!print_all) {
+		fprintf(outfile, "AFTER THE LAST PRINT INFO\n");
+	}
+
+	node = UT_LIST_GET_FIRST(mem_all_list_base);
+
+	while (node != NULL) {
+		n_heaps++;
+		
+		if (!print_all && node->nth_heap < mem_last_print_info) {
+
+			goto next_heap;
+		}	
+
+		mem_heap_validate_or_print(node->heap, NULL, 
+				FALSE, &error, &allocated_mem, 
+				&ph_size, &n_blocks);
+		total_allocated_mem += allocated_mem;
+
+		fprintf(outfile,
+ "%lu: file %s line %lu of size %lu phys.size %lu with %lu blocks, type %lu\n",
+				node->nth_heap, node->file_name, node->line, 
+				allocated_mem, ph_size, n_blocks,
+				(node->heap)->type);
+	next_heap:
+		node = UT_LIST_GET_NEXT(all_list, node);
+	}
+	
+	fprintf(outfile, "\n");
+
+	fprintf(outfile, "Current allocated memory	  	: %lu\n", 
+			mem_current_allocated_memory);
+	fprintf(outfile, "Current allocated heaps and buffers	: %lu\n", 
+			n_heaps);
+	fprintf(outfile, "Cumulative allocated memory	  	: %lu\n", 
+			mem_total_allocated_memory);
+	fprintf(outfile, "Maximum allocated memory	  	: %lu\n",
+			mem_max_allocated_memory);
+	fprintf(outfile, "Cumulative created heaps and buffers	: %lu\n", 
+			mem_n_created_heaps);
+	fprintf(outfile, "Cumulative number of allocations	: %lu\n", 
+			mem_n_allocations);
+
+	mem_last_print_info = mem_n_created_heaps;
+
+	mutex_exit(&mem_hash_mutex);
+
+	mem_pool_print_info(outfile, mem_comm_pool);
+	
+/*	mem_validate(); */
+
+/* 	fclose(outfile); */
+#endif
+}
+
+/*********************************************************************
+Prints information of dynamic memory usage and currently allocated memory
+heaps or buffers. Can only be used in the debug version. */
+
+void
+mem_print_info(void)
+/*================*/
+{
+	mem_print_info_low(TRUE);
+}
+
+/*********************************************************************
+Prints information of dynamic memory usage and currently allocated memory
+heaps or buffers since the last ..._print_info or..._print_new_info. */
+
+void
+mem_print_new_info(void)
+/*====================*/
+{
+	mem_print_info_low(FALSE);
+}
Thread
bk commit into 4.0 tree (heikki:1.1878)Heikki Tuuri17 Jun