Method and system for selecting a task for hibernation

The system addresses inefficient battery conservation by intelligently selecting tasks for hibernation/sleep based on user preferences and battery health, ensuring consistent power management across devices and usage patterns.

JP2025536226APending Publication Date: 2025-11-05INTERNATIONAL BUSINESS MACHINE CORPORATION
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
JP2025519054
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2022-10-04
Filing Date
2023-09-25
Publication Date
2025-11-05

AI Technical Summary

Technical Problem

Existing power management systems in computing devices do not consider damaged battery segments or user utilization patterns, leading to inefficient battery conservation and inconsistent user experience during hibernation/sleep modes.

Method used

A system that intelligently selects tasks for hibernation/sleep based on user preferences, battery health, and resource utilization, using a penalty-based approach to conserve battery power and provide a unified experience across different devices and usage patterns.

Benefits of technology

Efficient battery power conservation and consistent user experience by dynamically managing hibernation/sleep thresholds based on battery health and user activity, extending battery life and improving application availability.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2025536226000001_ABST
    Figure 2025536226000001_ABST
Patent Text Reader

Abstract

A method and system for selecting tasks for hibernation are provided. Tasks are selected for hibernation by first recording user preferences for tasks that do not have penalties for hibernation and sleep, and assigning a threshold for battery power at which the tasks are selected for at least one of hibernation and sleep. Assigning the threshold for battery power includes considering the user's current utilization of hardware resources and the battery health state for each battery segment. A penalty score is determined for the tasks based on the user preferences for tasks that do not have penalties and task performance, including at least one of frequency of utilization, memory utilization, task dependency characteristics, and task memory hierarchy. The penalty performance is a value that includes both user preferences and task performance. The tasks are then placed into at least one of hibernation mode and sleep mode as indicated by their penalty performance during the threshold for battery power.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] The present invention relates generally to computer battery management, and more particularly to battery management associated with the hibernation process of a computing device.

[0002] Hibernation is a mode in which a computer is powered off but saves its state to resume when powered on again. Hibernation is the process of transferring active process states from voltage storage to non-volatile storage. This aids in computations that resume processing upon restoration. Process hibernation is used to effectively manage power consumption in computing devices. Sleep mode, sometimes called standby or suspend mode, is a power-saving state that a computer can enter when not in use. The computer's state is maintained in RAM (random access memory).

[0003] Sleep mode stores the documents and files you are working with in RAM, using a small amount of power in the process. Hibernate mode essentially does the same thing, but saves the information to your hard disk, allowing your computer to be completely powered down and not use energy. Sleep mode resumes faster than hibernation because it moves process state to memory.

[0004] In critical battery conditions, instead of shutting down the computing device, hibernate or sleep mode is a better option because the device can easily return to a previous active state. Summary of the Invention

[0005] According to one aspect, a computer-implemented method for selecting tasks for hibernation during battery operation including a computing device is provided, the method comprising: recording user preferences for tasks that do not have a penalty for hibernation and sleep; assigning a threshold for battery power at which tasks are selected for at least one of hibernation and sleep, where assigning the threshold for battery power includes considering the user's current utilization of hardware resources and the battery health state per battery segment; determining a penalty score for the tasks based on the user preferences for tasks that do not have a penalty and task performance including at least one of frequency of utilization, memory utilization, task dependency characteristics, and task memory hierarchy, where the penalty performance is a value that includes both user preferences and task performance; and controlling the tasks to enter at least one of hibernation mode and sleep mode as indicated by their penalty performance during the threshold for battery power.According to another aspect, there is provided a system for selecting tasks for hibernation during battery operation, including a computing device, the system comprising: a hardware processor; and memory storing a computer program product that, when executed by the hardware processor, causes the hardware processor to perform: a procedure for recording user preferences for tasks that do not have a penalty for hibernation and sleep; a procedure for assigning a threshold for battery power at which tasks for at least one of hibernation and sleep are selected, where the procedure for assigning the threshold for battery power includes considering a current utilization of hardware resources by the user and a battery health state for each battery segment; a procedure for determining a penalty score for the tasks based on the user preferences for tasks that do not have a penalty and task performance including at least one of frequency of utilization, memory utilization, task dependency characteristics, and task memory hierarchy, where the penalty performance is a value that includes both user preferences and task performance; and a procedure for controlling the tasks to enter at least one of a hibernation mode and a sleep mode as indicated by their penalty performance between the thresholds for battery power.

[0006] According to another aspect, there is provided a computer program product for selecting tasks for hibernation during battery operation, the computer program product comprising a computing device including a computer-readable storage medium having computer-readable program code embodied thereon, the program instructions being executable by a processor and causing the processor to: record, using the processor, user preferences for tasks that do not have a penalty for hibernation and sleep; assign, using the processor, a threshold for battery power at which tasks are selected for at least one of hibernation and sleep, where assigning the threshold for battery power takes into account current utilization of hardware resources by the user and a battery health state per battery segment; determine, using the processor, a penalty score for the tasks based on the user preferences for tasks that do not have a penalty and task performance including at least one of frequency of utilization, memory utilization, task dependency characteristics, and task memory hierarchy, where the penalty performance is a value including both user preferences and task performance; and control, using the processor, the tasks to enter at least one of a hibernation mode and a sleep mode as dictated by their penalty performance during the threshold for battery power. Have them do this.

[0007] According to an embodiment of the present invention, a computer-implemented method is provided for selecting tasks for hibernation during battery operation involving a computing device. In one embodiment, the computer-implemented method records user preferences for tasks that do not have a penalty for hibernation and sleep. The method further assigns a threshold for battery power at which the tasks are selected for at least one of hibernation and sleep. Assigning the threshold for battery power may include considering the user's current utilization of hardware resources and the battery health status per battery segment. The computer-implemented method may then determine a penalty score for the tasks based on the user preferences for tasks that do not have a penalty and task performance, including at least one of frequency of utilization, memory utilization, task dependency characteristics, and task memory hierarchy, where the penalty performance is a value that includes both user preferences and task performance. The tasks then enter at least one of hibernation mode and sleep mode as dictated by their penalty performance during the assigned threshold for battery power.

[0008] According to another embodiment of the present invention, a system for selecting tasks for hibernation during battery operation is provided, including a computing device. In one embodiment, the system includes a hardware processor and a memory that stores a computer program product. When executed by the hardware processor, the computer program product causes the hardware processor to record user preferences for tasks that do not have a penalty for hibernation and sleep and to assign a threshold for battery power at which the tasks are selected for at least one of hibernation and sleep. Assigning the threshold for battery power may include considering a current usage of hardware resources by the user and a battery health state per battery segment. The computer program product also uses the hardware processor to determine a penalty score for the tasks based on the user preferences for tasks that do not have a penalty and task performance, including at least one of frequency of usage, memory usage, task dependency characteristics, and task memory hierarchy. The penalty performance is a value that includes both user preferences and task performance. The computer program product also uses the hardware processor to control the tasks to enter at least one of a hibernation mode and a sleep mode as indicated by their penalty performance within the assigned threshold for battery power.

[0009] According to an embodiment of the present invention, a computer program product for selecting tasks for hibernation during battery operation including a computing device is provided, the computer program product including a computer-readable storage medium having computer-readable program code embodied thereon. The program instructions are executable by a processor. The program instructions cause a hardware processor to record user preferences for tasks that do not have a penalty for hibernation and sleep and to assign a threshold for battery power at which the tasks are selected for at least one of hibernation and sleep. Assigning the threshold for battery power may include considering a current usage of hardware resources by the user and a battery health state per battery segment. The computer program product may also include instructions for the hardware processor to determine a penalty score for the tasks based on the user preferences for tasks that do not have a penalty and task performance, including at least one of frequency of usage, memory usage, task dependency characteristics, and task memory hierarchy. The penalty performance is a value that includes both user preferences and task performance. The computer program product also controls, using the hardware processor, the tasks to enter at least one of a hibernation mode and a sleep mode as indicated by their penalty performance within the assigned threshold for battery power.

