INtime SDK Help
MPOOL_STATS structure

The structure used to return statistics about a heap or mpool.

typedef struct
{
  DWORD blk_size;          // basic allocation size
  DWORD page_size;         // round up to this 
  DWORD max_pool_size;     // maximum pool size in bytes,  0 == no limit
  DWORD pages_alloced;     // current pages allocated 
  DWORD pages_highwater;   // allocated pages high water mark
  QWORD ttl_blk_alloc_ops; // ttl number of block allocation operations
  QWORD ttl_blk_free_ops;  // ttl number of block free operations
 
  DWORD ttl_bytes_alloced;  // total bytes in use via alloc ops
  DWORD alloced_buffers;    // number of buffers currently allocated
 
  QWORD ttl_alloc_ops;      // total number of alloc operations
  QWORD ttl_free_ops;       // total number of free operations
  QWORD ttl_alloc_failures; // ttl number of allocs returning NULL
  QWORD ttl_consolidations_fore; // ttl number of buffer consolidations on free with fore buffer
  QWORD ttl_consolidations_back; // ttl number of buffer consolidations on free with back buffer
 
  QWORD ttl_realloc_ops;               // total realloc operations
  QWORD ttl_realloc_expand;            // ttl buffer expansions
  QWORD ttl_realloc_contract;          // ttl buffer contractions
  QWORD ttl_realloc_expand_failures;   // total failues to expand in place
  QWORD ttl_realloc_contract_failures; // total failures to contract in place
  QWORD ttl_realloc_alloc_failures;    // failure of alloc 
  QWORD ttl_realloc_alloc_fallback;    // can't do in place, fallback to alloc 
 
  DWORD ttl_data_blks;      // total data blocks
  DWORD ttl_free_blks;      // total free blocks
  DWORD ttl_free_frags;     // total free fragments
 
  DWORD free_blk_largest;   // largest block on free list
  DWORD free_blk_smallest;  // smallest block on free list
  DWORD free_frag_largest;  // largest fragment on free list
  DWORD free_frag_smallest; // smallest fragment on free list
  DWORD data_blk_largest;   // largest alloc block 
  DWORD data_blk_smallest;  // smallest alloc block 
  DWORD alloced_largest;    // largest allocated buffer
  DWORD alloced_smallest;   // smallest allocated buffer
 
  // fragment free list - fragments not in use
  DWORD ffl_bucket_huge;    // fragments larger than 4k
  DWORD ffl_bucket_4k;      // 4K bucket
  DWORD ffl_bucket_2k;      // >= 2K bucket
  DWORD ffl_bucket_1k;      // >= 1K bucket
  DWORD ffl_bucket_512;     // >= 512 byte bucket
  DWORD ffl_bucket_256;     // >= 256 byte bucket
  DWORD ffl_bucket_128;     // >= 128 byte bucket
  DWORD ffl_bucket_64;      // >= 64 byte bucket
  DWORD ffl_bucket_32;      // >= 32 byte bucket
  DWORD ffl_bucket_16;      // >= 16 byte bucket
  DWORD ffl_bucket_8;       // >= 8 byte bucket
  DWORD ffl_bucket_4;       // >= 4   byte bucket
 
  // fragment allocation list - fragments in use
  DWORD fal_bucket_huge;    // fragments larger than 4k
  DWORD fal_bucket_4k;      // 4K bucket
  DWORD fal_bucket_2k;      // >= 2K bucket
  DWORD fal_bucket_1k;      // >= 1K bucket
  DWORD fal_bucket_512;     // >= 512 byte bucket
  DWORD fal_bucket_256;     // >= 256 byte bucket
  DWORD fal_bucket_128;     // >= 128 byte bucket
  DWORD fal_bucket_64;      // >= 64 byte bucket
  DWORD fal_bucket_32;      // >= 32 byte bucket
  DWORD fal_bucket_16;      // >= 16 byte bucket
 
  DWORD fal_bucket_8;       // >= 8 byte bucket
  DWORD fal_bucket_4;       // >  4 byte bucket
  DWORD fal_bucket_tiny;    // tiny bucket
 
} MPOOL_STATS;

Remarks

A call to heap_stats_reset/mpool_stats_reset clears the following fields:

ttl_alloc_failures
ttl_alloc_ops
ttl_blk_alloc_ops
ttl_blk_free_ops
ttl_consolidations_back
ttl_consolidations_fore
ttl_free_ops
ttl_realloc_alloc_failures
ttl_realloc_alloc_fallback
ttl_realloc_contract
ttl_realloc_contract_failures
ttl_realloc_expand
ttl_realloc_expand_failures
ttl_realloc_ops 

All other fields are calculated by a call to mpool_stats/heap_stats.

Requirements

Versions Defined in Include Link to
INtime 3.13 intime/rt/include/heap.h rt.h clib.lib
See Also