Claims
- 1. In a computer system, a method comprising:
tracing page usage for a plurality of pages; associating a priority value with each traced page based on the traced usage of that page; and prioritizing at least some of the pages that are in memory relative to other pages on another storage based on the priority value associated with each page set.
- 2. The method of claim 1 wherein prioritizing at least some of the pages comprises selecting a page on the other storage based on the priority value associated with the selected page, and loading the selected page to the memory.
- 3. The method of claim 1 wherein prioritizing at least some of the pages comprises selecting a page in memory to transfer to the other storage based on the priority value associated with the selected page.
- 4. The method of claim 1 wherein prioritizing at least some of the pages comprises, selecting a first page on the other storage based on the priority value associated with the first page, selecting a second page in memory to transfer to the other storage based on the priority value associated with the second page, transferring the second page from memory to the other storage and loading the first page from other storage to the memory.
- 5. The method of claim 1 wherein prioritizing at least some of the pages comprises, selecting a set of pages in memory, and compressing the set of pages into a smaller amount of space in the memory.
- 6. The method of claim 1 wherein tracing page usage comprises recording frequency of page usage data.
- 7. The method of claim 1 wherein tracing page usage comprises recording time data corresponding to a last page usage.
- 8. The method of claim 1 wherein tracing page usage comprises, counting page usage in a time period.
- 9. The method of claim 1 wherein tracing page usage comprises, maintaining data corresponding to a creation time of a page.
- 10. The method of claim 1 wherein tracing page usage comprises, maintaining data corresponding to a last time a page was accessed.
- 11. The method of claim 1 wherein associating a priority value with each traced page based further includes basing the priority value for at least one of the traced pages on a cost of an I/O transfer for that page.
- 12. The method of claim 1 further comprising, selecting as the traced pages at least one subset of pages available to the computer system.
- 13. The method of claim 12 wherein one subset of pages comprises pages corresponding to a particular file.
- 14. The method of claim 12 wherein one subset of pages comprises pages corresponding to a particular section in memory.
- 15. The method of claim 12 wherein one subset of pages comprises pages corresponding to a particular section in storage.
- 16. The method of claim 1 wherein associating a priority value with each traced page comprises, grouping selected pages together into a page group, and maintaining a value in association with the group.
- 17. The method of claim 1 further comprising, grouping selected pages together into a page group based on at least one criterion.
- 18. The method of claim 17 wherein grouping selected pages together comprises grouping pages based on their times of last access.
- 19. The method of claim 17 wherein grouping selected pages together comprises grouping pages based on usage patterns.
- 20. The method of claim 17 wherein grouping selected pages together comprises grouping pages based on frequency of usage.
- 21. The method of claim 17 wherein grouping selected pages together comprises grouping pages based on a virtual location.
- 22. The method of claim 17 wherein grouping selected pages together comprises grouping pages based on a physical location.
- 23. The method of claim 17 wherein grouping selected pages together comprises grouping pages based on times that the pages were trimmed from memory.
- 24. The method of claim 17 wherein grouping selected pages together comprises grouping pages based on I/O transfer efficiency.
- 25. The method of claim 17 wherein grouping selected pages together comprises grouping pages based on which processes use the pages.
- 26. The method of claim 17 wherein grouping selected pages together comprises grouping pages based on process lifetime information.
- 27. The method of claim 17 wherein grouping selected pages together comprises grouping pages based on fault information within a period.
- 28. The method of claim 17 wherein grouping selected pages together comprises grouping pages based on at least one event.
- 29. The method of claim 17 wherein grouping selected pages together comprises grouping pages based on a time of usage.
- 30. The method of claim 17 wherein grouping selected pages together comprises grouping pages based on a specific user's processes.
- 31. The method of claim 17 wherein grouping selected pages together comprises grouping pages based on context data.
- 32. The method of claim 31 wherein the context data is received from an application program.
- 33. The method of claim 1 wherein tracing page usage comprises recording context data in association with usage of a page.
- 34. The method of claim 33 wherein recording context data comprises recording power state information.
- 35. The method of claim 33 wherein recording context data comprises recording disk state information.
- 36. The method of claim 33 wherein recording context data comprises recording event information.
- 37. The method of claim 36 wherein recording event information comprises recording a memory-related event.
- 38. The method of claim 37 wherein recording a memory-related event comprises recording information related to a hibernation state of the computer system.
- 39. The method of claim 37 wherein recording a memory-related event comprises recording information related to a standby state of the computer system.
- 40. The method of claim 37 wherein recording a memory-related event comprises recording information related to execution of a computer program on the computer system.
- 41. The method of claim 1 further comprising, calculating the priority value for a selected page based on a plurality of page usage factors.
- 42. The method of claim 41 wherein calculating the priority value comprises mathematically combining page usage frequency data with time of last page usage information for the selected page.
- 43. The method of claim 41 wherein calculating the priority value based on a plurality of page usage factors comprises weighing one page usage factor relative to another factor.
- 44. The method of claim 1 further comprising ranking the pages based on their respective priority values, and wherein prioritizing at least some of the pages that are in memory comprises pre-fetching pages to memory from another storage in a pre-fetching order based on the ranking.
- 45. The method of claim 1 wherein prioritizing at least some of the pages comprises reading selected pages from the other storage into a standby page set in memory based on the priority value associated with each selected page.
- 46. The method of claim 45 wherein the standby page set comprises a plurality of subsets, and further comprising, logically moving a page from one subset of the standby page set to another subset based on usage data detected for the page.
- 47. The method of claim 46 wherein logically moving a page from one subset of the standby page set to another subset comprises moving the page from a frequency-based subset to a time-of-last-usage based subset.
- 48. The method of claim 46 wherein logically moving a page from one subset of the standby page set to another subset comprises moving the page from a time-of-last-usage based subset to a frequency-based subset.
- 49. The method of claim 1 further comprising, saving the values associated with at least some of the pages to a persistent store.
- 50. The method of claim 1 further comprising, saving, to a persistent store, data corresponding to the traced page usage of at least some of the pages.
- 51. The method of claim 1 wherein tracing page usage comprises evaluating page access information.
- 52. The method of claim 51 wherein evaluating page access information comprises, reading page table entry access bits.
- 53. The method of claim 51 wherein evaluating page access information comprises evaluating when the page access information is reset.
- 54. The method of claim 51 wherein evaluating page access information comprises determining a rate of resetting the page access information.
- 55. The method of claim 54 further comprising, logging the rate.
- 56. The method of claim 51 wherein evaluating page access information comprises determining a rate at which a page is accessed.
- 57. The method of claim 56 further comprising, logging the rate.
- 58. The method of claim 51 wherein evaluating page access information comprises detecting page faults.
- 59. The method of claim 58 wherein detecting page faults includes detecting hard faults.
- 60. The method of claim 58 wherein detecting page faults includes detecting soft transition faults.
- 61. The method of claim 1 wherein tracing page usage comprises detecting file read and write requests.
- 62. The method of claim 1 wherein tracing page usage comprises reading process working set information.
- 63. The method of claim 1 wherein tracing page usage comprises recording data as pages are transferred out of memory.
- 64. The method of claim 1 wherein tracing page usage comprises recording data as pages are trimmed from working sets.
- 65. The method of claim 1 wherein tracing page usage comprises recording data in response to an event or context.
- 66. The method of claim 65 wherein the data is recorded in response to a switched task.
- 67. The method of claim 65 wherein the data is recorded in response to a created window.
- 68. The method of claim 65 wherein the data is recorded in response to a detected action.
- 69. The method of claim 68 wherein the detected action comprises a change in which window has focus.
- 70. The method of claim 68 wherein the detected action comprises a user input event.
- 71. The method of claim 65 wherein the data is recorded in response to a hibernation-related event of the computer system.
- 72. The method of claim 65 wherein the data is recorded in response to a standby-related event of the computer system.
- 73. The method of claim 65 wherein the data is recorded in response to a system boot-related event of the computer system.
- 74. The method of claim 65 wherein the data is recorded in response to a program launch.
- 75. The method of claim 65 wherein the data is recorded in response to a program shutdown.
- 76. The method of claim 65 wherein the data is recorded in response to a user logon.
- 77. The method of claim 65 wherein the data is recorded in response to a network connection event.
- 78. The method of claim 65 wherein the data is recorded in response to a media-related event.
- 79. The method of claim 65 wherein the data is recorded in response to a program-specified context.
- 80. The method of claim 1 wherein prioritizing at least some of the pages comprises selecting a page on the other storage based on the priority value associated with the selected page, and loading the selected page to the memory in a background operation.
- 81. The method of claim 80 wherein loading the selected page to the memory in a background operation comprises obtaining idle priority data.
- 82. The method of claim 80 wherein loading the selected page to the memory in a background operation comprises observing I/O patterns to determine a transfer time.
- 83. The method of claim 82 wherein the transfer time is determined based on a likelihood that the transfer will not overlap with a foreground I/O transfer.
- 84. The method of claim 82 wherein the transfer time is determined based on a likelihood that the transfer will not cause a seek that will slow down a foreground I/O transfer.
- 85. The method of claim 82 the transfer time is scheduled based on processor usage.
- 86. The method of claim 80 wherein loading the selected page to the memory in a background operation comprises generating a dummy packet to avoid a priority inversion.
- 87. The method of claim 80 wherein loading the selected page to the memory in a background operation comprises determining that the system is idle based on current user input, current processor usage and current disk usage.
- 88. The method of claim 1 wherein tracing page usage comprises recording page usage data to a log.
- 89. The method of claim 1 wherein tracing page usage comprises merging current page usage data with previous page usage data.
- 90. The method of claim 1 wherein the previous page usage data comprises data obtained from recording page usage as trained on at least one other computer system.
- 91. The method of claim 1 wherein the previous page usage data comprises pre-built page data grouped with other page data.
- 92. A computer-readable medium having computer-executable instructions for performing the method of claim 1.
- 93. In a computing environment, a system comprising:
a tracing mechanism that tracks memory page usage for a plurality of pages; a prioritization mechanism that associates a score with each tracked page based at least in part on the memory page usage tracked for that page; and a rebalancer that determines which pages are in memory based on the score associated with each tracked page.
- 94. The system of claim 93 wherein the rebalancer transfers a selected page out of memory to another storage device based on the score for the selected page.
- 95. The system of claim 93 wherein the other storage device comprises non-volatile random access memory.
- 96. The system of claim 93 wherein the other storage device comprises a disk.
- 97. The system of claim 93 wherein the rebalancer pre-fetches a selected page into memory from another storage device based on the score for the selected page.
- 98. The system of claim 93 further comprising a logging mechanism connected to the tracing mechanism, the logging mechanism configured to arrange output of the tracing mechanism into a formatted log.
- 99. The system of claim 93 wherein the formatted log includes a header and a table of entries.
- 100. The system of claim 99 wherein the header includes context information associated with the memory page usage.
- 101. The system of claim 99 wherein the header includes memory state information associated with the memory page usage.
- 102. The system of claim 99 wherein the header includes time information associated with the memory page usage.
- 103. The system of claim 99 wherein each entry includes source and offset data for a file or a process address space.
- 104. The system of claim 99 wherein each entry further includes data indicative of the page was read from disk.
- 105. The system of claim 98 further comprising an integrator that integrates the formatted log with previously obtained data into integrated data.
- 106. The system of claim 105 wherein the integrator preserves the integrated data in a page information database.
- 107. The system of claim 106 further comprising a mining service that develops at least one scenario plan based on the integrated data in the page information database.
- 108. The system of claim 107 wherein the prioritization mechanism accesses a scenario plan to associate the score with each tracked page.
- 109. The system of claim 93 wherein the tracing mechanism records frequency of page usage data for each page of the plurality of pages.
- 110. The system of claim 93 wherein the tracing mechanism records time-based data corresponding to a time of last page usage.
- 111. The system of claim 93 wherein the tracing mechanism records context data in association with usage of a page.
- 112. The system of claim 111 wherein the context data corresponds to a state of the computer system.
- 113. The system of claim 93 wherein the prioritization mechanism ranks the pages relative to one another based on their respective scores, and the rebalancer pre-fetches pages to memory in a pre-fetching order based on the ranking.
- 114. The system of claim 93 further comprising a standby page set in memory, wherein the rebalancer reads selected pages from the other storage into the standby page set.
- 115. The system of claim 114 wherein the standby page set comprises a plurality of subsets, and wherein the rebalancer logically moves a page from one subset of the standby page set to another subset based on usage data detected for the page.
- 116. The system of claim 115 wherein logically moving a page from one subset of the standby page set to another subset comprises moving the page between a time-of-last-usage based subset to a frequency-based subset.
- 117. The system of claim 93 further comprising an observer that generates memory-related events.
- 118. The system of claim 117 further comprising an update mechanism that receives events from the observer and triggers the rebalancer.
- 119. The system of claim 118 wherein one of the events comprises a task switching event.
- 120. The system of claim 118 wherein one of the events comprises an event corresponding to creation of a window.
- 121. The system of claim 118 wherein one of the events comprises an event corresponding to a dialog being provided.
- 122. The system of claim 118 wherein one of the events comprises an event corresponding to a change of window focus.
- 123. The system of claim 118 wherein one of the events comprises a user input event.
- 124. The system of claim 118 wherein one of the events comprises an event corresponding to launch of a program.
- 125. The system of claim 118 wherein one of the events comprises an event corresponding to shutdown of a program.
- 126. The system of claim 118 wherein one of the events comprises an event corresponding to a system boot.
- 127. The system of claim 118 wherein one of the events comprises a login event.
- 128. The system of claim 118 wherein one of the events comprises an event corresponding to shutdown of the system.
- 129. The system of claim 118 wherein one of the events comprises an event corresponding to entering a standby mode.
- 130. The system of claim 118 wherein one of the events comprises an event corresponding to a resume from a standby mode.
- 131. The system of claim 118 wherein one of the events comprises an event corresponding to entering a hibernate mode.
- 132. The system of claim 118 wherein one of the events comprises an event corresponding to resume from a hibernate mode.
- 133. The system of claim 118 wherein one of the events comprises an event corresponding to a different user operating the system.
- 134. The system of claim 118 wherein one of the events comprises an event corresponding to starting of media.
- 135. The system of claim 118 wherein one of the events comprises an event corresponding to ending of media that is playing.
- 136. The system of claim 118 wherein one of the events comprises an event corresponding to video time-shifting.
- 137. The system of claim 118 wherein one of the events comprises an event corresponding to a remote connection to the system.
- 138. The system of claim 118 wherein one of the events comprises an event corresponding to a program-specified context.
- 139. The system of claim 117 further comprising an update mechanism that receives events from the observer and provides state data to the tracing mechanism.
- 140. The system of claim 139 wherein the state data includes file-related requests.
- 141. The system of claim 139 wherein the state data includes data related to memory usage by a process.
- 142. The system of claim 117 further comprising an I/O planner mechanism connected to the rebalancer for transferring pages between the memory and a secondary storage.
- 143. The system of claim 93 wherein the I/O planner mechanism transfers the pages in a background operation.
- 144. The system of claim 143 wherein the I/O planner mechanism observes I/O patterns to determine a transfer time that likely will not interfere with a foreground I/O transfer.
- 145. The system of claim 143 wherein the I/O planner mechanism determines a transfer time that likely will not cause a seek that will slow down a foreground I/O transfer.
- 146. The system of claim 143 wherein the I/O planner generates a dummy packet to avoid a priority inversion.
- 147. The system of claim 143 wherein the I/O planner current evaluates current processor usage and current disk usage to determine an idle computing state.
- 148. The system of claim 93 wherein the I/O planner mechanism transfers the pages in a foreground operation.
- 149. A computer-readable medium having stored thereon a data structure, comprising:
a standby page set for logically storing pages of memory; a plurality of subsets in the standby page set, each subset corresponding to a value associated with the pages therein; and the standby page set rebalanced to move pages between the subsets based on measured usage information for the pages.
- 150. The data structure of claim 149 wherein the standby page set includes at least one frequency-based subset in the standby page set for storing pages according to how often the page has been accessed.
- 151. The data structure of claim 149 wherein the standby page set includes at least one time-of-last-usage-based subset in the standby page set for storing pages according to how recently the page has been accessed.
- 152. The data structure of claim 149 wherein the standby page set includes at least one frequency-based subset in the standby page set for storing pages according to how often the page has been accessed, and at least one time-of-last-usage-based subset in the standby page set for storing pages according to how recently the page has been accessed, the standby page set rebalanced to move pages between the time-of-last-usage based subset and the frequency-based subset based on time data.
- 153. The data structure of claim 149 wherein the standby page set includes a plurality of frequency-based subsets in the standby page set, the standby page set rebalanced to move pages between the frequency-based subsets based on time data.
- 154. The data structure of claim 153 wherein at least one of the frequency-based subsets corresponds to a usage count per time period.
- 155. The data structure of claim 154 wherein at least one other of the frequency-based subsets corresponds to a usage count per another time period.
- 156. The data structure of claim 155 wherein the time periods are not equal in length.
- 157. The data structure of claim 149 wherein the standby page set includes a plurality of time-of-last-usage-based subsets in the standby page set, the standby page set rebalanced to move pages between the time-of-last-usage-based subsets based on time data.
- 158. The data structure of claim 149 wherein at least one of the subsets is present in the standby page set to fill with pages that are pre-fetched from a secondary storage device.
- 159. The data structure of claim 149 wherein at least one of the subsets is present in the standby page set for storing pages that are locked into memory.
- 160. The data structure of claim 149 wherein at least one of the subsets is present in the standby page set stores pages that have no associated score.
- 161. A computer-implemented method, comprising:
identifying pages in a memory and pages maintained in secondary storage device based on page value data associated with each identified page; and populating the memory with at least some pages from the secondary storage device, comprising replacing at least some of the pages in memory having relatively lower values with at least some pages from the secondary storage device having relatively higher values, before a demand for at least some of the pages having higher values is received.
- 162. The method of claim 161 wherein identifying values for pages comprises establishing a value based on a current context.
- 163. The method of claim 161 wherein identifying values for pages in a memory and values for pages maintained in secondary storage device comprises identifying low-value pages and high-value pages.
- 164. The method of claim 161 further comprising, compressing at least some of the pages in memory having relatively lower values to provide space for at least some pages from the secondary storage device having relatively higher values, before a demand for at least some of the pages having higher values is received.
- 165. The method of claim 161 further comprising determining the page value data.
- 166. The method of claim 165 wherein determining the page value data comprises reading at least part of the page value data from a file.
- 167. The method of claim 166 wherein the file comprises training data obtained from measuring page usage on another computer system.
- 168. The method of claim 165 wherein determining the page value data comprises tracing usage of pages to determine at least part of the page value data.
- 169. The method of claim 168 wherein tracing usage of pages comprises tracing access patterns.
- 170. The method of claim 168 wherein tracing usage of pages comprises tracing access frequency.
- 171. The method of claim 168 wherein tracing page usage comprises recording time data corresponding to a last page usage.
- 172. The method of claim 168 wherein tracing page usage comprises counting page usage in a time period.
- 173. The method of claim 168 wherein tracing page usage comprises maintaining data corresponding to a creation time of a page.
- 174. The method of claim 168 further comprising, saving, to a persistent store, data corresponding to the traced page usage for at least some of the pages.
- 175. The method of claim 168 wherein tracing page usage comprises evaluating page access information.
- 176. The method of claim 175 wherein evaluating page access information comprises, reading page table entry access bits.
- 177. The method of claim 175 wherein evaluating page access information comprises evaluating when the page access information is reset.
- 178. The method of claim 175 wherein evaluating page access information comprises determining a rate of resetting the page access information.
- 179. The method of claim 178 further comprising, logging the rate.
- 180. The method of claim 175 wherein evaluating page access information comprises determining a rate at which a page is accessed.
- 181. The method of claim 180 further comprising, logging the rate.
- 182. The method of claim 175 wherein evaluating page access information comprises detecting page faults.
- 183. The method of claim 168 wherein tracing usage of pages comprises detecting file read and write requests.
- 184. The method of claim 168 wherein tracing usage of pages comprises at least one of: reading process working set information, recording data as pages are transferred out of memory, and recording data as pages are trimmed from working sets.
- 185. The method of claim 168 wherein tracing page usage comprises recording data in response to an event or context.
- 186. The method of claim 185 wherein the data is recorded in response to at least one of: a switched task, a created window, a detected action, a change in which window has focus, a user input event, a hibernation-related event of the computer system, a standby-related event of the computer system, a system boot-related event of the computer system; a program launch, a program shutdown, a change in a user of the system, a logon, and a network connection event, a media-related event.
- 187. The method of claim 186 wherein the data is recorded in response to a program-specified context.
- 188. The method of claim 165 wherein determining the page value data includes determining a cost of an I/O transfer for at least one page.
- 189. The method of claim 165 wherein determining the page value data includes calculating the priority value for a selected page based on a plurality of page usage factors.
- 190. The method of claim 189 wherein calculating the priority value based on a plurality of page usage factors comprises weighing one page usage factor relative to another factor.
- 191. The method of claim 165 wherein determining the page value data includes mathematically combining page usage frequency data with time of last page usage information for the selected page.
- 192. The method of claim 165 wherein identifying pages in a memory comprises, selecting a subset of pages available to the computer system.
- 193. The method of claim 192 wherein the subset of pages comprises pages corresponding to a particular file.
- 194. The method of claim 193 wherein the subset of pages comprises pages corresponding to a particular section in memory.
- 195. The method of claim 193 wherein the subset of pages comprises pages corresponding to a particular section in storage.
- 196. The method of claim 161 further comprising, grouping selected pages together into a page group, and maintaining the page value data in association with the group.
- 197. The method of claim 196 wherein grouping selected pages together comprises grouping pages based on their times of last access.
- 198. The method of claim 196 wherein grouping selected pages together comprises grouping pages based on usage patterns.
- 199. The method of claim 196 wherein grouping selected pages together comprises grouping pages based on frequency of usage.
- 200. The method of claim 196 wherein grouping selected pages together comprises grouping pages based on a virtual location.
- 201. The method of claim 196 wherein grouping selected pages together comprises grouping pages based on a time of usage.
- 202. The method of claim 196 wherein time of usage comprises day of week information.
- 203. The method of claim 196 wherein time of usage time of day information.
- 204. The method of claim 196 wherein grouping selected pages together comprises grouping pages based on a physical location.
- 205. The method of claim 196 wherein grouping selected pages together comprises grouping pages based on times that the pages were trimmed from memory.
- 206. The method of claim 196 wherein grouping selected pages together comprises grouping pages based on I/Q transfer efficiency.
- 207. The method of claim 196 wherein grouping selected pages together comprises grouping pages based on which processes use the pages.
- 208. The method of claim 196 wherein grouping selected pages together comprises grouping pages based on process lifetime information.
- 209. The method of claim 196 wherein grouping selected pages together comprises grouping pages based on fault information.
- 210. The method of claim 196 wherein grouping selected pages together comprises grouping pages based on at least one event.
- 211. The method of claim 196 wherein grouping selected pages together comprises grouping pages based on a specific user's processes.
- 212. The method of claim 196 wherein grouping selected pages together comprises grouping pages based on context data.
- 213. The method of claim 212 further comprising, receiving the context data from an application program.
- 214. The method of claim 212 further comprising recording context data in association with usage of a page.
- 215. The method of claim 214 wherein recording context data comprises recording power state information.
- 216. The method of claim 214 wherein recording context data comprises recording disk state information.
- 217. The method of claim 214 wherein recording context data comprises recording event information.
- 218. The method of claim 217 wherein recording event information comprises recording a memory-related event.
- 219. The method of claim 161 further comprising, ranking the identified pages based on their respective page value data, and wherein populating the memory comprises loading pages to memory in an order based on the ranking.
- 220. The method of claim 161 wherein populating the memory comprises loading selected pages from the secondary storage into a standby page set in memory.
- 221. The method of claim 220 wherein the standby page set comprises a plurality of subsets, and further comprising, logically moving a page from one subset of the standby page set to another subset based on usage data detected for the page.
- 222. The method of claim 221 wherein logically moving the page comprises moving the page from a frequency-based subset to a time-of-last-usage based subset.
- 223. The method of claim 221 wherein logically moving the comprises moving the page from a time-of-last-usage based subset to a frequency-based subset.
- 224. The method of claim 161 further comprising, saving the page value data associated with at least some of the pages to a persistent store.
- 225. The method of claim 161 wherein populating the memory comprises loading the pages to the memory in a background operation.
- 226. The method of claim 225 wherein loading the page to the memory in a background operation comprises obtaining idle priority data.
- 227. The method of claim 225 wherein loading the pages to the memory in a background operation comprises observing I/O patterns to determine a transfer time.
- 228. The method of claim 227 wherein the transfer time is determined based on a likelihood that the transfer will not overlap with a foreground I/O transfer.
- 229. The method of claim 227 wherein the transfer time is determined based on a likelihood that the transfer will not cause a seek that will slow down a foreground I/O transfer.
- 230. The method of claim 225 wherein loading the selected page to the memory in a background operation comprises evaluating current processor usage and current disk usage.
- 231. The method of claim 161 wherein populating the memory comprises loading the pages to the memory in a foreground operation.
- 232. A computer-readable medium having computer-executable instructions for performing the method of claim 161.
- 233. A computer implemented method, comprising:
observing a need for pages of memory; determining values for the pages based on the observed need; and loading at least part of the memory based on the values of the pages.
- 234. The method of claim 233 wherein loading at least part of the memory comprises selecting pages based on the values.
- 235. The method of claim 233 wherein loading at least part of the memory comprises loading the entire memory.
- 236. The method of claim 233 wherein observing a need for pages comprises tracking actual usage of pages.
- 237. The method of claim 233 wherein observing a need for pages comprises training to determine likely needed pages.
- 238. The method of claim 237 wherein training to determine likely needed pages includes simulating page use.
- 239. The method of claim 237 wherein training to determine likely needed pages includes analyzing code.
- 240. The method of claim 237 wherein training to determine likely needed pages includes running programs on a training computer system, and using the values on another computer system.
- 241. The method of claim 233 further comprising, building a persistent repository of information including the values, and storing the persistent repository in a file.
- 242. The method of claim 233 wherein loading at least part of the memory comprises loading memory that is free.
- 243. The method of claim 233 further comprising, identifying low-value pages in memory, wherein loading at least part of the memory comprises replacing at least some of the low value pages.
- 244. A computer-readable medium having computer-executable instructions for performing the method of claim 243.
- 245. A computer implemented method, comprising:
identifying low-value pages; and maintaining memory management information in the memory, including information on the low value pages.
- 246. The method of claim 245 wherein maintaining the memory management information comprises maintaining rich use information, comprising at least one of pattern, frequency, grouping and context information.
- 247. The method of claim 245 wherein maintaining memory management information includes maintaining data for pages that have been but are no longer in the memory, and for pages that have not been in the memory.
- 248. The method of claim 245 wherein maintaining the memory management information comprises maintaining rich use information, comprising at least one of pattern, frequency, grouping and context information, and maintaining the rich use information for pages that have been but are no longer in the memory, and for pages that have not been in the memory.
- 249. The method of claim 248 wherein maintaining the rich use information comprises keeping working set entries containing the rich use information for pages that are no longer in memory but are valid in the address space for the working set.
- 250. The method of claim 248 wherein maintaining the rich use information comprises allocating physical page descriptors and entries for maintaining the rich use information for pages that leave memory.
- 251. The method of claim 245 wherein maintaining memory management information includes maintaining statistics in memory from which rich use information, comprising at least one of pattern, frequency, grouping and context information, may be derived.
- 252. The method of claim 251 wherein maintaining the statistics comprises, maintaining per pages entries.
- 253. The method of claim 251 wherein maintaining the statistics comprises, maintaining entries for groups of pages.
- 254. The method of claim 251 wherein maintaining the statistics comprises, maintaining entries for files.
- 255. The method of claim 251 wherein maintaining the statistics comprises, maintaining state data on at least one page.
- 256. The method of claim 255 wherein the state data includes data on when a page was removed from memory.
- 257. The method of claim 255 wherein the state data includes data on when a page was loaded into memory.
- 258. The method of claim 245 further comprising, using the memory management information to prioritize pages in memory into subsets.
- 259. The method of claim 245 further comprising, using the memory management information to protect more valuable pages from being repurposed.
- 260. The method of claim 245 further comprising, reprioritizing pages in memory based on rich use information, comprising at least one of pattern, frequency, grouping and context information.
- 261. A computer-readable medium having computer-executable instructions for performing the method of claim 245.
- 262. A computer implemented method, comprising:
capturing rich information on memory use, the rich information comprising at least one of pattern, frequency, context and grouping data, and persisting the rich information into a file.
- 263. The method of claim 262 wherein capturing the rich information comprises sampling actual page usage.
- 264. The method of claim 262 wherein capturing the ric information comprises tracing actual page usage.
- 265. A computer-readable medium having computer-executable instructions for performing the method of claim 262.
- 266. In a computing environment having a memory and a secondary storage, a method comprising:
receiving an event related to a context; and prioritizing the memory in response to the event, such that pages more likely to be used in the context are higher in value relative to pages less likely to be used.
- 267. The method of claim 266 wherein prioritizing the memory comprises changing a subset to which a page of memory is classified.
- 268. The method of claim 266 wherein prioritizing the memory comprises loading at least one page from the secondary storage to memory.
- 269. The method of claim 266 wherein prioritizing the memory comprises replacing pages in the memory with pages from the secondary storage.
CROSS-REFERENCE TO RELATED APPLICATION
[0001] The present invention claims priority to U.S. provisional patent application Serial No. 60/416,115, filed Oct. 4, 2002 and herein incorporated by reference.
Provisional Applications (1)
|
Number |
Date |
Country |
|
60416115 |
Oct 2002 |
US |