mirror of
https://github.com/reactos/reactos.git
synced 2025-05-07 02:41:22 +00:00
[NTOS:MM] Use a define for the big pool table occupation rate
This commit is contained in:
parent
8494688eeb
commit
4ff5d39edb
1 changed files with 12 additions and 2 deletions
|
@ -22,6 +22,16 @@
|
||||||
|
|
||||||
#define POOL_BIG_TABLE_ENTRY_FREE 0x1
|
#define POOL_BIG_TABLE_ENTRY_FREE 0x1
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This defines when we shrink or expand the table.
|
||||||
|
* 3 --> keep the number of used entries in the 33%-66% of the table capacity.
|
||||||
|
* 4 --> 25% - 75%
|
||||||
|
* etc.
|
||||||
|
*/
|
||||||
|
#define POOL_BIG_TABLE_USE_RATE 4
|
||||||
|
#define POOL_BIG_TABLE_LOW_THRESHOLD (POOL_BIG_TABLE_USE_RATE * 2)
|
||||||
|
#define POOL_BIG_TABLE_HIGH_THRESHOLD ((POOL_BIG_TABLE_USE_RATE - 1) / POOL_BIG_TABLE_USE_RATE)
|
||||||
|
|
||||||
typedef struct _POOL_DPC_CONTEXT
|
typedef struct _POOL_DPC_CONTEXT
|
||||||
{
|
{
|
||||||
PPOOL_TRACKER_TABLE PoolTrackTable;
|
PPOOL_TRACKER_TABLE PoolTrackTable;
|
||||||
|
@ -1626,7 +1636,7 @@ Retry:
|
||||||
// which implies a massive number of concurrent big pool allocations.
|
// which implies a massive number of concurrent big pool allocations.
|
||||||
//
|
//
|
||||||
ExpPoolBigEntriesInUse++;
|
ExpPoolBigEntriesInUse++;
|
||||||
if ((i >= 16) && (ExpPoolBigEntriesInUse > (TableSize * 3 / 4)))
|
if ((i >= 16) && (ExpPoolBigEntriesInUse > (TableSize * POOL_BIG_TABLE_HIGH_THRESHOLD)))
|
||||||
{
|
{
|
||||||
DPRINT("Attempting expansion since we now have %lu entries\n",
|
DPRINT("Attempting expansion since we now have %lu entries\n",
|
||||||
ExpPoolBigEntriesInUse);
|
ExpPoolBigEntriesInUse);
|
||||||
|
@ -1740,7 +1750,7 @@ ExpFindAndRemoveTagBigPages(IN PVOID Va,
|
||||||
|
|
||||||
/* If reaching 12.5% of the size (or whatever integer rounding gets us to),
|
/* If reaching 12.5% of the size (or whatever integer rounding gets us to),
|
||||||
* halve the allocation size, which will get us to 25% of space used. */
|
* halve the allocation size, which will get us to 25% of space used. */
|
||||||
if (ExpPoolBigEntriesInUse < (PoolBigPageTableSize / 8))
|
if (ExpPoolBigEntriesInUse < (PoolBigPageTableSize / POOL_BIG_TABLE_LOW_THRESHOLD))
|
||||||
{
|
{
|
||||||
/* Shrink the table. */
|
/* Shrink the table. */
|
||||||
ExpReallocateBigPageTable(OldIrql, TRUE);
|
ExpReallocateBigPageTable(OldIrql, TRUE);
|
||||||
|
|
Loading…
Reference in a new issue