US20080005736A1 - Reducing latencies in computing systems using probabilistic and/or decision-theoretic reasoning under scarce memory resources - Google Patents
Reducing latencies in computing systems using probabilistic and/or decision-theoretic reasoning under scarce memory resources Download PDFInfo
- Publication number
- US20080005736A1 US20080005736A1 US11/428,231 US42823106A US2008005736A1 US 20080005736 A1 US20080005736 A1 US 20080005736A1 US 42823106 A US42823106 A US 42823106A US 2008005736 A1 US2008005736 A1 US 2008005736A1
- Authority
- US
- United States
- Prior art keywords
- application
- memory
- launch
- data
- model
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 230000015654 memory Effects 0.000 title claims abstract description 211
- 238000007726 management method Methods 0.000 claims abstract description 31
- 230000009471 action Effects 0.000 claims abstract description 16
- 238000012544 monitoring process Methods 0.000 claims abstract description 8
- 238000007727 cost benefit analysis Methods 0.000 claims abstract description 7
- 230000014759 maintenance of location Effects 0.000 claims abstract description 6
- 238000000034 method Methods 0.000 claims description 105
- 230000008569 process Effects 0.000 claims description 48
- 238000005457 optimization Methods 0.000 claims description 31
- 238000012545 processing Methods 0.000 claims description 30
- 230000026676 system process Effects 0.000 claims description 24
- 230000007704 transition Effects 0.000 claims description 19
- 230000000694 effects Effects 0.000 claims description 16
- 230000008447 perception Effects 0.000 claims description 3
- 230000007246 mechanism Effects 0.000 claims description 2
- 238000012217 deletion Methods 0.000 abstract description 3
- 230000037430 deletion Effects 0.000 abstract description 3
- 238000003860 storage Methods 0.000 description 27
- 238000004891 communication Methods 0.000 description 19
- 230000006870 function Effects 0.000 description 16
- 230000008901 benefit Effects 0.000 description 14
- 238000013179 statistical model Methods 0.000 description 14
- 238000010586 diagram Methods 0.000 description 13
- 230000003287 optical effect Effects 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 8
- 230000008859 change Effects 0.000 description 7
- 101100264195 Caenorhabditis elegans app-1 gene Proteins 0.000 description 6
- 238000010801 machine learning Methods 0.000 description 6
- 239000000203 mixture Substances 0.000 description 6
- 238000002360 preparation method Methods 0.000 description 6
- 238000004458 analytical method Methods 0.000 description 5
- 230000006399 behavior Effects 0.000 description 5
- 230000001934 delay Effects 0.000 description 5
- 235000014510 cooky Nutrition 0.000 description 4
- 238000011161 development Methods 0.000 description 4
- 230000018109 developmental process Effects 0.000 description 4
- 230000009977 dual effect Effects 0.000 description 4
- 238000012886 linear function Methods 0.000 description 4
- 238000012706 support-vector machine Methods 0.000 description 4
- 230000032683 aging Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 3
- 239000000872 buffer Substances 0.000 description 3
- 238000009826 distribution Methods 0.000 description 3
- 238000003780 insertion Methods 0.000 description 3
- 230000037431 insertion Effects 0.000 description 3
- 230000005055 memory storage Effects 0.000 description 3
- 230000006855 networking Effects 0.000 description 3
- 238000012549 training Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000012512 characterization method Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000002156 mixing Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 229920001690 polydopamine Polymers 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 238000001228 spectrum Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- DWHCYDWXLJOFFO-UHFFFAOYSA-N 4-(5-phenylthiophen-2-yl)aniline Chemical compound C1=CC(N)=CC=C1C1=CC=C(C=2C=CC=CC=2)S1 DWHCYDWXLJOFFO-UHFFFAOYSA-N 0.000 description 1
- 241000700605 Viruses Species 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000013145 classification model Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000001276 controlling effect Effects 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 238000013479 data entry Methods 0.000 description 1
- 238000003066 decision tree Methods 0.000 description 1
- 238000013213 extrapolation Methods 0.000 description 1
- 230000008713 feedback mechanism Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000003446 memory effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000012913 prioritisation Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000004043 responsiveness Effects 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
- 238000010183 spectrum analysis Methods 0.000 description 1
- 238000007619 statistical method Methods 0.000 description 1
- 230000007474 system interaction Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/482—Application
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5019—Workload prediction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/508—Monitor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/45—Caching of specific data in cache memory
- G06F2212/452—Instruction code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/50—Control mechanisms for virtual memory, cache or TLB
- G06F2212/502—Control mechanisms for virtual memory, cache or TLB using adaptive policy
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6022—Using a prefetch buffer or dedicated prefetch cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6024—History based prefetching
Definitions
- a goal with such intelligent memory management is to reduce latencies in the system by reducing the likelihood that the slowest memory, for example, a rotating disk media, will have to be accessed in real time to support a user command.
- Machine learning and reasoning can facilitate the statistical characterization of next actions of the user and/or the system.
- general machine learning and reasoning systems can require memory and storage that exceeds the memory and storage available in an operating system environment. Additionally, such systems may impose new latencies on operations, and thus, may result in increasing latencies, even if recommendations for memory management are overall good decisions.
- the disclosed architecture manages the use of probabilistic and/or decision-theoretic methods that are used to perform learning and reasoning models under limited memory, observational, and runtime resources.
- an attempt to minimize latencies by selecting the next applications to prefetch is an intractable optimization, considering the likelihoods of the possible next components to be used, and their sizes (and thus, the amount of expected savings in waiting to have this page in from disk).
- approximations can be employed. For example, given a set of predictions from a bounded-resource probabilistic model, a value-density approximation to a knapsack problem solution can be employed to prioritize components for prefetching and/or retaining in fast memory.
- the knapsack problem is a type of integer program with just one constraint—each item that can be selected to go into a knapsack (e.g.
- more than one predictive method can be employed, and the outputs of different methods can be combined via model mixture methodologies to enhance the accuracy of predictions.
- Such methods can be used, for example, to mix together background statistics on application usage, for example, partitioned by time of day and week, with inferential Markov models operating under bounded memory resources, with mixture parameters that are tuned to optimize predictive performance.
- a computer-implemented system that facilitates the management of system resources.
- the system comprises a bounded memory resource for utilization by system processes, and a management component that manages utilization of a learning and reasoning model based on the bounded memory resource to reduce latency in the system processes.
- FIG. 1 illustrates a computer-implemented system that facilitates the management of system resources in accordance with the innovative architecture.
- FIG. 2 illustrates a methodology of managing system resources in accordance with an aspect.
- FIG. 3 illustrates a block diagram of an alternative system that facilitates the management of system resources in accordance with another aspect.
- FIG. 4 illustrates an exemplary representation of application-prefetching associated with cost-benefit analysis.
- FIG. 5 illustrates a more detailed block diagram of a system that facilitates the management of bounded memory resources.
- FIG. 6 illustrates a system having a memory system that can include many different types of memory that benefit from the application usage optimization architecture of the subject innovation.
- FIG. 7 illustrates a system having one version of a memory subsystem 702 that utilizes prefetching and caching based on application usage and bounded memory conditions in accordance with another aspect.
- FIG. 8 illustrates a methodology of performing prefetching in a way that maximizes an expected value of having prefetched items within the bounded memory (or knapsack) to minimized perceived latencies.
- FIG. 9 illustrates a methodology of employing context information for model development and memory optimization in accordance with another aspect of the innovation.
- FIG. 10 illustrates a methodology of generating and a model and prefetching application information based on the model in view of memory optimization.
- FIG. 11 illustrates a system having a drive memory subsystem that benefits from memory optimization and application transitioning in accordance with another aspect.
- FIG. 12 illustrates a system having a dual core processor subsystem and accompanying memory component that benefits from bounded memory optimization and application transitioning in accordance with a novel aspect.
- FIG. 13 illustrates an alternative implementation that utilizes the learning and reasoning component in a system for application transitioning an bounded memory optimization.
- FIG. 14 illustrates a methodology of inferring probability of a next application launch based on observed processes using a Markov model.
- FIG. 15 illustrates a methodology of mixing models to achieve the desired application transitioning and bounded memory management.
- FIG. 16 illustrates a flow diagram of a methodology of selecting a statistical model for execution in accordance with an aspect.
- FIG. 17 illustrates a methodology of learning and reasoning about multiple application transitioning and memory optimization processes.
- FIG. 18 illustrates a system for managing multiple caching subsystems of the bounded memory resource for application transitioning and memory utilization.
- FIG. 19 illustrates a block diagram of a computer operable to execute the disclosed application transitioning and memory optimization architecture.
- FIG. 20 illustrates a schematic block diagram of an exemplary application transitioning and memory optimization computing environment in accordance with another aspect.
- the disclosed architecture manages the use of one or more probabilistic and/or decision-theoretic methods, within a learning and reasoning methodology, within a system that includes scarce or limited memory (e.g., system memory, cache memory, mass storage), observational, and runtime resources.
- a mixed model methodology can be applied such that more than one predictive method is employed, the outputs of which can be combined to enhance the accuracy of predictions.
- Such methods can be used, for example, to mix together background statistics, such as a probability distribution over sets of applications that are used at different times of day and days of week, and Markov inferential models under bounded resources, with mixture parameters that are tuned to optimize predictive performance. Additional novel aspects are described infra.
- FIG. 1 illustrates a computer-implemented system 100 that facilitates the management of system resources.
- the system 100 includes a bounded memory resource 102 for utilization by a system process 104 (e.g., an application, data), and a management component 106 that manages the utilization of a machine learning and reasoning component 108 based in part on the bounded memory resource 102 to reduce latency associated with the system process 104 .
- a system process 104 e.g., an application, data
- a management component 106 that manages the utilization of a machine learning and reasoning component 108 based in part on the bounded memory resource 102 to reduce latency associated with the system process 104 .
- Machine learning and reasoning can facilitate the statistical characterization of a user's or system's next actions, based on the collection and analysis of a database of past behavior, extrapolation or interpolation of data based on some best-fit, error estimates of observations, and/or spectral analysis of data or model generated output, for example. Beyond predictions, decisions about which components should be prefetched, which components should remain in memory, and which components should be “paged out” of memory, so as to free space for other program data to be stored, can be based on a cost-benefit analysis, and more generally, under uncertainty, a decision-theoretic analysis that considers preferences and expected latencies.
- Such an analysis considers not only likelihoods that program data will be required to satisfy a user's needs and actions, in working with a computing system, but also the memory required to store in memory the different components of program data associated with the different future needs. Differing amounts of required memory storage lead to different latencies in real time when an application or feature is accessed. Thus, prefetching decisions should consider different latency reductions associated with the prefetching of the components associated with future user needs.
- the ideal allocation of memory can be considered as the solution to a decision-theoretic knapsack analysis and employ a value-density approximation to prioritizing components for prefetching or keeping in memory, versus paging out of data.
- a goal in building such predictive models is to support smart decisions about the transfer of program data into scarce, but fast, memory locations via prefetching operations, and the clearing of memory of program data, so as to free up space for other components.
- the bounded memory resource 102 can include many different types of memory, for example, L1 cache memory, L2 cache memory, L3 cache memory, etc.; essentially, any of Lx type of cache memory, where x is an integer. Accordingly, statistical models based in part on application usage can be generated that take into consideration the type, size, and/or speed of memory under utilization management. For example, if it is computed and modeled according to one statistical model that the next application (or program or code) expected (according to prediction) to be executed typically utilizes a faster memory (e.g. L1 cache over L2 cache), then the system 100 can manage this attribute to use the faster cache memory.
- a faster memory e.g. L1 cache over L2 cache
- the system 100 can manage this consideration to use the slower cache memory.
- the system 100 can enqueue data that allows the expected application to be moved to a faster cache memory when space becomes available in the faster memory. For example, if all or part of the faster memory is allocated or in a prefetch operation, which can be indicators that the memory is under management for another application, the expected application has to wait, or is processed in a slower cache memory.
- the machine learning and reasoning component 108 facilitates automating one or more features in accordance with the subject innovation.
- the component 108 is positioned to interface to each of the bounded memory resource 102 , the management component 106 , and the system process.
- the subject invention can employ various learning and reasoning-based schemes for carrying out various aspects thereof. For example, a process for learning and reasoning about predicting when an application will be launched can be facilitated via an automatic classifier system and process.
- Such classification can employ a probabilistic and/or other statistical analysis (e.g., one factoring into the analysis utilities and costs to maximize the expected value to one or more people) to prognose or infer an action that a user desires to be automatically performed.
- to infer and “inference” refer generally to the process of reasoning about or inferring states of the system, environment, and/or user from a set of observations as captured via events and/or data. Inference can be employed to identify a specific context or action, or can generate a probability distribution over states, for example.
- the inference can be probabilistic—that is, the computation of a probability distribution over states of interest based on a consideration of data and events.
- Inference can also refer to techniques employed for composing higher-level events from a set of events and/or data. Such inference results in the construction of new events or actions from a set of observed events and/or stored event data, whether or not the events are correlated in close temporal proximity, and whether the events and data come from one or several event and data sources.
- a support vector machine is an example of a classifier that can be employed.
- the SVM operates by finding a hypersurface in the space of possible inputs that splits the triggering input events from the non-triggering events in an optimal way. Intuitively, this makes the classification correct for testing data that is near, but not identical to training data.
- Other directed and undirected model classification approaches include, e.g., na ⁇ ve Bayes, Bayesian networks, decision trees, neural networks, fuzzy logic models, and probabilistic classification models providing different patterns of independence can be employed. Classification as used herein also is inclusive of statistical regression that is utilized to develop models of ranking or priority.
- the subject invention can employ classifiers that are explicitly trained (e.g. via a generic training data) as well as implicitly trained (e.g., via observing user behavior, receiving extrinsic information).
- SVM's are configured via a learning or training phase within a classifier constructor and feature selection module.
- the classifier(s) can be employed to automatically learn and perform a number of functions according to predetermined criteria.
- the component 108 learns and reasons about activities of the system process 104 and other system processes in order to effect more efficient management (by the management component 106 ) of the bounded memory 102 .
- the system process 104 can be related any program or application launch, foreground and background activities, program and application data activities, and user and/to system interactions with the system process 104 , whether direct or indirect. Additional implementations of the learning and reasoning component 108 are described infra.
- FIG. 2 illustrates a methodology of managing system resources in accordance with an aspect. While, for purposes of simplicity of explanation, the one or more methodologies shown herein, for example, in the form of a flow chart or flow diagram, are shown and described as a series of acts, it is to be understood and appreciated that the subject innovation is not limited by the order of acts, as some acts may, in accordance therewith, occur in a different order and/or concurrently with other acts from that shown and described herein. For example, those skilled in the art will understand and appreciate that a methodology could alternatively be represented as a series of interrelated states or events, such as in a state diagram. Moreover, not all illustrated acts may be required to implement a methodology in accordance with the innovation.
- a limited-availability (or bounded) memory resource of a device is received for utilization by one or more device processes (e.g. programs and program data).
- device processes e.g. programs and program data.
- a probabilistic and/or decision-theoretic model is processed that predicts execution of the device processes.
- processing of the model(s) is based on the limited-availability memory resource to reduce latency in the device processes.
- FIG. 3 illustrates a block diagram of an alternative system 300 that facilitates the management of system resources in accordance with another aspect.
- the system 300 includes the bounded memory resource 102 for utilization by system processes 302 that can include operating system (OS) processes, program actions, data actions, and data associated with user actions, for example.
- OS operating system
- the system 300 includes a memory management component 304 for managing one or more memory operations.
- a prefetch component 306 facilitates prefetching of data and/or programs into the bounded memory 102 .
- a retention component 308 of the memory management component 304 facilitates data retention control in the bounded memory 102 .
- a monitor component 310 facilitates the monitoring of application actions and associated states, for example, if the program is in a foreground state or a background state.
- An application launch component 312 of the monitor component 312 supports the computation of probability data associated with launch of a next application.
- the application launch component 312 can be configured to not only focus on a foreground application, but also background application processes. Additionally, the launch component 312 can be configured with more flexibility to give more general preference to, for example, applications the user spends more time on, and so on. Still further, a classification mechanism can be employed to separate applications the user “cares” about from the applications the user does not care about (e.g., virus checkers, cookie checkers, spyware checking, and other processes that could launch, and in particular, launch in the foreground).
- modeling can include filtering out the applications the user does not care about (related at least to usage monitoring and latency effects) and only consider applications that are important to the user, and with respect to latency considerations (e.g. applications the use cares about that are disk-bound, that can lead to delays).
- the launch component 312 can be limited to achieve better prediction accuracy and avoid wasting the limited memory resources by prefetching applications that are not critical for user-perceived responsiveness.
- the notion of caring can be determined by historical data based on how often the user has launched the application in the past, how much data has been generated by an application, and so on.
- One kind of a probabilistic model that can be used to infer the probability of the next application launch, based on a sequence of observed applications is a Markov model.
- Such a model can look back n-steps associated with the system processes, where n is an number that can be varied depending on the available memory.
- the system continues to look at the top n of all applications being used by a user, and in combination with contextual information such as time of day and day of week, for example, builds Markov models that are focused on explicitly reasoning about the top n applications, and then using both the n applications and an “other application” token for examining sequences and for predicting the next applications.
- the system 300 can also include a context component 314 such that machine learning and reasoning methods for supporting memory management can consider not just a set of actions or situations (e.g. data and program actions) sensed via a computing system, but can also consider other sources of contextual evidence, such as time of day, day of week, the identity of the current user or users working with a computing system, information about appointments stored on a calendar, and so on.
- a context component 314 such that machine learning and reasoning methods for supporting memory management can consider not just a set of actions or situations (e.g. data and program actions) sensed via a computing system, but can also consider other sources of contextual evidence, such as time of day, day of week, the identity of the current user or users working with a computing system, information about appointments stored on a calendar, and so on.
- a multi-model component 316 facilitates the use of many different models in support of managing the bounded memory resource.
- One implementation employs a “model mixture” method, where a Markov model can be combined with a model that captures background statistics. This is described in greater detailed with respect to FIG. 15 .
- the system 300 facilitates other innovative aspects, including the use of probabilistic and/or decision-theoretic (cost-benefit under uncertainty) models to guide memory management of the bounded memory 102 by the management component 304 , in particular, for both decisions about prefetching and memory retention versus deletion (or “paging out”) of lower priority items, to free up space for higher valued items. Additionally, prefetching can be optimized by considering, beyond just a likelihood, a cost-benefit analysis of prefetching decisions to minimize user perceived latencies.
- the knapsack problem is a type of integer program with just one constraint—each item that can be selected to go into a knapsack having a certain capacity, has a size and a benefit. Given that the knapsack has a certain capacity, the problem becomes a matter of selecting item(s) for insertion into the knapsack so as to maximize the total benefit.
- the application launch component 312 can be employed to collect data on a machine's foreground application launch behavior. By using the launch record of foreground application launches in the machine, the component 312 can construct a probabilistic model (e.g., Markov) of the application launch activity. This allows the system to predict with a high probability on which foreground application will be launched next.
- a probabilistic model e.g., Markov
- the launch component 312 gets callback notifications from the system. Initialize and start routines can be called during initialization and a cleanup routine can be called at shutdown. At runtime, the launch component 312 calls a log entry routine to inform the launch component of application launch events.
- the launch component 312 is provided with the full path to the application and a hash of this path.
- the launch component looks up the path hash in a table to distinguish between foreground and background applications and, stores and uses the integer hash to create a transition table.
- the launch record and the transition table can be dynamically configurable based on a feedback mechanism that takes into account the accuracy of the predictions and the frequency of launch records being generated.
- the launch component 312 can implement aging by using a circular array, for example. Older records are thus overwritten by newer ones and will not be used in the next transition table generation.
- the launch component 312 can perform the following: store launch records; generate a transition model based on the launch records; and update a transition model based on new data (aging). Note that the current context of the launch component 312 can be stored using a singleton object.
- a circular array can store launch records, and launch records can come in the form of a hash of the application name.
- the count of launch entries added to the array since the last time a transition model was generated can also be recorded. This count can be used to trigger new model generation.
- a value of the number of launch records in the array can also be stored, and in one implementation, is not to exceed an application launch history count.
- an index can be provided referencing where the next launch record is stored.
- the value of index can range from zero to the launch history count.
- a circular array can be provided that contains the last two (or n) application launches. This array can be used to compute a hash into the transition table during predictions. An index can also be provided for where the next last-application record will be stored.
- a hash table is provided for containing the current top applications being considered, which is used to determine if a launch record needs to be considered for the transition table generation.
- Launch records are stored in the history circular array stored in a launch component context. Launch records are stored as they come in, and launch records for foreground applications are stored. When the number of new launch records since the last transition table creation reaches a certain threshold represented by the constant, the transition table is regenerated. This ensures proper aging. There is, however, an exception to this threshold during startup time, since the launch component does not have an existing model when the launch component 312 is first run on the system; it uses a smaller threshold to trigger the creation of the first model. At periodic intervals, the launch records can be persisted onto disk.
- the launch component 312 determines the top applications. These are the applications that are considered when constructing the transition table. This limit provides an upper bound on the size of the transition table. The launch component 312 puts the current set of top applications on the hash table stored in a launch component context object.
- the launch component 312 can make a second pass through the launch records and use the last n (where n is equal to a cluster size) application hashes to simulate an n th order Markov model.
- the launch component 312 can logically OR these hashes and use that as a key to the hash table. Pauses can also be considered as launches. These events can be marked with a special symbol in the table (e.g. “L”) and are used to generate additional combinations for the Markov table.
- the launch history and a transition table can be maintained per time-of-day period where the time-of-day periods can be arranged hierarchically. For example, in a two-level hierarchy, one can maintain 6-hour time periods for weekdays and a “parent” time period for all five weekdays. The same can be done for weekends as well.
- the current and the parent time periods' top n launch predictions can be combined, probabilistically favoring the most specific time period.
- the value is an application cluster object that contains the list of observed transitions implemented using a single linked list hanging off of the cell head member.
- the next application launch routine shows how the most likely next applications are computed.
- the routine accepts a threshold so only predictions that are at least this value are included.
- the routine can look at the last two (or whatever the value of the cluster size) applications launched, gets the OR'd value of the two hashes, and uses this as the key to the transition table.
- the value returned by this hash table can be a pointer to an application cluster object. As described previously, this object represents the row of the transition table that corresponds to the combined hash.
- the object has a single linked list of transitions to a particular application with the number of transitions (hits) to this particular application. Dividing this number by the cluster hit count generates the probability that the next application is this application.
- the launch component 312 walks this singly linked list and picks out the top applications that have probabilities that are at least equal to the user provided threshold.
- the launch component 312 writes the current launch records to disk. In this example, this ensures that the launch records will be current up to one hour in case of unexpected shutdowns.
- the launch component 312 can also write out the current indices and counts related to the table. On startup, the data is loaded and new records appended to the loaded records using the counts and indices that were stored with the launch records.
- FIG. 4 illustrates an exemplary representation of application-prefetching associated with cost-benefit analysis.
- the core notion is not to only consider the likelihood of the next application to be fetched, but also its size on disk, and thus, the amount of time that would be needed to “page it in” when a user asks for that application and required related data resources.
- the representation is a sample qualitative curve, both a smooth curve that could be assessed from users in a latency study, but also the piecewise linear representation.
- the idea is that the savings in latency (and thus, the expected savings for each component prefetched) is computed by looking at the size of each application and determining how much frustration would be saved with each application. This is “expected savings” if considering the likelihood of the application being used.
- FIG. 5 illustrates a more detailed block diagram of a system 500 that facilitates the management of bounded memory resources.
- the system 500 includes the bounded memory component 102 and, the context component 314 , application monitor component 310 and multi-model component 316 , described respectively with respect to FIG. 1 and FIG. 3 .
- the application monitor component 310 monitors one or more applications 504 (denoted APP 1 , APP 2 , . . . , APPT, where T is an integer) and for which the model component 316 generates one or more models 506 (denoted MODEL 1 , MODEL 2 , . . . , MODEL N , where N is an integer).
- the context component 314 analyzes, determines, and receives context information (e.g., user preferences, application type data, data type, device type data, device capabilities data, geolocation data, time/date data, . . . ) which can be used to further develop the models 506 .
- context information e.g., user preferences, application type data, data type, device type data, device capabilities data, geolocation data, time/date data, . . .
- a first statistical model (MODEL 1 ) can be generated based on the order in which the first two applications (APP 1 and APP 2 ) are used by the user. Accordingly, cache memory of the memory component 102 can be controlled such that prefetching and/or allocation will be according to the order of execution.
- the model (MODEL 2 ) can be generated that manages memory of the memory component 102 such that the smaller app (APP 2 ) can be given priority in execution over APP 1 based on available cache memory.
- the user routinely uses the same application APP 2 on a given device at an approximate time.
- the system 500 can predict and then expect that APP 2 will be used again, as developed into (MODEL 2 ), and the prefetching and/or allocation processes can be performed in preparation for APP 2 to be executed again at this time.
- FIG. 6 illustrates a system 600 having a memory system 602 that can include many different types of memory (bounded, and relatively speaking, “unbounded”) that benefit from the application usage optimization architecture of the subject innovation.
- the memory system 602 can include one or more bounded memories such as of L1, L2, and L3 cache memory 604 (e.g. any Lx cache memory, where x is an integer), static RAM cache memory 606 , system main memory 608 , removable card memory 610 (e.g., flash memory), and mass storage subsystems 612 (e.g., hard drive, optical drive, RAM drive . . . ).
- a statistical model 614 receives as input application usage data associated with one or more system processes 616 that utilize the memory system 602 , and operates accordingly to facilitate system management related application usage given bounded memory conditions for any of the memory of the memory system 602 .
- the learning and reasoning component 108 can interface to receive the application usage data and, to both the statistical model 614 and the memory system 602 to learn and reason about their processes, and to facilitate automation of one or more functions or processes thereof.
- FIG. 7 illustrates a system 700 having one version of a memory subsystem 702 that utilizes prefetching and caching based on application usage and bounded memory conditions in accordance with another aspect.
- the subsystem 702 includes an L1 cache memory 704 , and an L2 cache memory 706 that connects to a main memory 708 .
- the subsystem 702 also includes a prediction/allocation component 710 that interfaces to a prefetch buffer 712 for fetching application information in preparation for caching in the L2 cache 706 .
- the prediction/allocation component 710 facilitates at least one of a prediction function for predicting what application(s) will be passed to the L2 cache memory 706 and an allocation function for allocating memory in the L2 cache memory 706 .
- the multi-model component 316 interfaces to the memory subsystem to effect at least the prefetching and prediction/allocation component based on a single model or for a mixed model implementation, as activated by the user (or system processes).
- a mass storage system 716 can interface to the memory subsystem 702 to provide access to applications (or programs) stored thereon. For example, a user can initiate launch of an application (e.g. system services program, word processor, browser . . . ) that resides on the storage system 716 . Once launched, the program is loaded into one or several parts the memory subsystem 702 for faster execution. Additionally, application and data activities are monitored for at least foreground and background activity.
- an application e.g. system services program, word processor, browser . . .
- usage information is logged and processed in the monitor component 310 for model generation in the model component 316 .
- the model component 316 can facilitate execution of one or more of the appropriate model(s) such that subsequent user interaction can lead to predicting a next application launch.
- the system 700 will begin prefetching the application(s) into the memory subsystem 702 and/or allocating memory space for processing of the application(s).
- the user and user system does not need to wait for such information to be loaded for execution or processing.
- this description speaks of “application” usage being monitored, this can also include code, data, and instructions associated with the application.
- Prefetching can be performed in a manner that minimizes the perceived latencies associated with future application launches—given a constraint of the total memory available for prefetching (the knapsack). That is, a policy can be developed that maximizes the “expected value” of having a set of prefetched items (at any period in time, based on the current predictions) within a limited “knapsack” of a size equal to the memory available for prefetching.
- one more step can be included to prove that the result will be of a high quality.
- the single item with the largest single benefit that would fit into the knapsack if it were there all alone, then compare the value of choosing only the item with the highest value and the value associated with the summation of the values of the list of applications, sorted by cost-benefit ratio (up to the memory deadline).
- the resulting value of the knapsack solution in one implementation, should be shown to be of a value within a factor of two of optimal.
- the idea is to first compute a cost-benefit ratio for each potential item to prefetch. That is, compute a ratio of:
- the non-linear change in utility is computed as a function of megabytes, used in the numerator of Equation (1), and more user-centric prefetching performed.
- the utility function can be inserted into the numerator in Equation (1), sort to get a value density, and continue prefetching until the bounded memory is full. As the probability changes, readjust the best list to fit, and determine if this causes a recommended change in the prefetched list.
- FIG. 8 illustrates a methodology of performing prefetching in a way that maximizes an expected value of having prefetched items within the bounded memory (or knapsack) to minimized perceived latencies.
- items e.g. data, applications
- the items are received for consideration for insertion into the bounded memory.
- the items are sorted according to a cost-benefit ratio of priority data. Sorting can be based on learned and reasoning priority criteria such as related to the context information described herein, type of data, kind of data, data content (private or public), for example. Considering such criteria, the priority values are computed and assigned to the items according to the ratio described above.
- the ratios are ordered from the maximum to the minimum cost-benefit ratio.
- the sizes of the associated items are accumulated (from the maximum ratio, down) until the total capacity of the bounded memory is reached.
- the items associated with the accumulated item sizes are selected for prefetching into the bounded memory.
- validation can be performed to prove that the results are optimum by computing linear and/or non-linear functions related to item size and latency.
- FIG. 9 illustrates a methodology of employing context information for model development and memory optimization in accordance with another aspect of the innovation.
- a modeling system is received for generating one or more statistical models based on application usage.
- context is monitored for context data.
- a model is selected and employed based on the context data.
- the model can be changed (or updated) based on a change in context data.
- FIG. 10 illustrates a methodology of generating and a model and prefetching application information based on the model in view of memory optimization.
- a modeling system is received for generating one or more statistical models based on application usage.
- application usage is monitored.
- one or more statistical models are generated based on the application usage.
- prediction is made of the next application to be used based on one or more of the models.
- a prefetch process is initiated in preparation for execution of the predicted application. It is to be appreciated that either one or both of the prefetch process or/and allocation process can be performed.
- FIG. 11 illustrates a system 1100 having a drive memory subsystem 1102 that benefits from memory optimization and application transitioning in accordance with another aspect.
- the drive system 1102 can include a disk controller processor 1104 for controlling driver operations and for interfacing to other systems that utilize data stored on the drive subsystem 1102 .
- the controller 1104 can have onboard controller cache memory 1106 for caching instructions, as well as interface to an external drive cache memory 1108 for caching data from a storage subsystem 1110 that the user has recently used.
- the storage subsystem 1110 e.g., magnetic medium, optical disk
- the application monitor component 310 can interface to the drive subsystem 1102 to monitor application usage, as the application is being pulled from the storage subsystem 1110 .
- application usage can be monitored through operating system (OS) calls, etc., by way of the OS and/or system CPU 1114 .
- a statistical modeling component 1112 can then model the application activity, and apply the model for application transitioning through memory optimization in the cache memory ( 1106 and/or 1108 ) of the drive memory subsystem 1102 .
- FIG. 12 illustrates a system 1200 having a dual core processor subsystem 1202 and accompanying memory component 1204 that benefits from bounded memory optimization and application transitioning in accordance with a novel aspect.
- the system 1200 includes a first system CPU core 1206 (denoted CPU CORE 1 ) and a second system CPU core 1208 (denoted CPU CORE 2 ) both of which can share in handling the overall processing capabilities of a system in which the subsystem 1202 is installed.
- the first core 1206 can process a first application
- the second core 1208 can process a second application.
- both cores ( 1206 and 1208 ) can cooperate in processing aspects of a single application.
- the application monitoring component 302 that includes the application launch component 312 can interface to the core subsystem 1202 to monitor application usage as detected by an application being loaded for processing by either of the cores ( 1206 and 1208 ) or for two applications being loaded for respective processing by the cores ( 1206 and 1208 ).
- the multi-model component 316 can interface to the core subsystem 1202 and the monitor component 310 , thereby providing support for developing one or more models based on application usage and for model execution when requested. More specifically, the model component 316 can interface directly to a dual-purpose prediction and allocation component 1210 , which provides both prediction processing and memory allocation for any connected memories.
- the first core subsystem 1206 can include an L1 cache memory 1212 that further includes a data cache 1214 for caching frequently (or recently) used data, and an instruction cache 1216 for caching instructions that are frequently (or more recently) used.
- the second core subsystem 1208 can include an L1 cache memory 1218 that further includes a data cache 1220 for caching frequently (or recently) used data, and an instruction cache 1222 for caching instructions that are frequently (or more recently) used.
- the prediction and allocation component 1210 can interface directly to the L1 cache memories ( 1212 and 1218 ) for prefetch and/or allocation processing.
- a prefetch buffer 1224 is provided for buffering prefetch information during a prefetch process, which can be part of the prediction function. That is, once it has been predicted that an application will be utilized next by the user, the prefetch process can be initiated to begin pulling the application into memory for processing and launching.
- the allocation component 1210 can begin allocating memory space in the L1 caches ( 1212 and 1218 ), an L2 cache memory 1226 and/or a main system memory 1228 , for example.
- the allocation process can occur through the prefetch buffers 1224 to the L2 memory 1226 and the main memory 1228 .
- the predication and allocation component 1210 interface directly to each of the L2 memory and the main memory 1228 to manage memory allocation, as needed.
- a multi-processor system with associated cache memory can also benefit from the disclosed application transitioning and bounded memory optimization architecture.
- FIG. 13 illustrates an alternative implementation that utilizes the learning and reasoning component 108 in a system 1300 for application transitioning an bounded memory optimization.
- the component 108 can learn, based on context information (e.g., time of day, week, . . . ) of the context component 314 when the user typically launches an application 504 .
- context information e.g., time of day, week, . . .
- the component 108 can learn this application usage information, and reason (or predict) that there is a high likelihood that the user will again launch and use this same e-mail application tomorrow.
- a statistical model 506 is generated with this information and for the purpose of, at about 7:30 AM tomorrow, launching the application for the user via the application launch component 312 . Additionally, the component 108 can be utilized to predict the next application to be launched after the initial application launch.
- the architecture can further manage at least memory prefetch and/or allocation functions at the system level, and even at the drive level, to automate and quickly bring to presentation to the user the predicted e-mail application.
- the model may need to be updated based on changes in user interaction with the e-mail application.
- the architecture can learn and reason that the user typically launches a device browser application at this location. Accordingly, a statistical model will be developed such that when the user approaches this location the next time, the model execution will cause automatic launching or imminent launch preparation of the device browser application.
- memory management processes e.g., prefetching and allocation
- prefetching and allocation can be initiated in preparation and for launching of the browser application.
- FIG. 14 illustrates a methodology of inferring probability of a next application launch based on observed processes using a Markov model.
- application launch data from previous process activity is received.
- a Markov model is developed that predicts a next application launch based on previous steps associated with system processes.
- the model is employed in the system.
- the model looks back n-steps associated with the system processes, where n is a number that can be varied depending on the available memory.
- context data is accessed and processed as part of the model.
- the model continues to look at the top n of all applications being used by a user, and in combination with contextual information such as time of day and day of week, for example, builds Markov models that are focused on explicitly reasoning about the top n applications.
- the model uses both the n applications and an “other” (O) application tokens (O meaning “other”, representing processes that have not been modeled explicitly), the model examines sequences, for predicting the next applications, as indicated at 1412 .
- the methods consider that they just saw used and/or launched, App 1 , App 3 , App 4 , O, and App 5 , and the methods predict that the likelihood of the next application used, in order of probability is, App 5 , App 8 , O, App 7 , and so on. This is one way of dealing with the bounded resources issues.
- the predicted application and/or data are prefetched.
- the model can be updated based on changes in activities or other information (e.g., context changes).
- the predictive models can be employed for predicting the next launched application, that is, the next application to be launched that has not been launched before within a session or extended session, or the next application to be used, that is, to be switched to in a multitasking environment.
- Evidence that applications have been already launched by the user within a session versus not yet launched, or launched and then closed, can be used in such a predictive model. For example, in learning and using a model for predicting the next application to be used or launched the model can segment out and have different naming for applications that are already launched versus applications that have not yet been launched.
- the sequences for Markov modeling can also include applications that have been closed.
- the amount of time that a user has been at his or her computer after a log-in to that computer in addition to the application launching and usage may be useful in making predictions.
- the amount of time that a user has been away from the computer when the user returns may be useful.
- the amount of time that a user has been active within each application may also be useful in making predictions.
- the tasks or subtasks performed within applications e.g., reading sets of new email messages, performing a save operation, . . . ) may be useful in making predictions of application switching and usage.
- Prediction can be related not only to the next application to be launched, but also within what timeframe. For example, it can be predicted that App 1 will launched within the next five applications and/or within the next ten minutes.
- one implementation of the subject architecture can employ a “model mixture” method, where a Markov model, for example, can be combined with a model that captures background statistics.
- FIG. 15 illustrates a methodology of mixing models to achieve the desired application transitioning and bounded memory management.
- receive Markov model that provides statistics about the top n applications to decide a next application launch.
- receive model that capture background statistics.
- these statistics can then be weighted together, based on decisions about which statistics more reliability should be placed.
- the statistics can be weighted together with weightings of k and 1 ⁇ k, where k can be varied or tuned.
- the Markov model predicts that the likelihood that App 1 will be the next application launched (or correspondingly in another representation that the likelihood that application App 1 will be launched within the next five applications, and/or within ten minutes, etc., is a value 0.2, but background statistics alone indicate that App 1 will be launched according to a value of 0.4.
- FIG. 16 illustrates a flow diagram of a methodology of selecting a statistical model for execution in accordance with an aspect.
- a statistical modeling system is received.
- application usage is monitored and usage information is shared with the modeling system.
- a model is developed based on the usage.
- context information related to the application usage is associated with the model.
- the model is selected based on the matched (or substantially matched) context information, as indicated at 1610 .
- the model is applied (or executed) to launch the associated application, and manage memory utilization, as described herein.
- This methodology associates the context information separate from the model development.
- the context information can be included as part of the model.
- FIG. 17 illustrates a methodology of learning and reasoning about multiple application transitioning and memory optimization processes.
- multiple applications usage is monitored.
- the order of launching the multiple applications is stored.
- context information is received and associated with the multiple applications usage information.
- the context information can be the location of the user (e.g., office or home), the time of day (e.g., morning at home, afternoon at work, or evening at home again), the type of computing device employed (e.g., a portable computer or a cell phone), the size of the cache memory in the device, the available applications (e.g. a cell phone could have fewer and less memory/CPU intensive applications than a portable computer), and so on.
- Many other context parameters or attributes can be included in the context information for consideration.
- memory optimization processes associated with the multiple applications can also be monitored. For example, if it is learned and reasoned that the order of launching of the multiple applications should be changed to optimize memory processes, then the system can change the order, insofar as the user allows this to occur. For example, if the change in order occurs transparently to the user, no user intervention should be required. However, if the order change is noticeable to the user such that the user desires to maintain the previous order of application launch, the user can override or change the order back to the original order, which override process can be learned by the system, and reasoned for avoidance the next time.
- a statistical model is developed that considers the context information, the multiple applications usage information, and memory optimization information.
- the model is executed based on the next receipt of the context information. The system can reason about the amount of context information received in order to determine if this model and its associated context information is a sufficient match for execution of this model, or a different model should be executed.
- model generation can be moved (or copied) from one system to another to avoid “re-modeling” of other user systems. This is most advantageous where the computing systems are substantially similar in hardware and software capabilities, as well as applications. For example, model sharing can be accomplished more seamlessly between two desktop computers running substantially the same applications, than between a desktop computing system and a cellular telephone, for example.
- FIG. 18 illustrates a system 1800 for managing multiple caching subsystems 1802 of the bounded memory resource 102 for application transitioning and memory utilization. It is to be appreciated that many computing systems and/or networks employ many different caching subsystems 1802 (denoted CACHING SUBSYSTEM 1 , CACHING SUBSYSTEM 1 , . . . , CACHING SUBSYSTEM C , where C is an integer).
- a first caching subsystem 1804 is employed at the mass storage level (e.g., hard drive), a second caching system 1806 is employed at the system board level (e.g., the processor internal and external cache), a third caching subsystem can be employed at a network server for multi-user applications access and processing, and yet a fourth subsystem on a local graphics adapter for enhanced performance of graphics processing.
- the mass storage level e.g., hard drive
- a second caching system 1806 is employed at the system board level (e.g., the processor internal and external cache)
- a third caching subsystem can be employed at a network server for multi-user applications access and processing
- a fourth subsystem on a local graphics adapter for enhanced performance of graphics processing.
- the disclosed architecture can be employed to consider more complex combinations of caching and applications processing.
- applications transitioning and memory optimization processing can be focused more toward system processes and programs (e.g., startup, handshaking of graphics and CPU processes, OS processes) rather than (or in combination with) the applications and programs that the user would normally see or desire to have launched, such as a browser, a word processing application, an e-mail program, and a graphics development environment application.
- the system 1800 includes a modeling component 1808 (e.g., Markov model, mixed model . . . ) for generating models for execution, the application monitoring component 310 for monitoring application and program usage at all levels of system activity, the context component 314 for receiving and processing context information in association with the usage being logged and processed, and optionally, the learning and reasoning component 108 for learning and reasoning about system application and program usage and memory optimizations, and thereafter facilitating automation of one or more of such activities.
- a modeling component 1808 e.g., Markov model, mixed model . . .
- the application monitoring component 310 for monitoring application and program usage at all levels of system activity
- the context component 314 for receiving and processing context information in association with the usage being logged and processed
- the learning and reasoning component 108 for learning and reasoning about system application and program usage and memory optimizations, and thereafter facilitating automation of one or more of such activities.
- launching of an application can be coordinated between the caching subsystem 1804 at the mass storage drive level with the caching subsystem 1806 (e.g., CPU, L1 cache, L2 cache, . . . ) at the system board level to provide improved application loading.
- the caching subsystem 1806 e.g., CPU, L1 cache, L2 cache, . . .
- the caching subsystem at the network server can be accessed for improved network application activity between the user client and the server.
- memory caching optimization and application transitioning can be coordinated between a portable device (e.g., PDA, cell phone, . . . that can communicate (e.g. in a wired fashion via USB or wirelessly) with a desktop computer.
- a portable device e.g., PDA, cell phone, . . .
- the model component 1808 can model application and memory activities for predicting and employing future application and memory optimizations.
- the component 108 can apply learning and reasoning to further improve on user habits and behaviors, as well as system behaviors.
- a component can be, but is not limited to being, a process running on a processor, a processor, a hard disk drive, multiple storage drives (of optical and/or magnetic storage medium), an object, an executable, a thread of execution, a program, and/or a computer.
- a component can be, but is not limited to being, a process running on a processor, a processor, a hard disk drive, multiple storage drives (of optical and/or magnetic storage medium), an object, an executable, a thread of execution, a program, and/or a computer.
- an application running on a server and the server can be a component.
- One or more components can reside within a process and/or thread of execution, and a component can be localized on one computer and/or distributed between two or more computers.
- FIG. 19 there is illustrated a block diagram of a computer operable to execute the disclosed application transitioning and memory optimization architecture.
- FIG. 19 and the following discussion are intended to provide a brief, general description of a suitable computing environment 1900 in which the various aspects of the innovation can be implemented. While the description above is in the general context of computer-executable instructions that may run on one or more computers, those skilled in the art will recognize that the innovation also can be implemented in combination with other program modules and/or as a combination of hardware and software.
- program modules include routines, programs, components, data structures, etc., that perform particular tasks or implement particular abstract data types.
- inventive methods can be practiced with other computer system configurations, including single-processor or multiprocessor computer systems, minicomputers, mainframe computers, as well as personal computers, hand-held computing devices, microprocessor-based or programmable consumer electronics, and the like, each of which can be operatively coupled to one or more associated devices.
- the illustrated aspects of the innovation may also be practiced in distributed computing environments where certain tasks are performed by remote processing devices that are linked through a communications network.
- program modules can be located in both local and remote memory storage devices.
- Computer-readable media can be any available media that can be accessed by the computer and includes both volatile and non-volatile media, removable and non-removable media.
- Computer-readable media can comprise computer storage media and communication media.
- Computer storage media includes both volatile and non-volatile, removable and non-removable media implemented in any method or technology for storage of information such as computer-readable instructions, data structures, program modules or other data.
- Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital video disk (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by the computer.
- the exemplary environment 1900 for implementing various aspects includes a computer 1902 , the computer 1902 including a processing unit 1904 , a system memory 1906 and a system bus 1908 .
- the system bus 1908 couples system components including, but not limited to, the system memory 1906 to the processing unit 1904 .
- the processing unit 1904 can be any of various commercially available processors. Dual microprocessors and other multi-processor architectures may also be employed as the processing unit 1904 .
- the system bus 1908 can be any of several types of bus structure that may further interconnect to a memory bus (with or without a memory controller), a peripheral bus, and a local bus using any of a variety of commercially available bus architectures.
- the system memory 1906 includes read-only memory (ROM) 1910 and random access memory (RAM) 1912 .
- ROM read-only memory
- RAM random access memory
- a basic input/output system (BIOS) is stored in a non-volatile memory 1910 such as ROM, EPROM, EEPROM, which BIOS contains the basic routines that help to transfer information between elements within the computer 1902 , such as during start-up.
- the RAM 1912 can also include a high-speed RAM such as static RAM for caching data.
- the computer 1902 further includes an internal hard disk drive (HDD) 1914 (e.g., EIDE, SATA), which internal hard disk drive 1914 may also be configured for external use in a suitable chassis (not shown), a magnetic floppy disk drive (FDD) 1916 , (e.g., to read from or write to a removable diskette 1918 ) and an optical disk drive 1920 , (e.g., reading a CD-ROM disk 1922 or, to read from or write to other high capacity optical media such as the DVD).
- the hard disk drive 1914 , magnetic disk drive 1916 and optical disk drive 1920 can be connected to the system bus 1908 by a hard disk drive interface 1924 , a magnetic disk drive interface 1926 and an optical drive interface 1928 , respectively.
- the interface 1924 for external drive implementations includes at least one or both of Universal Serial Bus (USB) and IEEE 1394 interface technologies. Other external drive connection technologies are within contemplation of the subject innovation.
- the drives and their associated computer-readable media provide nonvolatile storage of data, data structures, computer-executable instructions, and so forth.
- the drives and media accommodate the storage of any data in a suitable digital format.
- computer-readable media refers to a HDD, a removable magnetic diskette, and a removable optical media such as a CD or DVD, it should be appreciated by those skilled in the art that other types of media which are readable by a computer, such as zip drives, magnetic cassettes, flash memory cards, cartridges, and the like, may also be used in the exemplary operating environment, and further, that any such media may contain computer-executable instructions for performing the methods of the disclosed innovation.
- a number of program modules can be stored in the drives and RAM 1912 , including an operating system 1930 , one or more application programs 1932 , other program modules 1934 and program data 1936 . All or portions of the operating system, applications, modules, and/or data can also be cached in the RAM 1912 . It is to be appreciated that the innovation can be implemented with various commercially available operating systems or combinations of operating systems.
- a user can enter commands and information into the computer 1902 through one or more wired/wireless input devices, e.g. a keyboard 1938 and a pointing device, such as a mouse 1940 .
- Other input devices may include a microphone, an IR remote control, a joystick, a game pad, a stylus pen, touch screen, or the like.
- These and other input devices are often connected to the processing unit 1904 through an input device interface 1942 that is coupled to the system bus 1908 , but can be connected by other interfaces, such as a parallel port, an IEEE 1394 serial port, a game port, a USB port, an IR interface, etc.
- a monitor 1944 or other type of display device is also connected to the system bus 1908 via an interface, such as a video adapter 1946 .
- a computer typically includes other peripheral output devices (not shown), such as speakers, printers, etc.
- the computer 1902 may operate in a networked environment using logical connections via wired and/or wireless communications to one or more remote computers, such as a remote computer(s) 1948 .
- the remote computer(s) 1948 can be a workstation, a server computer, a router, a personal computer, portable computer, microprocessor-based entertainment appliance, a peer device or other common network node, and typically includes many or all of the elements described relative to the computer 1902 , although, for purposes of brevity, only a memory/storage device 1950 is illustrated.
- the logical connections depicted include wired/wireless connectivity to a local area network (LAN) 1952 and/or larger networks, e.g., a wide area network (WAN) 1954 .
- LAN and WAN networking environments are commonplace in offices and companies, and facilitate enterprise-wide computer networks, such as intranets, all of which may connect to a global communications network, e.g., the Internet.
- the computer 1902 When used in a LAN networking environment, the computer 1902 is connected to the local network 1952 through a wired and/or wireless communication network interface or adapter 1956 .
- the adaptor 1956 may facilitate wired or wireless communication to the LAN 1952 , which may also include a wireless access point disposed thereon for communicating with the wireless adaptor 1956 .
- the computer 1902 can include a modem 1958 , or is connected to a communications server on the WAN 1954 , or has other means for establishing communications over the WAN 1954 , such as by way of the Internet.
- the modem 1958 which can be internal or external and a wired or wireless device, is connected to the system bus 1908 via the serial port interface 1942 .
- program modules depicted relative to the computer 1902 can be stored in the remote memory/storage device 1950 . It will be appreciated that the network connections shown are exemplary and other means of establishing a communications link between the computers can be used.
- the computer 1902 is operable to communicate with any wireless devices or entities operatively disposed in wireless communication, e.g., a printer, scanner, desktop and/or portable computer, portable data assistant, communications satellite, any piece of equipment or location associated with a wirelessly detectable tag (e.g. a kiosk, news stand, restroom), and telephone.
- any wireless devices or entities operatively disposed in wireless communication e.g., a printer, scanner, desktop and/or portable computer, portable data assistant, communications satellite, any piece of equipment or location associated with a wirelessly detectable tag (e.g. a kiosk, news stand, restroom), and telephone.
- the communication can be a predefined structure as with a conventional network or simply an ad hoc communication between at least two devices.
- Wi-Fi Wireless Fidelity
- Wi-Fi is a wireless technology similar to that used in a cell phone that enables such devices, e.g. computers, to send and receive data indoors and out; anywhere within the range of a base station.
- Wi-Fi networks use radio technologies called IEEE 802.11x (a, b, g, etc.) to provide secure, reliable, fast wireless connectivity.
- IEEE 802.11x a, b, g, etc.
- a Wi-Fi network can be used to connect computers to each other, to the Internet, and to wired networks (which use IEEE 802.3 or Ethernet).
- Wi-Fi networks can operate in the unlicensed 2.4 and 5 GHz radio bands.
- IEEE 802.11 applies to generally to wireless LANs and provides 1 or 2 Mbps transmission in the 2.4 GHz band using either frequency hopping spread spectrum (FHSS) or direct sequence spread spectrum (DSSS).
- IEEE 802.11a is an extension to IEEE 802.11 that applies to wireless LANs and provides up to 54 Mbps in the 5 GHz band.
- IEEE 802.11a uses an orthogonal frequency division multiplexing (OFDM) encoding scheme rather than FHSS or DSSS.
- OFDM orthogonal frequency division multiplexing
- IEEE 802.11b (also referred to as 802.11 High Rate DSSS or Wi-Fi) is an extension to 802.11 that applies to wireless LANs and provides 11 Mbps transmission (with a fallback to 5.5, 2 and 1 Mbps) in the 2.4 GHz band.
- IEEE 802.11 g applies to wireless LANs and provides 20+Mbps in the 2.4 GHz band.
- Products can contain more than one band (e.g., dual band), so the networks can provide real-world performance similar to the basic 10BaseT wired Ethernet networks used in many offices.
- the system 2000 includes one or more client(s) 2002 .
- the client(s) 2002 can be hardware and/or software (e.g., threads, processes, computing devices).
- the client(s) 2002 can house cookie(s) and/or associated contextual information by employing the subject innovation, for example.
- the system 2000 also includes one or more server(s) 2004 .
- the server(s) 2004 can also be hardware and/or software (e.g., threads, processes, computing devices).
- the servers 2004 can house threads to perform transformations by employing the invention, for example.
- One possible communication between a client 2002 and a server 2004 can be in the form of a data packet adapted to be transmitted between two or more computer processes.
- the data packet may include a cookie and/or associated contextual information, for example.
- the system 2000 includes a communication framework 2006 (e.g., a global communication network such as the Internet) that can be employed to facilitate communications between the client(s) 2002 and the server(s) 2004 .
- a communication framework 2006 e.g., a global communication network such as the Internet
- Communications can be facilitated via a wired (including optical fiber) and/or wireless technology.
- the client(s) 2002 are operatively connected to one or more client data store(s) 2008 that can be employed to store information local to the client(s) 2002 (e.g., cookie(s) and/or associated contextual information).
- the server(s) 2004 are operatively connected to one or more server data store(s) 2010 that can be employed to store information local to the servers 2004 .
Abstract
Description
- Today, more than ever, computer systems have been playing an increasingly important role in the lives of people and businesses. In a micro sense, decisions by machine processes can impact the way a system reacts and/or a human interacts with computer output.
- People have come to expect that they can use computing systems to perform multiple tasks. They are relying on computing systems to support multiple applications, communications, and more generally, multiple goals of computer users. At the same time, users expect computers to respond to commands and application launches without significant latency.
- There are limitations in the quantity of computational memory available at different levels of memory in a hierarchy of storage, and the memory at different levels has different latencies for access of program information and data. Differing amounts of required memory storage lead to different latencies in real time when an application or feature is accessed. In particular, this problem impacts users of portable devices (portable computers, cell phones, PDAs, . . . ), where typically, physical space for memory can be limited and sufficient memory capacity for system processing is usually much more expensive in terms of cost.
- Interest has been growing in opportunities that attempt to solve, or at least reduce, latencies associated with application and data processing by including intelligent memory management for memory systems that employ statistical modeling methods which make predictions about system and user actions so as to provide guidance in decisions about managing the scarce memory resources. A goal with such intelligent memory management is to reduce latencies in the system by reducing the likelihood that the slowest memory, for example, a rotating disk media, will have to be accessed in real time to support a user command.
- Machine learning and reasoning can facilitate the statistical characterization of next actions of the user and/or the system. Unfortunately, general machine learning and reasoning systems can require memory and storage that exceeds the memory and storage available in an operating system environment. Additionally, such systems may impose new latencies on operations, and thus, may result in increasing latencies, even if recommendations for memory management are overall good decisions.
- The following presents a simplified summary in order to provide a basic understanding of some aspects of the disclosed innovation. This summary is not an extensive overview, and it is not intended to identify key/critical elements or to delineate the scope thereof. Its sole purpose is to present some concepts in a simplified form as a prelude to the more detailed description that is presented later.
- The disclosed architecture manages the use of probabilistic and/or decision-theoretic methods that are used to perform learning and reasoning models under limited memory, observational, and runtime resources.
- In the general case, an attempt to minimize latencies by selecting the next applications to prefetch is an intractable optimization, considering the likelihoods of the possible next components to be used, and their sizes (and thus, the amount of expected savings in waiting to have this page in from disk). However, approximations can be employed. For example, given a set of predictions from a bounded-resource probabilistic model, a value-density approximation to a knapsack problem solution can be employed to prioritize components for prefetching and/or retaining in fast memory. (The knapsack problem is a type of integer program with just one constraint—each item that can be selected to go into a knapsack (e.g. a quantity of available memory) having a certain capacity, has a size and a benefit. Given that the knapsack has a certain capacity, the problem becomes a matter of selecting item(s) for insertion into the knapsack so as to maximize the total benefit.)
- In another innovative aspect, more than one predictive method can be employed, and the outputs of different methods can be combined via model mixture methodologies to enhance the accuracy of predictions. Such methods can be used, for example, to mix together background statistics on application usage, for example, partitioned by time of day and week, with inferential Markov models operating under bounded memory resources, with mixture parameters that are tuned to optimize predictive performance.
- In support thereof, disclosed and claimed herein, in one aspect thereof, is a computer-implemented system that facilitates the management of system resources. The system comprises a bounded memory resource for utilization by system processes, and a management component that manages utilization of a learning and reasoning model based on the bounded memory resource to reduce latency in the system processes.
- Other innovative aspects include the following: use of probabilistic and/or decision-theoretic (cost-benefit under uncertainty) models to guide memory management in an operating system, in particular, for both decisions about prefetching and memory retention versus deletion or “paging out” of memory of lower priority items, to free up space for higher value items; use of contextual information in addition to computer action monitoring for predicting next applications to be launched; and, the consideration, beyond just likelihood, of a cost-benefit analysis in prefetching decisions—in essence, of optimizing prefetching so as to minimize user perceived latencies.
- To the accomplishment of the foregoing and related ends, certain illustrative aspects of the disclosed innovation are described herein in connection with the following description and the annexed drawings. These aspects are indicative, however, of but a few of the various ways in which the principles disclosed herein can be employed and is intended to include all such aspects and their equivalents. Other advantages and novel features will become apparent from the following detailed description when considered in conjunction with the drawings.
-
FIG. 1 illustrates a computer-implemented system that facilitates the management of system resources in accordance with the innovative architecture. -
FIG. 2 illustrates a methodology of managing system resources in accordance with an aspect. -
FIG. 3 illustrates a block diagram of an alternative system that facilitates the management of system resources in accordance with another aspect. -
FIG. 4 illustrates an exemplary representation of application-prefetching associated with cost-benefit analysis. -
FIG. 5 illustrates a more detailed block diagram of a system that facilitates the management of bounded memory resources. -
FIG. 6 illustrates a system having a memory system that can include many different types of memory that benefit from the application usage optimization architecture of the subject innovation. -
FIG. 7 illustrates a system having one version of amemory subsystem 702 that utilizes prefetching and caching based on application usage and bounded memory conditions in accordance with another aspect. -
FIG. 8 illustrates a methodology of performing prefetching in a way that maximizes an expected value of having prefetched items within the bounded memory (or knapsack) to minimized perceived latencies. -
FIG. 9 illustrates a methodology of employing context information for model development and memory optimization in accordance with another aspect of the innovation. -
FIG. 10 illustrates a methodology of generating and a model and prefetching application information based on the model in view of memory optimization. -
FIG. 11 illustrates a system having a drive memory subsystem that benefits from memory optimization and application transitioning in accordance with another aspect. -
FIG. 12 illustrates a system having a dual core processor subsystem and accompanying memory component that benefits from bounded memory optimization and application transitioning in accordance with a novel aspect. -
FIG. 13 illustrates an alternative implementation that utilizes the learning and reasoning component in a system for application transitioning an bounded memory optimization. -
FIG. 14 illustrates a methodology of inferring probability of a next application launch based on observed processes using a Markov model. -
FIG. 15 illustrates a methodology of mixing models to achieve the desired application transitioning and bounded memory management. -
FIG. 16 illustrates a flow diagram of a methodology of selecting a statistical model for execution in accordance with an aspect. -
FIG. 17 illustrates a methodology of learning and reasoning about multiple application transitioning and memory optimization processes. -
FIG. 18 illustrates a system for managing multiple caching subsystems of the bounded memory resource for application transitioning and memory utilization. -
FIG. 19 illustrates a block diagram of a computer operable to execute the disclosed application transitioning and memory optimization architecture. -
FIG. 20 illustrates a schematic block diagram of an exemplary application transitioning and memory optimization computing environment in accordance with another aspect. - The innovation is now described with reference to the drawings, wherein like reference numerals are used to refer to like elements throughout. In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding thereof. It may be evident, however, that the innovation can be practiced without these specific details. In other instances, well-known structures and devices are shown in block diagram form in order to facilitate a description thereof.
- The disclosed architecture manages the use of one or more probabilistic and/or decision-theoretic methods, within a learning and reasoning methodology, within a system that includes scarce or limited memory (e.g., system memory, cache memory, mass storage), observational, and runtime resources. Moreover, a mixed model methodology can be applied such that more than one predictive method is employed, the outputs of which can be combined to enhance the accuracy of predictions. Such methods can be used, for example, to mix together background statistics, such as a probability distribution over sets of applications that are used at different times of day and days of week, and Markov inferential models under bounded resources, with mixture parameters that are tuned to optimize predictive performance. Additional novel aspects are described infra.
- Referring initially to the drawings,
FIG. 1 illustrates a computer-implementedsystem 100 that facilitates the management of system resources. Thesystem 100 includes abounded memory resource 102 for utilization by a system process 104 (e.g., an application, data), and amanagement component 106 that manages the utilization of a machine learning andreasoning component 108 based in part on thebounded memory resource 102 to reduce latency associated with thesystem process 104. - Machine learning and reasoning can facilitate the statistical characterization of a user's or system's next actions, based on the collection and analysis of a database of past behavior, extrapolation or interpolation of data based on some best-fit, error estimates of observations, and/or spectral analysis of data or model generated output, for example. Beyond predictions, decisions about which components should be prefetched, which components should remain in memory, and which components should be “paged out” of memory, so as to free space for other program data to be stored, can be based on a cost-benefit analysis, and more generally, under uncertainty, a decision-theoretic analysis that considers preferences and expected latencies.
- Such an analysis considers not only likelihoods that program data will be required to satisfy a user's needs and actions, in working with a computing system, but also the memory required to store in memory the different components of program data associated with the different future needs. Differing amounts of required memory storage lead to different latencies in real time when an application or feature is accessed. Thus, prefetching decisions should consider different latency reductions associated with the prefetching of the components associated with future user needs. In one approach, the ideal allocation of memory can be considered as the solution to a decision-theoretic knapsack analysis and employ a value-density approximation to prioritizing components for prefetching or keeping in memory, versus paging out of data.
- A goal in building such predictive models is to support smart decisions about the transfer of program data into scarce, but fast, memory locations via prefetching operations, and the clearing of memory of program data, so as to free up space for other components.
- The
bounded memory resource 102 can include many different types of memory, for example, L1 cache memory, L2 cache memory, L3 cache memory, etc.; essentially, any of Lx type of cache memory, where x is an integer. Accordingly, statistical models based in part on application usage can be generated that take into consideration the type, size, and/or speed of memory under utilization management. For example, if it is computed and modeled according to one statistical model that the next application (or program or code) expected (according to prediction) to be executed typically utilizes a faster memory (e.g. L1 cache over L2 cache), then thesystem 100 can manage this attribute to use the faster cache memory. - In another example, if it is computed and modeled according to one statistical model that the next application (or program or code) expected to be executed is not a high priority application in terms of prioritization criterion, then the
system 100 can manage this consideration to use the slower cache memory. - In yet another implementation, the
system 100 can enqueue data that allows the expected application to be moved to a faster cache memory when space becomes available in the faster memory. For example, if all or part of the faster memory is allocated or in a prefetch operation, which can be indicators that the memory is under management for another application, the expected application has to wait, or is processed in a slower cache memory. - The machine learning and
reasoning component 108 facilitates automating one or more features in accordance with the subject innovation. In this particular implementation, thecomponent 108 is positioned to interface to each of thebounded memory resource 102, themanagement component 106, and the system process. - The subject invention (e.g., in connection with selection) can employ various learning and reasoning-based schemes for carrying out various aspects thereof. For example, a process for learning and reasoning about predicting when an application will be launched can be facilitated via an automatic classifier system and process.
- A classifier is a function that maps an input attribute vector, x=(x1, x2, x3, x4, xn), to a class label class(x). The classifier can also output a confidence that the input belongs to a class, that is, f(x)=confidence(class(x)). Such classification can employ a probabilistic and/or other statistical analysis (e.g., one factoring into the analysis utilities and costs to maximize the expected value to one or more people) to prognose or infer an action that a user desires to be automatically performed.
- As used herein, terms “to infer” and “inference” refer generally to the process of reasoning about or inferring states of the system, environment, and/or user from a set of observations as captured via events and/or data. Inference can be employed to identify a specific context or action, or can generate a probability distribution over states, for example. The inference can be probabilistic—that is, the computation of a probability distribution over states of interest based on a consideration of data and events. Inference can also refer to techniques employed for composing higher-level events from a set of events and/or data. Such inference results in the construction of new events or actions from a set of observed events and/or stored event data, whether or not the events are correlated in close temporal proximity, and whether the events and data come from one or several event and data sources.
- A support vector machine (SVM) is an example of a classifier that can be employed. The SVM operates by finding a hypersurface in the space of possible inputs that splits the triggering input events from the non-triggering events in an optimal way. Intuitively, this makes the classification correct for testing data that is near, but not identical to training data. Other directed and undirected model classification approaches include, e.g., naïve Bayes, Bayesian networks, decision trees, neural networks, fuzzy logic models, and probabilistic classification models providing different patterns of independence can be employed. Classification as used herein also is inclusive of statistical regression that is utilized to develop models of ranking or priority.
- As will be readily appreciated from the subject specification, the subject invention can employ classifiers that are explicitly trained (e.g. via a generic training data) as well as implicitly trained (e.g., via observing user behavior, receiving extrinsic information). For example, SVM's are configured via a learning or training phase within a classifier constructor and feature selection module. Thus, the classifier(s) can be employed to automatically learn and perform a number of functions according to predetermined criteria.
- In one example, the
component 108 learns and reasons about activities of thesystem process 104 and other system processes in order to effect more efficient management (by the management component 106) of thebounded memory 102. Thesystem process 104 can be related any program or application launch, foreground and background activities, program and application data activities, and user and/to system interactions with thesystem process 104, whether direct or indirect. Additional implementations of the learning andreasoning component 108 are described infra. -
FIG. 2 illustrates a methodology of managing system resources in accordance with an aspect. While, for purposes of simplicity of explanation, the one or more methodologies shown herein, for example, in the form of a flow chart or flow diagram, are shown and described as a series of acts, it is to be understood and appreciated that the subject innovation is not limited by the order of acts, as some acts may, in accordance therewith, occur in a different order and/or concurrently with other acts from that shown and described herein. For example, those skilled in the art will understand and appreciate that a methodology could alternatively be represented as a series of interrelated states or events, such as in a state diagram. Moreover, not all illustrated acts may be required to implement a methodology in accordance with the innovation. - At 200, a limited-availability (or bounded) memory resource of a device is received for utilization by one or more device processes (e.g. programs and program data). At 202, a probabilistic and/or decision-theoretic model is processed that predicts execution of the device processes. At 204, processing of the model(s) is based on the limited-availability memory resource to reduce latency in the device processes.
-
FIG. 3 illustrates a block diagram of analternative system 300 that facilitates the management of system resources in accordance with another aspect. Thesystem 300 includes thebounded memory resource 102 for utilization by system processes 302 that can include operating system (OS) processes, program actions, data actions, and data associated with user actions, for example. - The
system 300 includes amemory management component 304 for managing one or more memory operations. For example, aprefetch component 306 facilitates prefetching of data and/or programs into thebounded memory 102. Additionally, aretention component 308 of thememory management component 304 facilitates data retention control in thebounded memory 102. - A
monitor component 310 facilitates the monitoring of application actions and associated states, for example, if the program is in a foreground state or a background state. Anapplication launch component 312 of themonitor component 312 supports the computation of probability data associated with launch of a next application. Theapplication launch component 312 can be configured to not only focus on a foreground application, but also background application processes. Additionally, thelaunch component 312 can be configured with more flexibility to give more general preference to, for example, applications the user spends more time on, and so on. Still further, a classification mechanism can be employed to separate applications the user “cares” about from the applications the user does not care about (e.g., virus checkers, cookie checkers, spyware checking, and other processes that could launch, and in particular, launch in the foreground). Accordingly, modeling can include filtering out the applications the user does not care about (related at least to usage monitoring and latency effects) and only consider applications that are important to the user, and with respect to latency considerations (e.g. applications the use cares about that are disk-bound, that can lead to delays). Moreover, thelaunch component 312 can be limited to achieve better prediction accuracy and avoid wasting the limited memory resources by prefetching applications that are not critical for user-perceived responsiveness. The notion of caring can be determined by historical data based on how often the user has launched the application in the past, how much data has been generated by an application, and so on. - One kind of a probabilistic model that can be used to infer the probability of the next application launch, based on a sequence of observed applications, is a Markov model. Such a model can look back n-steps associated with the system processes, where n is an number that can be varied depending on the available memory. The system continues to look at the top n of all applications being used by a user, and in combination with contextual information such as time of day and day of week, for example, builds Markov models that are focused on explicitly reasoning about the top n applications, and then using both the n applications and an “other application” token for examining sequences and for predicting the next applications. In other words, under bounded resources, the methods consider that they just saw, App1, App3, App4, O (for “other”, meaning, not modeled explicitly), and App5, and the methods predict that the likelihood of the next application, in order of probability is, App5, App8, O, App7, and so on. This is one way of dealing with the bounded resources issues.
- The
system 300 can also include acontext component 314 such that machine learning and reasoning methods for supporting memory management can consider not just a set of actions or situations (e.g. data and program actions) sensed via a computing system, but can also consider other sources of contextual evidence, such as time of day, day of week, the identity of the current user or users working with a computing system, information about appointments stored on a calendar, and so on. - A
multi-model component 316 facilitates the use of many different models in support of managing the bounded memory resource. One implementation employs a “model mixture” method, where a Markov model can be combined with a model that captures background statistics. This is described in greater detailed with respect toFIG. 15 . - The
system 300 facilitates other innovative aspects, including the use of probabilistic and/or decision-theoretic (cost-benefit under uncertainty) models to guide memory management of thebounded memory 102 by themanagement component 304, in particular, for both decisions about prefetching and memory retention versus deletion (or “paging out”) of lower priority items, to free up space for higher valued items. Additionally, prefetching can be optimized by considering, beyond just a likelihood, a cost-benefit analysis of prefetching decisions to minimize user perceived latencies. - In the general case, considering the likelihoods of the possible next components to be used and their sizes (and thus, the amount of expected savings in waiting to have this page in from disk) is an intractable optimization. Given a set of predictions, a value-density approximation to a knapsack problem solution can be employed for minimizing the latencies. (The knapsack problem is a type of integer program with just one constraint—each item that can be selected to go into a knapsack having a certain capacity, has a size and a benefit. Given that the knapsack has a certain capacity, the problem becomes a matter of selecting item(s) for insertion into the knapsack so as to maximize the total benefit.)
- Following is one detailed exemplary implementation of the
application launch component 312. Theapplication launch component 312 can be employed to collect data on a machine's foreground application launch behavior. By using the launch record of foreground application launches in the machine, thecomponent 312 can construct a probabilistic model (e.g., Markov) of the application launch activity. This allows the system to predict with a high probability on which foreground application will be launched next. - The
launch component 312 gets callback notifications from the system. Initialize and start routines can be called during initialization and a cleanup routine can be called at shutdown. At runtime, thelaunch component 312 calls a log entry routine to inform the launch component of application launch events. Thelaunch component 312 is provided with the full path to the application and a hash of this path. The launch component looks up the path hash in a table to distinguish between foreground and background applications and, stores and uses the integer hash to create a transition table. In one implementation, the launch record and the transition table can be dynamically configurable based on a feedback mechanism that takes into account the accuracy of the predictions and the frequency of launch records being generated. - The
launch component 312 can implement aging by using a circular array, for example. Older records are thus overwritten by newer ones and will not be used in the next transition table generation. - Given launch records by the prefetch system, the
launch component 312 can perform the following: store launch records; generate a transition model based on the launch records; and update a transition model based on new data (aging). Note that the current context of thelaunch component 312 can be stored using a singleton object. - As previously indicated, a circular array can store launch records, and launch records can come in the form of a hash of the application name. The count of launch entries added to the array since the last time a transition model was generated can also be recorded. This count can be used to trigger new model generation. A value of the number of launch records in the array can also be stored, and in one implementation, is not to exceed an application launch history count.
- If the array is circular, an index can be provided referencing where the next launch record is stored. The value of index can range from zero to the launch history count. A circular array can be provided that contains the last two (or n) application launches. This array can be used to compute a hash into the transition table during predictions. An index can also be provided for where the next last-application record will be stored. A hash table is provided for containing the current top applications being considered, which is used to determine if a launch record needs to be considered for the transition table generation.
- Launch records are stored in the history circular array stored in a launch component context. Launch records are stored as they come in, and launch records for foreground applications are stored. When the number of new launch records since the last transition table creation reaches a certain threshold represented by the constant, the transition table is regenerated. This ensures proper aging. There is, however, an exception to this threshold during startup time, since the launch component does not have an existing model when the
launch component 312 is first run on the system; it uses a smaller threshold to trigger the creation of the first model. At periodic intervals, the launch records can be persisted onto disk. - Using the launch records, the
launch component 312 determines the top applications. These are the applications that are considered when constructing the transition table. This limit provides an upper bound on the size of the transition table. Thelaunch component 312 puts the current set of top applications on the hash table stored in a launch component context object. - The
launch component 312 can make a second pass through the launch records and use the last n (where n is equal to a cluster size) application hashes to simulate an nth order Markov model. Thelaunch component 312 can logically OR these hashes and use that as a key to the hash table. Pauses can also be considered as launches. These events can be marked with a special symbol in the table (e.g. “L”) and are used to generate additional combinations for the Markov table. - To enhance the accuracy and reduce the volatility of the predictions, the launch history and a transition table can be maintained per time-of-day period where the time-of-day periods can be arranged hierarchically. For example, in a two-level hierarchy, one can maintain 6-hour time periods for weekdays and a “parent” time period for all five weekdays. The same can be done for weekends as well. When making predictions, the current and the parent time periods' top n launch predictions can be combined, probabilistically favoring the most specific time period.
- The value is an application cluster object that contains the list of observed transitions implemented using a single linked list hanging off of the cell head member.
- The next application launch routine shows how the most likely next applications are computed. The routine accepts a threshold so only predictions that are at least this value are included. The routine can look at the last two (or whatever the value of the cluster size) applications launched, gets the OR'd value of the two hashes, and uses this as the key to the transition table. The value returned by this hash table can be a pointer to an application cluster object. As described previously, this object represents the row of the transition table that corresponds to the combined hash. The object has a single linked list of transitions to a particular application with the number of transitions (hits) to this particular application. Dividing this number by the cluster hit count generates the probability that the next application is this application.
- The
launch component 312 walks this singly linked list and picks out the top applications that have probabilities that are at least equal to the user provided threshold. - With respect to persisting data, at the start of every hour, for example, the
launch component 312 writes the current launch records to disk. In this example, this ensures that the launch records will be current up to one hour in case of unexpected shutdowns. Thelaunch component 312 can also write out the current indices and counts related to the table. On startup, the data is loaded and new records appended to the loaded records using the counts and indices that were stored with the launch records. -
FIG. 4 illustrates an exemplary representation of application-prefetching associated with cost-benefit analysis. The core notion is not to only consider the likelihood of the next application to be fetched, but also its size on disk, and thus, the amount of time that would be needed to “page it in” when a user asks for that application and required related data resources. - User frustration is not likely to be linear with the wait, but is more likely to be non-linear. The representation is a sample qualitative curve, both a smooth curve that could be assessed from users in a latency study, but also the piecewise linear representation. The idea is that the savings in latency (and thus, the expected savings for each component prefetched) is computed by looking at the size of each application and determining how much frustration would be saved with each application. This is “expected savings” if considering the likelihood of the application being used.
-
FIG. 5 illustrates a more detailed block diagram of asystem 500 that facilitates the management of bounded memory resources. Thesystem 500 includes thebounded memory component 102 and, thecontext component 314,application monitor component 310 andmulti-model component 316, described respectively with respect toFIG. 1 andFIG. 3 . Theapplication monitor component 310 monitors one or more applications 504 (denoted APP1, APP2, . . . , APPT, where T is an integer) and for which themodel component 316 generates one or more models 506 (denoted MODEL1, MODEL2, . . . , MODELN, where N is an integer). Thecontext component 314 analyzes, determines, and receives context information (e.g., user preferences, application type data, data type, device type data, device capabilities data, geolocation data, time/date data, . . . ) which can be used to further develop themodels 506. - For example, a first statistical model (MODEL1) can be generated based on the order in which the first two applications (APP1 and APP2) are used by the user. Accordingly, cache memory of the
memory component 102 can be controlled such that prefetching and/or allocation will be according to the order of execution. - In another example, where APP1 is larger than APP2, the model (MODEL2) can be generated that manages memory of the
memory component 102 such that the smaller app (APP2) can be given priority in execution over APP1 based on available cache memory. In yet another example, based on context data of thecontext component 314, the user routinely uses the same application APP2 on a given device at an approximate time. Thus, thesystem 500 can predict and then expect that APP2 will be used again, as developed into (MODEL2), and the prefetching and/or allocation processes can be performed in preparation for APP2 to be executed again at this time. Theses are only a few of the examples in which thesystem 500 can be employed to optimize memory and application usage in a bounded memory situation. -
FIG. 6 illustrates asystem 600 having amemory system 602 that can include many different types of memory (bounded, and relatively speaking, “unbounded”) that benefit from the application usage optimization architecture of the subject innovation. Thememory system 602 can include one or more bounded memories such as of L1, L2, and L3 cache memory 604 (e.g. any Lx cache memory, where x is an integer), staticRAM cache memory 606, systemmain memory 608, removable card memory 610 (e.g., flash memory), and mass storage subsystems 612 (e.g., hard drive, optical drive, RAM drive . . . ). Astatistical model 614 receives as input application usage data associated with one or more system processes 616 that utilize thememory system 602, and operates accordingly to facilitate system management related application usage given bounded memory conditions for any of the memory of thememory system 602. The learning andreasoning component 108 can interface to receive the application usage data and, to both thestatistical model 614 and thememory system 602 to learn and reason about their processes, and to facilitate automation of one or more functions or processes thereof. -
FIG. 7 illustrates asystem 700 having one version of amemory subsystem 702 that utilizes prefetching and caching based on application usage and bounded memory conditions in accordance with another aspect. Thesubsystem 702 includes anL1 cache memory 704, and anL2 cache memory 706 that connects to amain memory 708. Thesubsystem 702 also includes a prediction/allocation component 710 that interfaces to aprefetch buffer 712 for fetching application information in preparation for caching in theL2 cache 706. The prediction/allocation component 710 facilitates at least one of a prediction function for predicting what application(s) will be passed to theL2 cache memory 706 and an allocation function for allocating memory in theL2 cache memory 706. Themulti-model component 316 interfaces to the memory subsystem to effect at least the prefetching and prediction/allocation component based on a single model or for a mixed model implementation, as activated by the user (or system processes). - A mass storage system 716 (e.g. magnetic disk) can interface to the
memory subsystem 702 to provide access to applications (or programs) stored thereon. For example, a user can initiate launch of an application (e.g. system services program, word processor, browser . . . ) that resides on thestorage system 716. Once launched, the program is loaded into one or several parts thememory subsystem 702 for faster execution. Additionally, application and data activities are monitored for at least foreground and background activity. - As the user activates (or launches) the applications from the
storage system 716, usage information is logged and processed in themonitor component 310 for model generation in themodel component 316. Thereafter, themodel component 316 can facilitate execution of one or more of the appropriate model(s) such that subsequent user interaction can lead to predicting a next application launch. Accordingly, based on the model(s) executed, thesystem 700 will begin prefetching the application(s) into thememory subsystem 702 and/or allocating memory space for processing of the application(s). Thus, the user and user system does not need to wait for such information to be loaded for execution or processing. It is to be understood that although this description speaks of “application” usage being monitored, this can also include code, data, and instructions associated with the application. - Prefetching can be performed in a manner that minimizes the perceived latencies associated with future application launches—given a constraint of the total memory available for prefetching (the knapsack). That is, a policy can be developed that maximizes the “expected value” of having a set of prefetched items (at any period in time, based on the current predictions) within a limited “knapsack” of a size equal to the memory available for prefetching.
- Solving the knapsack problem ideally is NP-complete (non-deterministic polynomial time), a simple approximation can be used that is guaranteed to generate a result with a worst case of ½ the optimal total value—but it is often much, much better. That is, with this policy (described below), the worst-case is rare, and the method is good. This approximation to knapsack, is referred to herein as the “value-density” method. The idea is to sort items in a priority order, where the priority of each item is the cost-benefit ratio of value or gain associated with the item divided by cost of adding each item to memory. After computing these ratios, the ratios are lined up from the maximum cost-benefit ratio to the least until reaching the maximum memory of the total memory allocated to prefetching.
- With the algorithm, one more step can be included to prove that the result will be of a high quality. Considering the single item with the largest single benefit that would fit into the knapsack, if it were there all alone, then compare the value of choosing only the item with the highest value and the value associated with the summation of the values of the list of applications, sorted by cost-benefit ratio (up to the memory deadline). By choosing the best of these two options, the resulting value of the knapsack solution, in one implementation, should be shown to be of a value within a factor of two of optimal.
- Accordingly, the idea is to first compute a cost-benefit ratio for each potential item to prefetch. That is, compute a ratio of:
-
- Rewriting this as:
-
- Note that if megabytes scales linearly with perceived seconds saved, and the utility (that is, if Utility(SecSaved(megabytes)) is just SecSaved(megabytes), and this is a linear function (e.g., SecSaved=1/k*megabytes of prefetched application), then megabytes cancel out and the ratio for each potential prefetched application is just the probability. When this is the case, the applications can be sorted by probability and the memory continually added up until the memory constraint is reached.
- However, if the utility is non-linear, the non-linear change in utility is computed as a function of megabytes, used in the numerator of Equation (1), and more user-centric prefetching performed.
- Exploring the utility as a function of time, studies have been done in the past exploring the perception and/or influence different computer response times within different tasks, for example, data entry, web page downloads, etc. Based on this information, assertions can be made about the costs of different perceived delays. For example, in sets of applications delays may not be noticeable if they are less than some t seconds. The quantity of frustration with delays may not grow linearly with increasing delays, but may become noticeable at some threshold and then rise quickly, but then slow in rising.
- With respect to a good utility function, it is desirable to convert megabytes into seconds of latency, and then convert seconds of latency into a notion of “badness” or perceptual cost, and the reduction in such latency that comes with prefetching as utility or “goodness.” This suggests generating a function that approximately captures the way users feel when they have to wait for an application to launch. Utility functions can be considered that convert latencies into costs, and vice-versa, time savings with prefetching into benefits, or utility.
- Consider a utility model that asserts that after latencies exceed a threshold set at one second, for example, the utility=(seconds saved)2. (That is, the square of the seconds saved). This means that as the seconds of latency increase, the user frustration increases as the square of the seconds.
- Other reasonable functions can be considered and tested with computer users for identifying the best parameterization of the functions. For example, squaring of time up to a point, after which a constant “badness” is reached; or perhaps a multi-linear function composed of two linear functions, where the slope changes after a wait time (e.g. two seconds) is reached.
- Given some function that converts “latencies saved” from “seconds saved” into utility, the utility function can be inserted into the numerator in Equation (1), sort to get a value density, and continue prefetching until the bounded memory is full. As the probability changes, readjust the best list to fit, and determine if this causes a recommended change in the prefetched list.
-
FIG. 8 illustrates a methodology of performing prefetching in a way that maximizes an expected value of having prefetched items within the bounded memory (or knapsack) to minimized perceived latencies. At 800, items (e.g. data, applications) are received for consideration for insertion into the bounded memory. At 802, the items are sorted according to a cost-benefit ratio of priority data. Sorting can be based on learned and reasoning priority criteria such as related to the context information described herein, type of data, kind of data, data content (private or public), for example. Considering such criteria, the priority values are computed and assigned to the items according to the ratio described above. At 804, the ratios are ordered from the maximum to the minimum cost-benefit ratio. At 806, the sizes of the associated items (e.g., in megabytes) are accumulated (from the maximum ratio, down) until the total capacity of the bounded memory is reached. At 808, the items associated with the accumulated item sizes are selected for prefetching into the bounded memory. Optionally, at 810, validation can be performed to prove that the results are optimum by computing linear and/or non-linear functions related to item size and latency. -
FIG. 9 illustrates a methodology of employing context information for model development and memory optimization in accordance with another aspect of the innovation. At 900, a modeling system is received for generating one or more statistical models based on application usage. At 902, context is monitored for context data. At 904, a model is selected and employed based on the context data. At 906, optionally, the model can be changed (or updated) based on a change in context data. -
FIG. 10 illustrates a methodology of generating and a model and prefetching application information based on the model in view of memory optimization. At 1000, a modeling system is received for generating one or more statistical models based on application usage. At 1002, application usage is monitored. At 1004, one or more statistical models are generated based on the application usage. At 1006, prediction is made of the next application to be used based on one or more of the models. At 1008, a prefetch process is initiated in preparation for execution of the predicted application. It is to be appreciated that either one or both of the prefetch process or/and allocation process can be performed. -
FIG. 11 illustrates asystem 1100 having adrive memory subsystem 1102 that benefits from memory optimization and application transitioning in accordance with another aspect. Here, the optimization and application transitioning occurs at the drive level. Thedrive system 1102 can include adisk controller processor 1104 for controlling driver operations and for interfacing to other systems that utilize data stored on thedrive subsystem 1102. Thecontroller 1104 can have onboardcontroller cache memory 1106 for caching instructions, as well as interface to an externaldrive cache memory 1108 for caching data from astorage subsystem 1110 that the user has recently used. The storage subsystem 1110 (e.g., magnetic medium, optical disk) provides the mass storage capability for storing applications and data. - The
application monitor component 310 can interface to thedrive subsystem 1102 to monitor application usage, as the application is being pulled from thestorage subsystem 1110. At a higher level, application usage can be monitored through operating system (OS) calls, etc., by way of the OS and/orsystem CPU 1114. Astatistical modeling component 1112 can then model the application activity, and apply the model for application transitioning through memory optimization in the cache memory (1106 and/or 1108) of thedrive memory subsystem 1102. -
FIG. 12 illustrates asystem 1200 having a dualcore processor subsystem 1202 and accompanyingmemory component 1204 that benefits from bounded memory optimization and application transitioning in accordance with a novel aspect. Thesystem 1200 includes a first system CPU core 1206 (denoted CPU CORE1) and a second system CPU core 1208 (denoted CPU CORE2) both of which can share in handling the overall processing capabilities of a system in which thesubsystem 1202 is installed. Thus, thefirst core 1206 can process a first application and thesecond core 1208 can process a second application. Alternatively, both cores (1206 and 1208) can cooperate in processing aspects of a single application. In any case, theapplication monitoring component 302 that includes theapplication launch component 312 can interface to thecore subsystem 1202 to monitor application usage as detected by an application being loaded for processing by either of the cores (1206 and 1208) or for two applications being loaded for respective processing by the cores (1206 and 1208). - The
multi-model component 316 can interface to thecore subsystem 1202 and themonitor component 310, thereby providing support for developing one or more models based on application usage and for model execution when requested. More specifically, themodel component 316 can interface directly to a dual-purpose prediction andallocation component 1210, which provides both prediction processing and memory allocation for any connected memories. For example, thefirst core subsystem 1206 can include anL1 cache memory 1212 that further includes adata cache 1214 for caching frequently (or recently) used data, and aninstruction cache 1216 for caching instructions that are frequently (or more recently) used. Similarly, thesecond core subsystem 1208 can include anL1 cache memory 1218 that further includes adata cache 1220 for caching frequently (or recently) used data, and aninstruction cache 1222 for caching instructions that are frequently (or more recently) used. - The prediction and
allocation component 1210 can interface directly to the L1 cache memories (1212 and 1218) for prefetch and/or allocation processing. Aprefetch buffer 1224 is provided for buffering prefetch information during a prefetch process, which can be part of the prediction function. That is, once it has been predicted that an application will be utilized next by the user, the prefetch process can be initiated to begin pulling the application into memory for processing and launching. Along with this process, theallocation component 1210 can begin allocating memory space in the L1 caches (1212 and 1218), anL2 cache memory 1226 and/or amain system memory 1228, for example. In one implementation, the allocation process can occur through theprefetch buffers 1224 to theL2 memory 1226 and themain memory 1228. In an alternative implementation, the predication andallocation component 1210 interface directly to each of the L2 memory and themain memory 1228 to manage memory allocation, as needed. - It is within contemplation of the subject invention that a multi-processor system with associated cache memory can also benefit from the disclosed application transitioning and bounded memory optimization architecture.
-
FIG. 13 illustrates an alternative implementation that utilizes the learning andreasoning component 108 in asystem 1300 for application transitioning an bounded memory optimization. In one example, thecomponent 108 can learn, based on context information (e.g., time of day, week, . . . ) of thecontext component 314 when the user typically launches anapplication 504. Consider that the user typically wakes up at 7:30 AM each day of the week, and launches an e-mail application to check on e-mail. Over time, thecomponent 108 can learn this application usage information, and reason (or predict) that there is a high likelihood that the user will again launch and use this same e-mail application tomorrow. Accordingly, astatistical model 506 is generated with this information and for the purpose of, at about 7:30 AM tomorrow, launching the application for the user via theapplication launch component 312. Additionally, thecomponent 108 can be utilized to predict the next application to be launched after the initial application launch. - In preparation for doing so, the architecture can further manage at least memory prefetch and/or allocation functions at the system level, and even at the drive level, to automate and quickly bring to presentation to the user the predicted e-mail application. Over time, the model may need to be updated based on changes in user interaction with the e-mail application.
- In another example of a mobile device or portable computing device, based on geolocation context information (e.g., global positioning system) and application usage information, the architecture can learn and reason that the user typically launches a device browser application at this location. Accordingly, a statistical model will be developed such that when the user approaches this location the next time, the model execution will cause automatic launching or imminent launch preparation of the device browser application. Thus, memory management processes (e.g., prefetching and allocation) can be initiated in preparation and for launching of the browser application.
- As indicated above, one a probabilistic model that can be used to infer the probability of the next application launch, based on a sequence of observed applications, is a Markov model. Accordingly,
FIG. 14 illustrates a methodology of inferring probability of a next application launch based on observed processes using a Markov model. At 1400, application launch data from previous process activity is received. At 1402, a Markov model is developed that predicts a next application launch based on previous steps associated with system processes. At 1404, the model is employed in the system. At 1406, the model looks back n-steps associated with the system processes, where n is a number that can be varied depending on the available memory. - At 1408, context data is accessed and processed as part of the model. The model continues to look at the top n of all applications being used by a user, and in combination with contextual information such as time of day and day of week, for example, builds Markov models that are focused on explicitly reasoning about the top n applications. At 1410, using both the n applications and an “other” (O) application tokens (O meaning “other”, representing processes that have not been modeled explicitly), the model examines sequences, for predicting the next applications, as indicated at 1412. In other words, under bounded resources, the methods consider that they just saw used and/or launched,
App 1, App3, App4, O, and App5, and the methods predict that the likelihood of the next application used, in order of probability is, App5, App8, O, App7, and so on. This is one way of dealing with the bounded resources issues. At 1416, the predicted application and/or data are prefetched. At 1418, the model can be updated based on changes in activities or other information (e.g., context changes). - The predictive models can be employed for predicting the next launched application, that is, the next application to be launched that has not been launched before within a session or extended session, or the next application to be used, that is, to be switched to in a multitasking environment.
- Evidence that applications have been already launched by the user within a session versus not yet launched, or launched and then closed, can be used in such a predictive model. For example, in learning and using a model for predicting the next application to be used or launched the model can segment out and have different naming for applications that are already launched versus applications that have not yet been launched. The sequences for Markov modeling can also include applications that have been closed.
- With increasing memory allocations and observational data, richer models can be employed that consider other evidence. For example, the amount of time that a user has been at his or her computer after a log-in to that computer in addition to the application launching and usage may be useful in making predictions. The amount of time that a user has been away from the computer when the user returns may be useful. The amount of time that a user has been active within each application may also be useful in making predictions. In addition, the tasks or subtasks performed within applications (e.g., reading sets of new email messages, performing a save operation, . . . ) may be useful in making predictions of application switching and usage.
- Prediction can be related not only to the next application to be launched, but also within what timeframe. For example, it can be predicted that App1 will launched within the next five applications and/or within the next ten minutes.
- As indicated above, one implementation of the subject architecture can employ a “model mixture” method, where a Markov model, for example, can be combined with a model that captures background statistics.
-
FIG. 15 illustrates a methodology of mixing models to achieve the desired application transitioning and bounded memory management. At 1500, receive Markov model that provides statistics about the top n applications to decide a next application launch. At 1502, receive model that capture background statistics. At 1504, these statistics can then be weighted together, based on decisions about which statistics more reliability should be placed. The statistics can be weighted together with weightings of k and 1−k, where k can be varied or tuned. For example, consider that the Markov model predicts that the likelihood that App1 will be the next application launched (or correspondingly in another representation that the likelihood that application App1 will be launched within the next five applications, and/or within ten minutes, etc., is a value 0.2, but background statistics alone indicate that App1 will be launched according to a value of 0.4. With model mixture, the likelihood can be computed to be (1−k)(0.2)+(k)(0.4)=p. This can still be considered to be a probability, if k<1. -
FIG. 16 illustrates a flow diagram of a methodology of selecting a statistical model for execution in accordance with an aspect. At 1600, a statistical modeling system is received. At 1602, application usage is monitored and usage information is shared with the modeling system. At 1604, a model is developed based on the usage. At 1606, context information related to the application usage is associated with the model. At 1608, thereafter, when context information is received, the model is selected based on the matched (or substantially matched) context information, as indicated at 1610. At 1612, the model is applied (or executed) to launch the associated application, and manage memory utilization, as described herein. This methodology associates the context information separate from the model development. However, in an alternative implementation, it is to be appreciated that the context information can be included as part of the model. -
FIG. 17 illustrates a methodology of learning and reasoning about multiple application transitioning and memory optimization processes. At 1700, multiple applications usage is monitored. At 1702, the order of launching the multiple applications is stored. At 1704, context information is received and associated with the multiple applications usage information. For example, the context information can be the location of the user (e.g., office or home), the time of day (e.g., morning at home, afternoon at work, or evening at home again), the type of computing device employed (e.g., a portable computer or a cell phone), the size of the cache memory in the device, the available applications (e.g. a cell phone could have fewer and less memory/CPU intensive applications than a portable computer), and so on. Many other context parameters or attributes can be included in the context information for consideration. - At 1706, memory optimization processes associated with the multiple applications can also be monitored. For example, if it is learned and reasoned that the order of launching of the multiple applications should be changed to optimize memory processes, then the system can change the order, insofar as the user allows this to occur. For example, if the change in order occurs transparently to the user, no user intervention should be required. However, if the order change is noticeable to the user such that the user desires to maintain the previous order of application launch, the user can override or change the order back to the original order, which override process can be learned by the system, and reasoned for avoidance the next time.
- At 1708, a statistical model is developed that considers the context information, the multiple applications usage information, and memory optimization information. At 1710, the model is executed based on the next receipt of the context information. The system can reason about the amount of context information received in order to determine if this model and its associated context information is a sufficient match for execution of this model, or a different model should be executed.
- It is to be appreciated that the models generated can be moved (or copied) from one system to another to avoid “re-modeling” of other user systems. This is most advantageous where the computing systems are substantially similar in hardware and software capabilities, as well as applications. For example, model sharing can be accomplished more seamlessly between two desktop computers running substantially the same applications, than between a desktop computing system and a cellular telephone, for example.
-
FIG. 18 illustrates asystem 1800 for managingmultiple caching subsystems 1802 of thebounded memory resource 102 for application transitioning and memory utilization. It is to be appreciated that many computing systems and/or networks employ many different caching subsystems 1802 (denoted CACHING SUBSYSTEM1, CACHING SUBSYSTEM1, . . . , CACHING SUBSYSTEMC, where C is an integer). For example, as indicated supra, afirst caching subsystem 1804 is employed at the mass storage level (e.g., hard drive), asecond caching system 1806 is employed at the system board level (e.g., the processor internal and external cache), a third caching subsystem can be employed at a network server for multi-user applications access and processing, and yet a fourth subsystem on a local graphics adapter for enhanced performance of graphics processing. - Accordingly, the disclosed architecture can be employed to consider more complex combinations of caching and applications processing. For example, applications transitioning and memory optimization processing can be focused more toward system processes and programs (e.g., startup, handshaking of graphics and CPU processes, OS processes) rather than (or in combination with) the applications and programs that the user would normally see or desire to have launched, such as a browser, a word processing application, an e-mail program, and a graphics development environment application.
- In support thereof, the
system 1800 includes a modeling component 1808 (e.g., Markov model, mixed model . . . ) for generating models for execution, theapplication monitoring component 310 for monitoring application and program usage at all levels of system activity, thecontext component 314 for receiving and processing context information in association with the usage being logged and processed, and optionally, the learning andreasoning component 108 for learning and reasoning about system application and program usage and memory optimizations, and thereafter facilitating automation of one or more of such activities. - In one example, launching of an application can be coordinated between the
caching subsystem 1804 at the mass storage drive level with the caching subsystem 1806 (e.g., CPU, L1 cache, L2 cache, . . . ) at the system board level to provide improved application loading. - In another example, the caching subsystem at the network server can be accessed for improved network application activity between the user client and the server.
- In yet another example, memory caching optimization and application transitioning can be coordinated between a portable device (e.g., PDA, cell phone, . . . that can communicate (e.g. in a wired fashion via USB or wirelessly) with a desktop computer. Over time, as the user repeatedly couples these two systems, the
model component 1808 can model application and memory activities for predicting and employing future application and memory optimizations. As before, thecomponent 108 can apply learning and reasoning to further improve on user habits and behaviors, as well as system behaviors. - As used in this application, the terms “component” and “system” are intended to refer to a computer-related entity, either hardware, a combination of hardware and software, software, or software in execution. For example, a component can be, but is not limited to being, a process running on a processor, a processor, a hard disk drive, multiple storage drives (of optical and/or magnetic storage medium), an object, an executable, a thread of execution, a program, and/or a computer. By way of illustration, both an application running on a server and the server can be a component. One or more components can reside within a process and/or thread of execution, and a component can be localized on one computer and/or distributed between two or more computers.
- Referring now to
FIG. 19 , there is illustrated a block diagram of a computer operable to execute the disclosed application transitioning and memory optimization architecture. In order to provide additional context for various aspects thereof,FIG. 19 and the following discussion are intended to provide a brief, general description of asuitable computing environment 1900 in which the various aspects of the innovation can be implemented. While the description above is in the general context of computer-executable instructions that may run on one or more computers, those skilled in the art will recognize that the innovation also can be implemented in combination with other program modules and/or as a combination of hardware and software. - Generally, program modules include routines, programs, components, data structures, etc., that perform particular tasks or implement particular abstract data types. Moreover, those skilled in the art will appreciate that the inventive methods can be practiced with other computer system configurations, including single-processor or multiprocessor computer systems, minicomputers, mainframe computers, as well as personal computers, hand-held computing devices, microprocessor-based or programmable consumer electronics, and the like, each of which can be operatively coupled to one or more associated devices.
- The illustrated aspects of the innovation may also be practiced in distributed computing environments where certain tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules can be located in both local and remote memory storage devices.
- A computer typically includes a variety of computer-readable media. Computer-readable media can be any available media that can be accessed by the computer and includes both volatile and non-volatile media, removable and non-removable media. By way of example, and not limitation, computer-readable media can comprise computer storage media and communication media. Computer storage media includes both volatile and non-volatile, removable and non-removable media implemented in any method or technology for storage of information such as computer-readable instructions, data structures, program modules or other data. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital video disk (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by the computer.
- With reference again to
FIG. 19 , theexemplary environment 1900 for implementing various aspects includes acomputer 1902, thecomputer 1902 including aprocessing unit 1904, asystem memory 1906 and asystem bus 1908. Thesystem bus 1908 couples system components including, but not limited to, thesystem memory 1906 to theprocessing unit 1904. Theprocessing unit 1904 can be any of various commercially available processors. Dual microprocessors and other multi-processor architectures may also be employed as theprocessing unit 1904. - The
system bus 1908 can be any of several types of bus structure that may further interconnect to a memory bus (with or without a memory controller), a peripheral bus, and a local bus using any of a variety of commercially available bus architectures. Thesystem memory 1906 includes read-only memory (ROM) 1910 and random access memory (RAM) 1912. A basic input/output system (BIOS) is stored in anon-volatile memory 1910 such as ROM, EPROM, EEPROM, which BIOS contains the basic routines that help to transfer information between elements within thecomputer 1902, such as during start-up. TheRAM 1912 can also include a high-speed RAM such as static RAM for caching data. - The
computer 1902 further includes an internal hard disk drive (HDD) 1914 (e.g., EIDE, SATA), which internalhard disk drive 1914 may also be configured for external use in a suitable chassis (not shown), a magnetic floppy disk drive (FDD) 1916, (e.g., to read from or write to a removable diskette 1918) and anoptical disk drive 1920, (e.g., reading a CD-ROM disk 1922 or, to read from or write to other high capacity optical media such as the DVD). Thehard disk drive 1914,magnetic disk drive 1916 andoptical disk drive 1920 can be connected to thesystem bus 1908 by a harddisk drive interface 1924, a magneticdisk drive interface 1926 and anoptical drive interface 1928, respectively. Theinterface 1924 for external drive implementations includes at least one or both of Universal Serial Bus (USB) and IEEE 1394 interface technologies. Other external drive connection technologies are within contemplation of the subject innovation. - The drives and their associated computer-readable media provide nonvolatile storage of data, data structures, computer-executable instructions, and so forth. For the
computer 1902, the drives and media accommodate the storage of any data in a suitable digital format. Although the description of computer-readable media above refers to a HDD, a removable magnetic diskette, and a removable optical media such as a CD or DVD, it should be appreciated by those skilled in the art that other types of media which are readable by a computer, such as zip drives, magnetic cassettes, flash memory cards, cartridges, and the like, may also be used in the exemplary operating environment, and further, that any such media may contain computer-executable instructions for performing the methods of the disclosed innovation. - A number of program modules can be stored in the drives and
RAM 1912, including anoperating system 1930, one ormore application programs 1932,other program modules 1934 andprogram data 1936. All or portions of the operating system, applications, modules, and/or data can also be cached in theRAM 1912. It is to be appreciated that the innovation can be implemented with various commercially available operating systems or combinations of operating systems. - A user can enter commands and information into the
computer 1902 through one or more wired/wireless input devices, e.g. akeyboard 1938 and a pointing device, such as amouse 1940. Other input devices (not shown) may include a microphone, an IR remote control, a joystick, a game pad, a stylus pen, touch screen, or the like. These and other input devices are often connected to theprocessing unit 1904 through aninput device interface 1942 that is coupled to thesystem bus 1908, but can be connected by other interfaces, such as a parallel port, an IEEE 1394 serial port, a game port, a USB port, an IR interface, etc. - A
monitor 1944 or other type of display device is also connected to thesystem bus 1908 via an interface, such as avideo adapter 1946. In addition to themonitor 1944, a computer typically includes other peripheral output devices (not shown), such as speakers, printers, etc. - The
computer 1902 may operate in a networked environment using logical connections via wired and/or wireless communications to one or more remote computers, such as a remote computer(s) 1948. The remote computer(s) 1948 can be a workstation, a server computer, a router, a personal computer, portable computer, microprocessor-based entertainment appliance, a peer device or other common network node, and typically includes many or all of the elements described relative to thecomputer 1902, although, for purposes of brevity, only a memory/storage device 1950 is illustrated. The logical connections depicted include wired/wireless connectivity to a local area network (LAN) 1952 and/or larger networks, e.g., a wide area network (WAN) 1954. Such LAN and WAN networking environments are commonplace in offices and companies, and facilitate enterprise-wide computer networks, such as intranets, all of which may connect to a global communications network, e.g., the Internet. - When used in a LAN networking environment, the
computer 1902 is connected to thelocal network 1952 through a wired and/or wireless communication network interface oradapter 1956. Theadaptor 1956 may facilitate wired or wireless communication to theLAN 1952, which may also include a wireless access point disposed thereon for communicating with thewireless adaptor 1956. - When used in a WAN networking environment, the
computer 1902 can include amodem 1958, or is connected to a communications server on theWAN 1954, or has other means for establishing communications over theWAN 1954, such as by way of the Internet. Themodem 1958, which can be internal or external and a wired or wireless device, is connected to thesystem bus 1908 via theserial port interface 1942. In a networked environment, program modules depicted relative to thecomputer 1902, or portions thereof, can be stored in the remote memory/storage device 1950. It will be appreciated that the network connections shown are exemplary and other means of establishing a communications link between the computers can be used. - The
computer 1902 is operable to communicate with any wireless devices or entities operatively disposed in wireless communication, e.g., a printer, scanner, desktop and/or portable computer, portable data assistant, communications satellite, any piece of equipment or location associated with a wirelessly detectable tag (e.g. a kiosk, news stand, restroom), and telephone. This includes at least Wi-Fi and Bluetooth™ wireless technologies. Thus, the communication can be a predefined structure as with a conventional network or simply an ad hoc communication between at least two devices. - Wi-Fi, or Wireless Fidelity, allows connection to the Internet from a couch at home, a bed in a hotel room, or a conference room at work, without wires. Wi-Fi is a wireless technology similar to that used in a cell phone that enables such devices, e.g. computers, to send and receive data indoors and out; anywhere within the range of a base station. Wi-Fi networks use radio technologies called IEEE 802.11x (a, b, g, etc.) to provide secure, reliable, fast wireless connectivity. A Wi-Fi network can be used to connect computers to each other, to the Internet, and to wired networks (which use IEEE 802.3 or Ethernet).
- Wi-Fi networks can operate in the unlicensed 2.4 and 5 GHz radio bands. IEEE 802.11 applies to generally to wireless LANs and provides 1 or 2 Mbps transmission in the 2.4 GHz band using either frequency hopping spread spectrum (FHSS) or direct sequence spread spectrum (DSSS). IEEE 802.11a is an extension to IEEE 802.11 that applies to wireless LANs and provides up to 54 Mbps in the 5 GHz band. IEEE 802.11a uses an orthogonal frequency division multiplexing (OFDM) encoding scheme rather than FHSS or DSSS. IEEE 802.11b (also referred to as 802.11 High Rate DSSS or Wi-Fi) is an extension to 802.11 that applies to wireless LANs and provides 11 Mbps transmission (with a fallback to 5.5, 2 and 1 Mbps) in the 2.4 GHz band. IEEE 802.11 g applies to wireless LANs and provides 20+Mbps in the 2.4 GHz band. Products can contain more than one band (e.g., dual band), so the networks can provide real-world performance similar to the basic 10BaseT wired Ethernet networks used in many offices.
- Referring now to
FIG. 20 , there is illustrated a schematic block diagram of an exemplary application transitioning and memoryoptimization computing environment 2000 in accordance with another aspect. Thesystem 2000 includes one or more client(s) 2002. The client(s) 2002 can be hardware and/or software (e.g., threads, processes, computing devices). The client(s) 2002 can house cookie(s) and/or associated contextual information by employing the subject innovation, for example. - The
system 2000 also includes one or more server(s) 2004. The server(s) 2004 can also be hardware and/or software (e.g., threads, processes, computing devices). Theservers 2004 can house threads to perform transformations by employing the invention, for example. One possible communication between aclient 2002 and aserver 2004 can be in the form of a data packet adapted to be transmitted between two or more computer processes. The data packet may include a cookie and/or associated contextual information, for example. Thesystem 2000 includes a communication framework 2006 (e.g., a global communication network such as the Internet) that can be employed to facilitate communications between the client(s) 2002 and the server(s) 2004. - Communications can be facilitated via a wired (including optical fiber) and/or wireless technology. The client(s) 2002 are operatively connected to one or more client data store(s) 2008 that can be employed to store information local to the client(s) 2002 (e.g., cookie(s) and/or associated contextual information). Similarly, the server(s) 2004 are operatively connected to one or more server data store(s) 2010 that can be employed to store information local to the
servers 2004. - What has been described above includes examples of the disclosed innovation. It is, of course, not possible to describe every conceivable combination of components and/or methodologies, but one of ordinary skill in the art may recognize that many further combinations and permutations are possible. Accordingly, the innovation is intended to embrace all such alterations, modifications and variations that fall within the spirit and scope of the appended claims. Furthermore, to the extent that the term “includes” is used in either the detailed description or the claims, such term is intended to be inclusive in a manner similar to the term “comprising” as “comprising” is interpreted when employed as a transitional word in a claim.
Claims (20)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/428,231 US8112755B2 (en) | 2006-06-30 | 2006-06-30 | Reducing latencies in computing systems using probabilistic and/or decision-theoretic reasoning under scarce memory resources |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/428,231 US8112755B2 (en) | 2006-06-30 | 2006-06-30 | Reducing latencies in computing systems using probabilistic and/or decision-theoretic reasoning under scarce memory resources |
Publications (2)
Publication Number | Publication Date |
---|---|
US20080005736A1 true US20080005736A1 (en) | 2008-01-03 |
US8112755B2 US8112755B2 (en) | 2012-02-07 |
Family
ID=38878396
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/428,231 Expired - Fee Related US8112755B2 (en) | 2006-06-30 | 2006-06-30 | Reducing latencies in computing systems using probabilistic and/or decision-theoretic reasoning under scarce memory resources |
Country Status (1)
Country | Link |
---|---|
US (1) | US8112755B2 (en) |
Cited By (85)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070237231A1 (en) * | 2006-03-29 | 2007-10-11 | Portalplayer, Inc. | Method and circuit for efficient caching of reference video data |
US20080204287A1 (en) * | 2006-05-19 | 2008-08-28 | Nvidia Corporation | Optimization of decoder memory usage for vlc tables |
US20090019153A1 (en) * | 2007-07-12 | 2009-01-15 | Viasat, Inc. | Methods and systems for performing a prefetch abort operation |
US7515899B1 (en) * | 2008-04-23 | 2009-04-07 | International Business Machines Corporation | Distributed grid computing method utilizing processing cycles of mobile phones |
US20090228725A1 (en) * | 2008-03-10 | 2009-09-10 | Verdiem Corporation | System and Method for Computer Power Control |
US20090307693A1 (en) * | 2008-06-04 | 2009-12-10 | International Business Machines Corporation | System and method to dynamically manage applications on a processing system |
US20090327274A1 (en) * | 2008-06-30 | 2009-12-31 | Yahoo! Inc. | Prefetching data for document ranking |
US20100082516A1 (en) * | 2008-09-29 | 2010-04-01 | Microsoft Corporation | Modifying a System in Response to Indications of User Frustration |
US20100161652A1 (en) * | 2008-12-24 | 2010-06-24 | Yahoo! Inc. | Rapid iterative development of classifiers |
US20110158310A1 (en) * | 2009-12-30 | 2011-06-30 | Nvidia Corporation | Decoding data using lookup tables |
US20110252422A1 (en) * | 2010-04-07 | 2011-10-13 | Apple Inc. | Opportunistic Multitasking |
US8209291B1 (en) * | 2008-09-16 | 2012-06-26 | Juniper Networks, Inc. | Optimized prefetching for wide area networks |
US20120185803A1 (en) * | 2011-01-13 | 2012-07-19 | Htc Corporation | Portable electronic device, control method of the same, and computer program product of the same |
US8412237B1 (en) * | 2011-07-29 | 2013-04-02 | Intuit Inc. | Method and system for launching and preparing applications on mobile computing systems based on geo-location data |
US20130138403A1 (en) * | 2011-11-29 | 2013-05-30 | International Business Machines Corporation | Usage-based temporal degradation estimation for memory elements |
EP2427831A4 (en) * | 2009-05-08 | 2013-07-10 | Arbitron Mobile Oy | System and method for behavioural and contextual data analytics |
US20130283283A1 (en) * | 2011-01-13 | 2013-10-24 | Htc Corporation | Portable electronic device and control method therefor |
US8599841B1 (en) | 2006-03-28 | 2013-12-03 | Nvidia Corporation | Multi-format bitstream decoding engine |
US20140006599A1 (en) * | 2012-06-29 | 2014-01-02 | Dirk Hohndel | Probabilities of potential actions based on system observations |
US20140006335A1 (en) * | 2012-06-29 | 2014-01-02 | Dirk Hohndel | Application-provided context for potential action prediction |
US20140075385A1 (en) * | 2012-09-13 | 2014-03-13 | Chieh-Yih Wan | Methods and apparatus for improving user experience |
US20140189538A1 (en) * | 2012-12-31 | 2014-07-03 | Motorola Mobility Llc | Recommendations for Applications Based on Device Context |
US20140282606A1 (en) * | 2013-03-14 | 2014-09-18 | International Business Machines Corporation | Meta-application management in a multitasking environment |
WO2014143969A2 (en) * | 2013-03-15 | 2014-09-18 | The Nielsen Company (Us), Llc | Methods and apparatus to credit usage of mobile devices |
US20140324409A1 (en) * | 2013-04-30 | 2014-10-30 | Hewlett-Packard Development Company, L.P. | Stochastic based determination |
US20140373032A1 (en) * | 2013-06-12 | 2014-12-18 | Microsoft Corporation | Prefetching content for service-connected applications |
KR20150010563A (en) * | 2013-07-19 | 2015-01-28 | 삼성전자주식회사 | Method for caching and electronic device thereof |
US20150206512A1 (en) * | 2009-11-26 | 2015-07-23 | JVC Kenwood Corporation | Information display apparatus, and method and program for information display control |
US9118520B1 (en) * | 2012-04-20 | 2015-08-25 | Symantec Corporation | Systems and methods for monitoring application resource usage on mobile computing systems |
US20150256476A1 (en) * | 2014-03-10 | 2015-09-10 | Microsoft Corporation | Resource management based on device-specific or user-specific resource usage profiles |
US20150324690A1 (en) * | 2014-05-08 | 2015-11-12 | Microsoft Corporation | Deep Learning Training System |
US20150333973A1 (en) * | 2014-05-16 | 2015-11-19 | Vodafone Ip Licensing Limited | Controlling a server |
US20150347203A1 (en) * | 2014-05-29 | 2015-12-03 | Mediatek Inc. | Electronic device capable of configuring application-dependent task based on operating behavior of application detected during execution of application and related method thereof |
US20150370617A1 (en) * | 2012-12-17 | 2015-12-24 | Blackberry Limited | System and methods for launching an application on an electronic device |
US20160034537A1 (en) * | 2014-07-30 | 2016-02-04 | International Business Machines Corporation | Providing context in activity streams |
US9301173B2 (en) | 2013-03-15 | 2016-03-29 | The Nielsen Company (Us), Llc | Methods and apparatus to credit internet usage |
CN105453061A (en) * | 2013-09-04 | 2016-03-30 | 英特尔公司 | Mechanism for facilitating dynamic storage management for mobile computing devices |
US9307418B2 (en) | 2011-06-30 | 2016-04-05 | The Nielson Company (Us), Llc | Systems, methods, and apparatus to monitor mobile internet activity |
US9310881B2 (en) | 2012-09-13 | 2016-04-12 | Intel Corporation | Methods and apparatus for facilitating multi-user computer interaction |
US20160119443A1 (en) * | 2014-10-23 | 2016-04-28 | Netapp, Inc. | System and method for managing application performance |
US9336070B1 (en) | 2013-06-07 | 2016-05-10 | Apple Inc. | Throttling of application access to resources |
US9348645B2 (en) | 2014-05-30 | 2016-05-24 | Apple Inc. | Method and apparatus for inter process priority donation |
EP2867792A4 (en) * | 2012-06-29 | 2016-05-25 | Intel Corp | Performance of predicted actions |
US9386326B2 (en) | 2012-10-05 | 2016-07-05 | Nvidia Corporation | Video decoding error concealment techniques |
US9407751B2 (en) | 2012-09-13 | 2016-08-02 | Intel Corporation | Methods and apparatus for improving user experience |
US9460229B2 (en) | 2007-10-15 | 2016-10-04 | Viasat, Inc. | Methods and systems for implementing a cache model in a prefetching system |
US20160360271A1 (en) * | 2015-06-07 | 2016-12-08 | Apple Inc. | Priming media applications |
US20170060355A1 (en) * | 2015-08-27 | 2017-03-02 | International Business Machines Corporation | Data transfer target applications through content analysis |
US9654328B2 (en) | 2007-10-15 | 2017-05-16 | Viasat, Inc. | Methods and systems for implementing a cache model in a prefetching system |
US20170177601A1 (en) * | 2015-12-17 | 2017-06-22 | Druva Technologies Pte. Ltd. | Active repartitioning in a distributed database |
US20170230475A1 (en) * | 2016-02-08 | 2017-08-10 | International Business Machines Corporation | Preemptive content distribution |
US9736136B2 (en) | 2010-08-14 | 2017-08-15 | The Nielsen Company (Us), Llc | Systems, methods, and apparatus to monitor mobile internet activity |
US9762688B2 (en) | 2014-10-31 | 2017-09-12 | The Nielsen Company (Us), Llc | Methods and apparatus to improve usage crediting in mobile devices |
US20170339636A1 (en) * | 2012-10-26 | 2017-11-23 | Lookout, Inc. | Modifying mobile device settings for contextual substitution |
WO2017213878A1 (en) * | 2016-06-10 | 2017-12-14 | Apple Inc. | Memory management for application loading |
US9875169B2 (en) * | 2015-03-26 | 2018-01-23 | Ca, Inc. | Modeling real capacity consumption changes using process-level data |
US20180196584A1 (en) * | 2017-01-09 | 2018-07-12 | Alibaba Group Holding Limited | Execution of multiple applications on a device |
US20180196695A1 (en) * | 2017-01-11 | 2018-07-12 | International Business Machines Corporation | Self-adjusting system for prioritizing computer applications |
US10162727B2 (en) | 2014-05-30 | 2018-12-25 | Apple Inc. | Activity tracing diagnostic systems and methods |
US10299161B1 (en) | 2010-07-26 | 2019-05-21 | Seven Networks, Llc | Predictive fetching of background data request in resource conserving manner |
EP3486771A1 (en) * | 2017-11-20 | 2019-05-22 | Guangdong Oppo Mobile Telecommunications Corp., Ltd | Prediction of applications to be preloaded based on observed user behaviour and the order of starting the applications |
EP3486769A1 (en) * | 2017-11-20 | 2019-05-22 | Guangdong OPPO Mobile Telecommunications Corp., Ltd. | Method for preloading application, terminal device, and medium |
US10320925B2 (en) | 2010-08-14 | 2019-06-11 | The Nielsen Company (Us), Llc | Systems, methods, and apparatus to monitor mobile internet activity |
US20190258585A1 (en) * | 2018-02-21 | 2019-08-22 | Western Digital Technologies, Inc. | Predicting addresses in non-volatile storage |
US10409353B2 (en) * | 2013-04-17 | 2019-09-10 | Qualcomm Incorporated | Dynamic clock voltage scaling (DCVS) based on application performance in a system-on-a-chip (SOC), and related methods and processor-based systems |
US10430577B2 (en) | 2014-05-30 | 2019-10-01 | Apple Inc. | Method and apparatus for inter process privilige transfer |
US20190317901A1 (en) * | 2018-04-16 | 2019-10-17 | Samsung Electronics Co., Ltd. | System and method for optimizing performance of a solid-state drive using a deep neural network |
US10520979B2 (en) | 2016-06-10 | 2019-12-31 | Apple Inc. | Enhanced application preview mode |
KR20200060421A (en) * | 2017-10-13 | 2020-05-29 | 후아웨이 테크놀러지 컴퍼니 리미티드 | Resource management method and terminal device |
US10725761B2 (en) | 2016-06-10 | 2020-07-28 | Apple Inc. | Providing updated application data for previewing applications on a display |
US11009935B2 (en) * | 2015-02-25 | 2021-05-18 | International Business Machines Corporation | Predictive electrical appliance device power management mode based on presence detection of mobile device |
US11055622B2 (en) * | 2015-06-02 | 2021-07-06 | Quantum Corporation | Data storage apparatus with selective adaptive predictive behavior |
US11086663B2 (en) | 2018-05-10 | 2021-08-10 | Guangdong Oppo Mobile Telecommunications Corp., Ltd. | Preloading application using active window stack |
US11100405B1 (en) * | 2013-06-06 | 2021-08-24 | Google Llc | Systems and methods for cohort identification and reporting |
US11099861B2 (en) * | 2018-05-29 | 2021-08-24 | Guangdong Oppo Mobile Telecommunications Corp., Ltd. | Method for preloading application, storage medium, and terminal |
US11204806B2 (en) | 2018-06-03 | 2021-12-21 | Apple Inc. | Systems and methods for user adaptive resource management |
US11216330B2 (en) | 2018-08-27 | 2022-01-04 | Samsung Electronics Co., Ltd. | Methods and systems for managing an electronic device |
US11360817B2 (en) * | 2016-09-27 | 2022-06-14 | Huawei Technologies Co., Ltd. | Method and terminal for allocating system resource to application |
US11397590B2 (en) | 2018-05-10 | 2022-07-26 | Guangdong Oppo Mobile Telecommunications Corp., Ltd. | Method for preloading application, storage medium, and terminal |
US11423420B2 (en) | 2015-02-06 | 2022-08-23 | The Nielsen Company (Us), Llc | Methods and apparatus to credit media presentations for online media distributions |
US11442747B2 (en) | 2018-05-10 | 2022-09-13 | Guangdong Oppo Mobile Telecommunications Corp., Ltd. | Method for establishing applications-to-be preloaded prediction model based on preorder usage sequence of foreground application, storage medium, and terminal |
US11467855B2 (en) | 2018-06-05 | 2022-10-11 | Guangdong Oppo Mobile Telecommunications Corp., Ltd. | Application preloading method and device, storage medium and terminal |
US11604660B2 (en) | 2018-05-15 | 2023-03-14 | Guangdong Oppo Mobile Telecommunications Corp., Ltd. | Method for launching application, storage medium, and terminal |
US11610110B2 (en) | 2018-12-05 | 2023-03-21 | Bank Of America Corporation | De-conflicting data labeling in real time deep learning systems |
US20240069729A1 (en) * | 2022-08-31 | 2024-02-29 | Pure Storage, Inc. | Optimizing Data Deletion in a Storage System |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9880604B2 (en) | 2011-04-20 | 2018-01-30 | Microsoft Technology Licensing, Llc | Energy efficient location detection |
US9189252B2 (en) | 2011-12-30 | 2015-11-17 | Microsoft Technology Licensing, Llc | Context-based device action prediction |
US8856447B2 (en) | 2012-07-17 | 2014-10-07 | Apple Inc. | Converting memory accesses near barriers into prefetches |
US9998866B2 (en) | 2013-06-14 | 2018-06-12 | Microsoft Technology Licensing, Llc | Detecting geo-fence events using varying confidence levels |
US9820231B2 (en) | 2013-06-14 | 2017-11-14 | Microsoft Technology Licensing, Llc | Coalescing geo-fence events |
US9678797B2 (en) * | 2014-03-10 | 2017-06-13 | Microsoft Technology Licensing, Llc | Dynamic resource management for multi-process applications |
US9928169B2 (en) | 2014-05-07 | 2018-03-27 | Sandisk Technologies Llc | Method and system for improving swap performance |
US9665296B2 (en) * | 2014-05-07 | 2017-05-30 | Sandisk Technologies Llc | Method and computing device for using both volatile memory and non-volatile swap memory to pre-load a plurality of applications |
US9633233B2 (en) * | 2014-05-07 | 2017-04-25 | Sandisk Technologies Llc | Method and computing device for encrypting data stored in swap memory |
US9710198B2 (en) | 2014-05-07 | 2017-07-18 | Sandisk Technologies Llc | Method and computing device for controlling bandwidth of swap operations |
US10235434B2 (en) * | 2014-07-29 | 2019-03-19 | Red Hat, Inc. | Optimizing loading of relational data for applications |
US11004010B2 (en) * | 2016-12-30 | 2021-05-11 | eSentire, Inc. | Processing real-time processing requests using machine learning models |
KR102045125B1 (en) * | 2017-11-17 | 2019-11-14 | 전자부품연구원 | Resource assignment method using Continuous Double Auction protocol in distributed processing environment, recording medium and distributed processing device applying the same |
JP2019204335A (en) | 2018-05-24 | 2019-11-28 | 株式会社日立製作所 | Data processor and prefetch method |
US10705883B2 (en) * | 2018-06-19 | 2020-07-07 | Microsoft Technology Licensing, Llc | Dynamic hybrid computing environment |
JP7261037B2 (en) | 2019-02-21 | 2023-04-19 | 株式会社日立製作所 | Data processor, storage device and prefetch method |
KR102234129B1 (en) * | 2019-04-24 | 2021-04-02 | 어드밴스드 뉴 테크놀로지스 씨오., 엘티디. | Distributed resource allocation |
WO2020219040A1 (en) | 2019-04-24 | 2020-10-29 | Alibaba Group Holding Limited | Distributed resource allocation |
KR20210060213A (en) * | 2019-11-18 | 2021-05-26 | 삼성전자주식회사 | Method for preloading application and electronic device supporting the same |
US20210240801A1 (en) * | 2020-02-03 | 2021-08-05 | Arris Enterprises Llc | Digital rights management system resource manager |
US11018991B1 (en) * | 2020-02-07 | 2021-05-25 | EMC IP Holding Company LLC | System and method for autonomous and dynamic resource allocation in storage systems |
Citations (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5134563A (en) * | 1987-07-02 | 1992-07-28 | International Business Machines Corporation | Sequentially processing data in a cached data storage system |
US5349682A (en) * | 1992-01-31 | 1994-09-20 | Parallel Pcs, Inc. | Dynamic fault-tolerant parallel processing system for performing an application function with increased efficiency using heterogeneous processors |
US5442730A (en) * | 1993-10-08 | 1995-08-15 | International Business Machines Corporation | Adaptive job scheduling using neural network priority functions |
US5465358A (en) * | 1992-12-28 | 1995-11-07 | International Business Machines Corporation | System for enhancing user efficiency in initiating sequence of data processing system user inputs using calculated probability of user executing selected sequences of user inputs |
US5493692A (en) * | 1993-12-03 | 1996-02-20 | Xerox Corporation | Selective delivery of electronic messages in a multiple computer system based on context and environment of a user |
US5544321A (en) * | 1993-12-03 | 1996-08-06 | Xerox Corporation | System for granting ownership of device by user based on requested level of ownership, present state of the device, and the context of the device |
US5752255A (en) * | 1992-10-01 | 1998-05-12 | Digital Equipment Corporation | Dynamic non-coherent cache memory resizing mechanism |
US5812865A (en) * | 1993-12-03 | 1998-09-22 | Xerox Corporation | Specifying and establishing communication data paths between particular media devices in multiple media device computing systems based on context of a user or users |
US6016503A (en) * | 1997-08-29 | 2000-01-18 | International Business Machines Corporation | Methods, systems and computer program products for preemptive avoidance of constraints for shared resources |
US20010040590A1 (en) * | 1998-12-18 | 2001-11-15 | Abbott Kenneth H. | Thematic response to a computer user's context, such as by a wearable personal computer |
US20010040591A1 (en) * | 1998-12-18 | 2001-11-15 | Abbott Kenneth H. | Thematic response to a computer user's context, such as by a wearable personal computer |
US20010043231A1 (en) * | 1998-12-18 | 2001-11-22 | Abbott Kenneth H. | Thematic response to a computer user's context, such as by a wearable personal computer |
US20020032689A1 (en) * | 1999-12-15 | 2002-03-14 | Abbott Kenneth H. | Storing and recalling information to augment human memories |
US20020044152A1 (en) * | 2000-10-16 | 2002-04-18 | Abbott Kenneth H. | Dynamic integration of computer generated and real world images |
US20020052930A1 (en) * | 1998-12-18 | 2002-05-02 | Abbott Kenneth H. | Managing interactions between computer users' context models |
US20020054130A1 (en) * | 2000-10-16 | 2002-05-09 | Abbott Kenneth H. | Dynamically displaying current status of tasks |
US20020054174A1 (en) * | 1998-12-18 | 2002-05-09 | Abbott Kenneth H. | Thematic response to a computer user's context, such as by a wearable personal computer |
US20020078204A1 (en) * | 1998-12-18 | 2002-06-20 | Dan Newell | Method and system for controlling presentation of information to a user based on the user's condition |
US20020080156A1 (en) * | 1998-12-18 | 2002-06-27 | Abbott Kenneth H. | Supplying notifications related to supply and consumption of user context data |
US20020083025A1 (en) * | 1998-12-18 | 2002-06-27 | Robarts James O. | Contextual responses based on automated learning techniques |
US20020087525A1 (en) * | 2000-04-02 | 2002-07-04 | Abbott Kenneth H. | Soliciting information based on a computer user's context |
US20030046401A1 (en) * | 2000-10-16 | 2003-03-06 | Abbott Kenneth H. | Dynamically determing appropriate computer user interfaces |
US20030046135A1 (en) * | 2001-06-20 | 2003-03-06 | Cartwright Richard James | Method and apparatus for automated timesheet and other related information recording, processing and visualisation |
US20030084433A1 (en) * | 2001-10-31 | 2003-05-01 | Chi-Keung Luk | Profile-guided stride prefetching |
US6571259B1 (en) * | 2000-09-26 | 2003-05-27 | Emc Corporation | Preallocation of file system cache blocks in a data storage system |
US6647508B2 (en) * | 1997-11-04 | 2003-11-11 | Hewlett-Packard Development Company, L.P. | Multiprocessor computer architecture with multiple operating system instances and software controlled resource allocation |
US20040034739A1 (en) * | 2000-03-31 | 2004-02-19 | Intel Corporation A Delaware Corporation | Multi-tiered memory bank having different data buffer sizes with a programmable bank select |
US20040083452A1 (en) * | 2002-03-29 | 2004-04-29 | Minor James M. | Method and system for predicting multi-variable outcomes |
US6747675B1 (en) * | 1998-12-18 | 2004-06-08 | Tangis Corporation | Mediating conflicts in computer user's context data |
US20040128328A1 (en) * | 2002-12-31 | 2004-07-01 | International Business Machines Corporation | Method and apparatus for relaxed transactional isolation in a client-server caching architecture |
US20040168027A1 (en) * | 2001-07-10 | 2004-08-26 | Micron Technology, Inc. | Caching of dynamic arrays |
US20040215746A1 (en) * | 2003-04-14 | 2004-10-28 | Nbt Technology, Inc. | Transparent client-server transaction accelerator |
US6812937B1 (en) * | 1998-12-18 | 2004-11-02 | Tangis Corporation | Supplying enhanced computer user's context data |
US20050034124A1 (en) * | 2003-03-27 | 2005-02-10 | House Eric Edward | Mechanism for simultaneously operating multiple applications on a personal digital assistant implementing a palm operating system |
US6891543B2 (en) * | 2002-05-08 | 2005-05-10 | Intel Corporation | Method and system for optimally sharing memory between a host processor and graphics processor |
US20050120133A1 (en) * | 2003-11-28 | 2005-06-02 | Canon Kabushiki Kaisha | Recipient-centred proactive caching in a peer-to-peer system |
US20050144337A1 (en) * | 2003-03-27 | 2005-06-30 | Kahle James A. | DMA prefetch |
US20050172082A1 (en) * | 2004-01-30 | 2005-08-04 | Wei Liu | Data-aware cache state machine |
US20060069821A1 (en) * | 2004-09-28 | 2006-03-30 | Jayalakshmi P | Capture of data in a computer network |
US7043506B1 (en) * | 2001-06-28 | 2006-05-09 | Microsoft Corporation | Utility-based archiving |
US20060155733A1 (en) * | 2004-11-30 | 2006-07-13 | Ajita John | Methods and apparatus for determining a proxy presence of a user |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6035104A (en) | 1996-06-28 | 2000-03-07 | Data Link Systems Corp. | Method and apparatus for managing electronic documents by alerting a subscriber at a destination other than the primary destination |
-
2006
- 2006-06-30 US US11/428,231 patent/US8112755B2/en not_active Expired - Fee Related
Patent Citations (57)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5134563A (en) * | 1987-07-02 | 1992-07-28 | International Business Machines Corporation | Sequentially processing data in a cached data storage system |
US5349682A (en) * | 1992-01-31 | 1994-09-20 | Parallel Pcs, Inc. | Dynamic fault-tolerant parallel processing system for performing an application function with increased efficiency using heterogeneous processors |
US5752255A (en) * | 1992-10-01 | 1998-05-12 | Digital Equipment Corporation | Dynamic non-coherent cache memory resizing mechanism |
US5465358A (en) * | 1992-12-28 | 1995-11-07 | International Business Machines Corporation | System for enhancing user efficiency in initiating sequence of data processing system user inputs using calculated probability of user executing selected sequences of user inputs |
US5442730A (en) * | 1993-10-08 | 1995-08-15 | International Business Machines Corporation | Adaptive job scheduling using neural network priority functions |
US5493692A (en) * | 1993-12-03 | 1996-02-20 | Xerox Corporation | Selective delivery of electronic messages in a multiple computer system based on context and environment of a user |
US5544321A (en) * | 1993-12-03 | 1996-08-06 | Xerox Corporation | System for granting ownership of device by user based on requested level of ownership, present state of the device, and the context of the device |
US5555376A (en) * | 1993-12-03 | 1996-09-10 | Xerox Corporation | Method for granting a user request having locational and contextual attributes consistent with user policies for devices having locational attributes consistent with the user request |
US5603054A (en) * | 1993-12-03 | 1997-02-11 | Xerox Corporation | Method for triggering selected machine event when the triggering properties of the system are met and the triggering conditions of an identified user are perceived |
US5611050A (en) * | 1993-12-03 | 1997-03-11 | Xerox Corporation | Method for selectively performing event on computer controlled device whose location and allowable operation is consistent with the contextual and locational attributes of the event |
US5812865A (en) * | 1993-12-03 | 1998-09-22 | Xerox Corporation | Specifying and establishing communication data paths between particular media devices in multiple media device computing systems based on context of a user or users |
US6016503A (en) * | 1997-08-29 | 2000-01-18 | International Business Machines Corporation | Methods, systems and computer program products for preemptive avoidance of constraints for shared resources |
US6647508B2 (en) * | 1997-11-04 | 2003-11-11 | Hewlett-Packard Development Company, L.P. | Multiprocessor computer architecture with multiple operating system instances and software controlled resource allocation |
US6466232B1 (en) * | 1998-12-18 | 2002-10-15 | Tangis Corporation | Method and system for controlling presentation of information to a user based on the user's condition |
US6801223B1 (en) * | 1998-12-18 | 2004-10-05 | Tangis Corporation | Managing interactions between computer users' context models |
US20010043232A1 (en) * | 1998-12-18 | 2001-11-22 | Abbott Kenneth H. | Thematic response to a computer user's context, such as by a wearable personal computer |
US20050034078A1 (en) * | 1998-12-18 | 2005-02-10 | Abbott Kenneth H. | Mediating conflicts in computer user's context data |
US6842877B2 (en) * | 1998-12-18 | 2005-01-11 | Tangis Corporation | Contextual responses based on automated learning techniques |
US20020052930A1 (en) * | 1998-12-18 | 2002-05-02 | Abbott Kenneth H. | Managing interactions between computer users' context models |
US20020052963A1 (en) * | 1998-12-18 | 2002-05-02 | Abbott Kenneth H. | Managing interactions between computer users' context models |
US6812937B1 (en) * | 1998-12-18 | 2004-11-02 | Tangis Corporation | Supplying enhanced computer user's context data |
US20020054174A1 (en) * | 1998-12-18 | 2002-05-09 | Abbott Kenneth H. | Thematic response to a computer user's context, such as by a wearable personal computer |
US20020078204A1 (en) * | 1998-12-18 | 2002-06-20 | Dan Newell | Method and system for controlling presentation of information to a user based on the user's condition |
US20020080156A1 (en) * | 1998-12-18 | 2002-06-27 | Abbott Kenneth H. | Supplying notifications related to supply and consumption of user context data |
US20020083158A1 (en) * | 1998-12-18 | 2002-06-27 | Abbott Kenneth H. | Managing interactions between computer users' context models |
US20020080155A1 (en) * | 1998-12-18 | 2002-06-27 | Abbott Kenneth H. | Supplying notifications related to supply and consumption of user context data |
US20020083025A1 (en) * | 1998-12-18 | 2002-06-27 | Robarts James O. | Contextual responses based on automated learning techniques |
US20010043231A1 (en) * | 1998-12-18 | 2001-11-22 | Abbott Kenneth H. | Thematic response to a computer user's context, such as by a wearable personal computer |
US20020099817A1 (en) * | 1998-12-18 | 2002-07-25 | Abbott Kenneth H. | Managing interactions between computer users' context models |
US20010040591A1 (en) * | 1998-12-18 | 2001-11-15 | Abbott Kenneth H. | Thematic response to a computer user's context, such as by a wearable personal computer |
US6791580B1 (en) * | 1998-12-18 | 2004-09-14 | Tangis Corporation | Supplying notifications related to supply and consumption of user context data |
US6747675B1 (en) * | 1998-12-18 | 2004-06-08 | Tangis Corporation | Mediating conflicts in computer user's context data |
US20010040590A1 (en) * | 1998-12-18 | 2001-11-15 | Abbott Kenneth H. | Thematic response to a computer user's context, such as by a wearable personal computer |
US6513046B1 (en) * | 1999-12-15 | 2003-01-28 | Tangis Corporation | Storing and recalling information to augment human memories |
US20020032689A1 (en) * | 1999-12-15 | 2002-03-14 | Abbott Kenneth H. | Storing and recalling information to augment human memories |
US20030154476A1 (en) * | 1999-12-15 | 2003-08-14 | Abbott Kenneth H. | Storing and recalling information to augment human memories |
US6549915B2 (en) * | 1999-12-15 | 2003-04-15 | Tangis Corporation | Storing and recalling information to augment human memories |
US20040034739A1 (en) * | 2000-03-31 | 2004-02-19 | Intel Corporation A Delaware Corporation | Multi-tiered memory bank having different data buffer sizes with a programmable bank select |
US20020087525A1 (en) * | 2000-04-02 | 2002-07-04 | Abbott Kenneth H. | Soliciting information based on a computer user's context |
US6571259B1 (en) * | 2000-09-26 | 2003-05-27 | Emc Corporation | Preallocation of file system cache blocks in a data storage system |
US20020044152A1 (en) * | 2000-10-16 | 2002-04-18 | Abbott Kenneth H. | Dynamic integration of computer generated and real world images |
US20020054130A1 (en) * | 2000-10-16 | 2002-05-09 | Abbott Kenneth H. | Dynamically displaying current status of tasks |
US20030046401A1 (en) * | 2000-10-16 | 2003-03-06 | Abbott Kenneth H. | Dynamically determing appropriate computer user interfaces |
US20030046135A1 (en) * | 2001-06-20 | 2003-03-06 | Cartwright Richard James | Method and apparatus for automated timesheet and other related information recording, processing and visualisation |
US7043506B1 (en) * | 2001-06-28 | 2006-05-09 | Microsoft Corporation | Utility-based archiving |
US20040168027A1 (en) * | 2001-07-10 | 2004-08-26 | Micron Technology, Inc. | Caching of dynamic arrays |
US20030084433A1 (en) * | 2001-10-31 | 2003-05-01 | Chi-Keung Luk | Profile-guided stride prefetching |
US20040083452A1 (en) * | 2002-03-29 | 2004-04-29 | Minor James M. | Method and system for predicting multi-variable outcomes |
US6891543B2 (en) * | 2002-05-08 | 2005-05-10 | Intel Corporation | Method and system for optimally sharing memory between a host processor and graphics processor |
US20040128328A1 (en) * | 2002-12-31 | 2004-07-01 | International Business Machines Corporation | Method and apparatus for relaxed transactional isolation in a client-server caching architecture |
US20050144337A1 (en) * | 2003-03-27 | 2005-06-30 | Kahle James A. | DMA prefetch |
US20050034124A1 (en) * | 2003-03-27 | 2005-02-10 | House Eric Edward | Mechanism for simultaneously operating multiple applications on a personal digital assistant implementing a palm operating system |
US20040215746A1 (en) * | 2003-04-14 | 2004-10-28 | Nbt Technology, Inc. | Transparent client-server transaction accelerator |
US20050120133A1 (en) * | 2003-11-28 | 2005-06-02 | Canon Kabushiki Kaisha | Recipient-centred proactive caching in a peer-to-peer system |
US20050172082A1 (en) * | 2004-01-30 | 2005-08-04 | Wei Liu | Data-aware cache state machine |
US20060069821A1 (en) * | 2004-09-28 | 2006-03-30 | Jayalakshmi P | Capture of data in a computer network |
US20060155733A1 (en) * | 2004-11-30 | 2006-07-13 | Ajita John | Methods and apparatus for determining a proxy presence of a user |
Cited By (166)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8599841B1 (en) | 2006-03-28 | 2013-12-03 | Nvidia Corporation | Multi-format bitstream decoding engine |
US20070237231A1 (en) * | 2006-03-29 | 2007-10-11 | Portalplayer, Inc. | Method and circuit for efficient caching of reference video data |
US8593469B2 (en) | 2006-03-29 | 2013-11-26 | Nvidia Corporation | Method and circuit for efficient caching of reference video data |
US20080204287A1 (en) * | 2006-05-19 | 2008-08-28 | Nvidia Corporation | Optimization of decoder memory usage for vlc tables |
US7605725B2 (en) * | 2006-05-19 | 2009-10-20 | Nvidia Corporation | Optimization of decoder memory usage for VLC tables |
US20090019153A1 (en) * | 2007-07-12 | 2009-01-15 | Viasat, Inc. | Methods and systems for performing a prefetch abort operation |
US8966053B2 (en) * | 2007-07-12 | 2015-02-24 | Viasat, Inc. | Methods and systems for performing a prefetch abort operation for network acceleration |
US11095494B2 (en) | 2007-10-15 | 2021-08-17 | Viasat, Inc. | Methods and systems for implementing a cache model in a prefetching system |
US9654328B2 (en) | 2007-10-15 | 2017-05-16 | Viasat, Inc. | Methods and systems for implementing a cache model in a prefetching system |
US9460229B2 (en) | 2007-10-15 | 2016-10-04 | Viasat, Inc. | Methods and systems for implementing a cache model in a prefetching system |
US8972756B2 (en) | 2008-03-10 | 2015-03-03 | Aptean Systems, Llc | System and method for computer power control |
US20090228725A1 (en) * | 2008-03-10 | 2009-09-10 | Verdiem Corporation | System and Method for Computer Power Control |
US8281166B2 (en) * | 2008-03-10 | 2012-10-02 | Virdiem Corporation | System and method for computer power control |
US7515899B1 (en) * | 2008-04-23 | 2009-04-07 | International Business Machines Corporation | Distributed grid computing method utilizing processing cycles of mobile phones |
US8898667B2 (en) * | 2008-06-04 | 2014-11-25 | International Business Machines Corporation | Dynamically manage applications on a processing system |
US20090307693A1 (en) * | 2008-06-04 | 2009-12-10 | International Business Machines Corporation | System and method to dynamically manage applications on a processing system |
US8458170B2 (en) * | 2008-06-30 | 2013-06-04 | Yahoo! Inc. | Prefetching data for document ranking |
US20090327274A1 (en) * | 2008-06-30 | 2009-12-31 | Yahoo! Inc. | Prefetching data for document ranking |
US20120233261A1 (en) * | 2008-09-16 | 2012-09-13 | Juniper Networks, Inc. | Optimized prefetching for wide area networks |
US8209291B1 (en) * | 2008-09-16 | 2012-06-26 | Juniper Networks, Inc. | Optimized prefetching for wide area networks |
US8429130B2 (en) * | 2008-09-16 | 2013-04-23 | Juniper Networks, Inc. | Optimized prefetching for wide area networks |
US20100082516A1 (en) * | 2008-09-29 | 2010-04-01 | Microsoft Corporation | Modifying a System in Response to Indications of User Frustration |
US20100161652A1 (en) * | 2008-12-24 | 2010-06-24 | Yahoo! Inc. | Rapid iterative development of classifiers |
US8849790B2 (en) * | 2008-12-24 | 2014-09-30 | Yahoo! Inc. | Rapid iterative development of classifiers |
EP2427831A4 (en) * | 2009-05-08 | 2013-07-10 | Arbitron Mobile Oy | System and method for behavioural and contextual data analytics |
US11502914B2 (en) | 2009-05-08 | 2022-11-15 | The Nielsen Company (Us), Llc | Systems and methods for behavioural and contextual data analytics |
US20150206512A1 (en) * | 2009-11-26 | 2015-07-23 | JVC Kenwood Corporation | Information display apparatus, and method and program for information display control |
US20110158310A1 (en) * | 2009-12-30 | 2011-06-30 | Nvidia Corporation | Decoding data using lookup tables |
US20110252422A1 (en) * | 2010-04-07 | 2011-10-13 | Apple Inc. | Opportunistic Multitasking |
US20110252430A1 (en) * | 2010-04-07 | 2011-10-13 | Apple Inc. | Opportunistic Multitasking |
US9135059B2 (en) | 2010-04-07 | 2015-09-15 | Apple Inc. | Opportunistic multitasking |
US9104476B2 (en) | 2010-04-07 | 2015-08-11 | Apple Inc. | Opportunistic multitasking of VOIP applications |
US10299161B1 (en) | 2010-07-26 | 2019-05-21 | Seven Networks, Llc | Predictive fetching of background data request in resource conserving manner |
US10638358B2 (en) | 2010-07-26 | 2020-04-28 | Seven Networks, Llc | Mobile application traffic optimization |
US10320925B2 (en) | 2010-08-14 | 2019-06-11 | The Nielsen Company (Us), Llc | Systems, methods, and apparatus to monitor mobile internet activity |
US11438429B2 (en) | 2010-08-14 | 2022-09-06 | The Nielsen Company (Us), Llc | Systems, methods, and apparatus to monitor mobile internet activity |
US9736136B2 (en) | 2010-08-14 | 2017-08-15 | The Nielsen Company (Us), Llc | Systems, methods, and apparatus to monitor mobile internet activity |
US11849001B2 (en) | 2010-08-14 | 2023-12-19 | The Nielsen Company (Us), Llc | Systems, methods, and apparatus to monitor mobile internet activity |
US10965765B2 (en) | 2010-08-14 | 2021-03-30 | The Nielsen Company (Us), Llc | Systems, methods, and apparatus to monitor mobile internet activity |
US20120185803A1 (en) * | 2011-01-13 | 2012-07-19 | Htc Corporation | Portable electronic device, control method of the same, and computer program product of the same |
US20130283283A1 (en) * | 2011-01-13 | 2013-10-24 | Htc Corporation | Portable electronic device and control method therefor |
US9307418B2 (en) | 2011-06-30 | 2016-04-05 | The Nielson Company (Us), Llc | Systems, methods, and apparatus to monitor mobile internet activity |
US8412237B1 (en) * | 2011-07-29 | 2013-04-02 | Intuit Inc. | Method and system for launching and preparing applications on mobile computing systems based on geo-location data |
US20130138403A1 (en) * | 2011-11-29 | 2013-05-30 | International Business Machines Corporation | Usage-based temporal degradation estimation for memory elements |
US9058448B2 (en) * | 2011-11-29 | 2015-06-16 | International Business Machines Corporation | Usage-based temporal degradation estimation for memory elements |
US9064071B2 (en) * | 2011-11-29 | 2015-06-23 | International Business Machines Corporation | Usage-based temporal degradation estimation for memory elements |
US20130138407A1 (en) * | 2011-11-29 | 2013-05-30 | International Business Machines Corporation | Usage-based temporal degradation estimation for memory elements |
US9118520B1 (en) * | 2012-04-20 | 2015-08-25 | Symantec Corporation | Systems and methods for monitoring application resource usage on mobile computing systems |
EP2867766A4 (en) * | 2012-06-29 | 2016-02-24 | Intel Corp | Application-provided context for potential action prediction |
US20140006599A1 (en) * | 2012-06-29 | 2014-01-02 | Dirk Hohndel | Probabilities of potential actions based on system observations |
US9886667B2 (en) | 2012-06-29 | 2018-02-06 | Intel Corporation | Performance of predicted actions |
US20140006335A1 (en) * | 2012-06-29 | 2014-01-02 | Dirk Hohndel | Application-provided context for potential action prediction |
US8990143B2 (en) * | 2012-06-29 | 2015-03-24 | Intel Corporation | Application-provided context for potential action prediction |
EP3588287A1 (en) * | 2012-06-29 | 2020-01-01 | INTEL Corporation | Performance of predicted actions |
US9483308B2 (en) | 2012-06-29 | 2016-11-01 | Intel Corporation | Performance of predicted actions |
EP2867792A4 (en) * | 2012-06-29 | 2016-05-25 | Intel Corp | Performance of predicted actions |
AU2013281104B2 (en) * | 2012-06-29 | 2016-05-05 | Intel Corporation | Application-provided context for potential action prediction |
CN104321763A (en) * | 2012-06-29 | 2015-01-28 | 英特尔公司 | Probabilities of potential actions based on system observations |
EP2867794A4 (en) * | 2012-06-29 | 2016-02-24 | Intel Corp | Probabilities of potential actions based on system observations |
US9443272B2 (en) * | 2012-09-13 | 2016-09-13 | Intel Corporation | Methods and apparatus for providing improved access to applications |
US20140075385A1 (en) * | 2012-09-13 | 2014-03-13 | Chieh-Yih Wan | Methods and apparatus for improving user experience |
US9407751B2 (en) | 2012-09-13 | 2016-08-02 | Intel Corporation | Methods and apparatus for improving user experience |
US9310881B2 (en) | 2012-09-13 | 2016-04-12 | Intel Corporation | Methods and apparatus for facilitating multi-user computer interaction |
US9386326B2 (en) | 2012-10-05 | 2016-07-05 | Nvidia Corporation | Video decoding error concealment techniques |
US20170339636A1 (en) * | 2012-10-26 | 2017-11-23 | Lookout, Inc. | Modifying mobile device settings for contextual substitution |
US10521281B2 (en) * | 2012-12-17 | 2019-12-31 | Blackberry Limited | System and methods for launching an application on an electronic device |
US20150370617A1 (en) * | 2012-12-17 | 2015-12-24 | Blackberry Limited | System and methods for launching an application on an electronic device |
US10275293B2 (en) * | 2012-12-17 | 2019-04-30 | Blackberry Limited | System and methods for launching an application on an electronic device |
US20140189538A1 (en) * | 2012-12-31 | 2014-07-03 | Motorola Mobility Llc | Recommendations for Applications Based on Device Context |
US20140282553A1 (en) * | 2013-03-14 | 2014-09-18 | International Business Machines Corporation | Meta-application management in a multitasking environment |
US9207972B2 (en) * | 2013-03-14 | 2015-12-08 | International Business Machines Corporation | Meta-application management in a multitasking environment |
US9207973B2 (en) * | 2013-03-14 | 2015-12-08 | International Business Machines Corporation | Meta-application management in a multitasking environment |
US20140282606A1 (en) * | 2013-03-14 | 2014-09-18 | International Business Machines Corporation | Meta-application management in a multitasking environment |
US11510037B2 (en) | 2013-03-15 | 2022-11-22 | The Nielsen Company (Us), Llc | Methods and apparatus to credit usage of mobile devices |
US9301173B2 (en) | 2013-03-15 | 2016-03-29 | The Nielsen Company (Us), Llc | Methods and apparatus to credit internet usage |
US10356579B2 (en) | 2013-03-15 | 2019-07-16 | The Nielsen Company (Us), Llc | Methods and apparatus to credit usage of mobile devices |
WO2014143969A3 (en) * | 2013-03-15 | 2014-11-06 | The Nielsen Company (Us), Llc | Methods and apparatus to credit usage of mobile devices |
WO2014143969A2 (en) * | 2013-03-15 | 2014-09-18 | The Nielsen Company (Us), Llc | Methods and apparatus to credit usage of mobile devices |
US10409353B2 (en) * | 2013-04-17 | 2019-09-10 | Qualcomm Incorporated | Dynamic clock voltage scaling (DCVS) based on application performance in a system-on-a-chip (SOC), and related methods and processor-based systems |
US20140324409A1 (en) * | 2013-04-30 | 2014-10-30 | Hewlett-Packard Development Company, L.P. | Stochastic based determination |
US11100405B1 (en) * | 2013-06-06 | 2021-08-24 | Google Llc | Systems and methods for cohort identification and reporting |
US9336070B1 (en) | 2013-06-07 | 2016-05-10 | Apple Inc. | Throttling of application access to resources |
US20140373032A1 (en) * | 2013-06-12 | 2014-12-18 | Microsoft Corporation | Prefetching content for service-connected applications |
CN105453042A (en) * | 2013-06-12 | 2016-03-30 | 微软技术许可有限责任公司 | Pre-fetching content for service-connected applications |
KR102273109B1 (en) | 2013-07-19 | 2021-07-06 | 삼성전자주식회사 | Method for caching and electronic device thereof |
US9588897B2 (en) * | 2013-07-19 | 2017-03-07 | Samsung Electronics Co., Ltd. | Adaptive application caching for mobile devices |
KR20150010563A (en) * | 2013-07-19 | 2015-01-28 | 삼성전자주식회사 | Method for caching and electronic device thereof |
JP2016536707A (en) * | 2013-09-04 | 2016-11-24 | インテル・コーポレーション | Dynamic storage management facilitation mechanism for multiple mobile computing devices |
US11394775B2 (en) * | 2013-09-04 | 2022-07-19 | Intel Corporation | Mechanism for facilitating dynamic storage management for mobile computing devices |
CN105453061A (en) * | 2013-09-04 | 2016-03-30 | 英特尔公司 | Mechanism for facilitating dynamic storage management for mobile computing devices |
US20150256476A1 (en) * | 2014-03-10 | 2015-09-10 | Microsoft Corporation | Resource management based on device-specific or user-specific resource usage profiles |
US9871741B2 (en) * | 2014-03-10 | 2018-01-16 | Microsoft Technology Licensing, Llc | Resource management based on device-specific or user-specific resource usage profiles |
US10182018B2 (en) | 2014-03-10 | 2019-01-15 | Microsoft Technology Licensing, Llc | Resource management based on device-specific or user-specific resource usage profiles |
RU2683509C2 (en) * | 2014-03-10 | 2019-03-28 | МАЙКРОСОФТ ТЕКНОЛОДЖИ ЛАЙСЕНСИНГ, ЭлЭлСи | Resource management based on device-specific or user-specific resource usage profiles |
US20150324690A1 (en) * | 2014-05-08 | 2015-11-12 | Microsoft Corporation | Deep Learning Training System |
US20150333973A1 (en) * | 2014-05-16 | 2015-11-19 | Vodafone Ip Licensing Limited | Controlling a server |
US9632841B2 (en) * | 2014-05-29 | 2017-04-25 | Mediatek Inc. | Electronic device capable of configuring application-dependent task based on operating behavior of application detected during execution of application and related method thereof |
CN105279426A (en) * | 2014-05-29 | 2016-01-27 | 联发科技股份有限公司 | Electronic device capable of configuring application-dependent task based on operating behavior of application detected during execution of application and related method thereof |
US20150347203A1 (en) * | 2014-05-29 | 2015-12-03 | Mediatek Inc. | Electronic device capable of configuring application-dependent task based on operating behavior of application detected during execution of application and related method thereof |
US10430577B2 (en) | 2014-05-30 | 2019-10-01 | Apple Inc. | Method and apparatus for inter process privilige transfer |
US9665398B2 (en) | 2014-05-30 | 2017-05-30 | Apple Inc. | Method and apparatus for activity based execution scheduling |
US10162727B2 (en) | 2014-05-30 | 2018-12-25 | Apple Inc. | Activity tracing diagnostic systems and methods |
US9348645B2 (en) | 2014-05-30 | 2016-05-24 | Apple Inc. | Method and apparatus for inter process priority donation |
US9619012B2 (en) | 2014-05-30 | 2017-04-11 | Apple Inc. | Power level control using power assertion requests |
US10210213B2 (en) | 2014-07-30 | 2019-02-19 | International Business Machines Corporation | Providing context in activity streams |
US10380116B2 (en) * | 2014-07-30 | 2019-08-13 | International Business Machines Corporation | Providing context in activity streams |
US11086878B2 (en) * | 2014-07-30 | 2021-08-10 | International Business Machines Corporation | Providing context in activity streams |
US20160034537A1 (en) * | 2014-07-30 | 2016-02-04 | International Business Machines Corporation | Providing context in activity streams |
US20160119443A1 (en) * | 2014-10-23 | 2016-04-28 | Netapp, Inc. | System and method for managing application performance |
US10798207B2 (en) | 2014-10-23 | 2020-10-06 | Netapp, Inc. | System and method for managing application performance |
US9930133B2 (en) * | 2014-10-23 | 2018-03-27 | Netapp, Inc. | System and method for managing application performance |
US11418610B2 (en) | 2014-10-31 | 2022-08-16 | The Nielsen Company (Us), Llc | Methods and apparatus to improve usage crediting in mobile devices |
US10798192B2 (en) | 2014-10-31 | 2020-10-06 | The Nielsen Company (Us), Llc | Methods and apparatus to improve usage crediting in mobile devices |
US11671511B2 (en) | 2014-10-31 | 2023-06-06 | The Nielsen Company (Us), Llc | Methods and apparatus to improve usage crediting in mobile devices |
US9762688B2 (en) | 2014-10-31 | 2017-09-12 | The Nielsen Company (Us), Llc | Methods and apparatus to improve usage crediting in mobile devices |
US10257297B2 (en) | 2014-10-31 | 2019-04-09 | The Nielsen Company (Us), Llc | Methods and apparatus to improve usage crediting in mobile devices |
US11423420B2 (en) | 2015-02-06 | 2022-08-23 | The Nielsen Company (Us), Llc | Methods and apparatus to credit media presentations for online media distributions |
US11009935B2 (en) * | 2015-02-25 | 2021-05-18 | International Business Machines Corporation | Predictive electrical appliance device power management mode based on presence detection of mobile device |
US9875169B2 (en) * | 2015-03-26 | 2018-01-23 | Ca, Inc. | Modeling real capacity consumption changes using process-level data |
US11055622B2 (en) * | 2015-06-02 | 2021-07-06 | Quantum Corporation | Data storage apparatus with selective adaptive predictive behavior |
US10264319B2 (en) * | 2015-06-07 | 2019-04-16 | Apple Inc. | Priming media applications and presenting primed media application data |
US10805683B2 (en) | 2015-06-07 | 2020-10-13 | Apple Inc. | Priming media applications and presenting primed media application data |
US20160360271A1 (en) * | 2015-06-07 | 2016-12-08 | Apple Inc. | Priming media applications |
US10048838B2 (en) * | 2015-08-27 | 2018-08-14 | International Business Machines Corporation | Data transfer target applications through content analysis |
US20170060355A1 (en) * | 2015-08-27 | 2017-03-02 | International Business Machines Corporation | Data transfer target applications through content analysis |
US10430034B2 (en) * | 2015-08-27 | 2019-10-01 | International Business Machines Corporation | Data transfer target applications through content analysis |
US20170063962A1 (en) * | 2015-08-27 | 2017-03-02 | International Business Machines Corporation | Data transfer target applications through content analysis |
US10430033B2 (en) * | 2015-08-27 | 2019-10-01 | International Business Machines Corporation | Data transfer target applications through content analysis |
US10013146B2 (en) * | 2015-08-27 | 2018-07-03 | International Business Machines Corporation | Data transfer target applications through content analysis |
US20180275843A1 (en) * | 2015-08-27 | 2018-09-27 | International Business Machines Corporation | Data transfer target applications through content analysis |
US20170177601A1 (en) * | 2015-12-17 | 2017-06-22 | Druva Technologies Pte. Ltd. | Active repartitioning in a distributed database |
US10133745B2 (en) * | 2015-12-17 | 2018-11-20 | Druva Technologies Pte. Ltd. | Active repartitioning in a distributed database |
US20170230475A1 (en) * | 2016-02-08 | 2017-08-10 | International Business Machines Corporation | Preemptive content distribution |
US10257305B2 (en) * | 2016-02-08 | 2019-04-09 | International Business Machines Corporation | Preemptive content distribution |
WO2017213878A1 (en) * | 2016-06-10 | 2017-12-14 | Apple Inc. | Memory management for application loading |
US11513557B2 (en) | 2016-06-10 | 2022-11-29 | Apple Inc. | Enhanced application preview mode |
US10747467B2 (en) | 2016-06-10 | 2020-08-18 | Apple Inc. | Memory management for application loading |
US10725761B2 (en) | 2016-06-10 | 2020-07-28 | Apple Inc. | Providing updated application data for previewing applications on a display |
CN109313570A (en) * | 2016-06-10 | 2019-02-05 | 苹果公司 | Memory management for application program load |
US10520979B2 (en) | 2016-06-10 | 2019-12-31 | Apple Inc. | Enhanced application preview mode |
US11150696B2 (en) | 2016-06-10 | 2021-10-19 | Apple Inc. | Enhanced application preview mode |
US11360817B2 (en) * | 2016-09-27 | 2022-06-14 | Huawei Technologies Co., Ltd. | Method and terminal for allocating system resource to application |
US20180196584A1 (en) * | 2017-01-09 | 2018-07-12 | Alibaba Group Holding Limited | Execution of multiple applications on a device |
US20180196695A1 (en) * | 2017-01-11 | 2018-07-12 | International Business Machines Corporation | Self-adjusting system for prioritizing computer applications |
US10860369B2 (en) * | 2017-01-11 | 2020-12-08 | International Business Machines Corporation | Self-adjusting system for prioritizing computer applications |
KR20200060421A (en) * | 2017-10-13 | 2020-05-29 | 후아웨이 테크놀러지 컴퍼니 리미티드 | Resource management method and terminal device |
US11693693B2 (en) | 2017-10-13 | 2023-07-04 | Huawei Technologies Co., Ltd. | Resource management based on ranking of importance of applications |
EP3674895A4 (en) * | 2017-10-13 | 2020-11-18 | Huawei Technologies Co., Ltd. | Method for managing resource, and terminal device |
EP3486771A1 (en) * | 2017-11-20 | 2019-05-22 | Guangdong Oppo Mobile Telecommunications Corp., Ltd | Prediction of applications to be preloaded based on observed user behaviour and the order of starting the applications |
CN109814938A (en) * | 2017-11-20 | 2019-05-28 | 广东欧珀移动通信有限公司 | Application program prediction model is established, preloads method, apparatus, medium and terminal |
CN109814936A (en) * | 2017-11-20 | 2019-05-28 | 广东欧珀移动通信有限公司 | Application program prediction model is established, preloads method, apparatus, medium and terminal |
EP3486769A1 (en) * | 2017-11-20 | 2019-05-22 | Guangdong OPPO Mobile Telecommunications Corp., Ltd. | Method for preloading application, terminal device, and medium |
US10579538B2 (en) * | 2018-02-21 | 2020-03-03 | Western Digital Technologies, Inc. | Predicting addresses in non-volatile storage |
US20190258585A1 (en) * | 2018-02-21 | 2019-08-22 | Western Digital Technologies, Inc. | Predicting addresses in non-volatile storage |
US20190317901A1 (en) * | 2018-04-16 | 2019-10-17 | Samsung Electronics Co., Ltd. | System and method for optimizing performance of a solid-state drive using a deep neural network |
US10963394B2 (en) * | 2018-04-16 | 2021-03-30 | Samsung Electronics Co., Ltd. | System and method for optimizing performance of a solid-state drive using a deep neural network |
US11086663B2 (en) | 2018-05-10 | 2021-08-10 | Guangdong Oppo Mobile Telecommunications Corp., Ltd. | Preloading application using active window stack |
US11442747B2 (en) | 2018-05-10 | 2022-09-13 | Guangdong Oppo Mobile Telecommunications Corp., Ltd. | Method for establishing applications-to-be preloaded prediction model based on preorder usage sequence of foreground application, storage medium, and terminal |
US11397590B2 (en) | 2018-05-10 | 2022-07-26 | Guangdong Oppo Mobile Telecommunications Corp., Ltd. | Method for preloading application, storage medium, and terminal |
US11604660B2 (en) | 2018-05-15 | 2023-03-14 | Guangdong Oppo Mobile Telecommunications Corp., Ltd. | Method for launching application, storage medium, and terminal |
US11099861B2 (en) * | 2018-05-29 | 2021-08-24 | Guangdong Oppo Mobile Telecommunications Corp., Ltd. | Method for preloading application, storage medium, and terminal |
US11204806B2 (en) | 2018-06-03 | 2021-12-21 | Apple Inc. | Systems and methods for user adaptive resource management |
US11467855B2 (en) | 2018-06-05 | 2022-10-11 | Guangdong Oppo Mobile Telecommunications Corp., Ltd. | Application preloading method and device, storage medium and terminal |
US11216330B2 (en) | 2018-08-27 | 2022-01-04 | Samsung Electronics Co., Ltd. | Methods and systems for managing an electronic device |
US11610110B2 (en) | 2018-12-05 | 2023-03-21 | Bank Of America Corporation | De-conflicting data labeling in real time deep learning systems |
US20240069729A1 (en) * | 2022-08-31 | 2024-02-29 | Pure Storage, Inc. | Optimizing Data Deletion in a Storage System |
Also Published As
Publication number | Publication date |
---|---|
US8112755B2 (en) | 2012-02-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8112755B2 (en) | Reducing latencies in computing systems using probabilistic and/or decision-theoretic reasoning under scarce memory resources | |
RU2348067C2 (en) | Methods and devices of anticipatory memory control | |
US8959515B2 (en) | Task scheduling policy for limited memory systems | |
US9442760B2 (en) | Job scheduling using expected server performance information | |
CN105431822B (en) | The prediction pretrigger of application | |
KR20200060421A (en) | Resource management method and terminal device | |
US9372898B2 (en) | Enabling event prediction as an on-device service for mobile interaction | |
EP3813337A1 (en) | Dynamic adjustment of mobile device based on user activity | |
CN112334876A (en) | Automated computer operating system optimization | |
Chen et al. | Retail: Opting for learning simplicity to enable qos-aware power management in the cloud | |
CN100538649C (en) | Be used to distribute the untapped processor round-robin method and system in the dispatch window | |
Esfahbod | Preload: An adaptive prefetching daemon | |
US20240020155A1 (en) | Optimal dispatching of function-as-a-service in heterogeneous accelerator environments | |
US11422857B2 (en) | Multi-level scheduling | |
US11297163B2 (en) | Scenario profile based partitioning and management of application code | |
US20230385087A1 (en) | Clickstream processing for intelligent routing | |
CN117546122A (en) | Power budget management using quality of service (QOS) | |
Semghouni et al. | On new scheduling policy for the improvement of firm RTDBSs performances | |
US20230281039A1 (en) | Efficient Scheduling of Build Processes Executing on Parallel Processors | |
CN117472167B (en) | Method and device for adjusting energy consumption of server, computer equipment and storage medium | |
US20220343208A1 (en) | Determining reinforcement learning model reward signal timing | |
Kumar et al. | A Study on User Interaction with Multi-Window Screen Support Framework for Multitasking Operations on Smartphones | |
KR101051504B1 (en) | Hybrid hard disk I / O system based on n-block preload for low power and I / O performance | |
Meehean | Towards Transparent CPU Scheduling | |
WO2022271606A1 (en) | Power budget management using quality of service (qos) |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: MICROSOFT CORPORATION, WASHINGTON Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:APACIBLE, JOHNSON;HORVITZ, ERIC J.;IYIGUN, MEHMET;REEL/FRAME:018284/0278 Effective date: 20060630 |
|
ZAAA | Notice of allowance and fees due |
Free format text: ORIGINAL CODE: NOA |
|
ZAAB | Notice of allowance mailed |
Free format text: ORIGINAL CODE: MN/=. |
|
FEPP | Fee payment procedure |
Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
AS | Assignment |
Owner name: MICROSOFT TECHNOLOGY LICENSING, LLC, WASHINGTON Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MICROSOFT CORPORATION;REEL/FRAME:034542/0001 Effective date: 20141014 |
|
FPAY | Fee payment |
Year of fee payment: 4 |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 8 |
|
FEPP | Fee payment procedure |
Free format text: MAINTENANCE FEE REMINDER MAILED (ORIGINAL EVENT CODE: REM.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
LAPS | Lapse for failure to pay maintenance fees |
Free format text: PATENT EXPIRED FOR FAILURE TO PAY MAINTENANCE FEES (ORIGINAL EVENT CODE: EXP.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
STCH | Information on status: patent discontinuation |
Free format text: PATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362 |
|
FP | Lapsed due to failure to pay maintenance fee |
Effective date: 20240207 |