[0010] These and other features and advantages will become apparent from the following detailed description of illustrative embodiments thereof, which should be read in connection with the accompanying drawings. [Brief explanation of the drawings]

[0011] Preferred embodiments of the present invention will now be described, by way of example only, with reference to the following drawings:

[0012] [Figure 1]1 is an illustration of an example of an environmental application of a system for intelligent hibernation of a computing device having a failed battery.

[0013] [Figure 2] 1 illustrates one embodiment of an exemplary plot of battery cell discharge voltages used in the operation of a battery in a computing system.

[0014] [Figure 3] 1 is a flowchart / block diagram of an embodiment of a system for intelligent hibernation of a computing device having a faulty battery, according to an embodiment of the present disclosure.

[0015] [Figure 4] 1 is a flowchart / block diagram of a computer-implemented method for providing intelligent hibernation of a computing device having a faulty battery, according to one embodiment of the present disclosure.

[0016] [Figure 5] 1 illustrates a table of an example of a task with assigned penalties for depending on other tasks.

[0017] [Figure 6] 10 illustrates a table for an example task with the sum of scores across tasks monitored for sleep and / or hibernation.

[0018] [Figure 7] 10 illustrates a table for an example task with the sum of penalties for all tasks monitored for sleep and / or hibernation.

[0019] [Figure 8]3 is a block diagram illustrating a system that may incorporate the system for intelligent hibernation of a computing device having a failed battery illustrated in FIG. 2 according to one embodiment of the present disclosure.

[0020] [Figure 9] 1 illustrates a computing environment according to an embodiment of the present disclosure. DETAILED DESCRIPTION OF THE INVENTION

[0021] Methods, systems, and computer program products described herein relate to intelligent hibernation of computing devices with faulty batteries. Forced hibernation in critical battery conditions is common practice, and the hibernation process is generally initiated very close to completing battery drain. Existing power management systems consider hibernation / sleep jobs to conserve battery consumption, but do not consider damaged battery segments to provide a unified experience for different devices and different usage patterns. What is needed is an intelligent method for selecting the point and method of hibernation based on computing device utilization rather than waiting for the battery to deplete. It has been determined that a system is needed that can conserve battery power to provide maximum user satisfaction and provide a unified experience for different devices and usage patterns. Part of this method is assigning a threshold for battery power and then controlling tasks when the threshold is met. The threshold can be established taking into account the health of the battery segments and the user's current resource utilization. The health of the battery segments can take into account the age and condition of the battery. For example, older batteries may contain segments that discharge their power much faster than newer batteries. With respect to a user's current resource utilization, some applications may use greater hardware utilization than other resources, such as hardware processor and memory. For example, a game on a computer with high graphics requirements may use more resources than a device used for general-purpose internet browsing. Assigning thresholds using the above methods can conserve battery power, provide maximum user satisfaction, and provide a unified experience for different devices and usage patterns.

[0022] The present disclosure, in accordance with one or more embodiments, provides an approach whereby processes are intelligently hibernated and total battery consumption is efficiently utilized.

[0023] The methods, systems and computer program products will now be described in more detail with reference to FIGS.

[0024] Figure 1 illustrates an example environmental application of a system for intelligent hibernation of a computing device having a defective battery. Figure 2 illustrates one embodiment of an exemplary plot of battery cell discharge voltages used in the operation of a battery in a computing system. Figure 3 illustrates one embodiment of a system for intelligent hibernation of a computing device having a defective battery. Figure 4 illustrates one embodiment of a flowchart / block diagram for a computer-implemented method for providing intelligent hibernation of a computing device having a defective battery.

[0025] Aspects of the present invention are described herein with reference to flowchart illustrations and / or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and / or block diagrams, and combinations of blocks in the flowchart illustrations and / or block diagrams, can be implemented by computer-readable program instructions.

[0026] These computer-readable program instructions may be provided to a processor of a computer or other programmable data processing apparatus to produce a machine such that the instructions, executed by the processor of the computer or other programmable data processing apparatus, create means for implementing the functions / acts specified in one or more blocks of the flowcharts and / or block diagrams. These computer-readable program instructions may also be stored on a computer-readable storage medium that can direct a computer, programmable data processing apparatus, and / or other device to function in a particular manner, such that the computer-readable storage medium on which the instructions are stored has an article of manufacture including instructions that implement aspects of the functions / acts specified in one or more blocks of the flowcharts and / or block diagrams.

[0027] The computer-readable program instructions may also be loaded into a computer, other programmable data processing apparatus, or other device to cause a series of operational steps to be executed on the computer, other programmable apparatus, or other device to generate a computer-implemented process, whereby the instructions executing on the computer, other programmable apparatus, or other device implement the functions / acts specified in one or more blocks of the flowcharts and / or block diagrams.

[0028] The flowcharts and block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. In this regard, each block in a flowchart or block diagram may represent a module, segment, or portion of instructions, including one or more executable instructions, that implement the specified logical function(s). In some alternative implementations, the functions noted in the blocks may occur out of the order noted in the figures. For example, two blocks shown in succession may actually be realized as a single step, executed simultaneously, substantially simultaneously, partially, or fully in a time-overlapping manner, or the blocks may possibly be executed in the reverse order, depending on the functionality involved. It should also be noted that each block in the block diagrams and / or flowchart diagrams, and combinations of blocks in the block diagrams and / or flowchart diagrams, are implemented by a special-purpose hardware-based system that performs the specified functions or actions or executes a combination of special-purpose hardware and computer instructions.

[0029] FIG. 1 illustrates an example environment in which a system 100 for intelligent hibernation of a computing device cooperates with a computing device to select applications for hibernation and / or sleep. The hibernation system 100 may be cloud-based 11. A user 12 may interact with the system for intelligent hibernation of a computing device 100 to identify preferences regarding which tasks (e.g., tasks having reference numbers T1, T2, T3, T4, T5, T6, T7, T8, and T9) the user 12 prefers not to hibernate and / or sleep as the battery 13a, 13b for the computing device 14 experiences. The system for intelligent hibernation of a computing device 100 may select tasks for hibernation / sleep based on penalties assigned to tasks based on frequency of use, current memory usage, dependency on other jobs, and presence in the memory hierarchy (ease of restoration). This also takes into account user preferences originally entered into the system. As the battery power decreases from full capacity 13a to low capacity 13b, the system 100 puts tasks to sleep and / or hibernate between thresholds, e.g., threshold 1, threshold 2, and threshold 3, according to user preferences and penalties assigned by the hibernation system 100.

[0030] Figure 2 illustrates an example of how a typical battery voltage is consumed. Curve 15 shown in Figure 2 illustrates an example of the time it takes a battery to discharge from 100% to 0%. This data is generally recorded by a battery monitoring chip, such as a battery fuel gauge, which acts as an interface between the battery and a computing device. The battery monitoring chip may continuously monitor the voltage and current supplied by the battery.

