U.S. patent application number 12/751494 was filed with the patent office on 2010-10-07 for computer applications scheduler.
This patent application is currently assigned to SOLUTO LTD. Invention is credited to Shai DUVDEVANI, Tomer DVIR, Ishay GREEN, Omri HAIM, Liran TAM.
Application Number | 20100257533 12/751494 |
Document ID | / |
Family ID | 42827053 |
Filed Date | 2010-10-07 |
United States Patent
Application |
20100257533 |
Kind Code |
A1 |
DVIR; Tomer ; et
al. |
October 7, 2010 |
COMPUTER APPLICATIONS SCHEDULER
Abstract
A data processing system, comprising: an updating database of
processes relating to applications and using computing resources,
at least some of the processes relating to user activities. The
database comprises a classification of the processes. The data
processing system further comprises a profiler arranged to generate
a user application use profile by analyzing the user activities in
respect to the applications, and to assign each process a priority
relating to the analysis of the user activity, user preferences and
the user application use profile; and a scheduler arranged to
schedule the processes in respect to the assigned priorities such
as to enhance processes with a high priority, and such as to adapt
an allocation of the computing resources to the user application
use profile.
Inventors: |
DVIR; Tomer; (Netanya,
IL) ; GREEN; Ishay; (Tel-aviv, IL) ; TAM;
Liran; (Beit-Arif, IL) ; HAIM; Omri;
(Tel-Aviv, IL) ; DUVDEVANI; Shai; (Holon,
IL) |
Correspondence
Address: |
The Law Office of Michael E. Kondoudis
888 16th Street, N.W., Suite 800
Washington
DC
20006
US
|
Assignee: |
SOLUTO LTD
Tel Aviv
IL
|
Family ID: |
42827053 |
Appl. No.: |
12/751494 |
Filed: |
March 31, 2010 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
61213453 |
Jun 10, 2009 |
|
|
|
61202750 |
Apr 1, 2009 |
|
|
|
Current U.S.
Class: |
718/103 ;
718/104 |
Current CPC
Class: |
G06F 11/079 20130101;
G06F 11/0793 20130101; G06F 11/3438 20130101; G06F 11/0715
20130101 |
Class at
Publication: |
718/103 ;
718/104 |
International
Class: |
G06F 9/46 20060101
G06F009/46 |
Claims
1. A data processing system, comprising: an updating database of a
plurality of processes relating to a plurality of applications and
using a plurality of computing resources, at least some of the
processes relating to at least one user activity, the database
comprising a classification of the processes; a profiler arranged
to generate a user application use profile by analyzing the user
activities in respect to the applications, and to assign each
process a priority relating to the analysis of the user activity,
user preferences and the user application use profile; and a
scheduler arranged to schedule the processes in respect to the
assigned priorities such as to enhance processes with a high
priority, and such as to adapt an allocation of the computing
resources to the user application use profile.
2. The data processing system of claim 1, wherein the database
comprises an inventory of all processes relating to the computer
resources.
3. The data processing system of claim 1, wherein the database
comprises entries relating to each process, the entries comprising:
a list of related binary executable files and resources use
patterns in different scenarios.
4. The data processing system of claim 1, wherein the database
comprises a managing module arranged to monitor and analyze the
processes' use of the computing resources.
5. The data processing system of claim 1, wherein the scheduler
comprises a Smart Scheduling Component (SSC) implementing a
scheduling algorithm arranged to create and control the processing
schedule such as to maximize the use of computer resources by
analyzing data relating to the computing resources and process
requirements.
6. The data processing system of claim 1, wherein the scheduler
comprises a Scheduler Controller Gateway (SCG) arranged to monitor
and control communication between an operating system running the
processes with the computing resources and the applications.
7. The data processing system of claim 1, wherein the database, the
profiler and the scheduler are embedded within an operating system
running the processes with the computing resources.
8. The data processing system of claim 1, wherein at least one of:
the database; the profiler; and the scheduler, are associated with
an operating system running the processes with the computing
resources via a plug-in or an add-on.
9. The data processing system of claim 1, further comprising a
scheduling application programming interface (API) arranged to
allow incorporation of processes of an external software in the
plurality of processes.
10. A computer implemented method comprising: classifying a
plurality of processes relating to a plurality of applications and
using a plurality of computing resources, wherein at least some of
the processes relate to a user activity, and wherein the
classification is carried our in respect to the user activity;
generating a user application use profile by analyzing the user
activity in respect to the applications; assigning each process a
priority relating to the analysis of the user activity, user
preferences and the user application use profile; and scheduling
the processes in respect to the assigned priorities such as to
enhance processes with a high priority, wherein the scheduling is
carried out such as to adapt an allocation of the computing
resources to the user application use profile, and wherein at least
one of: the classifying; the generating; the assigning; and the
scheduling, is performed by at least one computer.
11. The computer implemented method of claim 10, wherein the
plurality of processes comprises all processes relating to the
computer resources.
12. The computer implemented method of claim 10, further comprising
monitoring and analyzing the processes' use of the computing
resources.
13. The computer implemented method of claim 10, further comprising
maximizing computer resources use by analyzing data relating to the
computing resources and process requirements.
14. The computer implemented method of claim 10, further comprising
monitoring and controlling communication between an operating
system running the processes with the computing resources and the
applications.
15. The computer implemented method of claim 10, further comprising
incorporating processes of external software in the plurality of
processes.
16. The computer implemented method of claim 10, wherein the method
is implemented within an existing operating system (OS) having an
OS scheduler, wherein the method interacts with the OS scheduler
such that scheduling of the OS scheduler is executed at least
partially in accordance with the method.
Description
CROSS REFERENCE TO RELATED APPLICATIONS
[0001] This application claims the benefit of U.S. Provisional
Patent Application 61/202,750 filed on Apr. 1, 2009 and U.S.
Provisional Patent Application 61/213,453 filed on Jun. 10, 2009,
which are incorporated herein by reference.
BACKGROUND
[0002] 1. Technical Field
[0003] The present invention relates to the field of computing
devices, and more particularly, to enhancing the efficacy of such
devices by scheduling the computer applications associated with
such devices.
[0004] 2. Discussion of Related Art
[0005] The majority of existing computer operating systems use a
priority-driven scheduler. The scheduling is mostly based on a
simple, predefined priority setting within the application itself,
and ad-hoc monitoring of real-time process behavior. Thus the
priority with which a process or a thread will be processed in the
computer is detached in time and context from the actual user need,
computer processing (and other resources, including storage
reading/writing, network communication) capabilities, knowledge
regarding the process itself, the interrelationship between
processes, and more. In real-time, these priority settings only
arbitrarily relate to the other concurrent processes, often leading
to user frustration in his computer usage experience.
[0006] While the present scheduling procedure is very limited and
largely one dimensional, applications differ greatly on various
traits, such as resource requirements over time, mode of use by the
user, multiple-process relationship and others. Furthermore,
critical factors in the computer's purpose and functionality, for
example user requirements and expectations, do not play a part in
the scheduling process.
BRIEF SUMMARY
[0007] Embodiments of the present invention provide a data
processing system, comprising: an updating database of a plurality
of processes relating to a plurality of applications and using a
plurality of computing resources, at least some of the processes
relating to at least one user activity, the database comprising a
classification of the processes; a profiler arranged to generate a
user application use profile by analyzing the user activities in
respect to the applications, and to assign each process a priority
relating to the analysis of the user activity, user preferences and
the user application use profile; and a scheduler arranged to
schedule the processes in respect to the assigned priorities such
as to enhance processes with a high priority, and such as to adapt
an allocation of the computing resources to the user application
use profile.
[0008] Embodiments of the present invention provide a computer
implemented method comprising: classifying a plurality of processes
relating to a plurality of applications and using a plurality of
computing resources, wherein at least some of the processes relate
to a user activity, and wherein the classification is carried our
in respect to the user activity; generating a user application use
profile by analyzing the user activity in respect to the processes;
assigning each process a priority relating to the analysis of the
user activity, user preferences, user typical usage hours, and the
user application use profile; and scheduling the processes in
respect to the assigned priorities such as to enhance processes
with a high priority, wherein the scheduling is carried out such as
to adapt an allocation of the computing resources to the user
application use profile, and wherein at least one of: the
classifying; the generating; the assigning; and the scheduling, is
performed by at least one computer.
[0009] These, additional, and/or other aspects and/or advantages of
the present invention are: set forth in the detailed description
which follows; possibly inferable from the detailed description;
and/or learnable by practice of the present invention.
BRIEF DESCRIPTION OF THE DRAWINGS
[0010] The present invention will be more readily understood from
the detailed description of embodiments thereof made in conjunction
with the accompanying drawings of which:
[0011] FIG. 1 is a high level schematic block diagram of a data
processing system, according to some embodiments of the invention;
and
[0012] FIG. 2 is a high level flowchart illustrating a computer
implemented method according to some embodiments of the
invention.
DETAILED DESCRIPTION
[0013] Before explaining at least one embodiment of the invention
in detail, it is to be understood that the invention is not limited
in its application to the details of construction and the
arrangement of the components set forth in the following
description or illustrated in the drawings. The invention is
applicable to other embodiments or of being practiced or carried
out in various ways. Also, it is to be understood that the
phraseology and terminology employed herein is for the purpose of
description and should not be regarded as limiting.
[0014] For a better understanding of the invention, the usages of
the following terms in the present disclosure are defined in a
non-limiting manner:
[0015] The term "computer" as used herein in this application, is
defined as a programmable machine that receives input, stores and
manipulates data, and provides output in a useful format. A
computer comprises at least a processor, a storage and an
input/output unit. In particular, in this application, the term
"computer" is understood to include any computing or communication
device (e.g., mobile phones).
[0016] The term "application" as used herein in this application,
is defined as computer software designed to help the user to
perform a singular or multiple related specific tasks. Typical
examples are word processors, spreadsheets, media players and
database applications.
[0017] The term "process" as used herein in this application, is
defined as an instance of an application that is being executed by
a computer. The process comprises program code and current
activity. Depending on the operating system (OS), a process may be
made up of multiple threads of execution that execute instructions
concurrently.
[0018] Whereas an application is a passive collection of
instructions, a process is the actual execution of those
instructions. Several processes may be associated with the same
application; for example, opening up several instances of the same
program often means more than one process is being executed.
[0019] The term "operating system" as used herein in this
application, is defined as an interface between hardware and user,
which is responsible for the management and coordination of
activities and the sharing of the resources of a computer, that
acts as a host for computing applications run on the machine. One
of the purposes of an operating system is to handle the resource
allocation and access protection of the hardware. This relieves the
application programmers from having to manage these details.
Operating systems offer a number of services to application
programs and users. Applications access these services through
application programming interfaces (APIs) or system calls. By
invoking these interfaces, the application can request a service
from the operating system, pass parameters, and receive the results
of the operation. In the current application, the term operating
system is extended to further comprise run-time environments, being
collections of software services enhancing the interaction with the
operating system, such as virtual machines, interfaces and program
libraries.
[0020] The invention relates to processes 80 relating to user
activities 95 of users 90, and to the processing of applications 82
on computing resources 84, e.g., within an operating system (OS).
Current (prior art) typical underlying operation mode of OS
scheduling resources distribution per application may comprise the
preset priority of the application and ad hoc real-time process
behavior determine the scheduling priority, without taking into
account actual user requirements and priorities, as well as
interrelationship of processes. The scheduler does not analyze nor
allocate the processing resources according to a wider view of
processing analysis, user behavior, existing process knowledge or
any other source.
[0021] FIG. 1 is a high level schematic block diagram of a data
processing system 100, according to some embodiments of the
invention. Data processing system 100 comprises an updating
database 140 of a plurality of processes 180 (corresponding to
processes 80) relating to a plurality of applications 182
(corresponding to applications 82) and using a plurality of
computing resources 184 (corresponding to computing resources 84),
at least some of processes 180 relating to at least one user
activity 195 (corresponding to user activities 95). Database 140
further comprises a classification 170 of processes 180. Computing
resources 84 comprise processing resources, memory, memory access,
communication resources, etc.
[0022] Database 140 may embody an inventory ("Catalog") (based on a
local/remote database or another repository) compiling information
of every object run or processed by the computer ("Catalog Item"),
for example software applications, hardware devices, online
services, multimedia codecs, web applications, drivers, plug-ins,
and more, creating a common basis for data analysis within the
computer over time and between different computers. The Catalog
enables to attribute specific partial processes to an object, and
analyze process behavior in the context of the full catalog item.
The aggregated knowledge may be contributed to a central repository
for future use by the local computer and other computers utilizing
that repository. Examples of the type of information collected for
each catalog item may include: a list of related binary executable
files, its typical use of resources in different scenarios, its
typical method of usage, operational costs when the catalog item
resides on the computer, etc.
[0023] Database 140 may comprise a managing module 145 arranged to
monitor and analyze the relevant real-time and non real-time data
regarding process' requirements, processing resources availability
and user's priorities, and constantly shape the processing
schedule. Managing module 145 may further track the computer and
user activity providing real-time and non real-time data regarding
process' requirements, processing resources availability and user's
priorities.
[0024] Managing module 145 may further classify processes 80 in
respect to the analyzed user activity 95, and update classification
170 in database 140 accordingly.
[0025] Managing module 145 may embody a real-time Computer
Processes Tracking Mechanism (CPTM) having means of tracking
ongoing computer activity and ongoing user activity (using
designated probes, such as a file system driver, user interaction,
network activity, etc.) and providing the relevant data for the
analysis process.
[0026] Data processing system 100 further comprises a profiler 110
arranged to generate a user application use profile by analyzing
user activities 195 in respect to processes 180, and to assign each
process 80 a priority relating to the analysis of user activity
(either real time or long term) 195, user preferences and the user
application use profile, user typical usage hours, etc.
[0027] Data processing system 100 further comprises a scheduler 120
arranged to schedule processes 80 in respect to the assigned
priorities such as to enhance processes 80 with a high priority,
and such as to adapt an allocation of computing resources 84 to the
user application use profile.
[0028] Scheduler 120 may embody Smart Scheduling Component (SSC)
including a scheduling algorithm and may receive and analyze the
data regarding real-time inputs (such as resources' real-time
status; user real-time preferences; process' current resource
needs; etc.) and non-real-time inputs (such as typical resource
requirements; typical usage method; etc.) per application/process,
and create and control the processing schedule accordingly,
effectively producing the user's wants in real-time. The analysis
of this knowledgebase enables the SSC to create a resource-specific
schedule, allocating specific computing resources such as CPU; i/o;
RAM; Network; etc. The SSC may be implemented as part of the
operating system scheduler, or as an external module by means of a
Scheduler Controller Gateway (SCG).
[0029] Scheduler 120 may further embody a Scheduler Controller
Gateway (SCG) that monitors and controls the communication between
the OS and the various active applications demanding processing
resources. It serves to enable the SSC, when external to the OS
built-in scheduler, to externally control and improve the OS
scheduler's prioritization process. External Control of the
Scheduler may be achieved, for example, through controls provided
by the operating system scheduler itself; or through the
implementation of several drivers between the applications and the
resources, prioritizing/delaying resource requests (for
example--file access driver, network access driver, CPU
virtualization etc).
[0030] Scheduler 120 may comprise a User & Resource Aware
Scheduler (URAS) including the SSC, the CPTM and the Catalog, and
may be implemented within the OS scheduler or as a separate module.
Implementing URAS within the OS scheduler enables the OS Scheduler
to monitor and analyze the relevant real-time and non real-time
data regarding process' requirements, processing resources
availability and user's priorities, and constantly shape the
processing schedule. Implementing URAS as an add-on to the OS
scheduler the SCG is made up of individual units acting as
regulators unique for each resource, as well as a central unit
aggregating and controlling these regulators. By means of the SCG
which monitors and controls the communication between the OS and
the applications, the SSC constantly uses the regulators to control
the resource allocation to different processes and if the OS
scheduler supports it--dictates the smart priority list and
additional scheduling information to the OS Scheduler.
[0031] Advantageously, Scheduler 120 prioritizes different
applications with different resource needs--for example one
application requires high network, another requires high CPU.
Scheduler 120 can prioritize both.
[0032] Data processing system 100 may further comprise a scheduling
API (application programming interface) 130 designed to allow
3.sup.rd party software to improve their scheduling by delegating
the internal application scheduling control to a centralized
scheduling controller. This element enables the processing of each
application's/process's current needs in the broader scope of all
running applications, processes and threads' requirements, thereby
also enabling resource-specific and/or
per-functionality-application-internal scheduling.
[0033] Scheduling API 130 may enable, when scheduler 120 is outside
the OS, to delegate of the application internal scheduling to the
interactive priority setting at the application level based on a
broad perspective--a central understanding of all running
processes' current requirements. Based on the Catalog, and probes,
the CPTM tracks the computer and user activity and integrating the
API data, provides real-time and non real-time data regarding
process' requirements, processing resources availability and user's
priorities. By means of the SCG which monitors and controls the
communication between the OS and the applications, the SSC
constantly dictates the smart priority list to the OS Scheduler in
real-time.
[0034] The concept can work in a similar way when the scheduling
components are implemented within the OS scheduler to enhance
existing OS schedulers.
[0035] By one embodiment of the system, the SSC is implemented
within the OS scheduler, along with the Catalog and the CPTM. Based
on the Catalog information, (which can be derived from a central
repository accumulating Catalog Item data from each computer in the
system, or added & researched locally), the CPTM is continually
tracking and analyzing usage data regarding each active Catalog
Item. Such data may be computer resource (e.g. CPU, RAM. Storage
I/O, Network, etc.) usage; typical user interaction with that
particular item; correlating usage of items; and more. These data
serve to deduce users' real-time preferences and the computer
processing resources applied to these preferences. Another CPTM
probe or set of probes may aggregate the typical usage method,
resource requirements and background operation needs of each
application. The SSC analyzes both the real-time data (for example:
user and usage related real-time data) and the non-real-time data
(for example: application typical usage method data) and creates a
schedule based on the user preferences and the availability of each
of the specifically required various computer processing resources
(e.g. CPU, RAM. Storage I/O, Network, etc.). This embodiment
displays an intelligent learning system constantly analyzing user
and application requirements and their interaction, thereby
creating continuously 8 improving intelligent scheduling. This
scheduling may be based on real-time user needs, as well as
long-term aggregated knowledge of typical application usage by
users and typical application usage of resources. In conclusion,
the method and system outlined above enable scheduling of computer
application processing tailored to the user's preferences. This is
brought about through constant tracking of the computer usage,
aggregated data regarding typical usage characteristics of a
specific application, and a comprehensive analysis of computer
processing resources' availability (including, e.g., the time of
day, day of week, workday VS non-work, daylight saving time, etc).
Together, these mechanisms enable efficient computer usage adapting
itself to the specific user in real-time. While the invention has
been described with respect to a limited number of embodiments,
these should not be construed as limitations on the scope of the
invention, but rather as exemplifications of some of the preferred
embodiments. Those skilled in the art will envision other possible
variations, modifications, and applications that are also within
the scope of the invention. Accordingly, the scope of the invention
should not be limited by what has thus far been described, but by
the appended claims and their legal equivalents.
[0036] In embodiments, data processing system 100 may comprise a
processing module comprising profiler 110, scheduler 120 and
scheduler API 130, that is arranged to schedule processes 80, user
activities 95, applications 82 and computing resources 84. The
processing module and database 140 may be embodied within the
operating system or as external modules communicating
therewith.
[0037] Scheduler 120 maybe be associated with the operating system
as a plug-in, as an add-on, or be built-in in the operating system.
Scheduler 120 is arranged to provide the user with a high quality
of service, higher than that of the operating system in itself.
[0038] FIG. 2 is a high level flowchart illustrating a computer
implemented method according to some embodiments of the invention.
The computer implemented method may be implemented in any computer,
mobile phone or any computing device. The computer implemented
method comprises the following stages: classifying a plurality of
processes relating to a plurality of applications and using a
plurality of computing resources, wherein at least some of the
processes relate to a user activity, and wherein the classification
is carried our in respect to the user activity (stage 200);
generating a user application use profile by analyzing the user
activity in respect to the applications (stage 210); assigning each
process a priority relating to the analysis of the user activity,
user preferences and the user application use profile (stage 220);
and scheduling the processes in respect to the assigned priorities
such as to enhance processes with a high priority (stage 230).
Scheduling (stage 230) is carried out such as to adapt an
allocation of the computing resources to the user application use
profile. Stages 200-230 are carried out substantially immediately
during running the processes, and at least one of the stages
200-230 is performed by at least one computer.
[0039] In embodiments, the plurality of processes comprises all
processes relating to the computer resources.
[0040] In embodiments, the computer implemented method further
comprises any of the following stages, that may be performed by at
least one computer: monitoring and analyzing the processes' use of
the computing resources (stage 240); maximizing computer resources
use by analyzing data relating to the computing resources and
process requirements (stage 250); monitoring and controlling
communication between an operating system running the processes
with the computing resources and the applications (stage 260); and
incorporating processes of an external software in the plurality of
processes (stage 270).
[0041] In the above description, an embodiment is an example or
implementation of the inventions. The various appearances of "one
embodiment," "an embodiment" or "some embodiments" do not
necessarily all refer to the same embodiments.
[0042] Although various features of the invention may be described
in the context of a single embodiment, the features may also be
provided separately or in any suitable combination. Conversely,
although the invention may be described herein in the context of
separate embodiments for clarity, the invention may also be
implemented in a single embodiment.
[0043] Reference in the specification to "some embodiments", "an
embodiment", "one embodiment" or "other embodiments" means that a
particular feature, structure, or characteristic described in
connection with the embodiments is included in at least some
embodiments, but not necessarily all embodiments, of the
inventions.
[0044] It is to be understood that the phraseology and terminology
employed herein is not to be construed as limiting and are for
descriptive purpose only.
[0045] The principles and uses of the teachings of the present
invention may be better understood with reference to the
accompanying description, figures and examples.
[0046] It is to be understood that the details set forth herein do
not construe a limitation to an application of the invention.
[0047] Furthermore, it is to be understood that the invention can
be carried out or practiced in various ways and that the invention
can be implemented in embodiments other than the ones outlined in
the description above.
[0048] It is to be understood that the terms "including",
"comprising", "consisting" and grammatical variants thereof do not
preclude the addition of one or more components, features, steps,
or integers or groups thereof and that the terms are to be
construed as specifying components, features, steps or
integers.
[0049] If the specification or claims refer to "an additional"
element, that does not preclude there being more than one of the
additional element.
[0050] It is to be understood that where the claims or
specification refer to "a" or "an" element, such reference is not
to be construed that there is only one of that element.
[0051] It is to be understood that where the specification states
that a component, feature, structure, or characteristic "may",
"might", "can" or "could" be included, that particular component,
feature, structure, or characteristic is not required to be
included.
[0052] Where applicable, although state diagrams, flow diagrams or
both may be used to describe embodiments, the invention is not
limited to those diagrams or to the corresponding descriptions. For
example, flow need not move through each illustrated box or state,
or in exactly the same order as illustrated and described.
[0053] Methods of the present invention may be implemented by
performing or completing manually, automatically, or a combination
thereof, selected steps or tasks.
[0054] The term "method" may refer to manners, means, techniques
and procedures for accomplishing a given task including, but not
limited to, those manners, means, techniques and procedures either
known to, or readily developed from known manners, means,
techniques and procedures by practitioners of the art to which the
invention belongs.
[0055] The descriptions, examples, methods and materials presented
in the claims and the specification are not to be construed as
limiting but rather as illustrative only.
[0056] Meanings of technical and scientific terms used herein are
to be commonly understood as by one of ordinary skill in the art to
which the invention belongs, unless otherwise defined.
[0057] The present invention may be implemented in the testing or
practice with methods and materials equivalent or similar to those
described herein.
[0058] Any publications, including patents, patent applications and
articles, referenced or mentioned in this specification are herein
incorporated in their entirety into the specification, to the same
extent as if each individual publication was specifically and
individually indicated to be incorporated herein. In addition,
citation or identification of any reference in the description of
some embodiments of the invention shall not be construed as an
admission that such reference is available as prior art to the
present invention.
[0059] While the invention has been described with respect to a
limited number of embodiments, these should not be construed as
limitations on the scope of the invention, but rather as
exemplifications of some of the preferred embodiments. Other
possible variations, modifications, and applications are also
within the scope of the invention. Accordingly, the scope of the
invention should not be limited by what has thus far been
described, but by the appended claims and their legal
equivalents.
* * * * *