×

Multi-level buffer pool extensions

  • US 9,235,531 B2
  • Filed: 11/28/2011
  • Issued: 01/12/2016
  • Est. Priority Date: 03/04/2010
  • Status: Active Grant
First Claim
Patent Images

1. A computer program product comprising one or more computer-storage devices, excluding propagation signals, which store computer-executable instructions that, when executed by one or more processors of a computing system, cause the computing system to implement a method for using a buffer pool to manage blocks of memory among a first level memory, a second level memory, and a lower level of external memory, and where the computer-implemented method comprises acts of:

  • retrieving from an external memory blocks of memory comprised of data pages, and caching at least some of said data pages in a first level memory of a buffer pool, and caching at least some other data pages in a second level memory of the buffer pool, the first level memory providing faster average access speeds for data retrieval than the second level memory, and the second level memory providing faster average access speeds for data retrieval than the external memory;

    determining at least first and second threshold values, the first threshold value defining a value which determines when a data page is to be evicted from the first level memory of the buffer pool to the second level memory of the buffer pool, and the second threshold value defining a value which determines when a data page is to be evicted from the second level memory of the buffer pool;

    periodically scanning all data pages cached in the first and second levels of memory of the buffer pool and assigning a value to each scanned data page based on usage history of each scanned page as of the time scanned;

    periodically comparing the assigned value of each said cached data page to the first and second threshold values;

    scheduling for eviction cached data pages from the first level memory of the buffer pool to the second level memory of the buffer pool for those cached data pages not having an assigned value above said first threshold level;

    scheduling for eviction cached data pages from the second level memory of the buffer pool to a lower level memory for those cached data pages not having an assigned value above said second threshold level;

    determining if a data page scheduled for eviction is dirty because the page has been altered prior to eviction, and if so, scheduling a write operation for writing the dirty data page to external memory prior to unhashing a buffer descriptor and freeing a page frame for the dirty data page so that the dirty page is then evicted;

    for each data page scheduled for eviction that is dirty, writing the dirty page to external memory and after the scheduled write operation has been completed, evicting the dirty page from the first or second level of memory of the buffer pool based on the assigned value for the evicted dirty page as compared to the first and second threshold values; and

    for each data page scheduled for eviction that is not dirty, unhashing a buffer descriptor and freeing a page frame for each said data page that is not dirty, and evicting each such data page from the first or second level of memory of the buffer pool based on the assigned value of the evicted page that is not dirty, as compared to the first and second threshold values.

View all claims
  • 2 Assignments
Timeline View
Assignment View
    ×
    ×