[0031] Figure 2 illustrates a battery producing a voltage of 1.34V. This state of the battery is called 100%. A state producing a voltage of 1V is considered 0%. In this example, 1V is the minimum voltage required for a computing device to function. The battery monitoring chip assumes that the total capacity of the battery does not change significantly between each charge / discharge cycle. Therefore, by keeping track of the amount of voltage used in each discharge, it is easy to calculate how much time remains. If the battery is even slightly damaged, the graph in Figure 2 will decay rapidly. For example, if the battery drops significantly from 30% to 0%. Historical data can also be used to illustrate identifying such battery percentage segments, i.e., battery damage segments.

[0032] In some embodiments, the disclosed methods and systems improve battery utilization by applying hibernate / sleep processes based on the idle state of the process by taking a dynamic penalty-based approach and considering the rate of change of battery utilization.

[0033] 3 is a flowchart / block diagram of one embodiment of a system 100 for intelligent hibernation of a computing device with a bad battery. The system 100 includes a user preferences 37 interface. The user preferences interface is a mechanism by which the user 12 can identify to the system tasks that the user does not want selected for hibernation and sleep mode. These tasks are referred to as zero-penalty tasks. The terms task and job are used interchangeably throughout this disclosure and both refer to some applications that may involve computer computation and may require the use of battery power to provide their functionality.

[0034] The system 100 for intelligent hibernation of a computing device having a faulty battery may include a penalty calculator 30. The penalty calculator 30 implements an algorithm that assigns a penalty to a job based on up to four points. For example, the penalty calculator 30 may consider frequency of usage. By considering frequency of usage, the penalty calculator 30 may increase the penalty as the frequency of a process decreases. Frequency of usage may be the first point from which the penalty calculator 30 may calculate a penalty. A second point may be memory usage. When a process has increased memory usage, the penalty for that process calculated by the penalty calculator increases. A third point considered by the penalty calculator 30 in calculating the penalty is the dependency of a process on other jobs (e.g., other processes). For example, spell checking is a job that is a dependent job when a word processing document is being edited. A penalty calculated based on job dependency increases as dependent jobs decrease. Dependent job memory usage may also affect the job penalty calculated by the penalty calculator 30. A fourth point considered by the penalty calculator 30 is the ease of restoring a job and / or process. For example, jobs at higher levels of the cache are easier to restore. The penalty increases as the ease of restoration decreases. In some embodiments, an additional base penalty is introduced to jobs at each of the points described above for calculating the penalty. The base penalty decreases as the point progresses. A fifth point may be a zero-penalty user preference job list. These are tasks that are considered zero-penalty tasks.

[0035] The system 100 for intelligent hibernation of a computing device with a failed battery further includes a job status collector 31. The job status collector 31 collects the status of jobs at distinct slab levels. A "slab level" characterizes the battery life for a job being processed. For example, battery life may be characterized in slabs such as: 1) 100% to 61% battery life, 2) 60% to 46% battery life, 3) 45% to 31% battery life, 4) 30% to 16% battery life, and 5) 15% to 0% battery life. At each slab level, a particular job is assigned a different penalty by the penalty calculator 30. Some slabs have a zero penalty level, which characterizes them as zero-penalty level jobs. Slabs with a zero penalty level are not considered for hibernation. The number of jobs in the zero-penalty job list 31 recorded by the job status collector 31 decreases as the number of slabs progresses toward 0%. When battery life is nearing its end, the likelihood of jobs that do not require hibernation / sleep decreases. Similarly, a certain amount of CPU frequency cycles may always be available to accommodate zero-penalty jobs that are not considered for hibernation / sleep. The kernel 32 is a computer program at the core of a computer's operating system that facilitates interaction between hardware and software components. In this example, the kernel 32 provides CPU frequency cycles to the job status collector 31 for consideration of how to accommodate zero-penalty jobs, i.e., jobs that do not require hibernation / sleep mode.

[0036] 3, the system 100 for intelligent hibernation of a computing device having a bad battery further includes a hibernation / sleep system 34. The hibernation / sleep system 34 considers the penalty calculated by the penalty calculator 30 for jobs identified by the job status collector 31 as not being eliminated for potential hibernation / sleep and compares the penalty to a threshold to determine whether the job is selected for hibernation / sleep in the current battery slab. The hibernation / sleep system 34 also considers the preferences of the user 12, e.g., the presence of zero-penalty tasks.

[0037] The thresholds are set by the threshold calculator 35. The threshold calculator 35 starts with battery life categories, such as battery life characterized in slabs, such as 1) 100% to 61% battery life, 2) 60% to 46% battery life, 3) 45% to 31% battery life, 4) 30% to 16% battery life, and 5) 15% to 0% battery life. The threshold calculator 35 sets the idle start to the battery percentage from when the device is idle. A computer processor is described as "idle" when not being used by any program. Every program or task running on a computer system occupies a certain amount of CPU processing time. When the CPU completes all tasks, it enters the idle state. Modern processors use idle time to conserve power. The "idle start" is the time when the computer enters the idle state. The idle start is reset every time the processor changes from active to inactive.

[0038] With the above considerations in mind, the threshold is set by threshold calculator 35 using equation (1) as follows: (1) Base threshold = total remaining time (x) / dynamic quotient (y) The variable "Total Time Remaining (x)" is the time remaining until battery drain is complete. The variable "Dynamic Quotient (y)" is Delta (i.e., time / percentage) x Slab Constant (i.e., percentage). Delta is the rate of change in time per battery percentage. Slab Constant is equal to Default Slab Percentage + (((Battery Damage Segment End - Battery Damage Segment Start) x Default Slab Percentage) / 100). Default Slab Percentage is the increase percentage per slab progression. From the above relationships, the first threshold (FT), second threshold (ST), and third threshold (TT) can be calculated as follows: (2) Total remaining battery time = 7x / 4y (FT+ST+TT=x / y+x / 2y+x / 4y) Here, the first threshold (FT) is equal to the base threshold, and the second threshold (ST) and the third threshold (TT) are calculated from the following relationships: (3) Second threshold (ST) = 0.5 × base threshold (4) Third Threshold (TT) = 0.25 × Base Threshold

[0039] In equations (1) through (4), first, second, and third thresholds may be calculated. The thresholds may be established taking into account the health of the battery segments (battery damaged segment end - battery damaged segment start) and the user's current resource utilization. The health of the battery segments may take into account the age and condition of the battery. For example, older batteries may contain segments that discharge their power much faster than newer batteries.

[0040] With respect to a user's current resource utilization, some applications may use greater hardware utilization than other resources, such as hardware processor and memory. For example, a game on a computer with high graphics requirements may use greater resources than a device used for general-purpose internet browsing. Threshold assignments that use consideration of both the health of battery segments and the current state of resource utilization by the user can conserve battery power and provide a unified experience for different devices and usage patterns.

[0041] Processes are selected for hibernation / sleep by the hibernation / sleep system 34 according to thresholds.

[0042] For example, for the first threshold, jobs with 50% of the total penalty are hibernated, and jobs are selected based on penalty (higher penalty jobs are considered over lower penalty jobs). Jobs with the next 25% of penalty are put to sleep. Also, a certain amount of CPU frequency is throttled to save power consumption by the CPU.

[0043] For the second threshold, all sleeping jobs are hibernated, and the remaining jobs with a non-zero penalty are put to sleep. Also, a certain amount of CPU frequency is throttled to save power consumed by the CPU.

[0044] For the third threshold, all jobs in the sleep state are hibernated, and in some embodiments, the CPU frequency is throttled back a certain amount to conserve power consumed by the CPU.

[0045] The system 100 illustrated in Figure 3 also includes a timer 36 and an interface 37. The timer 36 may measure battery and computer usage time. The interface 37 provides the user with the preference to selectively / periodically select jobs to prioritize which jobs remain in a sleep / hibernate state, and these jobs are reduced as battery consumption progresses.

