WO2005060575A2 - Performing operations in response to detecting a computer idle condition - Google Patents

Performing operations in response to detecting a computer idle condition Download PDF

Info

Publication number
WO2005060575A2
WO2005060575A2 PCT/US2004/040735 US2004040735W WO2005060575A2 WO 2005060575 A2 WO2005060575 A2 WO 2005060575A2 US 2004040735 W US2004040735 W US 2004040735W WO 2005060575 A2 WO2005060575 A2 WO 2005060575A2
Authority
WO
WIPO (PCT)
Prior art keywords
computer resource
time period
computer
predetermined time
resource
Prior art date
Application number
PCT/US2004/040735
Other languages
French (fr)
Other versions
WO2005060575A3 (en
Inventor
Lee Z. Hasiuk
Steven Lee Colwell
Original Assignee
X1 Technologies, Inc.
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 X1 Technologies, Inc. filed Critical X1 Technologies, Inc.
Publication of WO2005060575A2 publication Critical patent/WO2005060575A2/en
Publication of WO2005060575A3 publication Critical patent/WO2005060575A3/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution

Definitions

  • the indexing process may perform many disk I/O operations, such as when indexing the contents of the user's hard disk to allow the user to rapidly find files which contain certain words or phrases.
  • Such a background process even if set to run at "idle priority", may greatly slow down the apparent speed of a foreground process that performs disk I/O operations because, while running, the indexing process is constantly reading from and writing to the user's hard disk.
  • Summary of the Invention [0007] As discussed below, embodiments of the present invention enable the efficient use of shared resources by different processes, such as background and foreground processes sharing a mass storage device. Thus, disk intensive operations, such as file indexing, do not unduly interfere with higher priority processes.
  • Windows Server 2003 provides the performance counters described in Table 1.
  • a background process running at idle priority uses performance counters, optionally including one or more of the counters discussed above, and/or other mechanisms to determine the immediate load on a resource, such as a magnetic or optical mass storage device, it wishes to use.
  • the background process can then determine when idle cycles are being allocated to the background process because another process, such as a foreground process, is waiting for an operation on that same resource to complete. In such cases, the background process optionally refrains from imposing an additional load on the resource, so that the other process can run without delay.
  • the background process can periodically check the idle cycle allocation, and selectively determine when to access the resource so as not to unduly inhibit foreground processes' access of the resource.
  • An embodiment optionally utilizes a background process which performs indexing of the contents of a user's hard disk without impacting system performance under Windows-NT based operating systems to an extent that would be readily noticeable by a user.
  • the indexing process performs many disk I/O operations when indexing the contents of the user's hard disk to allow the user to rapidly find files which contain certain words, phrases, or strings.
  • a search application can be stored on and executed by a user or host terminal.
  • the IFS manager service inserts that address in an API function hook list.
  • IFS manager API function calls involve calling installed hook procedures with parameters indicating the type of request, the drive being accessed, a pointer to an IFS I/O request structure, and other information.
  • the VxD can monitor file operations that result in disk activity, such as open, read, or write operations.
  • a background process running under Windows 95 and its successors dynamically loads a VxD which uses this entry point to insert code of its own which is called whenever a file I/O operation occurs.
  • Figure 1 depicts a computer system 100, including a computer 102, an operating system 118, running a foreground process 120 and a background process 122 (such as an index process) in memory 116, which can be random access memory (RAM), coupled to a CPU (central processing unit) 104 via a memory bus 114, a disk controller 106 coupled to the CPU 104 via peripheral bus 112, one or more mass storage devices 108, including one or more of magnetic hard disk drives, optical drives, solid state non- volatile memory, or the like, hi addition, a video controller 110 is coupled to the CPU 104 and to a monitor 124.
  • RAM random access memory
  • CPU central processing unit
  • disk controller 106 coupled to the CPU 104 via peripheral bus 112
  • mass storage devices 108 including one or more of magnetic hard disk drives, optical drives, solid state non- volatile memory, or the like
  • a video controller 110 is coupled to the CPU 104 and to a monitor 124.
  • the computer system 100 includes performance monitoring software, such as discussed above, used to determine when the mass storage device 108 is being utilized by the foreground process, and when the background process 122 should access the mass storage device 108.
  • Figure 2 illustrates an example resource sharing process that is performed during a "time slice" of a multiprocessing system where there is a foreground process and a background process.
  • the background process checks the busy state of a shared device before using the shared device so as to not slow down, or significantly slow down, the foreground processes use of that same shared device.
  • Figure 3 shows an external (not in the operating system) implementation which allows the background process to use a large percentage, such as 90%, of the available idle CPU time as long as the disk or other mass storage device is not busy. This example process compensates for the fact that some of the time the background process may see its own disk activity by running in 90 millisecond bursts before checking the disk.

Abstract

A computer system (100), including a computer (102), an operating system (118), running a foreground process (120) and a background process (112) (such as an index process) in memory (116), which can be random access memory (RAM), coupled to a CPU (central processing unit) (104) via a memory bus (114), a disk controller (106) coupled to the CPU (104) via peripheral bus (112), one or more mass storage devices (108), including one or more of magnetic hard disk drives, optical drives, solid state non-volatile memory, or the like. In addition, a video controller (110) is coupled to the CPU (104) and to a monitor (124). The computer system (110) includes performance monitoring software, such as discussed above, used to determine when the mass storage device 108 is being utilized by the foreground process, and when the background process (112) should access the mass storage device (108).

Description

METHODS AND SYSTEMS FOR PERFORMING OPERATIONS IN RESPONSE TO DETECTING A COMPUTER IDLE CONDITION
Background of the Invention Field of the Invention [0001] The present invention is related to allocation of computer resources, and in particular to sharing computer resources based in part on detecting an idle condition. Description of the Related Art [0002] Many conventional general-purpose computers, such as personal computers, spend a significant portion of their time executing an idle loop because these conventional computers are typically capable of executing instructions at a much faster rate than required by the software that they run. Often, even a program which is running without waiting for user interaction will often end up giving CPU cycles to the idle loop because the program is waiting for disk I/O operations, such as data transfers to or from a hard disk drive, to complete. For example, if a single disk head seek takes 10 milliseconds, the computer processor clocked at 2 gigahertz can execute 20 million idle instruction cycles during the 10 milliseconds. Each such seek which occurs per second will cause the CPU to spend an additional 1% of its time in the idle loop. [0003] In many conventional modern operating systems, multiple programs may be run at once. A distinction is often made between the program the user is interacting with or waiting for, called the foreground process, and one or more programs that are running tasks less important to the user at the moment, called background processes. Background processes may run at a lower scheduling priority than the foreground process, so that the background processes will not unduly slow down the primary computational task. Some such background processes may voluntarily set their own priorities to a very low level, sometimes referred to as "idle priority", in an attempt to have no or little impact on the apparent speed of the computer from the user's perspective. With such a low priority, many conventional operating systems will allow these processes to run only when the system would otherwise be ruiuiing its idle loop. [0004] Such a scheme may work adequately if a background process is only going to utilize processor computation resources. However, if the background process accesses the disk at the same time that the foreground process does, system performance may rapidly deteriorate. Because a single disk head seek can take approximately 10 milliseconds, only 100 such seeks may be performed every second. If the background process causes the disk heads to move away from the area of the disk that the foreground process was about to access next, the foreground process may spend 20 milliseconds waiting for the disk head to move to the location the background process is accessing and back again. [0005] When the foreground process is performing tasks whose completion time is bound by disk I/O speed, such disk head seeks resulting from sharing disk access with the background process can cause the overall task completion time to take many times longer as compared to the scenario where the foreground process has exclusive use of the disk. This is because the disk may be performing many seeks where none may be needed if only one process were accessing the disk. [0006] By way of example, one background process could be an indexing process. The indexing process may perform many disk I/O operations, such as when indexing the contents of the user's hard disk to allow the user to rapidly find files which contain certain words or phrases. Such a background process, even if set to run at "idle priority", may greatly slow down the apparent speed of a foreground process that performs disk I/O operations because, while running, the indexing process is constantly reading from and writing to the user's hard disk. Summary of the Invention [0007] As discussed below, embodiments of the present invention enable the efficient use of shared resources by different processes, such as background and foreground processes sharing a mass storage device. Thus, disk intensive operations, such as file indexing, do not unduly interfere with higher priority processes. [0008] One embodiment provides method of determining when to perform a computer background process, the method comprising: allowing the computer background process to access a computer resource for a first predeteraiined time period; after the first predetermined time period has elapsed, inhibiting the computer background process from accessing the computer resource for a second predetermined time period; after the second predetermined time period has elapsed, determining if the computer resource is being used by another process, wherein if the computer resource is being used by another process, waiting for a third predetermined time period and again determining if the computer resource is being used by another process, and if the computer resource is not being used by another process, allowing the computer background process to access the computer resource again. [0009] Another embodiment provides a computer system that detects a computer resource idle condition, the computer system comprising: a processor; memory coupled to the processor; a computer resource; and program instructions stored in computer readable memory configured to: enable a computer background process to access the computer resource for a first time period; after the first predetermined time period has elapsed, prevent the computer background process from accessing the computer resource for a second time period; determine if the computer resource is idle; allow the computer background process to access the computer resource again if the computer resource is idle; prevent the computer background process from accessing the computer resource for a third time period, if the computer resource is not idle, and after the third time period, again determine if the computer resource is being used by another process. [0010] Still another embodiment provides a method of allocating access to a computer resource, the method comprising: penrritting a first process to access a computer resource for a first time period; after the first time period has elapsed, inhibiting the first process from accessing the computer resource for a second time period; after the second time period has elapsed, determining if the computer resource is idle based at least in part on a computer resource performance indicator, wherein if the computer resource is not idle, waiting for a third predetermined time period and again determining if the computer resource is idle, and if the computer resource is idle, allowing the first process to access the computer resource again. [0011] Yet another embodiment provides a system that allocates access to a computer resource, the system comprising: computer readable memory; and instructions stored in the computer readable memory configured to: permit a first process to access a computer resource for a first time period; after the first time period has elapsed, inhibit the first process from accessing the computer resource for a second time period; after the second time period has elapsed, determine if the computer resource is idle based at least in part on a computer resource performance indicator, wherein if the computer resource is not idle, cause the first process to wait for a third predetermined time period and again determine if the computer resource is idle, and if the computer resource is idle, allow the first process to access the computer resource again.
Brief Description of the Drawings [0012] Figure 1 illustrates an example system that can be utilized with an embodiment of the present invention. [0013] Figure 2 illustrates an example resource sharing process. [0014] Figure 3 illustrates another example resource sharing process applied to a background process that accesses a disk drive.
Detailed Description of Preferred Embodiments [0015] Embodiments of the present invention determine when a computer and/or resource therein is idle. The determination can take into account the processor or central processing unit (CPU) load, as measured by the time spent in the idle loop, as well as the load on other shared system resources, such as disk drives. Based on such determination, a background process is selectively provided access to the shared resource. [0016] Unless otherwise indicated, the functions described herein are preferably performed by executable code and instructions running on one or more general-purpose computers, terminals, personal digital assistants, other processor-based systems, or the like. However, the present invention can also be implemented using special purpose computers, state machines, and/or hardwired electronic circuits. The example processes described herein do not necessarily have to be performed in the described sequence, and not all states have to be reached or performed. [0017] Embodiments of the present invention can be used with numerous different operating systems, including by way of example and not limitation, Microsoft's Windows operating systems, Sun Solaris operating systems, Linux operating systems, Unix operating systems, Apple operating systems, as well as other operating systems. [0018] By way of example, with respect to operating systems based on Microsoft Windows NT (including without limitation Windows 2000, Windows 2003 and Windows XP), the operating system provides a mechanism whereby the various subsystems, such as the CPU, network hardware, disk drives, other mass storage devices, etc., can include "performance counters" which are used to record statistics regarding their operation. For example, a network interface might provide information about the number of packets the network interface has received, the number of packets waiting to be sent, and other values that would allow a program to analyze or display the current load and perfonnance of the network hardware. [0019] For a disk drive, the disk-related statistics can include the percentage of time the disk is idle, the average number of bytes or other data amount per read, the number of writes per second, and many other similar values. These values are made available to running programs through a variety of mechanisms, including the system registry, the "Performance Data Helper" library, and/or Windows Management instrumentation (WMI). Some of these values are averages or occurrences over time (for example, bytes per second), and some values, such as "current disk queue length," give a program access to what is happening at substantially the current moment. [0020] By way of further example, Windows Server 2003 provides the performance counters described in Table 1.
Figure imgf000007_0001
Figure imgf000008_0001
TABLE 1 [0021] In an example embodiment, a background process running at idle priority uses performance counters, optionally including one or more of the counters discussed above, and/or other mechanisms to determine the immediate load on a resource, such as a magnetic or optical mass storage device, it wishes to use. The background process can then determine when idle cycles are being allocated to the background process because another process, such as a foreground process, is waiting for an operation on that same resource to complete. In such cases, the background process optionally refrains from imposing an additional load on the resource, so that the other process can run without delay. The background process can periodically check the idle cycle allocation, and selectively determine when to access the resource so as not to unduly inhibit foreground processes' access of the resource. This allows the system to run at substantially full speed, because the background process is only using idle CPU cycles to wait for the resource to become available and not using the resource itself. [0022] An embodiment optionally utilizes a background process which performs indexing of the contents of a user's hard disk without impacting system performance under Windows-NT based operating systems to an extent that would be readily noticeable by a user. The indexing process performs many disk I/O operations when indexing the contents of the user's hard disk to allow the user to rapidly find files which contain certain words, phrases, or strings. [0023] By way of example, a search application can be stored on and executed by a user or host terminal. The search application can provide user interfaces for searching email, files, Web sites, cached Web pages, databases and/or the like, hi addition, the search application can include a local index engine that indexes email, files, cached Web pages, databases and the like, stored in a data repository or database. For example, Web pages previously viewed in the search application's view pane or area, and optionally, stored Web pages previously viewed using other user browsers, or otherwise stored locally can be indexed. Separate indexes can be used for the email, files, cached Web pages, databases and the like, or a single index can be used for the foregoing. [0024] The index engine can further include code configured as a scan engine or module that is used to determine whether a file is to be indexed. Thus, the index engine can also scan files to identify new targets, such as email, document files, Web pages, database entries, and the like, that have not yet been indexed, or targets that have previously been indexed but have since been modified. Optionally, rather then re-index all corresponding targets each time an index operation is performed, the index engine can incrementally index just the new or modified targets or documents. In addition, the index engine can refrain from indexing until it determines that the mass storage device, which stores the data or files to be indexed, is not being utilized by a higher priority or foreground process. [0025] The index engine can utilize one or more indexing algorithms to create an index, such as a reverse or inverted index. The index includes a data structure that associates character strings with files, documents, and the like. In one example embodiment, for each word or character string found with a file or document, the index stores which fields of which documents or files contain that word or character string. [0026] By way of example, the background process checks a performance counter, such as the counter named "\\PhysicalDisk\Current Disk Queue Length" for the specific disk drive instance it wishes to read from or write to. Alternatively or in addition, the background process can access the aggregate total value of the current disk queue lengths for all of the physical disk drives, whose instance is known as "_Total". Advantageously, this is easier than keeping track of which disk drive the process is about to access and checking only that one drive's queue length. [0027] However, because Windows NT-based operating systems perform many disk and mass storage I/O operations asynchronously to and from a system cache, the background process can mistake disk I/O being performed on its own behalf as disk I/O from another process. For example, when a process writes to the disk, the data is typically written to a memory based disk cache, and then written out to the disk at a later time, allowing the process to continue operations without waiting for the disk write to complete. Thus, a check of the "current disk queue length" performance counter may not be, on its own, adequate or sufficient to allow a background process to determine whether or not another process is using the disk drive, because a queued operation might be on behalf the background process itself. If the background process were to give up the idle CPU cycles being offered under these circumstances, the background process would "err on the side of caution" and not affect the speed of foreground processes, but the background process also would not make full use of the available processor and disk bandwidth. [0028] In one embodiment, this problem is solved by optionally allowing the background process to use idle cycles for a certain accumulated amount of time, such as 90 milliseconds or other designated time period, to perform disk intensive operations. The background process then waits a given amount of time, such as, by way of example, 10 milliseconds, and checks for pending disk or mass storage I/O by checking the "current disk queue length" counter, or other appropriate performance indicator. If the counter value is 0 or less than a specified threshold, the background process takes another time period, such as a 90 millisecond slice of idle time, and can utilize the disk. When the counter value is non-zero, or greater than a designated threshold, the background process waits a designated amount of time, such as 10 milliseconds, before checking again. This 90/10 procedure allows the background process to use the disk for 90 percent, or other designated amount of the idle time, to perform computations and to access the disk. [0029] In another embodiment, the process gates only the disk operations performed in the background process, so that the background process can still use CPU or other resources, even as the other processes use the disk. For example, during the 10 millisecond waiting period, the background process may choose to perform other tasks, such as computation, that do not use mass storage I/O without affecting the speed of the foreground process. [0030] When the disk is being used heavily by a foreground process, it is most likely that the disk queue length will be greater than zero when the background process checks. The fact that the "idle priority" background process is being given CPU cycles indicates that other processes on the system are waiting for something. If the other processes are waiting for the disk, then the "current disk queue length" counter will be non-zero. Despite being given the idle CPU cycles, the background process will therefore not impose an additional load on the shared resource at this time, though it may optionally choose to perform purely computational tasks or tasks that access other shared resources not currently in use. [0031] By way of another example, under Microsoft Windows operating systems based on Windows 95, including Windows 98 Windows ME, and other Windows 9x variants, there is a similar performance counter mechanism provided by the operating system. Unfortunately, by default, for these operating systems there are no counters for the disk subsystem which measure the immediate load, such as the "current disk queue length" counter provided in NT-based systems. Thus, under a Windows 95-based operating system, such a counter needs to be provided. Windows 95 and its variants provide a mechanism called "Virtual Device Drivers" also known as VxDs, which can be inserted into the system I/O chain dynamically by a running application. One such mechanism is provided by the system entry point available to VxDs named IFSMgr_InstallFileSystemApiHook(). Under Win 9x operating systems, drivers can monitor disk access operations by installing themselves via the IFS (installable file system) manager service, IFSMgr_InstallFileSystemAPIHook. [0032] During device initialization, a VxD calls the IFS service, passing the address of its hook procedure as an argument. The IFS manager service, IFSMgr_hιstallFileSystemAPIHook, inserts that address in an API function hook list. IFS manager API function calls involve calling installed hook procedures with parameters indicating the type of request, the drive being accessed, a pointer to an IFS I/O request structure, and other information. Thus, via the hook, the VxD can monitor file operations that result in disk activity, such as open, read, or write operations. [0033] In an embodiment, a background process running under Windows 95 and its successors dynamically loads a VxD which uses this entry point to insert code of its own which is called whenever a file I/O operation occurs. The VxD maintains a count of the number of threads, wherein each process contains one or more simultaneously executing threads, which have called into the file system but not returned. This mechanism provides a value similar to the NT-based operating system's "current disk queue length" counter, and the background process can obtain this counter value by numerous methods, such as, by way of example, a DeviceIoControl() system call, which sends a control code to a specified device driver, causing the corresponding device to perform the corresponding operation. [0034] One embodiment, which can be used in systems utilizing Windows 95-based operating systems or the like, has the VxD increment a counter each time a file or disk I/O operation is initiated. The background process checks the value of this counter before and after an interval, such as the 10 millisecond wait interval described above. If the value has changed, the background process uses this as an indication that another process has used the disk in the interim and is possibly still using the disk, and so backs off and waits for an additional period or periods of time, such as additional 10 millisecond intervals, until the counter value stops changing. [0035] While the foregoing example utilizes a 90/10 cycle ratio, other ratios, or combinations of ratios can be used, including other integer ratios and non-integer ratios. For example, the process can use a 90/10 ratio, then 18/7, 30/10, 50/10, 70/10, 82/11, back up to 90/10, or approximations thereof, so that the background process does not just jump into a small period of nonuse by a foreground process and take another 90 milliseconds of disk use. Still other ratios can be used such as approximately 10:1, 8:1, 6:1, 4:1, 2:1, 1:1, 20:1, and so on. Thus, once disk activity has been detected, the process optionally slowly ramps up to full speed to make sure that the background process does not slow the system down too much by prematurely designating a disk as idle, when actually the foreground process was just about to continue its I/O after a very brief pause for computation. [0036] The foregoing techniques are techniques for determining when foreground processes are being used. Other techniques can be used for determining when other applications are accessing any resource with significant context-switching time such as a hard disk, an optical drive, a tape drive, a floppy disk drive, or external coprocessor such as for graphics. [0037] By way of example, a filter driver can be installed ahead of a system device driver associated with the mass storage device. The filter driver monitors each call into the device driver, and keeps track of one or more of the following: [0038] a. how many calls are actively in the device driver at any given time [0039] b. when the last call was made into the device driver [0040] c. how many total calls have been made into the device driver
[0041] Based on one or more of the foregoing, the filter driver, or a module in communication with the filter driver, determines whether the mass storage device is being accessed by a foreground or other process. [0042] Similarly, virtual device drivers can be dynamically installed that intercept file or disk I/O calls and thereby determine which applications or processes are accessing the mass storage device. [0043] Still another technique utilizes a program that monitors system calls that can result in file and/or mass storage I/O operations being performed. The monitor program installs "thunks", wherein the addresses of the system entry points are replaced with addresses that point to a stub that increments a counter and then calls the original system entry point. [0044] Yet another technique utilizes performance-monitoring facilities, such as SNMP (Simple Network Management Protocol), WMI (Windows Management Instrumentation), and the like. [0045] Another technique is performed by timing mass storage operations in the background process and detecting when they take more than a certain or predetermined amoimt of time. For example, if a disk drive has been determined to seek at an average rate of 10 milliseconds (based on historical readings), a read or write operation that takes more than 2X or other selected multiple is a sign that the disk is busy. Thus, if a read, write, or other disk operation takes more than a predetermined amount of time, a determination is made that the disk is not idle, and the background process will not attempt to access the disk at this time. [0046] Optionally, rather than utilize the 90/10 cycle described above, one embodiment associates disk operations with their processes. Thus, rather than just relying on the performance counters, an NT file system filter driver is used that determines which process has performed the disk I/O and can "ignore" changes in the counter or items in an I/O queue when those items are known to be from the background process, either by their process ID or by the name of the file being accessed. [0047] The use of the foregoing techniques are not limited to shared mass storage devices, but can be similarly applied to other shared resources. For example, similar techniques can be used with process switching, to run a background task less often if the foreground task keeps reloading data into the processor cache. Another application of the foregoing techniques is with respect to the use of a wireless card that has to be switched between two networks, where it takes a significant amount time to make the switch. Similarly, the above techniques can be applied to a shared network with limited bandwidth. For example, there may be multiple processes trying to access the internet, and use of the foregoing techniques avoid having a background process slow down a transfer being made by a foreground process. [0048] Figure 1 illustrates an example system that can utilize one or more of the idle detection processes discussed above. Figure 1 depicts a computer system 100, including a computer 102, an operating system 118, running a foreground process 120 and a background process 122 (such as an index process) in memory 116, which can be random access memory (RAM), coupled to a CPU (central processing unit) 104 via a memory bus 114, a disk controller 106 coupled to the CPU 104 via peripheral bus 112, one or more mass storage devices 108, including one or more of magnetic hard disk drives, optical drives, solid state non- volatile memory, or the like, hi addition, a video controller 110 is coupled to the CPU 104 and to a monitor 124. The computer system 100 includes performance monitoring software, such as discussed above, used to determine when the mass storage device 108 is being utilized by the foreground process, and when the background process 122 should access the mass storage device 108. [0049] Figure 2 illustrates an example resource sharing process that is performed during a "time slice" of a multiprocessing system where there is a foreground process and a background process. The background process checks the busy state of a shared device before using the shared device so as to not slow down, or significantly slow down, the foreground processes use of that same shared device. By way of example, the background process can be a file index process that indexes files stored on a mass storage device, while the foreground process can be a word processor, a spreadsheet program, an email client, a database application, a browser, and so on. As depicted, the scheduling process takes into account access to a shared device, which can be a mass storage device or peripheral, by way of example. This illustrates how support for the idle detection and background process scheduling algorithm can optionally be incorporated directly into the system scheduler. As illustrated, at state 202, the foreground process is waiting for some event that may or may not be completion of I/O to the shared device. If the background process is not ready at state 204, the system enters an idle loop 206. If the background process is ready, the process proceeds from state 204 to state 208, and the background process is allowed to run. The background process then attempts to utilize the shared device. If, at state 210, the shared device is busy, the system enters an idle loop at state 206. If the shared device is not busy, the background process accesses the shared device at state 212. [0050] Figure 3 shows an external (not in the operating system) implementation which allows the background process to use a large percentage, such as 90%, of the available idle CPU time as long as the disk or other mass storage device is not busy. This example process compensates for the fact that some of the time the background process may see its own disk activity by running in 90 millisecond bursts before checking the disk. This avoids the problem of the background process waiting more than it has to because it sees its own I/O activity and misinterprets the activity as being associated with another process. By way of example, the background process can be a file index process that indexes files stored on a mass storage device. [0051] As depicted in Figure 3, at state 302 the process starts, and at state 304 resets an accumulated variable dt to 0. At state 306, the current time is stored in variable tO. At state 308, a designated amount of background processing involving disk access is performed. At state 310, the current time is stored in variable tl. At state 312, the elapsed time is accumulated into the variable dt, where dt = dt + (tl - tO). At state 314, a determination is made as to whether dt is less than or equal to a first threshold. If dt is less than or equal to a first threshold, for example, 90 msec, the process proceeds back to state 306, where the current time is stored in variable tO. If dt is greater than the first threshold, then at state 316 the background process waits a designated period of time, such as 10 msec. At state 318, a determination is then made as to whether the disk is in use. If so, the process waits another 10 msec before trying again. Otherwise, the accumulated time is reset to 0 and the process repeats. [0052] It should be understood that certain variations and modifications of tins invention would suggest themselves to one of ordinary skill in the art. The scope of the present invention is not to be limited by the illustrations or the foregoing descriptions thereof.

Claims

WHAT IS CLAIMED IS: 1. A method of determining when to perform a computer background process, the method comprising: allowing the computer background process to access a computer resource for a first predetermined time period; after the first predetermined time period has elapsed, inhibiting the computer background process from accessing the computer resource for a second predetermined time period; after the second predetermined time period has elapsed, determining if the computer resource is being used by another process, wherein if the computer resource is being used by another process, waiting for a third predetermined time period and again determining if the computer resource is being used by another process, and if the computer resource is not being used by another process, allowing the computer background process to access the computer resource again.
2. The method as defined in Claim 1, wherein the computer resource is a mass storage device.
3. The method as defined in Claim 1, wherein the computer resource is a magnetic storage device.
4. The method as defined in Claim 1, wherein the computer resource is a graphics processor or a network interface.
5. The method as defined in Claim 1, wherein the act of determining if the computer resource is being used by another process includes reading a performance counter, wherein the second time period expires after the performance counter ceases to provide an indication that the background process is accessing the computer resource.
6. The method as defined in Claim 1, wherein the second time period is selected to ensure that the determination act does not incorrectly indicate that the computer resource is being used by another process.
7. The method as defined in Claim 1, wherein the act of determining if the computer resource is being used by another process includes reading a queue length associated with the computer resource.
8. The method as defined in Claim 1, wherein the computer resource includes a plurality of physical disk drives, and wherein the act of detennining if the computer resource is being used by another process is based at least in part on queue lengths for the plurality of physical disk drives.
9. The method as defined in Claim 1, wherein the background process is inhibited from accessing the computer resource when there is a non-zero queue length for the computer resource.
10. The method as defined in Claim 1, wherein the act of determining if the computer resource is being used by another process is perfonned using a virtual device driver.
11. The method as defined in Claim 1, wherein the act of detennining if the computer resource is being used by another process is performed using one or more of a filter driver, a thunk, simple network management protocol, windows management instrumentation, or timing seeks.
12. The method as defined in Claim 1, wherein the background process is a file indexing process.
13. The method as defined in Claim 1, wherein the background process is a file indexing process and the foreground process is a word processor.
14. The method as defined in Claim 1, wherein the background process is a file indexing process and the foreground process is an email process.
15. The method as defined in Claim 1, wherein the background process is an indexing process that indexes one or more of email, files, or web pages.
16. The method as defined in Claim 1, wherein the foreground process is a word processor, a spreadsheet program, an email client, a database application, or a browser process.
17. The method as defined in Claim 1, wherein the ratio of the first predetennined time period to the second predetermined time period is about 20:1, 10:1, 9:1, 8:1, 7:1, 6:1, 5:1, 4:1, 3:1, or 2:1, or is a non-integer ratio.
18. The method as defined in Claim 1, further comprising: allowing the computer background process to access a computer resource for a fourth predetennined time period; and after the fourth predetermined time period has elapsed, inhibiting the computer background process from accessing the computer resource for a fifth predetennined time period, wherein the ratio of the first predetennined time period to the second predetermined time period is different than the ratio of the fourth predetermined time period to the fifth predetermined time period.
19. The method as defined in Claim 1, wherein detennining if the computer resource is being used by another process is based at least in part on one or more of: the number of calls actively in a device driver associated with the computer resource; when the last call was made into the device driver; or the number of total calls have been made into the device driver.
20. The method as defined in Claim 1, wherein determining if the computer resource is being used by another process is based at least in part on one or more of: information regarding the number of packets the computer resource has received; or information regarding the number of packets waiting to be sent by the computer resource.
21. The method as defined in Claim 1, wherein detennining if the computer resource is being used by another process is based at least in part on how long a first computer resource operation took.
22. The method as defined in Claim 1, further comprising detennining a load on the computer resource based on one or more of: an average number of read and write requests queued for the computer resource during a sample interval; an average number of read requests queued for the computer resource during a corresponding sample interval; an average number of write requests queued for the computer resource during a corresponding sample interval; or a number of outstanding computer resource requests.
23. The method as defined in Claim 1, wherein the background process accesses a second computer resource during the second predetermined time period.
24. The method as defined in Claim 1, wherein the second predetennined time period is the same as the third predetermined time period.
25. A computer system that detects a computer resource idle condition, the computer system comprising: a processor; memory coupled to the processor; a computer resource; and program instructions stored in computer readable memory configured to: enable a computer background process to access the computer resource for a first time period; after the first predetermined time period has elapsed, prevent the computer background process from accessing the computer resource for a second time period; determine if the computer resource is idle; allow the computer background process to access the computer resource again if the computer resource is idle; prevent the computer background process from accessing the computer resource for a third time period, if the computer resource is not idle, and after the third time period, again determine if the computer resource is being used by another process.
26. The computer system as defined in Claim 26, wherein the computer resource is a mass storage device.
27. The computer system as defined in Claim 26, wherein the computer resource is a magnetic storage device.
28. The computer system as defined in Claim 26, wherein the computer resource is a graphics processor or a network interface.
29. The computer system as defined in Claim 26, further comprising a performance indicator used to detennine if the computer resource is idle, wherein the second time period is selected to expire after the performance indicator ceases to provide an indication that the background process is accessing the computer resource.
30. The computer system as defined in Claim 26, wherein the second time period is selected to ensure that the idle detennination does not incorrectly indicate that the computer resource is being used by another process.
31. The computer system as defined in Claim 26, further comprising a queue length associated with the computer resource, wherein the queue length provides an indication as to whether the computer resource is idle.
32. The computer system as defined in Claim 26, wherein the computer resource includes a plurality of physical disk drives and associated queue lengths for the plurality of physical disk drives, wherein the queue lengths provide an indication as whether the plurality of physical disk drives are idle. i
33. The computer system as defined in Claim 26, further comprising a computer resource queue having an associated length, wherein the background process is inhibited from accessing the computer resource when there is a non-zero queue length for the computer resource.
34. The computer system as defined in Claim 26, further comprising a virtual device driver that provides a computer resource idle indication.
35. The computer system as defined in Claim 26, further comprising one or more of a filter driver, a thunk, simple network management protocol, windows management instrumentation, or disk seek timing instructions, that provide a computer resource idle indication.
36. The computer system as defined in Claim 26, wherein the background process is a file indexing process.
37. The computer system as defined in Claim 26, wherein the background process is a file indexing process and the foreground process is a word processor.
38. The computer system as defined in Claim 26, wherein the background process is a file indexing process and the foreground process is an email process.
39. The computer system as defined in Claim 26, wherein the background process is an indexing process that indexes one or more of email, files, or web pages.
40. The computer system as defined in Claim 26, wherein the foreground process is a word processor, a spreadsheet program, an email client, a database application, or a browser process.
41. The computer system as defined in Claim 26, wherein the ratio of the first predetermined time period to the second predetermined time period is about 20:1, 10:1, 9:1, 8:1, 7:1, 6:1, 5:1, 4:1, 3:1, or 2:1, or is a non-integer ratio.
42. The computer system as defined in Claim 26, further comprising instructions stored in computer readable memory configured to: allow the computer background process to access a computer resource for a fourth predetermined time period; after the third predetermined time period has elapsed, inhibit the computer background process from accessing the computer resource for a fifth predetennined time period, wherein the ratio of the first predetermined time period to the second predetermined time period is different than the ratio of the fourth predetermined time period to the fifth predetermined time period.
43. The computer system as defined in Claim 26, wherein the idle condition is determined based at least in part on one or more of: the number of calls actively in a device driver associated with the computer resource; when the last call was made into the device driver; or the number of total calls have been made into the device driver.
44. The computer system as defined in Claim 26, wherein the idle condition is detennined based at least in part on how long a first computer resource operation took.
45. The computer system as defined in Claim 26, further comprising instructions stored in computer readable memory configured to determine a load on the computer resource based on one or more of: an average number of read and write requests queued for the computer resource during a sample interval; an average number of read requests queued for the computer resource during a corresponding sample interval; an average number of write requests queued for the computer resource during a corresponding sample interval; or a number of outstanding computer resource requests.
46. The computer system as defined in Claim 26, wherein the background process accesses a second computer resource during the second predetermined time period.
47. The computer system as defined in Claim 26, fiirther comprising the first process and the second process.
48. A method of allocating access to a computer resource, the method comprising: permitting a first process to access a computer resource for a first time period; after the first time period has elapsed, inhibiting the first process from accessing the computer resource for a second time period; after the second time period has elapsed, determining if the computer resource is idle based at least in part on a computer resource perfonnance indicator, wherein if the computer resource is not idle, waiting for a third predetennined time period and again determining if the computer resource is idle, and if the computer resource is idle, allowing the first process to access the computer resource again.
49. The method as defined in Claim 48, wherein the computer resource is a mass storage device.
50. The method as defined in Claim 48, wherein the computer resource is a magnetic storage device.
51. The method as defined in Claim 48, wherein the computer resource is a graphics processor or a network interface.
52. The method as defined in Claim 48, wherein the perfonnance indicator is a perfonnance counter, and wherein the second time period expires after the performance counter ceases to provide an indication that the first process is accessing the computer resource.
53. The method as defined in Claim 48, wherein the second time period is selected to ensure that the determination act does not incorrectly indicate that the computer resource is being used by another process.
54. The method as defined in Claim 48, wherein the performance indicator is a queue length associated with the computer resource.
55. The method as defined in Claim 48, wherein the performance indicator is a queue length associated with the computer resource, and wherein the first process is inliibited from accessing the computer resource when there is a non-zero queue length for the computer resource.
56. The method as defined in Claim 48, wherein the first process is a file indexing process.
57. The method as defined in Claim 48, wherein the first process is a file indexing process and the second process is one of a word processor or an email process.
58. The method as defined in Claim 48, wherein the first process is an indexing process that indexes one or more of email, files, or Web pages.
59. The method as defined in Claim 48, wherein the second process is a word processor, a spreadsheet program, an email client, a database application, or a browser process.
60. The method as defined in Claim 48, wherein the ratio of the first predetermined time period to the second predetermined time period is about 20:1, 10:1, 9:1, 8:1, 7:1, 6:1, 5:1, 4:1, 3:1, or 2: 1 , or is a non-integer ratio.
61. The method as defined in Claim 48, further comprising: allowing the first process to access a computer resource for a fourth predetermined time period; after the fourth predetennined time period has elapsed, inhibiting the first process from accessing the computer resource for a fifth predetermined time period, wherein the ratio of the first predetennined time period to the second predetermined time period is different than the ratio of the fourth predetermined time period to the fifth predetermined time period.
62. The method as defined in Claim 48, wherein the performance indicator provides information relating to one or more of: the number of calls actively in a device driver associated with the computer resource; when the last call was made into the device driver; or the number of total calls have been made into the device driver.
63. The method as defined in Claim 48, wherein the performance indicator provides information relating to one or more of: the number of packets the computer resource has received; or the number of packets waiting to be sent by the computer resource.
64. The method as defined in Claim 48, wherein the performance indicator provides information relating to how long a first computer resource operation took.
65. The method as defined in Claim 48, the performance indicator provides information relating to on one or more of: an average number of read and write requests queued for the computer resource during a sample interval; an average number of read requests queued for the computer resource during a con-esponding sample interval; an average number of write requests queued for the computer resource during a corresponding sample interval; or a number of outstanding computer resource requests.
66. The method as defined in Claim 48, wherein the first process accesses a second computer resource during the second predetermined time period.
67. A system that allocates access to a computer resource, the system comprising: computer readable memory; and instructions stored in the computer readable memory configured to: permit a first process to access a computer resource for a first time period; after the first time period has elapsed, inhibit the first process from accessing the computer resource for a second time period; after the second time period has elapsed, detennine if the computer resource is idle based at least in part on a computer resource perfonnance indicator, wherein if the computer resource is not idle, cause the first process to wait for a third predetennined time period and again determine if the computer resource is idle, and if the computer resource is idle, allow the first process to access the computer resource again.
68. The system as defined in Claim 67, wherein the computer resource is a mass storage device.
69. The system as defined in Claim 67, wherein the computer resource is a magnetic storage device.
70. The system as defined in Claim 67, wherein the computer resource is a graphics processor or a network interface.
71. The system as defined in Claim 67, wherein the perfonnance indicator is a perfonnance counter, and wherein the second time period expires after the perfonnance counter ceases to provide an indication that the first process is accessing the computer resource.
72. The system as defined in Claim 67, wherein the second time period is selected to ensure that the detennination act does not incorrectly indicate that the computer resource is being used by another process.
73. The system as defined in Claim 67, wherein the performance indicator is a queue length associated with the computer resource.
74. The system as defined in Claim 67, wherein the performance indicator is a queue length associated with the computer resource, and wherein the first process is inhibited from accessing the computer resource when there is a non-zero queue length for the computer resource.
75. The system as defined in Claim 67, wherein the first process is a file indexing process.
76. The system as defined in Claim 67, wherein the first process is a file indexing process and the second process is one of a word processor or an email process.
77. The system as defined in Claim 67, wherein the first process is an indexing process that indexes one or more of email, files, or Web pages.
78. The system as defined in Claim 67, wherein the second process is a word processor, a spreadsheet program, an email client, a database application, or a browser process.
79. The system as defined in Claim 67, wherein the ratio of the first predetennined time period to the second predetermined time period is about 20:1, 10:1, 9:1, 8:1, 7:1, 6:1, 5:1, 4:1, 3:1, or 2: 1, or is a non-integer ratio. The system as defined in Claim 67, further comprising instructions stored in the computer readable memory configured to: allow the first process to access a computer resource for a fourth predetermined time period; after the third predetermined time period has elapsed, inhibit the first process from accessing the computer resource for a fifth predetermined time period, wherein the ratio of the first predetermined time period to the second predetermined time period is different than the ratio of the fourth predetermined time period to the fifth predetermined time period.
80. The system as defined in Claim 67, wherein the performance indicator provides infonnation relating to one or more of: the number of calls actively in a device driver associated with the computer resource; when the last call was made into the device driver; or the number of total calls have been made into the device driver.
81. The system as defined in Claim 67, wherein the perfonnance indicator provides infonnation relating to one or more of: the number of packets the computer resource has received; or the number of packets waiting to be sent by the computer resource.
82. The system as defined in Claim 67, wherein the performance indicator provides infonnation relating to how long a first computer resource operation took.
83. The system as defined in Claim 67, the performance indicator provides infonnation relating to on one or more of: an average number of read and write requests queued for the computer resource during a sample interval; an average number of read requests queued for the computer resource during a corresponding sample interval; an average number of write requests queued for the computer resource during a corresponding sample interval; or a number of outstanding computer resource requests.
84. The system as defined in Claim 67, wherein the first process is allowed to accesses a second computer resource during the second predetermined time period.
PCT/US2004/040735 2003-12-10 2004-12-07 Performing operations in response to detecting a computer idle condition WO2005060575A2 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US52878703P 2003-12-10 2003-12-10
US60/528,787 2003-12-10

Publications (2)

Publication Number Publication Date
WO2005060575A2 true WO2005060575A2 (en) 2005-07-07
WO2005060575A3 WO2005060575A3 (en) 2007-12-13

Family

ID=34710098

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2004/040735 WO2005060575A2 (en) 2003-12-10 2004-12-07 Performing operations in response to detecting a computer idle condition

Country Status (2)

Country Link
US (1) US7945914B2 (en)
WO (1) WO2005060575A2 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2478336A (en) * 2010-03-04 2011-09-07 Nec Corp Bandwidth control system

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040003019A1 (en) * 2002-06-28 2004-01-01 Sun Microsystems, Inc., A Delaware Corporation Process management for real time systems management controller
US7707573B1 (en) 2003-12-31 2010-04-27 Google Inc. Systems and methods for providing and installing software
US8321858B1 (en) 2003-12-31 2012-11-27 Google Inc. Systems and methods for providing software updates
US8271651B1 (en) * 2003-12-31 2012-09-18 Google Inc. Methods and systems for regulating resource usage
US7433904B1 (en) * 2004-02-24 2008-10-07 Mindspeed Technologies, Inc. Buffer memory management
US8712986B2 (en) * 2004-04-07 2014-04-29 Iac Search & Media, Inc. Methods and systems providing desktop search capability to software application
US8001175B2 (en) * 2004-10-22 2011-08-16 International Business Machines Corporation Facilitating server response optimization
US8108871B2 (en) * 2005-01-13 2012-01-31 Hewlett-Packard Development Company, L.P. Controlling computer resource utilization
US7774299B2 (en) * 2005-05-09 2010-08-10 Microsoft Corporation Flow computing
US20060294049A1 (en) * 2005-06-27 2006-12-28 Microsoft Corporation Back-off mechanism for search
US20070067455A1 (en) * 2005-08-08 2007-03-22 Microsoft Corporation Dynamically adjusting resources
US7774781B2 (en) 2005-09-30 2010-08-10 Intel Corporation Storage subsystem access prioritization by system process and foreground application identification
US8239869B2 (en) 2006-06-19 2012-08-07 Condusiv Technologies Corporation Method, system and apparatus for scheduling computer micro-jobs to execute at non-disruptive times and modifying a minimum wait time between the utilization windows for monitoring the resources
US8015249B2 (en) * 2006-10-10 2011-09-06 Microsoft Corporation Mitigating data usage in messaging applications
US8510741B2 (en) * 2007-03-28 2013-08-13 Massachusetts Institute Of Technology Computing the processor desires of jobs in an adaptively parallel scheduling environment
US20080285551A1 (en) * 2007-05-18 2008-11-20 Shamsundar Ashok Method, Apparatus, and Computer Program Product for Implementing Bandwidth Capping at Logical Port Level for Shared Ethernet Port
US8078891B2 (en) * 2008-06-30 2011-12-13 Intel Corporation Method, device, and system for guaranteed minimum processor power state dwell time
CN102792275B (en) * 2010-03-11 2016-07-06 富士通株式会社 Software controlled machine, software control method and software control procedure
WO2011117243A1 (en) * 2010-03-23 2011-09-29 Sony Corporation Reducing power consumption by masking a process from a processor performance management system
US8589540B2 (en) * 2010-06-07 2013-11-19 Salesforce.Com, Inc. System, method and computer program product for determining a rate at which an entity is polled
US20130009980A1 (en) * 2011-07-07 2013-01-10 Ati Technologies Ulc Viewing-focus oriented image processing
US9032413B2 (en) 2011-09-01 2015-05-12 Microsoft Technology Licensing, Llc Decoupling background work and foreground work
US9063775B2 (en) 2011-09-01 2015-06-23 Microsoft Technology Licensing, Llc Event aggregation for background work execution
US9164803B2 (en) 2012-01-20 2015-10-20 Microsoft Technology Licensing, Llc Background task resource control
US20130246363A1 (en) * 2012-03-15 2013-09-19 Ellen L. Sorenson Idle point auditing for databases
US9489236B2 (en) 2012-10-31 2016-11-08 Microsoft Technology Licensing, Llc Application prioritization
US9329990B2 (en) 2013-01-11 2016-05-03 Micron Technology, Inc. Host controlled enablement of automatic background operations in a memory device
US9659058B2 (en) 2013-03-22 2017-05-23 X1 Discovery, Inc. Methods and systems for federation of results from search indexing
US9880983B2 (en) 2013-06-04 2018-01-30 X1 Discovery, Inc. Methods and systems for uniquely identifying digital content for eDiscovery
KR102164425B1 (en) * 2013-07-24 2020-10-13 마벨 월드 트레이드 리미티드 Key rotation for a memory controller
JP2015052853A (en) * 2013-09-05 2015-03-19 富士通株式会社 Storage controller, storage control method, and program
US9729410B2 (en) 2013-10-24 2017-08-08 Jeffrey T Eschbach Method and system for capturing web content from a web server
US20150193259A1 (en) * 2014-01-03 2015-07-09 Advanced Micro Devices, Inc. Boosting the operating point of a processing device for new user activities
US10970297B2 (en) 2014-04-07 2021-04-06 Heureka, Inc. Remote processing of memory and files residing on endpoint computing devices from a centralized device
US20150378622A1 (en) * 2014-06-30 2015-12-31 Hewlett-Packard Development Company, L.P. Management of data operations
US10346550B1 (en) 2014-08-28 2019-07-09 X1 Discovery, Inc. Methods and systems for searching and indexing virtual environments
JP2016100731A (en) * 2014-11-20 2016-05-30 キヤノン株式会社 Information processing apparatus, control method thereof, and program
US10158722B2 (en) 2015-07-31 2018-12-18 Jeffrey T Eschbach Method and systems for the scheduled capture of web content from web servers as sets of images
US10447761B2 (en) 2015-07-31 2019-10-15 Page Vault Inc. Method and system for capturing web content from a web server as a set of images
US10067888B1 (en) * 2015-09-30 2018-09-04 EMC IP Holding Company LLC I/O optimization with track splitting
EP3369192B1 (en) * 2015-10-27 2021-05-19 BlackBerry Limited Monitoring resource access
US10846469B2 (en) * 2017-03-07 2020-11-24 Microsoft Technology Licensing, Llc Dynamically registered functions for calculations engines
CN110294372B (en) * 2018-03-23 2023-02-28 奥的斯电梯公司 Wireless signal device, elevator service request system and method
US11074078B2 (en) * 2018-05-07 2021-07-27 Micron Technology, Inc. Adjustment of load access size by a multi-threaded, self-scheduling processor to manage network congestion

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6085193A (en) * 1997-09-29 2000-07-04 International Business Machines Corporation Method and system for dynamically prefetching information via a server hierarchy
US20030084096A1 (en) * 2001-10-31 2003-05-01 Bryan Starbuck Computer system with file association and application retrieval

Family Cites Families (82)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4466065A (en) * 1982-05-17 1984-08-14 International Business Machines Corporation Queuing capability in a foreground task
US5111398A (en) * 1988-11-21 1992-05-05 Xerox Corporation Processing natural language text using autonomous punctuational structure
JPH03163623A (en) * 1989-06-23 1991-07-15 Articulate Syst Inc Voice control computor interface
JPH04308961A (en) * 1991-01-18 1992-10-30 Ncr Corp Means and apparatus for notifying state of synchronous locking of occupied process
JP2552071B2 (en) * 1992-03-31 1996-11-06 インターナショナル・ビジネス・マシーンズ・コーポレイション Method and system for simultaneously presenting multiple windows supported by different graphic user interfaces
US5692173A (en) * 1994-12-13 1997-11-25 Microsoft Corporation Method and system for combining prefix and first character searching of a list
US5828879A (en) * 1994-12-22 1998-10-27 Fore Systems, Inc. Method and a scheduler for controlling when a server provides service to an entity
US5902352A (en) * 1995-03-06 1999-05-11 Intel Corporation Method and apparatus for task scheduling across multiple execution sessions
US6219754B1 (en) * 1995-06-07 2001-04-17 Advanced Micro Devices Inc. Processor with decompressed video bus
US5907837A (en) * 1995-07-17 1999-05-25 Microsoft Corporation Information retrieval system in an on-line network including separate content and layout of published titles
US5812844A (en) * 1995-12-07 1998-09-22 Microsoft Corporation Method and system for scheduling the execution of threads using optional time-specific scheduling constraints
US5754776A (en) * 1995-12-28 1998-05-19 Intel Corporation Re-prioritizing background data transfers in multipoint conferencing
US5721897A (en) * 1996-04-09 1998-02-24 Rubinstein; Seymour I. Browse by prompted keyword phrases with an improved user interface
US5920854A (en) * 1996-08-14 1999-07-06 Infoseek Corporation Real-time document collection search engine with phrase indexing
US6223201B1 (en) * 1996-08-27 2001-04-24 International Business Machines Corporation Data processing system and method of task management within a self-managing application
US5832208A (en) * 1996-09-05 1998-11-03 Cheyenne Software International Sales Corp. Anti-virus agent for use with databases and mail servers
US5953536A (en) * 1996-09-30 1999-09-14 Intel Corporation Software-implemented tool for monitoring power management in a computer system
US6223204B1 (en) * 1996-12-18 2001-04-24 Sun Microsystems, Inc. User level adaptive thread blocking
US5854897A (en) * 1996-12-27 1998-12-29 Quantum Systems, Inc. Network communications marketing system
US6112243A (en) * 1996-12-30 2000-08-29 Intel Corporation Method and apparatus for allocating tasks to remote networked processors
US6317774B1 (en) * 1997-01-09 2001-11-13 Microsoft Corporation Providing predictable scheduling of programs using a repeating precomputed schedule
US5941944A (en) * 1997-03-03 1999-08-24 Microsoft Corporation Method for providing a substitute for a requested inaccessible object by identifying substantially similar objects using weights corresponding to object features
US6353857B2 (en) * 1997-03-31 2002-03-05 Intel Corporation Controllerless modem
US6097390A (en) * 1997-04-04 2000-08-01 International Business Machines Corporation Progress-indicating mouse pointer
US5842208A (en) * 1997-04-09 1998-11-24 International Business Machines Corporation High performance recover/build index system by unloading database files in parallel
US6009452A (en) * 1997-05-02 1999-12-28 Microsoft Corporation Apparatus and methods for optimally using available computer resources for task execution during idle-time based on probabilistic assessment of future task instances
US5784616A (en) * 1997-05-02 1998-07-21 Microsoft Corporation Apparatus and methods for optimally using available computer resources for task execution during idle-time for future task instances exhibiting incremental value with computation
US5995997A (en) * 1997-05-02 1999-11-30 Microsoft Corporation Apparatus and methods for optimally allocating currently available computer resources to future task instances versus continued execution of current task instances
US6014681A (en) * 1997-07-15 2000-01-11 Microsoft Corporation Method for saving a document using a background save thread
US6385638B1 (en) * 1997-09-04 2002-05-07 Equator Technologies, Inc. Processor resource distributor and method
US6002409A (en) * 1997-10-29 1999-12-14 Cirrus Logic, Inc. Arbitration for shared graphics processing resources
US6092163A (en) * 1998-12-04 2000-07-18 W. Quinn Associates, Inc. Pageable filter driver for prospective implementation of disk space quotas
US6243736B1 (en) * 1998-12-17 2001-06-05 Agere Systems Guardian Corp. Context controller having status-based background functional task resource allocation capability and processor employing the same
US6260150B1 (en) * 1998-03-10 2001-07-10 Agere Systems Guardian Corp. Foreground and background context controller setting processor to power saving mode when all contexts are inactive
US6986141B1 (en) * 1998-03-10 2006-01-10 Agere Systems Inc. Context controller having instruction-based time slice task switching capability and processor employing the same
US6005575A (en) * 1998-03-23 1999-12-21 Microsoft Corporation Foreground window determination through process and thread initialization
US6112172A (en) * 1998-03-31 2000-08-29 Dragon Systems, Inc. Interactive searching
JPH11316744A (en) * 1998-05-01 1999-11-16 Sony Corp Parallel processor and operation processing method
US6035325A (en) * 1998-05-13 2000-03-07 International Business Machines Corporation Retrieval, saving and printing in a computer network system environment
US6073133A (en) * 1998-05-15 2000-06-06 Micron Electronics Inc. Electronic mail attachment verifier
US6411982B2 (en) * 1998-05-28 2002-06-25 Hewlett-Packard Company Thread based governor for time scheduled process execution
DE69831857T2 (en) * 1998-06-10 2006-06-14 Sun Microsystems Inc Method and device for scheduling processes for resource allocation
US6434589B1 (en) * 1998-06-19 2002-08-13 Tellabs Operations, Inc. Telecommunications job scheduling
US6330567B1 (en) * 1998-08-13 2001-12-11 Tornado Technologies Co., Ltd Searching system for searching files stored in a hard disk of a personal computer
US6341303B1 (en) * 1998-08-28 2002-01-22 Oracle Corporation System and method for scheduling a resource according to a preconfigured plan
US6385708B1 (en) * 1998-11-16 2002-05-07 Infineon Technologies Ag Using a timing-look-up-table and page timers to determine the time between two consecutive memory accesses
US6542921B1 (en) * 1999-07-08 2003-04-01 Intel Corporation Method and apparatus for controlling the processing priority between multiple threads in a multithreaded processor
US6873982B1 (en) 1999-07-16 2005-03-29 International Business Machines Corporation Ordering of database search results based on user feedback
US6834386B1 (en) * 1999-07-16 2004-12-21 Microsoft Corporation Method and system for regulating background tasks using performance measurements
US6640244B1 (en) * 1999-08-31 2003-10-28 Accenture Llp Request batcher in a transaction services patterns environment
US6862713B1 (en) * 1999-08-31 2005-03-01 International Business Machines Corporation Interactive process for recognition and evaluation of a partial search query and display of interactive results
US6415372B1 (en) * 1999-09-15 2002-07-02 Emc Coropration Rolling back storage subsystem reconfigurations
US6493741B1 (en) * 1999-10-01 2002-12-10 Compaq Information Technologies Group, L.P. Method and apparatus to quiesce a portion of a simultaneous multithreaded central processing unit
US6651081B1 (en) * 1999-11-29 2003-11-18 Xerox Corporation Method and apparatus for processing a high priority resource request in a system using a set of shared resources
US6496925B1 (en) * 1999-12-09 2002-12-17 Intel Corporation Method and apparatus for processing an event occurrence within a multithreaded processor
US6601153B1 (en) * 1999-12-31 2003-07-29 Unisys Corporation Method and apparatus for increasing computer performance through asynchronous memory block initialization
US6847959B1 (en) 2000-01-05 2005-01-25 Apple Computer, Inc. Universal interface for retrieval of information in a computer system
US6615237B1 (en) * 2000-02-04 2003-09-02 Microsoft Corporation Automatic searching for data in a network
US6757897B1 (en) * 2000-02-29 2004-06-29 Cisco Technology, Inc. Apparatus and methods for scheduling and performing tasks
US6957432B2 (en) * 2000-03-21 2005-10-18 Microsoft Corporation Real-time scheduler
JP2001318948A (en) * 2000-05-09 2001-11-16 Hitachi Ltd Method and device for retrieving document and medium having processing program for the method stored thereon
US6785889B1 (en) * 2000-06-15 2004-08-31 Aurema, Inc. System and method for scheduling bandwidth resources using a Kalman estimator with active feedback
US6563913B1 (en) * 2000-08-21 2003-05-13 Koninklijke Philips Electronics N.V. Selective sending of portions of electronic content
US20020052909A1 (en) * 2000-08-24 2002-05-02 Glen Seeds Efficient assignment of processing resources in a fair queuing system
US20020055981A1 (en) * 2000-08-31 2002-05-09 Frederic Spaey System and method for remotely browsing structured data
US20020152292A1 (en) * 2001-01-09 2002-10-17 Ricoh Company Limited Method and system of remote support of device using e-mail
US20020165707A1 (en) * 2001-02-26 2002-11-07 Call Charles G. Methods and apparatus for storing and processing natural language text data as a sequence of fixed length integers
JP3857530B2 (en) * 2001-03-09 2006-12-13 インターナショナル・ビジネス・マシーンズ・コーポレーション Job execution control device, method, and program
US20020184317A1 (en) * 2001-05-29 2002-12-05 Sun Microsystems, Inc. System and method for searching, retrieving and displaying data from an email storage location
US20020184290A1 (en) * 2001-05-31 2002-12-05 International Business Machines Corporation Run queue optimization with hardware multithreading for affinity
US6988124B2 (en) * 2001-06-06 2006-01-17 Microsoft Corporation Locating potentially identical objects across multiple computers based on stochastic partitioning of workload
US6711565B1 (en) * 2001-06-18 2004-03-23 Siebel Systems, Inc. Method, apparatus, and system for previewing search results
US20030130993A1 (en) * 2001-08-08 2003-07-10 Quiver, Inc. Document categorization engine
US20030061260A1 (en) * 2001-09-25 2003-03-27 Timesys Corporation Resource reservation and priority management
US20030084087A1 (en) * 2001-10-31 2003-05-01 Microsoft Corporation Computer system with physical presence detector to optimize computer task scheduling
US7392390B2 (en) * 2001-12-12 2008-06-24 Valve Corporation Method and system for binding kerberos-style authenticators to single clients
AU2003201491A1 (en) * 2002-01-08 2003-07-24 Sap Aktiengesellschaft Enhanced email management system
US7506130B2 (en) * 2002-05-22 2009-03-17 Hewlett-Packard Development Company, L.P. Mirrored computer memory on split bus
US20030229898A1 (en) * 2002-06-05 2003-12-11 Babu Suresh P. Multiple on-demand media vendor integration
US7415677B2 (en) * 2002-06-05 2008-08-19 Sap Aktiengesellschaft Temporary communication areas for a computer user interface
US6920632B2 (en) * 2002-08-23 2005-07-19 Xyron Corporation Dynamic multilevel task management method and apparatus
US20050256846A1 (en) * 2004-05-12 2005-11-17 Microsoft Corporation Interactive client-server data search

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6085193A (en) * 1997-09-29 2000-07-04 International Business Machines Corporation Method and system for dynamically prefetching information via a server hierarchy
US20030084096A1 (en) * 2001-10-31 2003-05-01 Bryan Starbuck Computer system with file association and application retrieval

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2478336A (en) * 2010-03-04 2011-09-07 Nec Corp Bandwidth control system

Also Published As

Publication number Publication date
WO2005060575A3 (en) 2007-12-13
US7945914B2 (en) 2011-05-17
US20050149932A1 (en) 2005-07-07

Similar Documents

Publication Publication Date Title
US7945914B2 (en) Methods and systems for performing operations in response to detecting a computer idle condition
US5185861A (en) Cache affinity scheduler
US4947319A (en) Arbitral dynamic cache using processor storage
US20090031314A1 (en) Fairness in memory systems
EP1766518B1 (en) Adaptive algorithm for selecting a virtualization algorithm in virtual machine environments
KR102236419B1 (en) Method, apparatus, device and storage medium for managing access request
Yu et al. NCQ vs. I/O scheduler: Preventing unexpected misbehaviors
JPH11282695A (en) Method and device for controlling number of servers in multisystem cluster
US8516226B1 (en) Executing a prefetching policy responsive to entry into an execution phase of an application
EP0267464B1 (en) Method for controlling processor access to input/output devices
US6654837B1 (en) Dynamic priority external transaction system
US20050015764A1 (en) Method, system, and program for handling device interrupts in a multi-processor environment
US7761873B2 (en) User-space resource management
EP1555614A2 (en) Method and apparatus for determining processor utilization
CN109117279B (en) Electronic device, method for limiting inter-process communication thereof and storage medium
US7870541B1 (en) Context tracing for software with a frame pointer and a stack pointer and with a stack pointer but without a frame pointer
KR20170047468A (en) Memory module monitoring memory operation and power management method thereof
US20040205753A1 (en) Timing ring mechanism
US20040128654A1 (en) Method and apparatus for measuring variation in thread wait time
Abe et al. Enforcing appropriate process execution for exploiting idle resources from outside operating systems
EP1659493A1 (en) Replacing idle process when doing fast messaging
JP3095831B2 (en) Computer operation method and computer
Furukawa et al. Implementation and evaluation for sophisticated periodic execution control in embedded systems
Krueger et al. Stealth: A liberal approach to distributed scheduling for networks of workstations
JP3061001B2 (en) Memory allocation method in computer system

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A2

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BW BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE EG ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NA NI NO NZ OM PG PH PL PT RO RU SC SD SE SG SK SL SY TJ TM TN TR TT TZ UA UG US UZ VC VN YU ZA ZM ZW

AL Designated countries for regional patents

Kind code of ref document: A2

Designated state(s): BW GH GM KE LS MW MZ NA SD SL SZ TZ UG ZM ZW AM AZ BY KG KZ MD RU TJ TM AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IS IT LT LU MC NL PL PT RO SE SI SK TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase