Enhance debugger statistics/memory command.

Debugger: Enhanced the Statistics/Memory command to emit the total (maximum) memory used during execution, as well as the maximum memory consumed by each of the various object types. (Valery Podrezov)
This commit is contained in:
rmoore1 2006-12-14 21:46:45 +00:00
parent 4e7699310f
commit 9c61624ce5
7 changed files with 63 additions and 29 deletions

View File

@ -1,7 +1,7 @@
/*******************************************************************************
*
* Module Name: dbexec - debugger control method execution
* $Revision: 1.79 $
* $Revision: 1.80 $
*
******************************************************************************/
@ -153,12 +153,6 @@ AcpiDbExecutionWalk (
void *Context,
void **ReturnValue);
#ifdef ACPI_DBG_TRACK_ALLOCATIONS
static UINT32
AcpiDbGetCacheInfo (
ACPI_MEMORY_LIST *Cache);
#endif
/*******************************************************************************
*
@ -283,7 +277,7 @@ AcpiDbExecuteSetup (
#ifdef ACPI_DBG_TRACK_ALLOCATIONS
static UINT32
UINT32
AcpiDbGetCacheInfo (
ACPI_MEMORY_LIST *Cache)
{

View File

@ -1,7 +1,7 @@
/*******************************************************************************
*
* Module Name: dbstats - Generation and display of ACPI table statistics
* $Revision: 1.84 $
* $Revision: 1.85 $
*
******************************************************************************/
@ -190,7 +190,6 @@ AcpiDbListInfo (
{
#ifdef ACPI_DBG_TRACK_ALLOCATIONS
UINT32 Outstanding;
UINT32 Temp;
#endif
AcpiOsPrintf ("\n%s\n", List->ListName);
@ -200,7 +199,7 @@ AcpiDbListInfo (
if (List->MaxDepth > 0)
{
AcpiOsPrintf (
" Cache: [Depth Max Avail Size] % 7d % 7d % 7d % 7d B\n",
" Cache: [Depth MaxD Avail Size] %8.2X %8.2X %8.2X %8.2X B\n",
List->CurrentDepth,
List->MaxDepth,
List->MaxDepth - List->CurrentDepth,
@ -211,31 +210,36 @@ AcpiDbListInfo (
if (List->MaxDepth > 0)
{
AcpiOsPrintf (
" Cache: [Requests Hits Misses ObjSize] % 7d % 7d % 7d % 7d B\n",
" Cache: [Requests Hits Misses ObjSize] %8.2X %8.2X %8.2X %8.2X B\n",
List->Requests,
List->Hits,
List->Requests - List->Hits,
List->ObjectSize);
}
Outstanding = List->TotalAllocated -
List->TotalFreed -
List->CurrentDepth;
Outstanding = AcpiDbGetCacheInfo (List);
if (List->ObjectSize)
{
Temp = ACPI_ROUND_UP_TO_1K (Outstanding * List->ObjectSize);
AcpiOsPrintf (
" Mem: [Alloc Free Max CurSize Outstanding] %8.2X %8.2X %8.2X %8.2X Kb %8.2X\n",
List->TotalAllocated,
List->TotalFreed,
List->MaxOccupied,
ACPI_ROUND_UP_TO_1K (Outstanding * List->ObjectSize),
Outstanding);
}
else
{
Temp = ACPI_ROUND_UP_TO_1K (List->CurrentTotalSize);
AcpiOsPrintf (
" Mem: [Alloc Free Max CurSize Outstanding Total] %8.2X %8.2X %8.2X Kb %8.2X Kb %8.2X %8.2X Kb\n",
List->TotalAllocated,
List->TotalFreed,
ACPI_ROUND_UP_TO_1K (List->MaxOccupied),
ACPI_ROUND_UP_TO_1K (List->CurrentTotalSize),
Outstanding,
ACPI_ROUND_UP_TO_1K (List->TotalSize));
}
AcpiOsPrintf (
" Mem: [Alloc Free Outstanding Size] % 7d % 7d % 7d % 7d Kb\n",
List->TotalAllocated,
List->TotalFreed,
Outstanding, Temp);
#endif
}
#endif
@ -518,7 +522,7 @@ AcpiDbDisplayStatistics (
case CMD_STAT_MEMORY:
#ifdef ACPI_DBG_TRACK_ALLOCATIONS
AcpiOsPrintf ("\n----Object and Cache Statistics---------------------------------------------\n");
AcpiOsPrintf ("\n----Object and Cache Statistics (all in hex)---------\n");
AcpiDbListInfo (AcpiGbl_GlobalList);
AcpiDbListInfo (AcpiGbl_NsNodeList);

View File

@ -1,7 +1,7 @@
/*******************************************************************************
*
* Module Name: nsalloc - Namespace allocation and deletion utilities
* $Revision: 1.106 $
* $Revision: 1.107 $
*
******************************************************************************/
@ -142,6 +142,9 @@ AcpiNsCreateNode (
UINT32 Name)
{
ACPI_NAMESPACE_NODE *Node;
#ifdef ACPI_DBG_TRACK_ALLOCATIONS
UINT32 Temp;
#endif
ACPI_FUNCTION_TRACE (NsCreateNode);
@ -155,6 +158,14 @@ AcpiNsCreateNode (
ACPI_MEM_TRACKING (AcpiGbl_NsNodeList->TotalAllocated++);
#ifdef ACPI_DBG_TRACK_ALLOCATIONS
Temp = AcpiGbl_NsNodeList->TotalAllocated - AcpiGbl_NsNodeList->TotalFreed;
if (Temp > AcpiGbl_NsNodeList->MaxOccupied)
{
AcpiGbl_NsNodeList->MaxOccupied = Temp;
}
#endif
Node->Name.Integer = Name;
ACPI_SET_DESCRIPTOR_TYPE (Node, ACPI_DESC_TYPE_NAMED);
return_PTR (Node);

View File

@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: utcache - local cache allocation routines
* $Revision: 1.6 $
* $Revision: 1.7 $
*
*****************************************************************************/
@ -396,6 +396,13 @@ AcpiOsAcquireObject (
ACPI_MEM_TRACKING (Cache->TotalAllocated++);
#ifdef ACPI_DBG_TRACK_ALLOCATIONS
if ((Cache->TotalAllocated - Cache->TotalFreed) > Cache->MaxOccupied)
{
Cache->MaxOccupied = Cache->TotalAllocated - Cache->TotalFreed;
}
#endif
/* Avoid deadlock with ACPI_ALLOCATE_ZEROED */
Status = AcpiUtReleaseMutex (ACPI_MTX_CACHES);

View File

@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: uttrack - Memory allocation tracking routines (debug only)
* $Revision: 1.3 $
* $Revision: 1.4 $
*
*****************************************************************************/
@ -238,7 +238,12 @@ AcpiUtAllocateAndTrack (
}
AcpiGbl_GlobalList->TotalAllocated++;
AcpiGbl_GlobalList->TotalSize += (UINT32) Size;
AcpiGbl_GlobalList->CurrentTotalSize += (UINT32) Size;
if (AcpiGbl_GlobalList->CurrentTotalSize > AcpiGbl_GlobalList->MaxOccupied)
{
AcpiGbl_GlobalList->MaxOccupied = AcpiGbl_GlobalList->CurrentTotalSize;
}
return ((void *) &Allocation->UserSpace);
}
@ -290,7 +295,12 @@ AcpiUtAllocateZeroedAndTrack (
}
AcpiGbl_GlobalList->TotalAllocated++;
AcpiGbl_GlobalList->TotalSize += (UINT32) Size;
AcpiGbl_GlobalList->CurrentTotalSize += (UINT32) Size;
if (AcpiGbl_GlobalList->CurrentTotalSize > AcpiGbl_GlobalList->MaxOccupied)
{
AcpiGbl_GlobalList->MaxOccupied = AcpiGbl_GlobalList->CurrentTotalSize;
}
return ((void *) &Allocation->UserSpace);
}

View File

@ -1,7 +1,7 @@
/******************************************************************************
*
* Name: acdebug.h - ACPI/AML debugger
* $Revision: 1.82 $
* $Revision: 1.83 $
*
*****************************************************************************/
@ -323,6 +323,12 @@ AcpiDbCreateExecutionThreads (
char *NumLoopsArg,
char *MethodNameArg);
#ifdef ACPI_DBG_TRACK_ALLOCATIONS
UINT32
AcpiDbGetCacheInfo (
ACPI_MEMORY_LIST *Cache);
#endif
/*
* dbfileio - Debugger file I/O commands

View File

@ -1,7 +1,7 @@
/******************************************************************************
*
* Name: aclocal.h - Internal data types used across the ACPI subsystem
* $Revision: 1.243 $
* $Revision: 1.244 $
*
*****************************************************************************/
@ -1188,6 +1188,8 @@ typedef struct acpi_memory_list
UINT32 TotalAllocated;
UINT32 TotalFreed;
UINT32 MaxOccupied;
UINT32 TotalSize;
UINT32 CurrentTotalSize;
UINT32 Requests;
UINT32 Hits;