Page pool and cache memory

1

It is subtly mentioned on this article, that the page- and non-page pool, are used for contiguous memory allocations which are sub-page size.

It then goes on to list the differences. I am not sure if this first part is accurate, probably because it is not emphasized enough throughout the article, and because it's not mentioned on any other site.

  1. So my first question is the page pool, the amount of memory that can be paged out that consists of sub page size allocation of memory, and non paged the opposite?
  2. Is this separately measured from normally allocated memory?
  3. Also the cached memory in the image below is that in working memory (ram) or just in virtual memory?

I just found it strange the the commit use is .7 but the cache plus the ram usage is about .9. It this commit (In Use + page and non paged pools), because that would make more sense to me?

page pool and cached memory

rubixibuc

Posted 2012-02-14T22:36:00.243

Reputation: 1 492

Answers

1

So my first question is the page pool, the amount of memory that can be paged out that consists of sub page size allocation of memory, and non paged the opposite?

The paged pool is memory that can be paged out. The non-paged pool is memory that cannot be paged out. The paged pool is used for normal storage, file mappings, and the like. The non-paged pool is used for things that might need to be accessed from a protected context, like data associated with I/O operations in progress.

Is this separately measured from normally allocated memory?

I'm not quite sure I follow this question. Windows has historically had a pretty tight limit on the size of the non-paged pool. But the "pools" aren't really reserved specific chunks of memory but more reserved amounts of memory.

Also the cached memory in the image below is that in working memory (ram) or just in virtual memory?

The cached memory you are seeing is physical RAM that contains data that can safely be discarded. This generally means pages of physical RAM that contain file data. (It can include things like a pool of pre-zeroed pages.)

David Schwartz

Posted 2012-02-14T22:36:00.243

Reputation: 58 310

If the paged pool represent all memory (memory that can be paged out + memory that cannot be page) why are those variables so comparably low to the total amount of memory used? Am I misunderstanding this? Is the non paged pool similar to wired memory in OSX. – rubixibuc – 2012-02-15T03:24:06.480

1Windows only counts pageable system allocations under the paged pool. So that would include things like pageable driver files or other files mapped into memory by kernel drivers, registry cache, and so on. Things allocated directly by processes are not counted. – David Schwartz – 2012-02-15T03:35:27.607

So whether it's in non or page pool, it only represents memory allocated in kernel space? Also is the paged pool, completely in physical memory or is it in virtual memory (can be either)? – rubixibuc – 2012-02-15T03:47:20.883

2@rubixibuc, the kernel maintains two different heaps for its private allocations. One can be paged, the other can not. All memory is virtual, the difference is whether or not it must be backed by physical ram at all times, or can sometimes be paged out. – psusi – 2012-02-15T04:12:26.090