[0046] 3, the hibernation / sleep system 34 may also include a user device interface / output 38 that provides connectivity for the mobile device 14 to perform tasks and for intelligent hibernation 100 of a computing device with a bad battery. Through this interface, the system 100 may provide instructions regarding what jobs / tasks can go into sleep / hibernation at different thresholds. It is further noted that the system 100 includes a bus 102 for incorporation into a larger system, such as that illustrated in FIG. 8.

[0047] FIG. 4 is a computer-implemented method for providing intelligent hibernation of a computing device having a faulty battery. The method illustrated in FIG. 4 may begin in block 1, which includes calculating first, second, and third thresholds. The thresholds may be calculated by threshold calculator 35 of system 100 for intelligent hibernation of a computing device having a faulty battery. As described above, inputs for calculating the thresholds may include "total time remaining (x)," which is the time remaining until battery drain is complete, and the rate of change in time per battery percentage (referred to as delta). Another input for calculating the thresholds may be a slab constant. The slab constant is calculated based on a default slab percentage and battery damage segments in a given slab. The inputs described above are used to calculate the first, second, and third thresholds in block 1 using equations (1) through (4), as described for the threshold calculator of FIG. 3.

[0048] In block 2, the method may continue by determining a job penalty for activating sleep / hibernation mode. Block 2 of FIG. 4 may determine the penalty using at least four factors. In the example illustrated in FIG. 4, the penalty is calculated according to five factors. The five factors may include: (1) frequency of usage, (2) memory usage, (3) dependency of the job on other jobs, (4) ease of restoring the job and / or process, and (5) user preference for zero-penalty jobs. A zero-penalty job is one that is not considered for hibernation / sleep. Note that the user 12 may input tasks that they do not want to hibernate and sleep mode.

[0049] In block 3 of FIG. 4, the method may continue by determining whether a first threshold has been reached for the current slab.

[0050] If the first threshold is not met in block 3, the method cycles back to block 2 for the next slab and the first threshold is again considered in block 3.

[0051] If the first threshold is met in block 3, the method continues to block 4. In block 4, jobs with 50% of the total penalty are hibernated and jobs are selected based on penalty (jobs with higher penalties are considered over jobs with lower penalties). Jobs with the next 25% of the penalty are put to sleep. Also, a certain amount of CPU frequency is throttled to conserve power consumed by the CPU.

[0052] In block 5, the method may continue with determining whether a second threshold has been reached for the current slab.

[0053] If the second threshold is not met in block 5, the method cycles back to block 4 for the next slab and the determination of meeting the second threshold is again considered in block 5.

[0054] If the first threshold is met in block 5, the method continues to block 6. In block 6, all jobs that are in a sleeping state are hibernated, and any remaining jobs with a non-zero penalty are put to sleep. Also, the CPU frequency is throttled back by a certain amount to conserve power consumed by the CPU.

[0055] In block 7, the method may continue with determining whether a third threshold has been reached for the current slab.

[0056] If the third threshold is not met in block 7, the method cycles back to block 6 for the next slab and the determination of meeting the second threshold is again considered in block 7.

[0057] If the first threshold is met in block 7, the method continues to block 8.

[0058] At block 8, for the third threshold, all jobs in a sleeping state are hibernated. Also, in some embodiments, the CPU frequency is throttled back a certain amount to conserve power consumption by the CPU.

[0059] This represents the end of one embodiment of the computer-implemented method illustrated in FIG.

[0060] 5-7 illustrate tables of data used in one illustrative example of a computer-implemented method and system for intelligent hibernation of a computing device with a faulty battery. The data in FIGS. 5-7 illustrate how penalties are calculated for nine tasks: Task 1 (T1), Task 2 (T2), Task 3 (T3), Task 4 (T4), Task 5 (T5), Task 6 (T6), Task 7 (T7), Task 8 (T8), and Task 9 (T9). These tasks are also illustrated in FIG. 1. Penalties, in this example, are calculated from (1) frequency of usage, (2) memory usage, (3) dependency of a job on other jobs, and (4) ease of restoring the job and / or process.

[0061] The usage score calculation is a normalized score that is scaled from 1 to 10, where 1 is the least used job / task and 10 is the most used job / task in this example.

[0062] Calculating the memory usage score involves a normalized score of the average memory used for a task scaled from 1 to 10. In this example, 1 is the value for the task with the least memory usage and 10 is the value for the task with the most memory usage.

[0063] In one example, the calculation of the dependent task score takes into account two main points. The first point may be whether the task has any dependent tasks. The second point may be the number of dependent tasks. This reflects the user experience because the number of jobs that are terminated is directly proportional to the jobs that the user loses when they become active. In one example, the calculation of the dependent task score involves assigning a score of 10 to all tasks that do not have any dependent tasks. The default score for each dependent task is reduced by a score of 3. Taking into account the default score for tasks with no dependents and the reduction in score for dependent tasks, tasks may be marked on a scale of 1 to 10. Because a zero-penalty task is equal to 0, all tasks that are not zero-penalty tasks in the examples illustrated in FIGS. 5-7 have a default score of 3.

[0064] Tasks can be normalized based on the number of dependent tasks. This is illustrated in FIG. 5, a table called the Dependent Task Table. In the example illustrated in FIG. 5, there are five tasks, e.g., T2, T4, T5, T7, and T9. In the example illustrated in FIG. 5, the task identified as T4 has two dependents, T7 and T9. In this example, the normalized dependency score is equal to the number of dependent tasks assigned to a task divided by the total number of dependent tasks. In the example illustrated in FIG. 4, there are four dependent tasks, i.e., tasks that are dependent on one another. These tasks are T2, T5, T7, and T9. Task 4, i.e., the task that is actually dependent on T4, has two dependent tasks, T7 and T9. Therefore, for task T4, the normalized score is equal to 0.5, which is 4 / 2. Still referring to column T4 of the dependent task table in FIG. 5, using the normalized score, the dependent task score is calculated by subtracting 10 multiplied by the normalized deposition score and subtracting the reduced default score from 10, which is equal to (10 - (10 x normalized deposition score) - reduced default score). In the example, as illustrated in FIG. 5, the reduced default score is 3, so the dependent task score value for the T4 task is equal to 2. Similar calculations are provided for T7 and T9, both of which have dependent tasks. The rest of the tasks have no dependents, so the score is 10.

[0065] The examples illustrated in the tables included in Figures 5-7 also include examples of calculating ease of recovery. In this example, ease of recovery is a normalized score scaled from 1 to 10. A score of 1 illustrates a task that is easy to recover, while a score closer to the maximum of 10 is difficult to recover. The ease of recovery score depends on the availability of pages in cache / RAM closer to the compute unit. Figure 6 illustrates not only the ease of recovery score, but also scores for frequency penalty (usage penalty), memory usage penalty (memory usage), and dependent task penalty.

[0066] FIG. 7 includes a table of penalties associated with an example task including tasks T1-T9. The total penalty for each task is calculated first, and then the overall total penalty of the total penalties for each task is calculated. In this example illustrated in FIGS. 5-7, the overall total penalty is equal to 267. In this example, the inputs for calculating the penalty may include: 1. Idle state start percentage at 80% which belongs to the first category of slabs for battery power. 2. There is no battery damage segment in the first category of slab for battery power. 3. The total time remaining from the start of idle state to battery drain (x) is equal to 200 minutes. 4. Delta = 3 min / %. 5. Default slab percentage = 4%.

