System for maintaining a buffer pool
AssigneeOracle International Corporation
InventorsAlbert A. Hopeman, James E. Carey, Bruce F. Golbus
Life of this patent
Estimating the term…
Loading patent…
AssigneeOracle International Corporation
InventorsAlbert A. Hopeman, James E. Carey, Bruce F. Golbus
Estimating the term…
In a multi-threaded computing environment, a shared cache system reduces the amount of redundant information stored in memory. A cache memory area provides both global readable data and private writable data to processing threads. A particular processing thread accesses data by first checking its private views of modified data and then its global views of read-only data. Uncached data is read into a cache buffer for global access. If write access is required by the processing thread, the data is copied into a new cache buffer, which is assigned to the processing thread's private view. The particular shared cache system supports generational views of data. The system is particularly useful in on-line analytical processing of multi-dimensional databases. In one embodiment, a dedicated collector reclaims cache memory blocks for the processing threads. By utilizing a dedicated collector thread, any processing penalty encountered during the reclamation process is absorbed by the dedicated collector. Thus the user session threads continue to operate normally, making the reclaiming of cache memory blocks by the dedicated collector task thread transparent to the user session threads. In an alternative embodiment, the process for reclaiming page buffers is distributed amongst user processes sharing the shared memory. Each of the user processes includes a user thread collector for reclaiming a page buffer as needed and multiple user processes can concurrently reclaim page buffers.
A method for managing a cache memory area comprising:
In a computer, an apparatus for managing a cache memory area, comprising:
An article of manufacture comprising:
In a computer, a method of managing a cache memory area having a plurality of cache memory blocks, comprising:
An apparatus for managing a cache memory area having a plurality of cache memory blocks in a computer, comprising:
An article of manufacture comprising:
Dependencies are inferred from the claim text.
Drawings are temporarily unavailable. Open the PDF at USPTO
From the US filing history. Foreign family members aren’t listed.
Backward citations are indexed for grants only.
Multiuser, multiprocessor or multiprocessing cache systems: with a shared cache
Multiuser, multiprocessor or multiprocessing cache systems: for multiprocessing or multitasking
Replacement control: using replacement algorithms
User address space allocation, e.g. contiguous or non contiguous base addressing: free address space management
Term end not estimated
A multi-threaded large scale computer system, such as a database management system (“DBMS”), supports a number of different users concurrently. In a multi-threaded computer system there is only one execution of the software; that is, only one process. From the one process, a user thread is created for each user. All the user threads share the same process memory space, because they are part of the same process.
A cache is a storage area operating between a processor and another, slower storage area (such as a disk). Although, other schemes may exist, typical cache memory is evenly divided into a fixed number of finitely sized cache memory blocks, called a page. The cached data includes pages which have stored therein currently executing instructions and currently referenced data. The page stored in each cache memory block is typically controlled and managed through control blocks, there being a correspondence between a control block and a cache memory block. If a user thread references an instruction or data not in memory; then a page fault occurs, which causes the relevant page to be read from disk into the cache. Such an arrangement is typical of cache memory. Problems occur when more pages need to be cached than there are available cache blocks in the cache requiring reclamation of pages.
In accordance with a particular embodiment of the invention, a public memory structure is utilized to store data that is shareable between a plurality of users in a multi-threaded computing environment. In contrast to the prior art, a cache memory area on a server is used to store public, shareable data and private, non-shareable data without using locks to negotiate resource ownership. Consequently, there are public and private pages stored in global memory. The private pages are those that are modifiable by a user and the public pages are those that are only readable by one or more users.
The foregoing and other objects, features and advantages of the system for maintaining a buffer pool will be apparent from the following more particular description of particular embodiments, as illustrated in the accompanying drawings in which like reference characters refer to the same parts throughout the different views. The drawings are not necessarily to scale, emphasis instead being placed upon illustrating the principles of the invention.
FIG. 1 is a schematic block diagram of an on-line analytical processing system embodying the invention;
FIG. 2 is a schematic block diagram of a page management system with a dedicated collector thread;
FIG. 1 is a schematic block diagram of an on-line analytic processing (OLAP) system embodying the invention. A server 1 responds to requests from a plurality of client users 201, 202, . . . , 20n. To satisfy client requests, the server 1 retrieves data from a data storage warehouse 30, which can include various databases, such as relational databases 32, multi-dimensional databases 34 and temporary databases 36 stored on disk.
The server 1 includes at least one central processing unit (CPU) 21, 22, . . . , 2p. The CPUs 2 execute client or user sessions and system management processes to operate on data stored in memory 10, which includes an OLAP engine 12 and a cache memory 18. The OLAP engine 12 includes a kernel 13, a paging manager 15 and a thread manager 17. The user sessions can execute paging manager instructions, including page transfer functions (not shown), to manage pages in memory 10.
The user sessions and system management processes can include processing threads managed by the thread manager 17 in a multi-threaded OLAP engine 12. That is, user sessions can accomplish tasks by asynchronously executing processing threads. Embodiments of the system take the form of computer executable instructions embedded in a computer-readable format on a CD-ROM, floppy or hard disk, or another computer-readable distribution medium. These instructions are executed by one or more CPUs 21, 22, . . . , 2p to implement the OLAP engine 12.