[go: up one dir, main page]

WO2010084479A2 - A system and method for enhancing performance of computer applications - Google Patents

A system and method for enhancing performance of computer applications Download PDF

Info

Publication number
WO2010084479A2
WO2010084479A2 PCT/IB2010/050341 IB2010050341W WO2010084479A2 WO 2010084479 A2 WO2010084479 A2 WO 2010084479A2 IB 2010050341 W IB2010050341 W IB 2010050341W WO 2010084479 A2 WO2010084479 A2 WO 2010084479A2
Authority
WO
WIPO (PCT)
Prior art keywords
user
applications
resources
computer
higher priority
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.)
Ceased
Application number
PCT/IB2010/050341
Other languages
French (fr)
Other versions
WO2010084479A3 (en
Inventor
Zak Dechovich
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
REIMAGE Ltd
Original Assignee
REIMAGE Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by REIMAGE Ltd filed Critical REIMAGE Ltd
Publication of WO2010084479A2 publication Critical patent/WO2010084479A2/en
Publication of WO2010084479A3 publication Critical patent/WO2010084479A3/en
Anticipated expiration legal-status Critical
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/508Monitor

Definitions

  • the present invention generally relates to the field of 'Computerized Performance Enhancement'. More specifically, the present invention relates to a system and method for enhancing performance of computer applications.
  • PC Users notice slowdown visually when they see and feel a slowly opening application, poor reactions from the operating system and the like. Users judge, feel and see slowdown mostly visually, the majority of users do not care how their PC's services, drivers and the like run, many do not even know about their existence.
  • PC slowdown mainly occurs due to too many applications and services running at the same time, competing for the same resources. Even when this is understood by the user, many times the user does not understand that by simply removing a network consuming P2P file sharing application, for example, will improve his Internet browsing speed.
  • Another example includes users of the Google Desktop indexing for most of their documents which may cripple systems with a slow hard drive.
  • the present invention is a method, application and system for enhancing the performance of computer applications (FIG.l).
  • a monitoring application or module may monitor user activity or behavior relative to running application while operating a computer.
  • a decision application or module may determine or estimate which running applications are of highest importance or relevance to the user at a given point in time or during a given period of time.
  • the monitoring module may determine a given application's importance based on the user's interaction with screens or other interface elements of the given application, or based on the user's interaction with screens/interface-elements of other applications functionally associated with the given application (FIG.2).
  • a user's active interaction with screens/interface-elements of an application may indicate importance/relevance of the application to the user.
  • Applications designated as important/relevant to a user may be apportioned additional resources on top of those already apportioned to them.
  • a reallocation application or module may reallocate resources in order to add resources to an application designated as important/relevant, and may reduce apportionment of resources to other application or processes not associated with the designated application (FIG. 3). Reallocation of resources may be performed using any method, technique or application known today or to be devised in the future. Resources which may be reallocated to an application may include CPU access, operating memory size, disk drive access, network access or any other computer resource which may or may not impact the performance of a given application.
  • applications designated as important/relevant and requiring access to a network may be apportioned additional access to network hardware or priority relating to accessing network hardware.
  • other application (not designated as important/relevant) may have their network access reduced or restricted completely while the important/relevant application uses the network related resources.
  • These non-designated applications may experience slow down, delay, reset execution cycles, etc.
  • Figure 1 presents an exemplary system for enhancing the performance of computer applications, in accordance with some embodiments of the present invention
  • FIG. 2 is a flowchart of the steps executed by an exemplary monitoring module and a decision module, in accordance with some embodiments of the present invention
  • FIG. 3 is a flowchart of the steps executed by an exemplary reallocation module, in accordance with some embodiments of the present invention.
  • Figure 4 is a screenshot of an exemplary result of an enhancement process, showing an exemplary tracked process (user is working on) and a corresponding exemplary task manager status in Windows environment, in accordance with some embodiments of the present invention
  • Figure 5 is a screenshot of an exemplary enhancement scenario, in accordance with some embodiments of the present invention.
  • Figure 6 is a flowchart of the steps executed as part of an exemplary pre-defined enhancement decisions process that may be configured manually or may be pre-defined per certain activities/situations/scenarios, in accordance with some embodiments of the present invention
  • Figure 7 is an exemplary system configuration of a system for enhancing the performance of computer applications in which some of the enhancement decisions are pre-defined by the user, in accordance with some embodiments of the present invention
  • Figure 8 is a flowchart of an exemplary process of tracking the mouse movements that may indicate where the user is looking and where the user is going to click next, in accordance with some embodiments of the present invention
  • Figure 9A is a drawing of an exemplary screenshot showing the proximity of the mouse curser to screen/interface elements, in accordance with some embodiments of the present invention
  • Figure 9B is a drawing of an exemplary screenshot showing the direction of movement of the mouse curser towards screen/interface elements, in accordance with some embodiments of the present invention
  • Figure 10 is a drawing of network configuration wherein shared network resources (e.g. bandwidth) may be allocated, enhanced or slowed-down in accordance with importance/priority/relevance of the applications which are being executed or which are predicted to be executed on the different computers, in accordance with some embodiments of the present invention;
  • shared network resources e.g. bandwidth
  • Figure His a flowchart of an exemplary pseudo code for enhancing user's activity by boosting the objects, processes, threads, windows, etc., in accordance with some embodiments of the present invention.
  • Figure 12 is a flowchart of an exemplary pseudo code for enhancing user's activity by enhancing objects and by slowing down access of processes needing the same objects, in accordance with some embodiments of the present invention.
  • Embodiments of the present invention may include apparatuses for performing the operations herein. Such apparatus may be specially constructed for the desired purposes, or it may comprise a general-purpose computer selectively activated or reconfigured by a computer program stored in the computer.
  • Such a computer program may be stored in a computer readable storage medium, such as, but is not limited to, any type of disk including floppy disks, optical disks, CD-ROMs, magnetic-optical disks, read-only memories (ROMs), random access memories (RAMs) electrically programmable read-only memories (EPROMs), electrically erasable and programmable read only memories (EEPROMs), magnetic or optical cards, or any other type of media suitable for storing electronic instructions, and capable of being coupled to a computer system bus.
  • a computer readable storage medium such as, but is not limited to, any type of disk including floppy disks, optical disks, CD-ROMs, magnetic-optical disks, read-only memories (ROMs), random access memories (RAMs) electrically programmable read-only memories (EPROMs), electrically erasable and programmable read only memories (EEPROMs), magnetic or optical cards, or any other type of media suitable for storing electronic instructions, and capable of being coupled to a computer system bus.
  • the present invention is a method, application and system for enhancing the performance of computer applications (FIG.l).
  • a monitoring application or module may monitor user activity or behavior relative to running application while operating a computer.
  • a decision application or module may determine or estimate which running applications are of highest importance or relevance to the user at a given point in time or during a given period of time.
  • the monitoring module may collect data, to be used by the decision module model in order to determine a given application's importance, based on the user's interaction with screens or other interface elements of the given application or based on the user's interaction with screens/interface-elements of other applications functionally associated with the given application (FIG.2).
  • a user's active interaction with screens/interface-elements of an application may indicate importance/relevance of the application to the user.
  • Applications designated as important/relevant to a user may be apportioned additional resources on top of those already apportioned to them.
  • a reallocation application or module may reallocate resources in order to add resources to an application designated as important/relevant, and may reduce apportionment of resources to other application or processes not associated with the designated application (FIG. 3). Reallocation of resources may be performed using any method, technique or application known today or to be devised in the future. Resources which may be reallocated to an application may include CPU access, operating memory size, disk drive access, network access or any other computer resource which may or may not impact the performance of a given application.
  • applications designated as important/relevant and requiring access to a network may be apportioned additional access to network hardware or priority relating to accessing network hardware.
  • other application (not designated as important/relevant) may have their network access reduced or restricted completely while the important/relevant application uses the network related resources.
  • These non-designated applications may experience slow down, delay, reset execution cycles, etc.
  • enhancement may not be needed at all times. For example, if a certain application is visible but barely consuming any resources, there is no motive for slowing it down. Furthermore, enhancement may happen immediately or after a certain threshold has been reached or crossed. For example, an enhancement may not take place as a result of reaching a lkb DNS requests rate or a lkb/sec file update rate, but rather after a 10kb or a 10kb/sec (respectively) threshold was reached.
  • a user's current actions may be determined by identification of visible objects (e.g. can be viewed with SPY++ tool in Visual Studio) that may thus be referred (e.g. by using Handles, HWND in Windows) and enumerated.
  • the owning process and thread of the visible one or more objects' Handles/HWNDs may be identified and the Handle/HWND or owning window may be tested, as to determine whether they are active (e.g. a button in a window).
  • Non active owning threads and/or processes may be marked as to be slowed down, whereas active ones may be marked as to be boosted (e.g. by receiving a higher priority).
  • a screenshot of an exemplary result of an enhancement process, showing an exemplary tracked process (user is working on) and a corresponding exemplary task manager status in Windows environment is shown in figure 4 (FIG. 4).
  • a user's upcoming actions may be predicted by locating the mouse curser's position on the screen (e.g. [X, Y] coordinates) and associating it with one or more visible objects' Handles/HWNDs. According to some embodiments of the present invention, this may be the top visible object's Handle/HWND.
  • their respective, owning processes and threads may be identified and marked for immediate or upcoming enhancement; prior markings may be overwritten by new ones when needed. The starting of a new process or initiation of any other action, for which the user is waiting, may then be recognized.
  • running processes may be enumerated. Accordingly, processes which are not yet ready (e.g. new, loading, starting) but may be shortly engaged by the user, may be marked for enhancement, prior markings may be overwritten by new ones when needed.
  • priorities of processes and threads may be reset in accordance with the aforementioned markings (e.g. using standard Windows API). Threads may also be reset differently within a process thus creating a newly prioritized and possibly differently resulting process.
  • enhancement may comprise two, possibly repeating or reoccurring, main steps/parts/functions.
  • a first step/part/function may consist substantially of understanding which applications or processes are to be enhanced.
  • a second step/part/function may consist substantially of reallocating or diverting computational resources to the applications and processes to be enhanced.
  • recognizing applications, processes and threads currently being used by the user; predicting applications, processes and threads about to be engaged by the user; identifying objects that interact with these applications, processes and threads; or any combination of these actions - may be used for re-prioritizing a computer's applications, processes and threads and/or re-allocating computational resources to them, in a manner that may enhance its user-experienced performance.
  • any applications supporting or servicing the abovementioned ones may also be tracked and/or manipulated.
  • the following exemplary enhancement scenario may take place (FIG 5):
  • the user is surfing the web (e.g. using Internet Explorer) he may have several tabs open; the active tab's thread is enhanced.
  • a downloading application e.g. e-Mule
  • a media player e.g. iTunes
  • MP3 file for the mobile media player (e.g. iPod).
  • flash banners on the on the active tab's website are receiving less Graphic Processing Unit and resources.
  • identification may further include prioritizing of said computational actions or action sets and/or determination of their level of enhancement or diminution.
  • pre-defined enhancement decisions may be configured manually or may be pre-defined per certain activities/situations/scenarios (FIG. 6). For example: a user may want to focus (i.e. to enhance) on a specific on-line game requiring fast internet and disk access while having indexing services running in the background.
  • An exemplary system configuration in which some of the enhancement decisions are pre-defined by the user is shown in figure
  • dynamic enhancement may be initiated or changed based on what the user expects at a specific time.
  • Dynamic enhancement may use various methods and/or inquiries for determining the user expected and/or preferred results, these may include, but are in no way limited to the following examples: a. Tracking the working application - application that the user is currently working with. b. Tracking the visible application - application visible to the user. It may also be any application that the user senses in any other way, like sound. c. Tracking the background applications, those that are running but the user is neither seeing nor using. d. Tracking the background applications that are serving 3 r party applications, such as, Domain Name System (DNS) service, providing access to internet explorer. e.
  • DNS Domain Name System
  • Tracking the working thread inside the application no need to boost all internet explorer tabs while the user is seeing only one.
  • Tracking the working window objects - may be a window, a part of a window, toolbar, tab, flash object, etc.
  • Tracking applications that service working applications for example: Remote Procedure Call (RPC)
  • RPC Remote Procedure Call
  • IE Internet Explorer
  • Tracking needs for resources based on application(s)-peak for example, Internet Explorer (IE) needs to load a page now. This may be done by recognizing that an application is in a certain consumption level, or a certain change or speed of change of a specific resource, triggering re- prioritization. For example, IE consumes more than 30kb/sec. of bandwidth - page is loading - allocate more resources to IE - page download is complete (e.g. IE consumes less than 5kb/sec.) - stop preferred allocation to IE - application needs to load - allocate accordingly.
  • enhancing the performance of applications, processes, threads and/or other computational actions currently being used/engaged by the user may comprise understanding and identifying the computational actions or action sets (e.g. applications, processes) for which performance is to be enhanced and enhancing their performance by allocating them preferred allocation of computational resources, at the expense of those used by some or all of the complementary, 'not to be enhanced' computational actions or action sets.
  • computational actions or action sets e.g. applications, processes
  • an application's own activity may cause it to be designated as important/relevant. Certain activities may be defined as important/relevant activities and applications adapted to engage in such activity may be designated as important when they are actually engaged so engaged. For example, if an application such as a web browser is loading a web-page, and the activity of loading a web-page is defined as an important/relevant activity, resources of application not engaged in activities defined as important/relevant activity may have their resources reallocated to the web-browser.
  • an enhancement may happen substantially immediately, or after a certain threshold is reached or passed.
  • an enhancement may not make sense for every lkb DNS request, a lkb/sec file update, or for every application that the mouse courser has 'touched'.
  • one or more thresholds may be set before an enhancement is actually executed.
  • an enhancement may not be executed under certain conditions. For example, if a certain application is visible, but is consuming no, or substantially modest, resources, there is no need for the enhancement to be executed.
  • Predictive enhancement may prepare the system for what a user's next/following action(s), for which any combination of some or all of the following methods may be used.
  • predictive enhancement decisions may be based on what the user is about to do or intends to do and enhancing certain resource allocations in preparation for these user actions.
  • Various methods and/or inquiries may be used for predicting user intentions/future-actions, these may include, but are in no way limited to, the following examples: a. Tracking the mouse movements may indicate in many cases where the user is looking and where the user is going to click next. At this point, it may be helpful to prepare the application, thread, object, etc. to react immediately to this user's mouse behavior.
  • This type of prediction may, for example, trigger the operation of a given application icon towards which the user's mouse is advancing and thus may lessen the time span between the instant when the user clicks and the instant when said applications window has fully responded.
  • Tracking of various other pointing devices may be used in a substantially similar way.
  • tracking the mouse movements may indicate where the user is looking and where the user is going to click next (FIG. 8). At this point, it may be helpful to prepare the application, thread, object, etc. to react immediately to the user's actions. Tracking the cursor caret may be used in a substantially similar way as the mouse curser movements when keyboard is used. Furthermore, any other pointing device, known today or to be devised in the future, may be substantially similarly used. Predictive enhancement may substantially affect the user's experience by initiating the uploading of what the user wants (i.e. soon to command/request) prior to the temporal instant of the actual interfacing.
  • predictive enhancement may track applications recently started by the user. Such application(s) may not be visible yet (as opposed to the mouse movement tracking where applications are already open). As the majority of the users consider a PC to be fast in accordance with the speed of a newly engaged application showing, satisfying this condition with a substantially immediate application opening, even if other functionalities of the application where delayed as a result, may create an impressive improvement of user experience. Certain newly started applications may not be enhanced. Applications started by other visible applications, for example, may be handled as those started by the user and may thus be enhanced, whereas background applications may start other background applications which may not necessarily need an enhancement, as their enhancement may not be acknowledgeable by the user.
  • the monitoring module may predicatively estimate or guess a given application's importance to the user (i.e. the user is about to use the application) based on mouse cursor location.
  • the application may monitor and take into consideration proximity (FIG. 9A) and velocity (direction and speed) (FIG. 9B) of the mouse cursor relative to a screen or other interface elements of the given application when predicting whether the user is about to interact with the given application, thereby making the given application an important/relevant application.
  • mouse cursor proximity to a screen/interface-element of a given application may indicate importance/relevance of the application to the user.
  • a decision on how to rearrange the computer resources' access and allocation may be reached.
  • main enhancement levels may be selected from: Full, Partial, None, and
  • the enhancement may be applied by slow-down to any object in the computer, operating system, subsystem or application. It is important to notice that throughout this document the concepts and terms related to the 'enhancement' and/or
  • 'slow-down' may be named and/or referred to by use of different names, for contextual and ease of understanding related reasons.
  • Partial - application is visible / noticeable, but the user is not working with it.
  • a YouTube stream running in the background may be visible on the screen while the user is working on another application, or it may be in the background, but the user can hear it. With this scenario, the YouTube stream is what the user is looking for, but it is not where his attention is focused.
  • Another example is a web page containing many visual flash commercials that drain CPU power. Most users will be working on another application leaving this window visible.
  • Graphics may be slowed down, or refresh rate dropped partially because the user is still expecting to get a reasonable graphics experience.
  • None - some applications may be untouched, for example, due to stability issues.
  • Slowdown - enhancement of other applications is achieved by sacrificing these particular applications, or parts of their execution time, and actively slowing them down by limiting their access to various system resources.
  • enhancement may be implemented in the context of changing processes' priorities and allowing more execution time for one or more prioritized processes. Further focus may be given to user expectations and thus quality-of-service may be enhanced by actively slowing down to various levels all or a part of the non needed contenders contending on a needed resource by the enhanced application(s).
  • the slow-down may sacrifice certain resource elements (e.g. cause a degradation of quality, a dropping of IO messages) in order to allocate resources for applications of higher importance/priority.
  • resource elements e.g. cause a degradation of quality, a dropping of IO messages
  • different needs may determine whether all, one or which of the resources will be enhanced and whether all, one or which of the resources will be slowed-down.
  • slow-down may, optionally, only be applied when a specific resource, or group of resources, is/are needed or when a certain threshold is reached or passed.
  • the following resources are monitored. Monitoring and slowing down may be executed using standard and known methods of hooking, detours, priority change, etc.
  • the monitored and slowed down resources may include any computer resource, such as, but in no way limited to, the following exemplary resources: a. Network - per operating-system interface to network communication protocol (e.g. winsock) session, per process, per thread, per context, etc. b. Disk access, by file, by disk, by connected platform Universal Serial Bus (USB), Integrated Drive Electronics (IDE), Small Computer System Interface (SCSI), etc. c. Graphics adapter, rendering engines, etc.
  • USB Universal Serial Bus
  • IDE Integrated Drive Electronics
  • SCSI Small Computer System Interface
  • the monitoring module may identify peaks in resource access and may thus keep to a minimum the level of slowdown performed.
  • One example is slowing down the internet access of all internet consuming applications so that a web page will load immediately. Once it is loaded the system is no longer slowed down.
  • slowdown may be done by using techniques for pausing processes, threads, injecting sleeps, returning pending status on resources, dropping graphics refresh and the like.
  • two or more systems for enhancement of computer applications may be installed and operated on two or more computers of a distributed computer network.
  • Network resources e.g. bandwidth
  • shared between the networked computers may be allocated, enhanced or slowed-down in accordance with importance/priority/relevance of the applications which are being executed or which are predicted to be executed on the different computers (FIG 10).
  • bandwidth bandwidth
  • a possible exemplary pseudo code for enhancing user's activity by boosting the objects, processes, threads, windows, etc. that the user is working with, or going to work with is demonstrated on Windows operating systems (FIG 11).
  • b. [101] Enumerate the visible objects, usually referred by HWND in windows and can be viewed with SPY++ tool in Visual Studio.
  • c. Get the owning process and thread of the visible objects HWND.
  • d. Test if HWND is active or if the owning windows are active, for example, button in a window. e.
  • HWND. k. [114] Mark the owning thread and process to be boosted, overwrite previous marking if needed. 1. [120] Recognize what the user is waiting for, in this case, this is a starting of a new process m. [121] Enumerate all running processes n. [122] Is the process starting, new, loading, newly loaded or any other state of not yet ready? o. [123] if YES, mark process to be boosted, overwrite previous marking if needed, p. [130] Set process and threads priorities as marked above using standard windows API. Threads may be set differently inside a process and not be the same as the process.
  • the proposed exemplary algorithm is demonstrated on Windows operating systems (FIG 12).
  • a process in the system is accessing a resource or performing an action on the resource.
  • the resource can be anything in the system, cpu, memory, disk, network, graphics, etc.
  • b. is this process marked for boost by one of the decision making algorithms? c.
  • the process is marked to be boosted. Does it required this specific resource above a certain level? d.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • User Interface Of Digital Computer (AREA)
  • Stored Programmes (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

Disclosed is a system, and method for enhancing performance of computer applications. The system may enable for the enhanced performance of computer applications by identification of a user's pre-defined, currently used and/or soon-to-be used applications and enhancing these one or more applications' performance by various means such as reprioritization and computer resource reallocation.

Description

A SYSTEM AND METHOD FOR ENHANCING PERFORMANCE OF
COMPUTER APPLICATIONS
INVENTOR:
Zak Dechovich
FIELD OF THE INVENTION
[001] The present invention generally relates to the field of 'Computerized Performance Enhancement'. More specifically, the present invention relates to a system and method for enhancing performance of computer applications.
BACKGROUND
[002] Most PCs tend to work relatively fast at the beginning of their 'life'. However, as time passes, installation of various applications, each of which may require and launch various processes, causes a computer's operation to become sluggish.
[003] PC Users notice slowdown visually when they see and feel a slowly opening application, poor reactions from the operating system and the like. Users judge, feel and see slowdown mostly visually, the majority of users do not care how their PC's services, drivers and the like run, many do not even know about their existence.
[004] PC slowdown mainly occurs due to too many applications and services running at the same time, competing for the same resources. Even when this is understood by the user, many times the user does not understand that by simply removing a network consuming P2P file sharing application, for example, will improve his Internet browsing speed. Another example includes users of the Google Desktop indexing for most of their documents which may cripple systems with a slow hard drive.
[005] Still, PC users want to keep all of their applications and installations running and then they judge PC performance visually by seeing what appears, and how quickly it appears.
[006] Accordingly, there is a need in the field of computing for a system and method that will identify the applications, processes and/or threads pre-selected, being used and/or about to be used by the user, allocating them resources and thereby speeding them up and/or giving them an increased priority over other applications, processes and threads. Available computer resources may thus be focused at these applications, processes and/or threads pre-selected, being used and/or about to be used by the user.
SUMMARY OF THE INVENTION
[007] The present invention is a method, application and system for enhancing the performance of computer applications (FIG.l). According to some embodiments of the present invention, a monitoring application or module may monitor user activity or behavior relative to running application while operating a computer. A decision application or module may determine or estimate which running applications are of highest importance or relevance to the user at a given point in time or during a given period of time. The monitoring module may determine a given application's importance based on the user's interaction with screens or other interface elements of the given application, or based on the user's interaction with screens/interface-elements of other applications functionally associated with the given application (FIG.2). Generally, a user's active interaction with screens/interface-elements of an application may indicate importance/relevance of the application to the user.
[008] Applications designated as important/relevant to a user according to any embodiments of the present invention may be apportioned additional resources on top of those already apportioned to them. A reallocation application or module may reallocate resources in order to add resources to an application designated as important/relevant, and may reduce apportionment of resources to other application or processes not associated with the designated application (FIG. 3). Reallocation of resources may be performed using any method, technique or application known today or to be devised in the future. Resources which may be reallocated to an application may include CPU access, operating memory size, disk drive access, network access or any other computer resource which may or may not impact the performance of a given application. For example, applications designated as important/relevant and requiring access to a network may be apportioned additional access to network hardware or priority relating to accessing network hardware. According to further embodiments of the present invention, other application (not designated as important/relevant) may have their network access reduced or restricted completely while the important/relevant application uses the network related resources. These non-designated applications may experience slow down, delay, reset execution cycles, etc. BRIEF DESCRIPTION OF THE DRAWINGS
[009] The subject matter regarded as the invention is particularly pointed out and distinctly claimed in the concluding portion of the specification. The invention, however, both as to organization and method of operation, together with objects, features, and advantages thereof, may best be understood by reference to the following detailed description when read with the accompanying drawings in which:
Figure 1 presents an exemplary system for enhancing the performance of computer applications, in accordance with some embodiments of the present invention;
Figure 2 is a flowchart of the steps executed by an exemplary monitoring module and a decision module, in accordance with some embodiments of the present invention;
Figure 3 is a flowchart of the steps executed by an exemplary reallocation module, in accordance with some embodiments of the present invention;
Figure 4 is a screenshot of an exemplary result of an enhancement process, showing an exemplary tracked process (user is working on) and a corresponding exemplary task manager status in Windows environment, in accordance with some embodiments of the present invention;
Figure 5 is a screenshot of an exemplary enhancement scenario, in accordance with some embodiments of the present invention;
Figure 6 is a flowchart of the steps executed as part of an exemplary pre-defined enhancement decisions process that may be configured manually or may be pre-defined per certain activities/situations/scenarios, in accordance with some embodiments of the present invention;
Figure 7 is an exemplary system configuration of a system for enhancing the performance of computer applications in which some of the enhancement decisions are pre-defined by the user, in accordance with some embodiments of the present invention;
Figure 8 is a flowchart of an exemplary process of tracking the mouse movements that may indicate where the user is looking and where the user is going to click next, in accordance with some embodiments of the present invention;
Figure 9A is a drawing of an exemplary screenshot showing the proximity of the mouse curser to screen/interface elements, in accordance with some embodiments of the present invention; Figure 9B is a drawing of an exemplary screenshot showing the direction of movement of the mouse curser towards screen/interface elements, in accordance with some embodiments of the present invention;
Figure 10 is a drawing of network configuration wherein shared network resources (e.g. bandwidth) may be allocated, enhanced or slowed-down in accordance with importance/priority/relevance of the applications which are being executed or which are predicted to be executed on the different computers, in accordance with some embodiments of the present invention;
Figure His a flowchart of an exemplary pseudo code for enhancing user's activity by boosting the objects, processes, threads, windows, etc., in accordance with some embodiments of the present invention; and
Figure 12 is a flowchart of an exemplary pseudo code for enhancing user's activity by enhancing objects and by slowing down access of processes needing the same objects, in accordance with some embodiments of the present invention.
DESCRIPTION OF THE INVENTION
[0010] In the following description, numerous specific details are set forth in order to provide a thorough understanding of the invention. However, it will be understood by those skilled in the art that the present invention may be practiced without these specific details. In other instances, well-known methods, procedures, components and circuits have not been described in detail so as not to obscure the present invention. [0011] Unless specifically stated otherwise, as apparent from the following discussions, it is appreciated that throughout the specification discussions utilizing terms such as "processing", "computing", "calculating", "determining", or the like, refer to the action and/or processes of a computer or computing system, or similar electronic computing device, that manipulate and/or transform data represented as physical, such as electronic, quantities within the computing system's registers and/or memories into other data similarly represented as physical quantities within the computing system's memories, registers or other such information storage, transmission or display devices. [0012] Embodiments of the present invention may include apparatuses for performing the operations herein. Such apparatus may be specially constructed for the desired purposes, or it may comprise a general-purpose computer selectively activated or reconfigured by a computer program stored in the computer. Such a computer program may be stored in a computer readable storage medium, such as, but is not limited to, any type of disk including floppy disks, optical disks, CD-ROMs, magnetic-optical disks, read-only memories (ROMs), random access memories (RAMs) electrically programmable read-only memories (EPROMs), electrically erasable and programmable read only memories (EEPROMs), magnetic or optical cards, or any other type of media suitable for storing electronic instructions, and capable of being coupled to a computer system bus.
[0013] The processes and displays presented herein are not inherently related to any particular computer or other apparatus. Various general-purpose systems may be used with programs in accordance with the teachings herein, or it may prove convenient to construct a more specialized apparatus to perform the desired method. The desired structure for a variety of these systems will appear from the description below. In addition, embodiments of the present invention are not described with reference to any particular programming language. It will be appreciated that a variety of programming languages may be used to implement the teachings of the inventions as described herein.
[0014] The present invention is a method, application and system for enhancing the performance of computer applications (FIG.l). According to some embodiments of the present invention, a monitoring application or module may monitor user activity or behavior relative to running application while operating a computer. A decision application or module may determine or estimate which running applications are of highest importance or relevance to the user at a given point in time or during a given period of time. The monitoring module may collect data, to be used by the decision module model in order to determine a given application's importance, based on the user's interaction with screens or other interface elements of the given application or based on the user's interaction with screens/interface-elements of other applications functionally associated with the given application (FIG.2). Generally, a user's active interaction with screens/interface-elements of an application may indicate importance/relevance of the application to the user.
[0015] Applications designated as important/relevant to a user according to any embodiments of the present invention may be apportioned additional resources on top of those already apportioned to them. A reallocation application or module may reallocate resources in order to add resources to an application designated as important/relevant, and may reduce apportionment of resources to other application or processes not associated with the designated application (FIG. 3). Reallocation of resources may be performed using any method, technique or application known today or to be devised in the future. Resources which may be reallocated to an application may include CPU access, operating memory size, disk drive access, network access or any other computer resource which may or may not impact the performance of a given application. For example, applications designated as important/relevant and requiring access to a network may be apportioned additional access to network hardware or priority relating to accessing network hardware. According to further embodiments of the present invention, other application (not designated as important/relevant) may have their network access reduced or restricted completely while the important/relevant application uses the network related resources. These non-designated applications may experience slow down, delay, reset execution cycles, etc.
[0016] According to some embodiments of the present invention, enhancement may not be needed at all times. For example, if a certain application is visible but barely consuming any resources, there is no motive for slowing it down. Furthermore, enhancement may happen immediately or after a certain threshold has been reached or crossed. For example, an enhancement may not take place as a result of reaching a lkb DNS requests rate or a lkb/sec file update rate, but rather after a 10kb or a 10kb/sec (respectively) threshold was reached.
[0017] According to some embodiments of the present invention, a user's current actions may be determined by identification of visible objects (e.g. can be viewed with SPY++ tool in Visual Studio) that may thus be referred (e.g. by using Handles, HWND in Windows) and enumerated. The owning process and thread of the visible one or more objects' Handles/HWNDs may be identified and the Handle/HWND or owning window may be tested, as to determine whether they are active (e.g. a button in a window). Non active owning threads and/or processes may be marked as to be slowed down, whereas active ones may be marked as to be boosted (e.g. by receiving a higher priority). A screenshot of an exemplary result of an enhancement process, showing an exemplary tracked process (user is working on) and a corresponding exemplary task manager status in Windows environment is shown in figure 4 (FIG. 4).
[0018] According to some embodiments of the present invention, a user's upcoming actions may be predicted by locating the mouse curser's position on the screen (e.g. [X, Y] coordinates) and associating it with one or more visible objects' Handles/HWNDs. According to some embodiments of the present invention, this may be the top visible object's Handle/HWND. Upon determining the associated visible object's Handle/HWND, their respective, owning processes and threads may be identified and marked for immediate or upcoming enhancement; prior markings may be overwritten by new ones when needed. The starting of a new process or initiation of any other action, for which the user is waiting, may then be recognized.
[0019] According to some embodiments of the present invention, running processes may be enumerated. Accordingly, processes which are not yet ready (e.g. new, loading, starting) but may be shortly engaged by the user, may be marked for enhancement, prior markings may be overwritten by new ones when needed.
[0020] According to some embodiments of the present invention, priorities of processes and threads may be reset in accordance with the aforementioned markings (e.g. using standard Windows API). Threads may also be reset differently within a process thus creating a newly prioritized and possibly differently resulting process. [0021] According to some embodiments of the present invention, enhancement may comprise two, possibly repeating or reoccurring, main steps/parts/functions. A first step/part/function may consist substantially of understanding which applications or processes are to be enhanced. A second step/part/function may consist substantially of reallocating or diverting computational resources to the applications and processes to be enhanced.
[0022] According to some embodiments of the present invention, recognizing applications, processes and threads currently being used by the user; predicting applications, processes and threads about to be engaged by the user; identifying objects that interact with these applications, processes and threads; or any combination of these actions - may be used for re-prioritizing a computer's applications, processes and threads and/or re-allocating computational resources to them, in a manner that may enhance its user-experienced performance. Furthermore, any applications supporting or servicing the abovementioned ones may also be tracked and/or manipulated.
[0023] According to some embodiments of the present invention, the following exemplary enhancement scenario may take place (FIG 5): The user is surfing the web (e.g. using Internet Explorer) he may have several tabs open; the active tab's thread is enhanced. In the background, a downloading application (e.g. e-Mule) is downloading files; more bandwidth resources are given the browser (e.g. Internet Explorer) in favor of the background downloading application. Also in the background, and thus being allocated less/slower Hard Disk access, a media player (e.g. iTunes) is converting an MP3 file for the mobile media player (e.g. iPod). Additionally, flash banners on the on the active tab's website, are receiving less Graphic Processing Unit and resources. [0024] According to some embodiments of the present invention, three main types of identification or enhancement/diminution-triggering may be utilized: pre-defined, dynamic and predictive. Identification may further include prioritizing of said computational actions or action sets and/or determination of their level of enhancement or diminution.
[0025] According to some embodiments of the present invention, pre-defined enhancement decisions may be configured manually or may be pre-defined per certain activities/situations/scenarios (FIG. 6). For example: a user may want to focus (i.e. to enhance) on a specific on-line game requiring fast internet and disk access while having indexing services running in the background. An exemplary system configuration in which some of the enhancement decisions are pre-defined by the user is shown in figure
7 (FIG.7).
[0026] According to some embodiments of the present invention, dynamic enhancement may be initiated or changed based on what the user expects at a specific time. Dynamic enhancement may use various methods and/or inquiries for determining the user expected and/or preferred results, these may include, but are in no way limited to the following examples: a. Tracking the working application - application that the user is currently working with. b. Tracking the visible application - application visible to the user. It may also be any application that the user senses in any other way, like sound. c. Tracking the background applications, those that are running but the user is neither seeing nor using. d. Tracking the background applications that are serving 3r party applications, such as, Domain Name System (DNS) service, providing access to internet explorer. e. Track the working thread inside the application, no need to boost all internet explorer tabs while the user is seeing only one. f. Tracking the working window objects - may be a window, a part of a window, toolbar, tab, flash object, etc. g. Tracking applications that service working applications (for example: Remote Procedure Call (RPC)) h. Tracking needs for resources based on application(s)-peak, for example, Internet Explorer (IE) needs to load a page now. This may be done by recognizing that an application is in a certain consumption level, or a certain change or speed of change of a specific resource, triggering re- prioritization. For example, IE consumes more than 30kb/sec. of bandwidth - page is loading - allocate more resources to IE - page download is complete (e.g. IE consumes less than 5kb/sec.) - stop preferred allocation to IE - application needs to load - allocate accordingly.
[0027] According to some embodiments of the present invention, enhancing the performance of applications, processes, threads and/or other computational actions currently being used/engaged by the user, either directly or indirectly, may comprise understanding and identifying the computational actions or action sets (e.g. applications, processes) for which performance is to be enhanced and enhancing their performance by allocating them preferred allocation of computational resources, at the expense of those used by some or all of the complementary, 'not to be enhanced' computational actions or action sets.
[0028] According to some embodiments of the present invention, an application's own activity may cause it to be designated as important/relevant. Certain activities may be defined as important/relevant activities and applications adapted to engage in such activity may be designated as important when they are actually engaged so engaged. For example, if an application such as a web browser is loading a web-page, and the activity of loading a web-page is defined as an important/relevant activity, resources of application not engaged in activities defined as important/relevant activity may have their resources reallocated to the web-browser.
[0029] According to some embodiments of the present invention, an enhancement may happen substantially immediately, or after a certain threshold is reached or passed. For example, an enhancement may not make sense for every lkb DNS request, a lkb/sec file update, or for every application that the mouse courser has 'touched'. Accordingly, one or more thresholds may be set before an enhancement is actually executed. Furthermore, an enhancement may not be executed under certain conditions. For example, if a certain application is visible, but is consuming no, or substantially modest, resources, there is no need for the enhancement to be executed.
[0030] According to some embodiments of the present invention, Predictive enhancement may prepare the system for what a user's next/following action(s), for which any combination of some or all of the following methods may be used.
[0031] According to some embodiments of the present invention, predictive enhancement decisions may be based on what the user is about to do or intends to do and enhancing certain resource allocations in preparation for these user actions. Various methods and/or inquiries may be used for predicting user intentions/future-actions, these may include, but are in no way limited to, the following examples: a. Tracking the mouse movements may indicate in many cases where the user is looking and where the user is going to click next. At this point, it may be helpful to prepare the application, thread, object, etc. to react immediately to this user's mouse behavior. This type of prediction may, for example, trigger the operation of a given application icon towards which the user's mouse is advancing and thus may lessen the time span between the instant when the user clicks and the instant when said applications window has fully responded. Tracking of various other pointing devices may be used in a substantially similar way. b. Tracking of applications lately started by the user. When there is a new application that is in the process of opening but may not yet be visible, it may be enhanced. Since performance, as experienced by the user, is greatly determined by the expectation that a given application for example, will show immediately, satisfying this immediate opening need, may create an impressive enhancement in the level of the performance as perceived by the user.
[0032] According to some embodiments of the present invention, tracking the mouse movements may indicate where the user is looking and where the user is going to click next (FIG. 8). At this point, it may be helpful to prepare the application, thread, object, etc. to react immediately to the user's actions. Tracking the cursor caret may be used in a substantially similar way as the mouse curser movements when keyboard is used. Furthermore, any other pointing device, known today or to be devised in the future, may be substantially similarly used. Predictive enhancement may substantially affect the user's experience by initiating the uploading of what the user wants (i.e. soon to command/request) prior to the temporal instant of the actual interfacing. [0033] According to some embodiments of the present invention, predictive enhancement may track applications recently started by the user. Such application(s) may not be visible yet (as opposed to the mouse movement tracking where applications are already open). As the majority of the users consider a PC to be fast in accordance with the speed of a newly engaged application showing, satisfying this condition with a substantially immediate application opening, even if other functionalities of the application where delayed as a result, may create an impressive improvement of user experience. Certain newly started applications may not be enhanced. Applications started by other visible applications, for example, may be handled as those started by the user and may thus be enhanced, whereas background applications may start other background applications which may not necessarily need an enhancement, as their enhancement may not be acknowledgeable by the user.
[0034] According to some embodiments of the present invention, the monitoring module may predicatively estimate or guess a given application's importance to the user (i.e. the user is about to use the application) based on mouse cursor location. The application may monitor and take into consideration proximity (FIG. 9A) and velocity (direction and speed) (FIG. 9B) of the mouse cursor relative to a screen or other interface elements of the given application when predicting whether the user is about to interact with the given application, thereby making the given application an important/relevant application. Generally, mouse cursor proximity to a screen/interface-element of a given application, or rapid movement of a mouse cursor in the direction of a screen/interface-element of a given application may indicate importance/relevance of the application to the user. [0035] According to some embodiments of the present invention, once the system knows and/or understands what is generally more important/urgent to the user, what the user is doing and/or about to do, what the user sees, what the user is expecting to happen, or any combination of one or more of the above that may suggest which applications are to be enhanced, a decision on how to rearrange the computer resources' access and allocation may be reached.
[0036] According to some embodiments of the present invention, the following, exemplary, main enhancement levels may be selected from: Full, Partial, None, and
Slowdown. The enhancement may be applied by slow-down to any object in the computer, operating system, subsystem or application. It is important to notice that throughout this document the concepts and terms related to the 'enhancement' and/or
'slow-down' may be named and/or referred to by use of different names, for contextual and ease of understanding related reasons.
[0037] According to some embodiments of the present invention, some or all of the following, exemplary, enhancement levels may be utilized: a. Full - An application or part of an application, such as a tab in Firefox, is marked for boosting and will not be marked for slowdown. b. Partial - application is visible / noticeable, but the user is not working with it. For example, a YouTube stream running in the background may be visible on the screen while the user is working on another application, or it may be in the background, but the user can hear it. With this scenario, the YouTube stream is what the user is looking for, but it is not where his attention is focused. Another example is a web page containing many visual flash commercials that drain CPU power. Most users will be working on another application leaving this window visible. Graphics may be slowed down, or refresh rate dropped partially because the user is still expecting to get a reasonable graphics experience. c. None - some applications may be untouched, for example, due to stability issues. d. Slowdown - enhancement of other applications is achieved by sacrificing these particular applications, or parts of their execution time, and actively slowing them down by limiting their access to various system resources.
[0038] The following, is an example of the enhancement levels of several applications or application types, based on their concurrent state or mode/phase of execution, in accordance with the aforementioned enhancement levels:
Figure imgf000017_0001
[0039] According to some embodiments of the present invention, enhancement may be implemented in the context of changing processes' priorities and allowing more execution time for one or more prioritized processes. Further focus may be given to user expectations and thus quality-of-service may be enhanced by actively slowing down to various levels all or a part of the non needed contenders contending on a needed resource by the enhanced application(s).
[0040] According to some embodiments of the present invention, the slow-down may sacrifice certain resource elements (e.g. cause a degradation of quality, a dropping of IO messages) in order to allocate resources for applications of higher importance/priority. According to some embodiments of the present invention, different needs may determine whether all, one or which of the resources will be enhanced and whether all, one or which of the resources will be slowed-down. Furthermore, slow-down may, optionally, only be applied when a specific resource, or group of resources, is/are needed or when a certain threshold is reached or passed.
[0041] According to some embodiments of the present invention, in order to enhance, or actively slow them down, the following resources are monitored. Monitoring and slowing down may be executed using standard and known methods of hooking, detours, priority change, etc. The monitored and slowed down resources may include any computer resource, such as, but in no way limited to, the following exemplary resources: a. Network - per operating-system interface to network communication protocol (e.g. winsock) session, per process, per thread, per context, etc. b. Disk access, by file, by disk, by connected platform Universal Serial Bus (USB), Integrated Drive Electronics (IDE), Small Computer System Interface (SCSI), etc. c. Graphics adapter, rendering engines, etc. by lowering quality, reducing Frames Per Second (FPS), etc. d. Sound adapter e. Central Processing Unit (CPU) access, usually windows process and thread priority f. Page file mechanism g. Memory allocation mechanism, paged vs. non-paged, h. Registry i. Inner process communication - slow down the Remote Procedure Call (RPC), etc.
[0042] According to some embodiments of the present invention, the monitoring module may identify peaks in resource access and may thus keep to a minimum the level of slowdown performed. One example is slowing down the internet access of all internet consuming applications so that a web page will load immediately. Once it is loaded the system is no longer slowed down.
[0043] According to some embodiments of the present invention, slowdown may be done by using techniques for pausing processes, threads, injecting sleeps, returning pending status on resources, dropping graphics refresh and the like.
[0044] According to some embodiments of the present invention, two or more systems for enhancement of computer applications, that may communicate between each other through the network, may be installed and operated on two or more computers of a distributed computer network. Network resources (e.g. bandwidth) shared between the networked computers may be allocated, enhanced or slowed-down in accordance with importance/priority/relevance of the applications which are being executed or which are predicted to be executed on the different computers (FIG 10).
[0045] For example, a typical family - where the son is using his computer to download movies from the Internet. This action may consume most of the Internet connectivity for the entire household. If the Mother starts to use her computer, she might have a frustrating internet experience because her son has consumed the majority of the bandwidth. In this example, the son's computer may slow-down/lower its use of the shared resource (bandwidth) for a short period of time, allowing the mother to quickly upload and see her web page. Once the web page has been uploaded, bandwidth may be re-diverted to the movies download.
[0046] According to some embodiments of the present invention, a possible exemplary pseudo code for enhancing user's activity by boosting the objects, processes, threads, windows, etc. that the user is working with, or going to work with. The proposed exemplary algorithm is demonstrated on Windows operating systems (FIG 11). a. [100] Recognize what the user is currently doing - b. [101] Enumerate the visible objects, usually referred by HWND in windows and can be viewed with SPY++ tool in Visual Studio. c. [102] Get the owning process and thread of the visible objects HWND. d. [103] Test if HWND is active or if the owning windows are active, for example, button in a window. e. [104] if NOT active, mark the owning thread and process to be slowed down. f. [105] if active mark the owning thread and process to be boosted. g. [110] Predict what the user is going to do - h. [Ill] Find mouse location on screen, namely, [X, Y] coordinates i. [112] Associate position mouse to a visible objects HWND, usually the top visible objects HWND, more than one window may be at the same place, j. [113] Get the owning process and thread of the associated visible objects
HWND. k. [114] Mark the owning thread and process to be boosted, overwrite previous marking if needed. 1. [120] Recognize what the user is waiting for, in this case, this is a starting of a new process m. [121] Enumerate all running processes n. [122] Is the process starting, new, loading, newly loaded or any other state of not yet ready? o. [123] if YES, mark process to be boosted, overwrite previous marking if needed, p. [130] Set process and threads priorities as marked above using standard windows API. Threads may be set differently inside a process and not be the same as the process.
[0047] According to some embodiments of the present invention, a possible exemplary pseudo code for enhancing user's activity by boosting objects and by slowing down access of other processes needing the same objects. The proposed exemplary algorithm is demonstrated on Windows operating systems (FIG 12). a. [201] a process in the system is accessing a resource or performing an action on the resource. The resource can be anything in the system, cpu, memory, disk, network, graphics, etc. b. [202] is this process marked for boost by one of the decision making algorithms? c. [203] yes, the process is marked to be boosted. Does it required this specific resource above a certain level? d. [204] no, the process does not require help with that specific resource, no need to slowdown anything, continue to [208] e. [205] yes, the process required help with that specific resource, mark that resource for slowdown by other processes requesting it, continue to [208] f. [206] is this resource marked for slow down by a boosted process? If no, continue to [208] g. [207] yes, the resource access should be delayed. Delay, for example with sleep(l). Another example is Drop a request to reduce graphics refresh rate, etc. h. [208] relay the request to the resource [0048] While certain features of the invention have been illustrated and described herein, many modifications, substitutions, changes, and equivalents will now occur to those skilled in the art. It is, therefore, to be understood that the appended claims are intended to cover all such modifications and changes as fall within the true spirit of the invention.

Claims

1. A system for enhancing performance of computer applications comprising: a monitoring module adapted to monitor a user's activity relative to two or more applications; a decision module functionally associated with the monitoring module adapted to determine which of said applications are of higher priority to the user based on said monitored user activity; and a reallocation module functionally associated with the decision module adapted to reallocate computer resources wherein: less resources are allocated to one or more of said applications, determined to be of lower priority to the user; and additional resources are allocated to one or more of said applications, determined to be of higher priority to the user.
2. The system according to claim 1 wherein: the reallocation module is further adapted to select the one or more reallocated computer resources from a group comprising: CPU access, operating memory size, disk drive access and network access.
3. The system according to claim 1 wherein: the decision module is further adapted to determine which of the applications' sub processes and threads are of higher priority to the user.
4. The system according to claim 1 wherein: the decision module is further configured to determine which of the applications are of higher priority to the user based on pre-defined scenarios.
5. The system according to claim 1 wherein: the decision module is further configured to determine which of the applications are of higher priority to the user based on an estimation of the user's preferred results.
6. The system according to claim 1 wherein: the decision module is further configured to determine which of the applications are of higher priority to the user based on an estimation of the user's following one or more actions.
7. The system according to claim 6 wherein: the estimation of the user's following one or more actions is at least partially based on the proximity of a pointing device to an interface element.
8. The system according to claim 6 wherein: the estimation of the user's following one or more actions is at least partially based on the direction of movement of a pointing device towards an interface element.
9. The system according to claim 1 wherein: the level of additional or less resources reallocated to a given application is selected from a group comprising slowdown, none, partial and full.
10. A system for enhancing performance of computer applications on a computer network comprising: two or more monitoring modules adapted to monitor substantially each computer's user's activity relative to one or more applications using shared network resources; two or more networked decision modules, each of which is functionally associated with a respective monitoring module, adapted to determine which of said applications are of higher priority to substantially all network users, based on said monitored users' activities; and two or more reallocation modules, each of which is functionally associated with a respective decision module, adapted to reallocate shared network resources wherein: less shared network resources are allocated to one or more of said applications, determined to be of lower priority to substantially all network users; and additional resources are allocated to one or more of said applications, determined to be of higher priority to substantially all network users.
11. A method for enhancing performance of computer applications comprising: monitoring a user's activity relative to two or more applications; determining which of said applications are of higher priority to the user based on said monitored user activity; reallocating less computer resources to one or more of said applications, determined to be of lower priority to the user; and reallocating additional computer resources to one or more of said applications, determined to be of higher priority to the user.
12. The method according to claim 11 wherein: reallocating further comprises selecting the one or more computer resources from a group comprising: CPU access, operating memory size, disk drive access and network access.
13. The method according to claim 11 wherein: determining further comprises determining which of the applications' sub processes and threads are of higher priority to the user.
14. The method according to claim 11 wherein: determining further comprises determining which of the applications are of higher priority to the user based on pre-defined scenarios.
15. The method according to claim 11 wherein: determining further comprises determining which of the applications are of higher priority to the user is at least partially based on estimating of the user's preferred results.
16. The method according to claim 11 wherein: determining further comprises determining which of the applications are of higher priority to the user is at least partially based on estimating of the user's following one or more actions.
17. The method according to claim 16 wherein: estimating of the user's following one or more actions is at least partially based on the proximity of a pointing device to an interface element.
18. The method according to claim 16 wherein: estimating of the user's following one or more actions is at least partially based on the direction of movement of a pointing device towards an interface element.
19. The method according to claim 11 wherein: reallocating level of additional or less resources to a given application is selected from a group comprising slowdown, none, partial and full.
20. A method for enhancing the performance of computer applications on a computer network comprising: monitoring substantially each computer's user's activity relative to one or more applications using shared network resources; determining which of said applications are of higher priority to substantially all network users, based on said monitoring of each computer's user's activity; and reallocating at least part of shared network resources wherein: less shared network resources are allocated to one or more of said applications, determined to be of lower priority to substantially all network users; and additional resources are allocated to one or more of said applications, determined to be of higher priority to substantially all network users.
PCT/IB2010/050341 2009-01-26 2010-01-26 A system and method for enhancing performance of computer applications Ceased WO2010084479A2 (en)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US14716209P 2009-01-26 2009-01-26
US61/147,162 2009-01-26
US15707309P 2009-03-03 2009-03-03
US61/157,073 2009-03-03

Publications (2)

Publication Number Publication Date
WO2010084479A2 true WO2010084479A2 (en) 2010-07-29
WO2010084479A3 WO2010084479A3 (en) 2011-05-26

Family

ID=42356272

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/IB2010/050341 Ceased WO2010084479A2 (en) 2009-01-26 2010-01-26 A system and method for enhancing performance of computer applications

Country Status (1)

Country Link
WO (1) WO2010084479A2 (en)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150106502A1 (en) * 2013-10-15 2015-04-16 Rawllin International Inc. Dynamic assignment of connection priorities for applications operating on a client device
US10007555B1 (en) * 2014-12-05 2018-06-26 Google Llc Dynamic resource management
EP3477473A1 (en) * 2017-10-31 2019-05-01 Guangdong Oppo Mobile Telecommunications Corp., Ltd Method for resource allocation and terminal device
EP3483731A1 (en) * 2017-11-09 2019-05-15 Guangdong Oppo Mobile Telecommunications Corp., Ltd Method for resource allocation and related products
US11087262B2 (en) * 2013-07-18 2021-08-10 Level 3 Communications, Llc Systems and methods for generating customer solutions

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6340977B1 (en) * 1999-05-07 2002-01-22 Philip Lui System and method for dynamic assistance in software applications using behavior and host application models
US6876988B2 (en) * 2000-10-23 2005-04-05 Netuitive, Inc. Enhanced computer performance forecasting system
US7437728B2 (en) * 2003-06-12 2008-10-14 Microsoft Corporation System and method for CPU bandwidth allocation
US20060190462A1 (en) * 2005-02-18 2006-08-24 Amit Bhri Global satellite databases and security systems

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11087262B2 (en) * 2013-07-18 2021-08-10 Level 3 Communications, Llc Systems and methods for generating customer solutions
US20150106502A1 (en) * 2013-10-15 2015-04-16 Rawllin International Inc. Dynamic assignment of connection priorities for applications operating on a client device
US9350624B2 (en) * 2013-10-15 2016-05-24 Rawllin International Inc. Dynamic assignment of connection priorities for applications operating on a client device
US10007555B1 (en) * 2014-12-05 2018-06-26 Google Llc Dynamic resource management
EP3477473A1 (en) * 2017-10-31 2019-05-01 Guangdong Oppo Mobile Telecommunications Corp., Ltd Method for resource allocation and terminal device
US11099901B2 (en) 2017-10-31 2021-08-24 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Method for resource allocation and terminal device
EP3483731A1 (en) * 2017-11-09 2019-05-15 Guangdong Oppo Mobile Telecommunications Corp., Ltd Method for resource allocation and related products
US10936371B2 (en) 2017-11-09 2021-03-02 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Method for resource allocation and related products

Also Published As

Publication number Publication date
WO2010084479A3 (en) 2011-05-26

Similar Documents

Publication Publication Date Title
US11163599B2 (en) Determination of performance state of a user-selected parent component in a hierarchical computing environment based on performance states of related child components
JP6553203B2 (en) Idle time software garbage collection
KR102150774B1 (en) Method and apparatus for loading a terminal application
US10007555B1 (en) Dynamic resource management
US8112755B2 (en) Reducing latencies in computing systems using probabilistic and/or decision-theoretic reasoning under scarce memory resources
US10114663B2 (en) Displaying state information for computing nodes in a hierarchical computing environment
US9690685B2 (en) Performance management based on resource consumption
US10067790B2 (en) Method and apparatus for displaying information to a user and the user optimizing running of the processes
EP3508974B1 (en) Method and terminal for allocating system resource to application
EP2224351A1 (en) method for use in association with a multi-tab interpretation and rendering function
JP2017514209A (en) Dynamic resource management for multi-process applications
US9772861B2 (en) Accessing operating system elements via a tag cloud
KR101904955B1 (en) A method and an apparatus allocating for computing resources in the touch based mobile device
WO2014107987A1 (en) File presenting method and apparatus for a smart terminal
WO2010084479A2 (en) A system and method for enhancing performance of computer applications
CN110347546B (en) Dynamic adjustment method, device, medium and electronic equipment for monitoring task
CN112182454A (en) Webpage optimization method and device, storage medium and electronic equipment
CN115357834A (en) Page jump method, device, equipment and storage medium
CN114661200A (en) Page content display method, device, equipment and readable storage medium
CN111258676B (en) Module preloading method, device, equipment and readable storage medium
US20170212790A1 (en) Computer processing system with resource optimization and associated methods
US8892693B2 (en) Enabling fragment-based mobile device application streaming
Bae et al. EIMOS: enhancing interactivity in mobile operating systems
CN111800487A (en) Data updating method, device, equipment and storage medium
CN118051313A (en) Process scheduling method and device, computer readable storage medium and terminal

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 10733299

Country of ref document: EP

Kind code of ref document: A2

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 10733299

Country of ref document: EP

Kind code of ref document: A2