主权项 |
1. A method of processing read I/O requests in a computer system having applications running therein, the applications including virtual memory pages mapped to machine memory pages, the method comprising:
maintaining a tracking data structure for a first group of machine memory pages, each having at least two virtual memory pages mapped thereto, and a second group of machine memory pages, each having only one virtual memory page mapped thereto, the tracking data structure indicating, for each of said machine memory pages, a corresponding location in a storage volume from which its contents were read or are being read; receiving a read request; identifying a first location of the storage volume indicated in the read request; calculating, using the tracking data structure, a likelihood that the first location of the storage volume will be shared; determining that the likelihood exceeds a threshold value; based on the determination that the likelihood exceeds the threshold value;
determining, using the tracking data structure, that a machine memory page in the first group or the second group contains or will contain data stored in the first location of the storage volume indicated in the read request;based on the determination that a machine memory page in the first group or the second group contains or will contain data stored in a location of the storage volume indicated in the read request, determining not to process the read request; andbased on the determination to not process the read request, mapping a virtual memory page associated with the read request to the machine memory page; and in response to a first memory write request, copying the contents of a machine memory page in the first group to a first machine memory page, and mapping a virtual memory page associated with the first memory write request to the first machine memory page; and in response to a second memory write request, copying the contents of a machine memory page in the second group to a second machine memory page, and mapping a virtual memory page associated with the second memory write request to the second machine memory page. |