[0067] Using the above, the slab constant, which in this example is 4%, is calculated as follows: Slab Constant = Default Slab Percent + (((Battery Damage Segment End - Battery Damage Segment Start) x Default Slab Percent) / 100) = 4 + (0 x 4) / 100 = 4%.

[0068] To determine the first, second, and third thresholds, Y can be calculated using the total time remaining from the start of idle state to battery drain (x) equal to 200 minutes and a slab constant. Y can be equal to 12 minutes, as calculated from the following equation: Y = Delta (i.e., time / percentage) x Slab Constant (i.e., percentage) = (3 minutes / 1%) x 4%.

[0069] Following the calculation of Y and X, the first, second and third thresholds are calculated as follows: First Threshold (FT) = X / Y = 200 / 12 = 16.66 minutes Second Threshold (ST) = X / 2Y = 200 / 24 ​​= 8.33 minutes Third Threshold (TT) = X / 4Y = 200 / 48 = 4.16 minutes

[0070] Following the calculation of the threshold, the penalties are then considered as summarized in FIG. 7 to determine which tasks are selected for hibernation and / or sleep, i.e., which jobs should be terminated.

[0071] For example, at the first threshold (FT), the jobs (tasks) for hibernation may be high penalty tasks that, when added together, equal up to 50% of the total penalty. For example, the total penalty from FIG. 7 is equal to 267. In this example, 50% of the total penalty equals 133.5. Still referring to FIG. 7, task 1 (T1), task 3 (T3), and task 6 (T6), which have penalties of 49, 44, and 40, respectively, when added together equal 133. Therefore, task 1 (T1), task 3 (T3), and task 6 (T6) are selected for hibernation, as illustrated in FIG. 1. Still considering the first threshold, the jobs (tasks) considered for sleep after the hibernated task are the next highest penalty tasks, which, when added together, equal 25% of the total. In this example, 25% of the total penalty equals 66.75. Still referring to Figure 7, Task 8 (T8) and Task 6 (T6), which have penalties of 31 and 27 respectively, when summed equal 58. Therefore, Task 6 (T6) and Task 8 (T8) are selected for sleep at the first threshold (FT), as illustrated in Figure 1.

[0072] For example, at the second threshold (ST), the jobs for hibernation may include all jobs (tasks) selected for sleep at the first threshold (FT), e.g., task 6 (T6) and task 8 (T8). Furthermore, at the second threshold (ST), all non-penalty (e.g., zero-penalty) jobs (tasks) go to sleep at the second threshold (ST). For example, referring to FIG. 7, in this case, task 4 (T4), task 5 (T5), task 7 (T7), and task 9 (T9) are all zero-penalty jobs and therefore all go to sleep at the second threshold (ST), as illustrated in FIG.

[0073] For example, all jobs that are asleep at the third threshold (TT) are then hibernated, which in the example illustrated in FIG. 7 includes task 4 (T4), task 5 (T5), task 7 (T7), and task 9 (T9), which were all zero-penalty jobs.

[0074] The methods and systems described above provide an intelligent scheme for selecting the point and method of hibernation based on computing device utilization rather than waiting until the battery is depleted. The present disclosure, in accordance with one or more preferred embodiments, provides an approach whereby processes are intelligently hibernated and total battery consumption is utilized efficiently.

[0075] The core logic for improving battery utilization hibernates / puts processes to sleep based on the idleness of the process by taking a dynamic penalty-based approach and considering the rate of change of battery utilization.

[0076] The proposed system aims to increase the battery charge cycle life and enhance application availability through a gradual hibernation process, while also providing a unified experience for device users across different battery conditions and usage patterns.

[0077] The proposed system is invoked by user inactivity, and the system flow is interrupted to terminate when user activity is detected on the device. Now that the user is active, all jobs that were in sleep / hibernate state are restored.

[0078] Jobs are put to sleep / hibernate in a gradual manner, with timer thresholds calculated based on the following aspects: total time remaining to complete battery drain, current battery consumption rate, and current battery slab and battery damage segments. The total time to sleep / hibernate (sum of thresholds) decreases as battery consumption progresses. Jobs are penalized based on frequency of usage, current memory usage, dependency on other jobs, and the presence of memory hierarchy (ease of recovery). A list of user preferences is also taken into account, among which a subset of jobs are dynamically selected based on the current slab level, and these selected jobs will not be put to sleep / hibernate throughout the process.

[0079] FIG. 8 further illustrates a processing system 400 that may include the system 100 for managing task hibernation and sleep in a battery-powered device with reference to FIGS. 1-7. An exemplary processing system 400 to which the present invention is applied is shown according to one embodiment. The processing system 400 includes at least one processor (CPU) 104 operably coupled to other components via a system bus 102. The system bus 102 may be in communication with the system for prioritizing materials for post-combustion carbon capture 200. A cache 106, a read-only memory (ROM) 108, a random access memory (RAM) 110, an input / output (I / O) adapter 120, an audio adapter 130, a network adapter 140, a user interface adapter 150, and a display adapter 160 are operably coupled to the system bus 102. As shown, the system 100 for providing origin-based identification information for policy deviations in a cloud environment may be integrated into the processing system 400 via connection to the system bus 102.

[0080] First storage device 122 and second storage device 124 are operably coupled to system bus 102 by I / O adapter 120. Storage devices 122 and 124 may be disk storage devices (e.g., magnetic disk storage devices or optical disk storage devices), solid-state magnetic devices, etc. Storage devices 122 and 124 may be the same type of storage device or different types of storage devices.

[0081] Speakers 132 are operably coupled to the system bus 102 by an audio adapter 130. A transceiver 142 is operably coupled to the system bus 102 by a network adapter 140. A display device 162 is operably coupled to the system bus 102 by a display adapter 160.

[0082] First user input device 152, second user input device 154, and third user input device 156 are operably coupled to system bus 102 by user interface adapter 150. User input devices 152, 154, and 156 may be any of a keyboard, mouse, keypad, image capture device, motion sensing device, microphone, a device incorporating the functionality of at least two of the foregoing devices, etc. Of course, other types of input devices may be used while maintaining the spirit of the present invention. User input devices 152, 154, and 156 may be the same type of user input device or different types of user input devices. User input devices 152, 154, and 156 are used to input information to and output information from system 400.

[0083] Of course, processing system 400 may include other elements (not shown) or omit certain elements as would be readily envisioned by one skilled in the art. For example, as would be readily understood by one skilled in the art, various other input and / or output devices may be included in processing system 400, depending on the particular implementation. For example, various types of wireless and / or wired input and / or output devices may be used. Also, as would be readily understood by one skilled in the art, additional processors, controllers, memory, etc., in various configurations may also be utilized. These and other variations of processing system 400 will be readily envisioned by one skilled in the art given the teachings of the present invention provided herein.

[0084] As used herein, the terms “hardware processor subsystem” or “hardware processor” can refer to a processor, memory, software, or combination thereof working together to perform one or more specific tasks. In useful embodiments, the hardware processor subsystem can include one or more data processing elements (e.g., logic circuits, processing circuits, instruction execution devices, etc.). The one or more data processing elements can be included in a central processing unit, a graphics processing unit, and / or a separate processor or computing element-based controller (e.g., logic gates, etc.). The hardware processor subsystem can include one or more on-board memories (e.g., cache, dedicated memory array, read-only memory, etc.). In some embodiments, the hardware processor subsystem can include one or more memories that can be on-board or dedicated for use by the hardware processor subsystem (e.g., ROM, RAM, basic input / output system (BIOS), etc.).

[0085] In some embodiments, a hardware processor subsystem may include or execute one or more software elements, which may include an operating system and / or one or more applications and / or specific code for achieving a specified result.

