mirror of
https://github.com/acpica/acpica/
synced 2025-03-17 11:42:52 +03:00
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:
parent
4e7699310f
commit
9c61624ce5
@ -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)
|
||||
{
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user