[0086] In other embodiments, the hardware processor subsystem may include dedicated, specialized circuitry that performs one or more electronic processing functions to achieve a specified result. Such circuitry may include one or more application specific integrated circuits (ASICs), FPGAs, and / or PLAs.

[0087] These and other variations of hardware processor subsystems according to embodiments of the present invention are also contemplated.

[0088] The present invention may be a system, method, and / or computer program product integrated at any possible level of technical detail. For example, in some embodiments, a computer program product is provided for ranking materials for post-combustion carbon capture. The computer program product may include a computer-readable storage medium. The computer-readable storage medium may have computer-readable program code embodied therein, the program instructions being executable by the processor to: characterize adsorbent materials with a molecular modeling workflow 26, which generates a microscopic picture of merit for the material according to its microscopic properties; and evaluate materials from the molecular modeling workflow with a process modeling workflow 27, which generates a macroscopic picture of merit for the process steps of the carbon capture process. The computer-readable storage medium also includes instructions that may use the processor to rank materials (using a combined microscopic performance and macroscopic process feasibility generator 29) for applicability as adsorbent materials using a combined microscopic performance and macroscopic process feasibility generator that ranks materials according to the microscopic picture of material merit and the macroscopic picture of process step merit.

[0089] The computer program product may include a computer-readable storage medium (or multiple computer-readable storage media) having computer-readable program instructions for causing a processor to perform aspects of the present invention. The computer program product may also be non-transitory.

[0090] A computer-readable storage medium may be a tangible device that can hold and store instructions for use by an instruction execution device. The computer-readable storage medium may be, for example, but is not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination thereof. A non-exhaustive list of more specific examples of computer-readable storage media includes the following: portable computer diskettes, hard disks, random access memory (RAM), read-only memory (ROM), erasable programmable read-only memory (EPROM or flash memory), static random access memory (SRAM), portable compact disc read-only memory (CD-ROM), digital versatile disk (DVD), memory sticks, floppy disks, mechanically encoded devices such as punch cards or ridge structures in grooves on which instructions are recorded, and any suitable combination of the foregoing. Computer-readable storage medium, as used herein, should not be construed as a transitory signal per se, such as an electric wave or other freely propagating electromagnetic wave, an electromagnetic wave propagating through a waveguide or other transmission medium (e.g., a light pulse passing through a fiber optic cable), or an electrical signal transmitted through a wire.

[0091] The computer-readable program instructions described herein may be downloaded from a computer-readable storage medium to each computing / processing device or to an external computer or external storage device via a network, such as the Internet, a local area network, a wide area network, and / or a wireless network. The network may include copper transmission cables, optical fiber transmissions, wireless transmissions, routers, firewalls, switches, gateway computers, and / or edge servers. A network adapter card or network interface in each computing / processing device receives the computer-readable program instructions from the network and forwards the computer-readable program instructions for storage in a computer-readable storage medium in the respective computing / processing device.

[0092] The computer-readable program instructions for carrying out the operations of the present invention may be either source code or object code written in any combination of one or more programming languages, including assembler instructions, instruction set architecture (ISA) instructions, machine instructions, machine-dependent instructions, microcode, firmware instructions, state setting data, configuration data for an integrated circuit, or object-oriented programming languages ​​such as Smalltalk® or C++, and procedural programming languages ​​such as the “C” programming language or similar programming languages. The computer-readable program instructions may be executed entirely on the user's computer, partially on the user's computer as a stand-alone software package, partially on the user's computer and partially on a remote computer, or entirely on a remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer via any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be to an external computer (e.g., via the Internet using an Internet Service Provider). In some embodiments, electronic circuitry including, for example, a programmable logic circuit, a field programmable gate array (FPGA), or a programmable logic array (PLA) may execute computer readable program instructions to personalize the electronic circuitry by utilizing state information of the computer readable program instructions to perform aspects of the present invention.

[0093] Various aspects of the present disclosure are described through text, flowcharts, block diagrams of computer systems, and / or block diagrams of machine logic included in embodiments of a computer program product (CPP). With respect to any flowchart, depending on the technology involved, it is possible to perform operations in an order different from that shown in the particular flowchart. For example, again depending on the technology involved, two operations shown in successive flowchart blocks may be performed in the reverse order, as a single integrated step, simultaneously, or in an at least partially overlapping manner.

[0094] A computer program product embodiment ("CPP embodiment" or "CPP") is a term used in this disclosure to describe any set of one or more storage media (also referred to as "media"), collectively contained in one or more storage devices, that collectively contain machine-readable code corresponding to instructions and / or data for performing the computer operations specified in a given CPP claim. A "storage device" is any tangible device that can hold and store instructions for use by a computer processor. The computer-readable storage medium may be, but is not limited to, an electronic storage medium, a magnetic storage medium, an optical storage medium, an electromagnetic storage medium, a semiconductor storage medium, a mechanical storage medium, or any suitable combination of the foregoing. Some known types of storage devices that include these media include: diskettes, hard disks, random access memory (RAM), read-only memory (ROM), erasable programmable read-only memory (EPROM or flash memory), static random access memory (SRAM), compact disc read-only memory (CD-ROM), digital versatile disc (DVD), memory sticks, floppy disks, mechanically encoded devices (such as punch cards or pits / lands formed on a major surface of a disk), or any suitable combination of the above.

[0095] A computer-readable storage medium, as that term is used in this disclosure, is not to be construed as storage in the form of a transitory signal per se, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide, light pulses passing through a fiber optic cable, electrical signals transmitted through wires, and / or other transmission media. As will be appreciated by those skilled in the art, data typically moves at some infrequent time during the normal operation of a storage device, such as during access, defragmentation, or garbage collection, but this does not qualify a storage device as transitory because the data is not transitory while it is stored.

[0096] 9 , computing environment 500 includes an example environment for the execution of at least some of the computer code involved in performing an inventive method, such as a method for ranking materials for post-combustion carbon capture 200. In addition to block 200, computing environment 500 includes, for example, a computer 501, a wide area network (WAN) 502, an end user device (EUD) 503, a remote server 504, a public cloud 505, and a private cloud 506. In this embodiment, computer 501 has a processor set 510 (including processing circuitry 520 and cache 521), a communications fabric 511, volatile memory 512, persistent storage 513 (including operating system 522 and block 200, as identified above), a peripheral device set 514 (including a user interface (UI), a device set 523, storage 524, and an Internet of Things (IoT) sensor set 525), and a network module 515. Remote server 504 includes a remote database 530. The public cloud 505 includes a gateway 540, a cloud orchestration module 541, a set of host physical machines 542, a set of virtual machines 543, and a set of containers 544.

[0097] Computer 501 may take the form of a desktop computer, a laptop computer, a tablet computer, a smartphone, a smartwatch or other wearable computer, a mainframe computer, a quantum computer, or any other form of computer or mobile device now known or later developed that is capable of executing programs, accessing a network, or querying a database, such as remote database 530. As is well understood in the art of computer technology, and in accordance with such technology, performance of a computer-implemented method may be distributed among multiple computers and / or among multiple locations. However, in this presentation of computing environment 500, the detailed description focuses on a single computer, and in particular, computer 501, to keep the presentation as simple as possible.

[0098] Computer 501 may be located in a cloud, although it is not shown in the cloud in Figure 9. On the other hand, computer 501 is not required to be present in a cloud except to any extent expressly shown.

[0099] The processor set 510 includes one or more computer processors of any type now known or later developed. The processing circuitry 520 may be distributed across multiple packages, e.g., multiple tailored integrated circuit chips. The processing circuitry 520 may implement multiple processor threads and / or multiple processor cores. The cache 521 is memory located within the processor chip package and is typically used for data or code that should be available for fast access by threads or cores executing on the processor set 510. Cache memory is typically divided into multiple levels depending on relative proximity to the processing circuitry. Alternatively, some or all of the cache for a processor set may be located “off-chip.” In some computing environments, the processor set 510 may be designed for operation with qubits and for performing quantum computing.

[0100] Computer-readable program instructions are typically loaded onto computer 501 and cause processor set 510 of computer 501 to perform a series of operational steps, thereby realizing a computer-implemented method. As a result, the instructions so executed instantiate the method set forth in the flowcharts and / or descriptions of the computer-implemented method (collectively, the "invention method") contained herein. These computer-readable program instructions are stored on various types of computer-readable storage media, such as cache 521 and other storage media described below. The program instructions and associated data are accessed by processor set 510 to control and direct the execution of the invention method. In computing environment 500, at least some of the instructions for performing the invention method may be stored in block 200 in persistent storage 513.

[0101] Communications fabric 511 is the signal-conducting pathway that allows the various components of computer 501 to communicate with one another. Typically, this fabric is made up of switches and conductive pathways, such as those that make up buses, bridges, physical input / output ports, and the like. Other types of signal communication pathways may also be used, such as fiber optic communication pathways and / or wireless communication pathways.

[0102] Volatile memory 512 may be any type of volatile memory now known or later developed. Examples include dynamic type random access memory (RAM) or static type RAM. Typically, volatile memory is characterized by random access, although this is not required unless expressly indicated. In computer 501, volatile memory 512 is located in a single package and is internal to computer 501, although alternatively or additionally, volatile memory may be distributed across multiple packages and / or located external to computer 501.

[0103] Persistent storage 513 is any form of non-volatile storage for a computer, now known or later developed. The term non-volatile storage means that stored data remains regardless of whether power is supplied to computer 501 and / or to persistent storage 513 directly. Persistent storage 513 may be read-only memory (ROM), but typically at least a portion of persistent storage allows data to be written, data to be erased, and data to be rewritten. Some well-known forms of persistent storage include magnetic disks and solid-state storage devices. Operating system 522 can take several forms, including various known proprietary operating systems or open-source Portable Operating System Interface-style operating systems that use a kernel. The code contained in block 200 typically includes at least a portion of the computer code involved in performing the methods of the present invention.

[0104] Peripheral device set 514 includes a set of peripheral devices of computer 501. Data communication connections between peripheral devices and other components of computer 501 may be implemented in various manners, such as Bluetooth connections, near field communication (NFC) connections, connections via cables (such as Universal Serial Bus (USB)-type cables), plug-in connections (e.g., Secure Digital (SD) cards), connections made over local area communication networks, and even connections made over wide area networks such as the Internet. In various embodiments, UI device set 523 may include multiple components, such as a display screen, speakers, microphones, wearable devices (such as goggles and smartwatches), keyboards, mice, printers, touchpads, game controllers, and haptic devices. Storage 524 may be external storage, such as an external hard drive, or insertable storage, such as an SD card. Storage 524 may be persistent and / or volatile. In some embodiments, storage 524 may take the form of a quantum computing storage device for storing data in the form of qubits. In embodiments where computer 101 needs to have large amounts of storage (e.g., computer 501 stores and manages a large database locally), this storage may be provided by a peripheral storage device designed to store very large amounts of data, such as a storage area network (SAN) shared by multiple geographically distributed computers. IoT sensor set 525 consists of sensors that can be used in Internet of Things applications. For example, one sensor may be a thermometer and another sensor may be a motion detector.

[0105] Network module 515 is a collection of computer software, hardware, and firmware that enables computer 101 to communicate with other computers over WAN 102. Network module 515 may include hardware such as a modem or Wi-Fi® signal transceiver, software for packetizing and / or depacketizing data for communication network transmission, and / or web browser software for communicating data over the Internet. In some embodiments, the network control and network forwarding functions of network module 515 execute on the same physical hardware device. In other embodiments (e.g., those utilizing software-defined networking (SDN)), the control and forwarding functions of network module 515 execute on physically separate devices, whereby the control function manages multiple different network hardware devices. Computer-readable program instructions for implementing the methods of the present invention can typically be downloaded to computer 501 from an external computer or external storage device via a network adapter card or network interface included in network module 515. WAN 502 is any wide area network (e.g., the Internet) capable of communicating computer data over non-local distances by any now known or later developed technology for communicating computer data. In some embodiments, a WAN may be replaced and / or supplemented by a local area network (LAN) designed to exchange data between devices located in a local area, such as a Wi-Fi network. WANs and / or LANs typically include copper transmission cables, optical fiber transmissions, wireless transmissions, and computer hardware such as routers, firewalls, switches, gateway computers, and edge servers.

[0106] End-user device (EUD) 503 is any computer system used and controlled by an end user (e.g., a customer of the enterprise operating computer 501) and may take any of the forms described above with respect to computer 501. EUD 503 typically receives useful and useful data from the operation of computer 501. For example, in the hypothetical case where computer 501 is designed to provide recommendations to the end user, the recommendations would typically be communicated from network module 515 of computer 501 over WAN 502 to EUD 503. In this manner, EUD 503 can display or otherwise present the recommendations to the end user. In some embodiments,

[0107] The EUD 503 can be a client device such as a thin client, a heavy client, a mainframe computer, a desktop computer, and the like.

[0108] Remote server 504 is any computer system that provides at least some data and / or functionality to computer 501. Remote server 504 may be controlled and used by the same entity that operates computer 501. Remote server 504 represents a machine that collects and stores useful and useful data for use by other computers, such as computer 501. For example, in the hypothetical case where computer 501 is designed and programmed to provide recommendations based on historical data, this historical data may be provided to computer 501 from remote database 530 of remote server 504.

[0109] A public cloud 505 is any computer system available for use by multiple entities that provides on-demand availability of computer system resources and / or other computer capabilities, particularly data storage (cloud storage) and computing capacity, without requiring direct, active management by users. Cloud computing typically leverages resource sharing to achieve consistency and economies of scale. Direct, active management of the computing resources of the public cloud 505 is performed by computer hardware and / or software in a cloud orchestration module 541. The computing resources provided by the public cloud 505 are typically implemented by virtual computing environments running on various computers comprising a host physical machine set 542, which is the entire set of physical computers included in and / or available to the public cloud 505. The virtual computing environments (VCEs) typically take the form of virtual machines in a virtual machine set 543 and / or containers in a container set 544. It is understood that these VCEs may be stored as images and may be transferred between various physical machine hosts either as images or after instantiation of the VCEs. Cloud orchestration module 541 manages the transfer and storage of images, deploys newly instantiated VCEs, and manages active instances of VCE deployments. Gateway 540 is a collection of computer software, hardware, and firmware that enables public cloud 505 to communicate over WAN 502.

[0110] Some further explanation of virtualized computing environments (VCEs) is now provided. A VCE can be stored as an "image." From this image, a new, active instance of the VCE can be instantiated. Two well-known types of VCEs are virtual machines and containers. A container is a VCE that uses operating system-level virtualization. This refers to a feature of an operating system in which the kernel allows the existence of multiple isolated user space instances called containers. These isolated user space instances typically behave as actual computers from the perspective of the programs running within them. A computer program running on a typical operating system can use all of the computer's resources, such as connected devices, files and folders, network shares, CPU power, and quantifiable hardware capabilities. However, a program running inside a container can only use the contents of the container and the devices assigned to the container; this feature is known as containerization.

[0111] Private cloud 506 is similar to public cloud 505, except that the computing resources are available only for use by a single enterprise. While private cloud 506 is illustrated as interacting with WAN 502, in other embodiments, a private cloud may be completely disconnected from the Internet and accessible only through a local / private network. A hybrid cloud is a composite of multiple clouds of different types (e.g., private, community, or public cloud types), often implemented by different vendors. Each of the multiple clouds remains a separate, isolated entity, but is joined together in a larger hybrid cloud architecture by standardized or proprietary technologies that enable orchestration, management, and / or data / application portability between the constituent clouds. In this embodiment, both public cloud 505 and private cloud 506 are part of a larger hybrid cloud.

[0112] References herein to "one embodiment" or "an embodiment" of the invention, as well as other variations thereof, mean that a particular feature, structure, characteristic, etc. described in connection with the embodiment is included in at least one embodiment of the invention. Thus, the appearances of the phrases "in one embodiment" or "in an embodiment," as well as any other variations thereof, appearing in various places throughout this specification are not necessarily all referring to the same embodiment.

[0113] It should be understood that the use of any of the following: " / ," "and / or," and "at least one of," is intended to encompass the selection of only the first listed alternative (A), or the selection of only the second listed alternative (B), or the selection of both alternatives (A and B), for example, in the case of "A / B," "A and / or B," and "at least one of A and B." As a further example, in the case of "A, B, and / or C" and "at least one of A, B, and C," such language is intended to encompass the selection of only the first listed alternative (A), or the selection of only the second listed alternative (B), or the selection of only the third listed alternative (C), or the selection of only the first and second listed alternatives (A and B), or the selection of only the first and third listed alternatives (A and C), or the selection of only the second and third listed alternatives (B and C), or the selection of all three alternatives (A, B, and C). This can be extended for as many items as are listed, as would be readily apparent to one skilled in the art.

[0114] While a preferred embodiment of intelligent hibernation of a computing device having a failed battery has been described (intended as illustrative and not limiting), it is noted that modifications and variations will occur to those skilled in the art in light of the above teachings. It is therefore to be understood that changes will be made within the specific embodiments disclosed that are within the scope of the invention and outlined by the appended claims. Having thus described aspects of the invention with the detail and specificity required by the patent laws, it is in the appended claims that what is claimed and desired to be protected by Letters Patent is set forth.

Claims

1. 1. A computer-implemented method for selecting a task for hibernation while on battery power that includes a computing device, the method comprising: recording user preferences for tasks that have no penalty for hibernation and sleep; assigning a threshold value for battery power at which a task is selected for at least one of hibernation and sleep, wherein assigning the threshold value for battery power includes considering a current utilization of hardware resources by a user and a battery health state for each battery segment; determining a penalty score for a task based on the user preferences for tasks that do not have a penalty and task performance including at least one of frequency of use, memory usage, task dependency characteristics, and task memory hierarchy, where penalty performance is a value that includes both the user preferences and the task performance; and controlling tasks to enter at least one of a hibernation mode and a sleep mode as dictated by their penalty performance during said threshold for battery power; 1. A computer-implemented method comprising:

2. The computer-implemented method of claim 1 , wherein a task has a default score and the penalty score is added to the default score for a total penalty score for the task.

3. 3. The computer-implemented method of claim 1, wherein during a first threshold, a first set of tasks having a first penalty score are put into a hibernation state and a second set of tasks having a second penalty score are put into a sleep state, the first penalty score being higher than the second penalty score.

4. The computer-implemented method of claim 3 , wherein the second set of tasks that were put to sleep during the first threshold are put to hibernation during a second threshold.

5. The computer-implemented method of claim 4 , wherein during the second threshold, at least one of the processes that does not have a penalty is put to sleep.

6. The computer-implemented method of claim 5 , wherein a task that is asleep during the second threshold is put into a hibernation state during a third threshold.

7. 10. A computer-implemented method according to any preceding claim, wherein each of the thresholds is a time corresponding to a reduction in battery power.

8. 1. A system for selecting a task for hibernation while on battery power that includes a computing device: a hardware processor; and When executed by the hardware processor, the hardware processor: A procedure for recording user preferences for tasks that do not have penalties for hibernation and sleep; assigning a threshold value for battery power at which a task for at least one of hibernation and sleep is selected, wherein the assigning the threshold value for battery power includes considering a current utilization of hardware resources by a user and a battery health state for each battery segment; determining a penalty score for a task based on the user preferences for tasks that do not have a penalty and task performance including at least one of frequency of use, memory usage, task dependency characteristics, and task memory hierarchy, where penalty performance is a value that includes both the user preferences and the task performance; and controlling tasks to enter at least one of a hibernation mode and a sleep mode as dictated by their penalty performance during the threshold for battery power; A memory for storing a computer program product for causing A system comprising:

9. 9. A system for selecting tasks for hibernation during battery operation including a computing device as described in claim 8, wherein a task has a default score and the penalty score is added to the default score for a total penalty score for the task.

10. 10. A system for selecting tasks for hibernation during battery operation including a computing device as described in claim 9, wherein during a first threshold, a first set of tasks having a first penalty score are put into a hibernation state and a second set of tasks having a second penalty score are put into a sleep state, wherein the first penalty score is higher than the second penalty score.

11. 11. The system for selecting tasks for hibernation during battery operation including a computing device as described in claim 10, wherein the second set of tasks put to sleep during the first threshold are put to hibernation during a second threshold.

12. 12. The system for selecting tasks for hibernation during battery operation including a computing device as recited in claim 11, wherein at least one task with no penalty is put to sleep during the second threshold.

13. 13. The system for selecting tasks for hibernation during battery operation including a computing device as described in claim 12, wherein tasks that are asleep during the second threshold are placed into a hibernation state during a third threshold.

14. 14. A system for selecting tasks for hibernation during battery operation, comprising a computing device as recited in claim 8, wherein each of the thresholds is a time corresponding to a reduction in battery power.

15. 1. A computer program product for selecting a task for hibernation while on battery power, comprising a computing device including a computer-readable storage medium having computer-readable program code embodied thereon, the program instructions being executable by a processor to cause the processor to: using said processor to record user preferences for tasks that do not have penalties for hibernation and sleep; using the processor to assign a threshold value for battery power at which a task is selected for at least one of hibernation and sleep, wherein the assigning the threshold value for battery power takes into account a current utilization of hardware resources by a user and a battery health state for each battery segment; using the processor to determine a penalty score for a task based on the user preferences for tasks that do not have a penalty and task performance including at least one of frequency of use, memory usage, task dependency characteristics, and task memory hierarchy, where penalty performance is a value that includes both the user preferences and the task performance; and using said processor to control tasks to enter at least one of a hibernation mode and a sleep mode as dictated by their penalty performance during said threshold for battery power; A computer program product that causes

16. 16. The computer program product of claim 15, wherein a task has a default score, and the penalty score is added to the default score for a total penalty score for the task.

17. 17. The computer program product of claim 16, wherein during a first threshold, a first set of tasks having a first penalty score are put into a hibernation state and a second set of tasks having a second penalty score are put into a sleep state, wherein the first penalty score is higher than the second penalty score.

18. 20. The computer program product of claim 17, wherein a second set of the tasks that were put to sleep during the first threshold are put to hibernation during a second threshold.

19. 20. The computer program product of claim 18, wherein during the second threshold, at least one of the devices that does not have a penalty is put to sleep.

20. A computer program comprising program code means adapted to perform the method according to any of claims 1 to 7 when said program is run on a computer.