Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
SYSTEM AND METHOD FOR PROCESSING USER REQUESTS BY A PLURALITY OF NETWORKED COMPUTING DEVICES
Document Type and Number:
WIPO Patent Application WO/2021/062512
Kind Code:
A1
Abstract:
A system and method for processing user requests of a user device by a plurality of networked computing devices is provided. The method involves: (a) receiving a first user request by a first computing device; (b) determining whether the first computing device is optimally selected for processing the user requests; (c) if not optimally selected, selecting from among the networked computing devices an optimal device having an optimal response time; and (d) directing subsequent user requests from the user device to the optimal device. A system and method for maintaining a computing process executable by a computing device is provided. The method involves: (a) receiving by a maintenance device a status indication associated with the computing process; (b) determining one or more proposed actions associated with the status indication; (c) selecting a maintenance action from among the proposed actions; and (d) executing the maintenance action at the computing device.

Inventors:
BAYTER ORLANDO (CA)
JACOB LAURENT (CA)
NANTEL GENEVIEVE (CA)
LOCK BRUCA (CA)
TRELLU GAETAN (CA)
BLANC PIERRE (CA)
ORTEGA FRANCISCO TOMAS (CA)
Application Number:
PCT/CA2019/051414
Publication Date:
April 08, 2021
Filing Date:
October 02, 2019
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
ORMUCO INC (CA)
International Classes:
G06F15/16; G02B27/01; G06F3/01; G06F9/445; G06F11/30; H04L12/24; H04L12/811; H04L29/02
Foreign References:
CN105430043A2016-03-23
CN109639833A2019-04-16
CN108874525A2018-11-23
US20180356151A12018-12-13
US20160337262A12016-11-17
Other References:
JIE LIN ET AL.: "A Survey on Internet of Things: Architecture, Enabling Technologies, Security and Privacy, and Applications", IEEE INTERNET OF THINGS JOURNAL, vol. 4, no. 5, October 2017 (2017-10-01), pages 1125 - 1142, XP055811613
Attorney, Agent or Firm:
NEXUS LAW GROUP LLP (CA)
Download PDF:
Claims:
What is claimed is:

1 . A method of processing a plurality of user requests of a user device by a plurality of networked computing devices, the method comprising:

(a) receiving a first user request of the plurality of user requests by a first computing device of the plurality of networked computing devices;

(b) determining by the plurality of networked computing devices whether said first computing device is optimally selected among the plurality of networked computing devices for processing the plurality of user requests;

(c) if the first computing device is not optimally selected, then selecting by the plurality of networked computing devices an optimal device having associated therewith an optimal response time from among the plurality of networked computing devices; and

(d) directing subsequent requests of the plurality of user requests from said user device to said optimal device.

2. The method of claim 1 wherein step (a) comprises receiving said first user request from said user device comprising a removably attachable processing circuit operable to control a user interface of said user device and operable to control the transmission of said first user request from said user device, said user device not processing the plurality of user requests.

3. The method of claim 1 wherein step (a) comprises receiving said first user request from said user device operable to create a virtuality interface.

4. The method of claim 3 wherein step (a) comprises producing a virtual- reality display by said user device, said user device being a headset, and comprises detecting, by said headset, hand motion of a user of said user device.

5. The method of claim 4 wherein step (a) further comprises detecting by said headset a head position of said headset and scrolling said virtual- reality display in response to said head position.

6. The method of claim 5 wherein step (a) further comprises detecting by said headset an eye position of the user.

7. The method of claim 1 further comprising processing said first user request by said first computing device.

8. The method of claim 7 wherein step (b) is initiated by the plurality of networked computing devices while said first computing device is processing said first user request.

9. The method of claim 8 wherein step (b) comprises determining whether said first computing device has been optimally selected within a preceding pre-determ ined period of time.

10. The method of claim 1 wherein step (c) comprises determining a plurality of network transit delays associated with said user device and the plurality of networked computing devices, respectively.

11. The method of claim 10 wherein step (c) comprises, for each said network transit delay associated with said user device and each said networked computing device, transmitting a ping-type data packet from said each networked computing device toward said user device along a network route therebetween.

12. The method of claim 11 wherein step (c) comprises determining a plurality of bandwidths associated with the user device and the plurality of networked computing devices, respectively.

13. The method of claim 12 wherein step (c) comprises, for each said bandwidth associated with the user device and said each networked computing device, determining the smallest of a plurality of bandwidth specifications associated with one or more network routing nodes defining said each network route.

14. The method of claim 12 wherein step (c) comprises determining a plurality of response times associated with said first user request and the plurality of networked computing devices in response to said plurality of network transit delays and said plurality of bandwidths, respectively.

15. The method of claim 14 wherein step (c) comprises selecting said optimal device to be said networked computing device having a lowest of said response times among a subset of said networked computing devices meeting one or more user-configurable criteria.

16. The method of claim 1 wherein step (d) comprises, if said optimal device is not in condition to respond to said first user request, then launching one or more computer application programs at said optimal device such that said optimal device becomes in condition to respond to said first user request, and wherein step (d) further comprises updating a geographical domain name server database associated with the plurality of networked computing devices.

17. The method of claim 16 wherein step (d) comprises determining an Internet Protocol range associated with the user device and updating said geographical domain name server database in respect of all Internet Protocol addresses of said Internet Protocol range.

18. The method of claim 7 wherein processing said first user request by said first computing device comprises executing a computing process, and further comprising maintaining said computing process by a maintenance device of the plurality of networked computing devices.

19. A method of maintaining a computing process executable by a computing device of a plurality of networked computing devices, the method comprising:

(e) receiving, from the computing device by a maintenance device of the plurality of networked computing devices, a status indication associated with the computing process;

(f) determining by said maintenance device one or more proposed actions associated with said status indication;

(g) selecting by said maintenance device a maintenance action from among said one or more proposed actions; and (h) executing said maintenance action at the computing device.

20. The method of claim 19 wherein step (e) comprises receiving said status indication selected from the group consisting of a system log and a performance metric.

21. The method of claim 20 wherein step (e) comprises associating said status indication with a status type.

22. The method of claim 19 wherein step (f) comprises retrieving, by said maintenance device from a known-action database of said maintenance device, zero or more known actions corresponding to said status indication, and selecting said one or more proposed actions to include said zero or more known actions.

23. The method of claim 22 wherein step (f) further comprises querying, by said maintenance device, respective databases of a plurality of said maintenance devices to retrieve zero or more shareable actions associated with said status indication, and selecting said one or more proposed actions to include said zero or more shareable actions.

24. The method of claim 23 wherein step (f) further comprises conducting by said maintenance device a web search to produce zero or more possible actions associated with said status indication, and selecting said one or more proposed actions to include said zero or more possible actions.

25. The method of claim 22 wherein step (g) comprises, if said one or more proposed actions consist of one said known action, selecting said maintenance action to be said one known action.

26. The method of any one of claims 22 to 24 wherein step (g) comprises emulating, by said maintenance device, said computing process to produce an emulated status indication.

27. The method of claim 26 wherein step (g) comprises emulating each said proposed action and said computing process to produce a confidence indication associated with said each proposed action, and selecting said maintenance action to be a highest-confidence action of said proposed actions.

28. The method of claim 19 wherein step (h) comprises modifying said computing process by executing a patch-type program change at said computing device.

29. The method of claim 19 wherein step (h) comprises modifying said computing process by use of an application program interface.

Description:
SYSTEM AND METHOD FOR PROCESSING USER REQUESTS BY A PLURALITY OF NETWORKED COMPUTING DEVICES

BACKGROUND OF THE INVENTION

1. Field of Invention

This invention relates to networks of edge computing devices and, in particular, to a system and method for processing user requests by a plurality of networked computing devices.

2. Description of Related Art

Canadian patent No. 2,929,825 to Bayter et al. and United States patent application publication No. 2016/0337262 to Bayter et al., both entitled METHOD OF AND SYSTEM FOR MANAGING A FEDERATION OF CLOUD COMPUTING RESOURCES, each disclose a cloud federation management system hosting an identity provider module that is operable to establish connections between user devices and cloud management systems that are associated with cloud computing resources. The cloud federation management system further hosts a collector module that is operable to monitor computing processes being executed by the cloud computing resources, respectively. The cloud federation management system is operable to generate cloud federation usage data indicative of a usage of the federation of cloud computing resources by the user.

The cloud federation management system of Bayter et al. results in a more efficient management of a federation of cloud computing resources while providing a desirable flexibility to the user. Such flexibility results from permitting the user to select one or more cloud computing resources from the federation of cloud computing resources on an as-needed/as-requested basis, while accurately monitoring the actual usage of the cloud computing resources.

In contrast to cloud computing, edge computing is a distributed computing paradigm which brings computer data storage and computational processing closer to the location where it is needed.

Previously, however, effective techniques for implementing edge computing were not fully developed.

An object of the invention is to address this shortcoming of edge computing.

SUMMARY

The above shortcomings may be addressed by providing, in accordance with one aspect of the invention a method of processing a plurality of user requests of a user device by a plurality of networked computing devices. The method involves: (a) receiving a first user request of the plurality of user requests by a first computing device of the plurality of networked computing devices; (b) determining by the plurality of networked computing devices whether the first computing device is optimally selected among the plurality of networked computing devices for processing the plurality of user requests; (c) if the first computing device is not optimally selected, then selecting by the plurality of networked computing devices an optimal device having associated therewith an optimal response time from among the plurality of networked computing devices; and (d) directing subsequent requests of the plurality of user requests from the user device to the optimal device.

Step (a) may involve receiving the first user request from the user device comprising a removably attachable processing circuit operable to control a user interface of the user device and operable to control the transmission of the first user request from the user device, the user device not processing the plurality of user requests. Step (a) may involve receiving the first user request from the user device operable to create a virtuality interface. Step (a) may involve producing a virtual-reality display by the user device, the user device being a headset, and comprises detecting, by the headset, hand motion of a user of the user device. Step (a) may involve detecting hand motion of a user by a camera of the headset. Step (a) may involve detecting by the headset a head position of the headset and scrolling the virtual-reality display in response to the head position. Step (a) may involve detecting by the headset an eye position of the user.

The method may further involve processing the first user request by the first computing device. Step (b) may be initiated by the plurality of networked computing devices while the first computing device is processing the first user request. Step (b) may involve determining whether the first computing device has been optimally selected within a preceding pre-determined period of time. Step (c) may involve determining a plurality of network transit delays associated with the user device and the plurality of networked computing devices, respectively. Step (c) may involve, for each the network transit delay associated with the user device and each the networked computing device, transmitting a ping-type data packet from each such networked computing device toward the user device along a network route therebetween. Step (c) may involve determining a plurality of bandwidths associated with the user device and the plurality of networked computing devices, respectively. Step (c) may involve, for each such bandwidth associated with the user device and each such networked computing device, determining the smallest of a plurality of bandwidth specifications associated with one or more network routing nodes defining each such network route. Step (c) may involve determining a plurality of response times associated with the first user request and the plurality of networked computing devices in response to the plurality of network transit delays and the plurality of bandwidths, respectively. Step (c) may involve selecting the optimal device to be the networked computing device having a lowest of the response times among a subset of the networked computing devices meeting one or more user-configurable criteria. Step (d) may involve, if the optimal device is not in condition to respond to the first user request, then launching one or more computer application programs at the optimal device such that the optimal device becomes in condition to respond to the first user request. Step (d) may further involve updating a geographical domain name server database associated with the plurality of networked computing devices. Step (d) may involve updating a zone file associated with the plurality of networked computing devices. Step (d) may involve determining an Internet Protocol range associated with the user device and updating the geographical domain name server database in respect of all Internet Protocol addresses of the Internet Protocol range. Processing the first user request by the first computing device may involve executing a computing process. The method may further involve maintaining the computing process by a maintenance device of the plurality of networked computing devices.

In accordance with another aspect of the invention, there is provided a method of maintaining a computing process executable by a computing device of a plurality of networked computing devices. The method involves: (e) receiving, from the computing device by a maintenance device of the plurality of networked computing devices, a status indication associated with the computing process; (f) determining by the maintenance device one or more proposed actions associated with the status indication; (g) selecting by the maintenance device a maintenance action from among the one or more proposed actions; and (h) executing the maintenance action at the computing device.

Step (e) may involve receiving the status indication selected from the group consisting of a system log and a performance metric. Step (e) may involve associating the status indication with a status type. Step (f) may involve retrieving, by the maintenance device from a known-action database of the maintenance device, zero or more known actions corresponding to the status indication, and selecting the one or more proposed actions to include the zero or more known actions. Step (f) may involve querying, by the maintenance device, respective databases of a plurality of the maintenance devices to retrieve zero or more shareable actions associated with the status indication, and selecting the one or more proposed actions to include the zero or more shareable actions.

Step (f) may involve conducting by the maintenance device a web search to produce zero or more possible actions associated with the status indication, and selecting the one or more proposed actions to include the zero or more possible actions. Step (f) may involve generating by the maintenance device a web query associated with the status indication. Step (g) may involve, if the one or more proposed actions consist of one the known action, selecting the maintenance action to be the one known action. Step (g) may involve emulating, by the maintenance device, the computing process to produce an emulated status indication. Step (g) may involve emulating each the proposed action and the computing process to produce a confidence indication associated with each such proposed action, and selecting the maintenance action to be a highest- confidence action of the proposed actions. Step (h) may involve modifying the computing process by executing a patch-type program change at the computing device. Step (h) may involve modifying the computing process by use of an application program interface.

In accordance with another aspect of the invention, there is provided a method of maintaining a computing process executable by a computing device. The method involves: (a) receiving by a maintenance device a status indication associated with the computing process; (b) determining by the maintenance device one or more proposed actions associated with the status indication; (c) selecting by the maintenance device a maintenance action from among the one or more proposed actions; and (d) executing the maintenance action at the computing device. Step (a) may involve receiving the status indication wherein the computing process has associated therewith a plurality of the status indications, at least one of the status indications indicating an error condition.

In accordance with another aspect of the invention, there is provided a system for processing a plurality of user requests of a user device by a plurality of networked computing devices, the system comprising: (a) receiving means for receiving a first user request of the plurality of user requests; (b) assessment means for determining whether the receiving means is optimally selected for processing the plurality of user requests; (c) selection means for selecting, if the receiving means is not optimally selected, optimal processing means having associated therewith an optimal response time; and (d) redirection means for directing subsequent requests of the plurality of user requests from the user device to the optimal processing means.

In accordance with another aspect of the invention, there is provided a system for maintaining a computing process executable by a computing device of a plurality of networked computing devices, the system comprising: (e) receiving means for receiving from the computing device a status indication associated with the computing process; (f) proposing means for determining one or more proposed actions associated with the status indication; (g) selection means for selecting a maintenance action from among the one or more proposed actions; and (h) maintaining means for executing the maintenance action at the computing device.

The foregoing summary is illustrative only and is not intended to be in any way limiting. Other aspects and features of the present invention will become apparent to those of ordinary skill in the art upon review of the following description of embodiments of the invention in conjunction with the accompanying figures and claims. BRIEF DESCRIPTION OF THE DRAWINGS

In drawings which illustrate by way of example only embodiments of the invention: Figure 1 is a block diagram of a system for processing a plurality of user requests of a user device by a plurality of networked computing devices according to a first embodiment of the invention;

Figure 2 is a perspective view of the user device shown in Figure 1 , showing a headset having a hand-motion sensor; Figure 3 is a flow diagram of a method of processing the plurality of user requests by the system shown in Figure 1 , showing the step of selecting an optimal device;

Figure 4 is timeline chart showing tasks performed to process the plurality of user requests according to the method shown in Figure 3, showing a geo-DNS update;

Figure 5 is a flow diagram of a method of operation of the headset shown in Figure 2, showing the step of detecting hand motion as user input;

Figure 6 is a flow diagram of a method of performing the step of determining whether the first computing device is optimal according to the method shown in Figure 3, showing the step of determining whether the first computing device has been recently listed as optimal;

Figure 7 is a flow diagram of a method of performing the step of selecting an optimal device according to the method shown in Figure 3, showing the step of determining a response time for each computing device in response to network transit delays and bandwidths;

Figure 8 is a flow diagram of a method of performing the step of directing subsequent user requests to the optimal device according to the method shown in Figure 3, showing the step of updating geo-DNS records;

Figure 9 is a block diagram of a system for maintaining a computing process executable by a computing device of a plurality of networked computing devices according to a second embodiment of the invention;

Figure 10 is a flow diagram of a method of maintaining the computing process by the system shown in Figure 9, showing the step of executing a maintenance action at the computing device;

Figure 11 is a flow diagram of a method of performing the step of receiving a status indication associated with the computing process according to the method shown in Figure 10, showing the step of identifying a status type;

Figure 12 is a flow diagram of a first portion of a method of performing the step of determining proposed action(s) associated with the status indication shown in Figure 10, showing the steps of retrieving known actions, shareable actions, and possible actions, respectively;

Figure 13 is a flow diagram of a second portion of the method of performing the step of determining proposed action(s) associated with the status indication shown in Figure 10, showing the step of selecting the maintenance action to be the highest-confidence proposed action; and

Figure 14 is a flow diagram of a method of performing the step of executing the maintenance action at the computing device shown in Figure 10, showing the steps of executing a patch and calling an application program interface. DETAILED DESCRIPTION

A system for processing a plurality of user requests of a user device by a plurality of networked computing devices includes: (a) receiving means for receiving a first user request of the plurality of user requests; (b) means for determining whether said receiving means is optimally selected for processing the plurality of user requests; (c) means for selecting, if said receiving means is not optimally selected, optimal processing means having associated therewith an optimal response time; and (d) means for directing subsequent requests of the plurality of user requests from said user device to said optimal processing means.

Additionally or alternatively, the system or a separate system for maintaining a computing process executable by a computing device of a plurality of networked computing devices includes: (e) means for receiving from the computing device a status indication associated with the computing process; means for determining one or more proposed actions associated with said status indication; means for selecting a maintenance action from among said one or more proposed actions; and means for executing said maintenance action at the computing device.

Referring to Figure 1 , the system according to a first embodiment of the invention is shown generally at 10. The system 10 includes a plurality of networked computing devices 12.

Each networked computing device 12 is typically configured as a server computer, and in general may be any computing device such as all or part of a microcomputer, mobile device, desktop computer, minicomputer, communication gateway, communication tower controller, mini-tower controller, mainframe computer, data centre, or any combination thereof for example. In variations, multiple numbers of networked computing devices 12 may form a single data centre accessible by other networked computing devices 12. Each networked computing device 12 includes a processing circuit, such as the CPU (Central Processing Unit) 14 shown in Figure 1; and a memory circuit, such as the memory unit 16 shown in Figure 1.

In various embodiments, the CPU 14 may be implemented as one or more circuit units, digital signal processor, embedded processor, etc., and any combination thereof operating independently or in parallel, including possibly operating redundantly. The CPU 14 may include circuitry for storing memory, such as digital data, and may comprise the memory unit 16 or be in wired or wireless communication with the memory unit 16, for example.

The memory unit 16 is operable to store digital representations of data or other information, such as status indications, measurement results, control information, program code for directing operations of the CPU 14, or any combination thereof for example. The memory unit 16 may be operable to store digital representations as volatile memory, non-volatile memory, dynamic memory, etc. or any combination thereof for example. In variations of embodiments, some or all of the memory units 16 include or constitute a database for storing data and relationships between data.

Each networked computing device 12 also includes a communications module 18 for effecting networked communications with other networked computing devices 12 via the communications link 20 shown in Figure 1. In the first embodiment shown in Figure 1, the networked computing devices 12 are operable to communicate via the Internet 22, including accessing and providing cloud-based services. In general, the networked computing devices 12 are operable to communicate with each other via the Internet 22.

While the communication link 20 is shown in Figure 1 as wired connections, in general any wired or wireless connection may be employed, including a copper wire link, a coaxial cable link, a fiber-optic transmission link, a radio link, a cellular telephone link, a satellite link, a line-of-sight free optical link, and any combination thereof, for example. As part of or separately from the communications module 18, each networked computing device 12 of the first embodiment is operable to effect wireless communications via a wireless communications module 24.

In the first embodiment, the networked computing devices 12 are operable to process user requests generated by one or more user devices 26. A user request can be any request for a computing service task, including requests for streaming of data (e.g. streaming audio, video or computer game data), requests to retrieve and display a web page (e.g. selected by invoking a hyperlink), requests to process data (e.g. data analysis), requests for provisioning a virtual machine, requests for software as a service (SaaS), requests for platform as a service (PaaS), requests for infrastructure as a service (laaS), other computing service tasks, or any combination thereof.

In the first embodiment, the user device 26 can be any communications device operable to send and receive communications, including telephone communications via a telephone network (not shown), data communications such as machine-to-machine communications, other wireless or wired communications, and any combination thereof for example.

The user device 26 typically is or includes a mobile telephone having a wireless communications module 28, but in variations may be any general purpose computer device, desktop computer, laptop computer, notebook computer, tablet computer, Internet-of-Things (loT) device, personal communication device, two-way radio, personal digital assistant, wearable technology device, automobile or other transportation vehicle (e.g. having installed therein communications equipment), similar computational device, or any combination thereof for example.

Communications between the system 10 and the user devices 26 may be conducted directly, such as via the direct wireless link 30 shown in Figure 1 , or indirectly, such as via a telecommunications network, LAN (local-area network), WAN (wide-area network), and/or a global communications network like the Internet 22 shown in Figure 1.

In the first embodiment, the networked computing devices 12 are configured for use within a 5G (certification mark) cellular network environment in which some or all of the networked computing devices 12 are 5G base stations and some or all of the user devices 26 are 5G-compatible mobile communications devices. In the first embodiment, the plurality of networked computing devices 12 typically provide Internet 22 access and telecommunications services to the user devices 26.

In some embodiments, the system 10 and the user devices 26 communicate with each other via the direct wireless link 30 by near-field wireless communications (e.g. Bluetooth(TM) standard communications, NFC (Near-Field Communications) standard communications, etc.). In variations, the system 10 and the user devices 26 are operable to communicate with each other via the Internet 22, and/or via an indirect link such as may be implemented using any suitable wired or wireless telephonic or other communications technology, for example.

Each user device 26 includes a processing circuit, such as the CPU (Central Processing Unit) 32 shown in Figure 1 ; and a memory circuit, such as the memory unit 34 shown in Figure 1.

In various embodiments, the CPU 32 of the user device 26 may be implemented as one or more circuit units, digital signal processor, embedded processor, etc., and any combination thereof operating independently or in parallel, including possibly operating redundantly. The CPU 32 may include circuitry for storing memory, such as digital data, and may comprise the memory unit 34 or be in wired or wireless communication with the memory unit 34, for example. The memory unit 34 of the user device 26 is operable to store digital representations of data or other information, such as status indications, measurement results, control information, program code for directing operations of the CPU 32, or any combination thereof for example. The memory unit 34 may be operable to store digital representations as volatile memory, non-volatile memory, dynamic memory, etc. or any combination thereof for example.

In the first embodiment, the CPU 32 and the memory unit 34 are removably detachable from the remainder of the user device 26. However, in some embodiments, the CPU 32 and the memory unit 34 are integral to the user device 26.

In embodiments of the user device 26 having a removably attachable processor card 36 containing the CPU 32 and the memory unit 34, the processor card 36 is powered by an electrical power source 38, which typically includes one or more batteries in the case of a mobile user device 26. Electrical power conditioning, if any, may be performed by the processor card 36, the electrical power source 38, or any combination thereof for example.

In the first embodiment, the processor card 36 is operable to control the operations of the wireless communications module 28. In some embodiments, the wireless communications module 28 of the user device 26 includes a wireless antenna and all processing of wireless signals is performed by the processor card 36. In general, any combination of the wireless communications module 28 and the processor card 36 may be employed to transmit, receive, and process communications of the user device 26.

In the first embodiment, the processor card 36 is operable to control the operations of a user interface 40. In general, the user interface 40 may be operable to accept any suitable form of user input, such as accepting physical keyboard input, soft keyboard input, touchscreen input, keypad input, freehand graphic input, mouse movement, trackball movement, trackpad pressure movement, tactile input, joystick control input, data glove input, voice commands, gesture or other visual commands, other forms of user input, and any combination thereof for example. Similarly, the user interface 40 may be operable to produce any suitable form of user output, such as visual display, holographic display, audio or other forms of sound, bone conduction audio, haptic feedback, kinesthetic communication, smell, other forms of user output, and any combination thereof for example.

Referring to Figure 2, the user device 26 in the first embodiment is operable to create a virtuality interface, such as a virtual-reality (VR) interface, augmented-reality (AR) interface, or any combination thereof. In the first embodiment, the virtuality interface is created by the user interface 40. In variations, such virtuality interface may be implemented via a head-mounted display, VR headset, VR goggles, AR goggles, AR glasses, or the like.

The user device 26 in some embodiments is the VR goggles 42 shown in Figure 2. In the embodiment of Figure 2, the VR goggles 42 include a pair of lenses 44 for producing respective images that give a user wearing the VR goggles 42 the illusion of depth by stereoscopy.

In the exemplary embodiment of Figure 2, the VR goggles 42 are operable to detect the head position of the user. In variations of embodiments, the VR goggles 42 may include a gyroscope, accelerometer, magnetometer, other sensor, or any combination thereof to detect the relative position of the VR goggles 42 and hence the user’s head position.

The VR goggles 42 are also operable in the embodiment of Figure 2 to scroll the appearance of the stereoscopic images in response to the user’s head position, such as in response to the sensed position of the VR goggles 42. In this manner, a user can rotate their head to view portions of a panoramic VR display being presented to the user by the VR goggles 42.

The VR goggles 42 in some embodiments include one or more sensors, which may be infrared sensors, motion sensors, other sensors, and/or the camera 46 shown in Figure 2, for capturing hand motion of the user, including in some embodiments capturing finger motion. By way of example in a business context, the VR goggles 42 are operable to display several word-processing documents relative to different head positions; sense the user’s head position to determine which document is actively being considered by the user; capture and visually process hand motion as user input; and manipulate the documents in response to hand motion. A user may sweep a hand across an area in front of the user’s body to indicate moving and/or closing of a document; bring two hands and/or fingers closer together or farther apart to indicate a change in a zoom setting associated with the display of an active document; move the fingers in a typing style to cause text to be typed into an active document; move a hand and/or finger in a suitable direction to cause the pressing of a VR button; perform other hand motions as user input; or any combination thereof for example.

By way of further use-case examples, the VR goggles 42 are operable to display one or more Web pages of a website accessible via the Internet 22; and to receive user input to select hyperlink(s) and URLs (Uniform Resource Locator) for example. Other use-cases and variations thereof are possible.

In general, any suitable techniques and sensing technology may be employed to detect hand motion as user input.

The VR goggles 42 in some embodiments include sensors, such as the eye-position sensors 48 shown in Figure 2, for detecting an eye position of the user. For example, the sensors 48 are operable in some embodiments to detect the position of each eye of the user. In some embodiments, an eye position of one eye only is detected and both eyes are assumed to have the same directional position. Conversely, the separate eye positions of each eye can be detected and an average eye position calculated as the mid-position between the two separately detected eye positions. Eye position of the user may be employed to advantageously assist the displaying of the stereoscopic images, such as by scrolling in response to the direction in which the user is looking. Additionally or alternatively, eye position may be employed as a form of user input, such as where looking at a VR-displayed icon invokes software features associated with that icon. The system 10 may be operable to permit a user to use deliberate eye blinking as a form of user input. The eye-position sensors 48 may be infrared sensors or other sensors of any suitable technology for detecting eye position. The VR goggles 42 in some embodiments also includes a microphone (not shown) to receive audio user input, such as voice commands.

Method of Processing User Requests

Referring to Figures 1 to 4, the memory unit 16 of each networked computing device 12 in accordance with the first embodiment of the invention contains blocks of code comprising computer executable instructions for directing the CPU 14 to perform computing processes as described herein. Additionally or alternatively, such blocks of code may form part of a computer program product comprising computer executable instructions embodied in a signal bearing medium, which may be a recordable computer readable medium or a signal transmission type medium, for example.

Different memory units 16 of different networked computing devices 12 may contain different blocks of code at different times. Typically, some core blocks of code are stored in each and every networked computing device 12. Various computing operations may be redundantly processed at different networked computing devices 12. In some embodiments, one or a small number of networked computing devices 12 are designated as management device(s) 12 for performing certain computing operations associated with the entire plurality of networked computing devices 12. Where stated herein that a given block of code is executed at a given networked computing device 12, it is understood that in general each and every networked computing device 12 is operable to execute such block of code but that advantageous efficiencies can in some circumstances be obtained by selecting particular networked computing devices 12 to execute certain blocks of code in such circumstances as described in more detail herein below. Referring to Figure 3, when electrical power is being supplied to the CPU 14 and the memory unit 16 of a first computing device 12 of the plurality of networked computing devices 12, the CPU 14 is directed to perform the steps of a method shown generally at 50. The method 50 begins by the CPU 14 executing the instructions of block 52 shown in Figure 3. Block 52 directs the CPU 14 to receive a first user request.

When the user device 26 is generating its user request, the user device 26 is located at some current geographical location, which may change from time to time, such as in the case of a pedestrian walking while using their mobile device or a communications-equipped automobile for example. In the first embodiment, the networked computing devices 12 are each located at fixed geographical locations, respectively. Flowever, in general, the locations of the networked computing devices 12 need not always be fixed. For example, the plurality of networked computing devices 12 may include telecommunications base stations, data centres, or other processing devices that are typically moved rarely if ever. The geographical separation between the user device 26 and the plurality of networked computing devices 12 result in communications network latency or time delays associated with the communications between the user device 26 and various networked computing devices 12.

Referring to Figure 4, the user device 26 generates its user request 54 at some time and it is transmitted to the first computing device 12. The first computing device 12 may be initially selected from among the plurality of networked computing devices 12 by default settings associated with the user device 26, for example, resulting in a measurable latency of communications between the user device 26 and the first computing device 12.

Referring to Figure 5, in the case of a VR user device 26 an exemplary method for directing the CPU 32 of the user device 26 to generate its user request 54 (Figure 4) is shown generally at 56. Method 56 begins execution at block 58, which directs the CPU 32 (Figure 1 ) to produce a VR display at the pair of lenses 44 (Figure 2).

Block 60 then directs the CPU 32 to detect hand motion of the user as user input. The user input detected may result in a requirement for the system 10 to perform a computer-based task (e.g. open, close, save, delete a document or Web page, etc.) within the context of computing services being provided to the user of the user device 26. In variations, the method 56 may also include executing block 62, which directs the CPU 32 to detect the user’s head position and scroll the VR display accordingly. In further variations, the method 56 may include executing block 64, which directs the CPU 32 to detect as user input the eye position of the user’s eye(s).

While Figure 5 shows the exemplary blocks 58 to 64 in a particular order, in general one or more of blocks 58 to 64 may be executed in any order and in any relation to each other. Different blocks in different orders may be executed at different times as circumstances vary for example.

Upon receiving the appropriate user input, the CPU 32 creates the user request 54 (Figure 4) for processing by the system 10 (Figure 1) and transmits the user request 54 to the first computing device 12.

Referring back to Figure 3, after block 52 has been executed, the CPU 14 of the first computing device 12 is then directed to execute block 66. In the first embodiment, block 66 directs the CPU 14 to begin processing the first user request 54. The processing of the first user request 54 may be performed by any suitable computational method, such as by techniques known to those skilled in the art.

Simultaneously or otherwise in parallel, block 68 directs the CPU 14 to determine whether the first computing device 12 is optimally selected among the plurality of networked computing devices 12 for processing user requests received from the user device 26. In general, any CPU 14 of any networked computing device 12 may be employed to determine whether the first computing device 12 is optimally selected such that it is, in general, the plurality of networked computing devices 12 that is operable to execute block 68. For ease of description it is taken herein that the first computing device 12 is operable to process the first user request 54 and also to determine whether it is optimally selected, as the specific identity of the first computing device 12 among the plurality of networked computing devices 12 is arbitrary for the purposes of the detailed description herein.

Referring to Figure 6, an exemplary method for directing the CPU 14 to perform steps of block 68 (Figure 3) is shown generally at 70. Method 70 begins execution at block 72, which directs the CPU 14 to determine whether the first computing device 12 is recently listed as being optimally selected. In the first embodiment, the plurality of networked computing devices 12, or any subset thereof, determines whether the first computing device 12 has been optimally selected within a preceding pre-determined period of time.

In the first embodiment, the first computing device 12, or in some embodiments each group of networked computing devices 12 forming a data centre, maintains a cached index of IP (Internet Protocol) address ranges indicating the optimal device 12 from among the plurality of networked computing devices 12 for a given user device 26 identifiable by its IP address. For each listed user device 26, the association to an optimally selected networked computing device 12 expires after a period of time, which amount of time may be varied according to network operation parameters such as network configuration or dynamically in response to network congestion for example. By way of further example, different expiry times may be used for different computing application services made available to user devices 26. Additionally or alternatively, expiry times may vary depending on parameters of service level agreements associated with each different user device 26. Specifying an expiry time advantageously accommodates a balanced trade-off between network overhead and responsiveness to changes in the user device 26 location. If the optimal network computing device 12 for a given user device 26 is listed, has not expired, and indicates that the first computing device 12 is optimally selected for that user device 26, then method 70 returns an indication of “yes”. Otherwise, the method 70 returns an indication of “no”.

Referring back to Figure 3, if at block 68 it is determined that the first computing device 12 is not already known to be optimally selected, then block 74 directs the CPU 14 to select an optimal device from among the plurality of networked computing devices 12. In the first embodiment, the plurality of networked computing devices 12 select an optimal device having associated therewith an optimal response time.

Referring to Figure 7, an exemplary method for directing the CPU 14 to perform steps of block 74 (Figure 3) is shown generally at 76. The method 76 begins execution at block 78, which directs the CPU 14 to determine a plurality of network transit delays associated with the user device 26 and the plurality of networked computing devices 12, respectively. In the first embodiment, doing so involves, for each network transit delay associated with the user device 26 and each networked computing device 12, transmitting a ping-type data packet from each networked computing device 12 toward the user device 26 along a network route therebetween. A data packet known in the art as a MTR (My TraceRoute) packet may be employed, for example.

In Figure 4, two exemplary networked computing devices 12 are shown transmitting ping-type data packets 80 toward the user device 26. In general, each networked computing device 12 is located at a different geographical distance from the user device 26 and, due to network routing, there may be a different number of network hops involving different numbers of intermediate routing nodes between each different networked computing device 12 and the user device 26. Furthermore, network congestion and other factors will affect the time it takes for each ping-type data packet to travel as close as it can to the user device 26 and then return to its originating networked computing device 12 with an indication of the network transit delay, or ping result, 82.

By way of example, the networked computing device 12 that received the first user request 54 received its ping result 82 after the other illustrated networked computing device 12 received its ping result 82, indicating that the network transit delay 82 is lower for the other (second) networked computing device 12.

In the first embodiment, multiple ping-type data packets are sent by each networked computing device 12 and an average network transit delay is calculated for each networked computing device 12. In some embodiments, where there are groups of networked computing devices 12 forming a single data centre, only one network transit delay associated with one such networked computing device 12 is considered representative of the network transit delay associated with that data centre.

Referring back to Figure 7, after block 78 has been executed, block 84 directs the CPU 14 to determine a plurality of bandwidths associated with the user device 26 and the plurality of networked computing devices 12, respectively. In the first embodiment, doing so involves, for each bandwidth associated with the user device 26 and each networked computing device 12, determining the smallest of a plurality of bandwidth specifications associated with one or more network routing nodes defining each network route.

Each node along the network route between each networked computing device 12 and the user device 26 has associated with it a bandwidth specification indicating the amount of data that can be transmitted by that node to the next node along the network route. For any given network route, the node having the smallest bandwidth specification is considered the bottleneck for that network route such that the smallest bandwidth specification is taken as the bandwidth of that entire network route. In this manner according to the first embodiment, the bandwidth associated with each networked computing device 12, relative to a given user device 26 and its current geographical location, is determined.

After block 84 has been executed, block 86 directs the CPU 14 to determine a plurality of response times associated with the first user request 54 (Figure 4) and the plurality of networked computing devices 12 in response to the plurality of network transit delays 82 and the plurality of bandwidths, respectively. In the first embodiment, doing so involves determining a response time for each networked computing device 12 in relation to the given user device 26 at its current geographical location.

In the first embodiment, the response time for a given networked computing device 12 and a given user device 26 issuing a given user request 54 is calculated by the formula:

Bandwidth for User Request

Response Time = Network Transit Delay x

Bandwidth of Network Route where Network Transit Delay is the value determined by block 78 of Figure 7, Bandwidth for User Request is an indication of the amount of data being requested by the given user request, and Bandwidth of Network Route is the value determined by block 84 of Figure 7.

Executing block 86 involves calculating the response times for all the networked computing devices 12 available to process user requests 54 (Figure 4) of the given user device 26 (Figure 1 ).

After block 86 has been executed, block 88 directs the CPU 14 to select the optimal device to be that networked computing device 12 having a lowest of the response times among a subset of the networked computing devices 12 meeting one or more user-configurable criteria. Such user-configurable criteria may include cost to the user for subscribing to computing services offered at the different networked computing devices 12 (e.g. only those networked computing devices 12 offering services at a user-acceptable price); redundancy requirements to have user requests 54 of the given user device 26 processed by multiple networked computing devices 12 (e.g. in parallel); privacy considerations (e.g. only those networked computing devices 12 in compliance with certain privacy regimes); other considerations, or any combination thereof for example. The user-configurable criteria may form part of a service level agreement with computing services providers, for example.

After block 88 has been executed, the process returns to the method 50 at block 74 (Figure 3).

Referring back to Figure 3, after block 74 has been executed, the CPU 14 is then directed to execute block 90 described herein below.

Also, if at block 68 it is determined that the first computing device is already known to be optimally selected, then the CPU 14 is directed to execute block 90.

In the first embodiment, block 90 is executed to direct subsequent user requests to the optimal device, which may be the first computing device 12 previously determined by block 68 to be already known to be optimally selected for the given user device 26, another networked computing device 12 selected by executing block 88 of method 76 (Figure 7), or even the first computing device 12 confirmed as optimally selected by executing block 88 (Figure 7).

If the optimal device is different from the first computing device 12 that received the first user request 54, then the process is directed to method 92 shown in Figure 8.

Referring to Figure 8, method 92 begins execution at block 94, which directs the CPU 14 of the optimally selected networked computing device 12 or another networked computing device 12 to determine whether the optimal device 12 is in condition to respond to subsequent user requests from the given user device 26. In the first embodiment, if the computer program application(s) required to respond to the first user request 54 (Figure 4) is not currently being executed at the optimal device 12, then the optimal device 12 is not considered in condition to respond to subsequent user requests from the same user device 26.

If by block 94, it is determined that the optimal device 12 is not in condition to respond to the first user request 54, then block 96 directs the CPU 14 of the optimal device 12 to launch such computer program application(s) at the optimal device 12, thereby rendering the optimal device 12 in condition to respond to subsequent user requests from the same user device 26.

After executing block 96, the process is directed to block 98 described herein below.

Also, if it is determined by block 94 that the optimal device 12 is in condition to respond to the first user request 54, then the process is directed to block 98.

Block 98 directs the CPU 14 to update a geographical domain name server database 99 (Figure 4) associated with the plurality of networked computing devices 12. Such database may be implemented at a designated database computer 12 of the plurality of networked computing devices 12, at one or more management devices 12 of the plurality of networked computing devices 12, or may be distributed, redundantly or otherwise, among many or all of the networked computing devices 12.

In the first embodiment, updating the geographical domain name server database 99 in respect of the given user device 26 directs subsequent user requests from the user device 26 to the optimally selected networked computing device 12. In the first embodiment, updating the geographical domain server database 99 includes updating the geographical domain name server database 99 in respect of all IP addresses of the IP address range associated with the given user device 26. Also in the first embodiment, updating the geographical domain name server database 99 includes updating the contents of an associated zone file (not shown). Referring back to Figure 4, a geo-DNS update 100 occurs after the ping results 82 are returned and a new optimal device 12 has been selected. In the exemplary timeline of Figure 4, the first computing device 12 returns a processed response 102 to the user device. While Figure 4 shows the processed response 102 being returned after the geo-DNS update 100 occurs, in general, responding to the first user request 54 and processing the geo-DNS update 100 occur in parallel and may occur with any timing relationship to each other.

In the exemplary scenario of Figure 4, the optimal device 12 was determined to have changed from the first computing device 12 to the other networked computing device 12, and subsequent user requests 104 are directed to the newly selected optimal device 12 as shown in Figure 4.

In the first embodiment, the memory cache at the newly selected optimal device 12 or associated data centre is also updated so that the newly selected optimal device 12 will remain known to be the optimal device 12 for the subsequent user requests 104 for a certain pre-determ ined period of time.

Referring back to Figure 8, after block 98 has been executed, the process returns to the method 50 at block 90 (Figure 3).

Referring back to Figure 3, after block 90 has been executed the method 50 ends. In general, the process of responding to user requests is ongoing for as long as electrical power is being supplied to the relevant devices of the system 10.

Thus, there is provided a method of processing a plurality of user requests of a user device by a plurality of networked computing devices, the method comprising: (a) receiving a first user request of the plurality of user requests by a first computing device of the plurality of networked computing devices; (b) determining by the plurality of networked computing devices whether said first computing device is optimally selected among the plurality of networked computing devices for processing the plurality of user requests; (c) if the first computing device is not optimally selected, then selecting by the plurality of networked computing devices an optimal device having associated therewith an optimal response time from among the plurality of networked computing devices; and (d) directing subsequent requests of the plurality of user requests from said user device to said optimal device.

Maintenance System

Referring to Figure 9, the system 10 according to a second embodiment of the invention includes the plurality of networked computing devices 12, one or more of which are designated as maintenance devices 106 of the plurality of networked computing devices 12. The maintenance device(s) 106 are operable to maintain computing processes executable by the plurality of networked computing devices 12.

In some embodiments, the system shown in Figure 9 is separate from the system 10 of Figures 1 to 8. In general, the teachings herein can be applicable to maintaining any computing process executable by any computing device. For ease of description, however, the system 10 according to the second embodiment includes the networked computing devices 12, which may be configured for use as 5G base stations operable to provide Internet 22 access and telecommunications services to user devices 26 (not shown in Figure 9), and the maintenance devices 106 are designated as or form part of management devices 12, typically physically located at one or more major data centre(s), for performing maintenance operations associated with the entire plurality of networked computing devices 12. In some embodiments, computing processes executed at the user devices 26 (not shown in Figure 9) are also maintained by the system 10.

In Figure 9, functional modules of one maintenance device 106 is shown in detail. It is understood that the maintenance functions described and illustrated herein apply to all of the one or more maintenance devices 106. In some embodiments, many or all of the networked computing devices 12 are operable to perform maintenance functions on or for each other.

The maintenance device 106 includes a communications module 108 for effecting communications between the maintenance device 106 and other networked computing devices 12 via the communications link 20, including effecting communications with other maintenance devices 106, and other Internet-connected devices (not shown) via the Internet 22. Communications effected by the communications module 108 may be wired or wireless communications using any suitable communications networking technology and may be via the Internet 22 or any other communications other network.

The maintenance device 106 in the second embodiment includes a logger 110 for receiving status indications such as system 10 logs from networked computing devices 12.

The maintenance device 106 also includes a performance monitor 112 operable to determine performance metrics associated with one or more networked computing devices 12. Such performance metrics may include processing speed associated with the CPU 14 of a given networked computing device 12, CPU 14 usage, accuracy of CPU 14 processing and/or network communications (e.g. bit-error rate or the like), processing throughput, responsiveness, availability, other computing and/or networking performance metrics, or any combination thereof for example.

Furthermore, the maintenance device 106 includes a status collator 114 for collating status indications, which typically consist of the system 10 logs received from the logger 110 and the performance metrics received from the performance monitor 112. The status collator 114 is operable to associate one or more received status indications with a status type, thereby clustering multiple status indications related to a single issue or system 10 error, for example, into one or more clusters of status indications. Clustering status indications by the status collator 114 advantageously minimizes separate and possibly redundant processing of unclustered status indications that happen to be related to a single system 10 incident or event. In some embodiments, all status indications and any associated status types are stored in maintenance device 106 memory for later retrieval. However, in some embodiments, redundant status indications having the same status type are replaced by a single representative status indication and its status type, such that the status collator 114 filters at least some of the status indications.

The status collator 114 need not assign a status type to every status indication, and some status indications may not form part of a cluster of status indications. For example, the performance monitor 112 is operable to obtain performance metrics on a routine basis absence any association with a status type. Additionally or alternatively, the performance monitor 112 in some embodiments is operable to obtain performance metrics in the context of resolving particular error conditions or otherwise in association with a previously identified status type.

Control of status indications is passed from the status collator 114 to the main controller 116, which typically includes a CPU 14 (not shown therewithin in Figure 9) and memory unit 16 (not shown therewithin in Figure 9) operable to store instruction codes for directing operations of the CPU 14 of the maintenance device 106.

The controller 116 is operable to control a database controller 118, which in turn is operable to control a known-action database 120 containing known- action data. In the second embodiment, such known-action data is previously established, or otherwise known, to be effective as a maintenance action in response to associated status indications and/or status types. For example, a status indication of an error condition may be caused by a software bug having a known bug fix stored in the known-action database. Thus, if the error condition is indicated by the associated status indication received from a given network computing device 12, the bug fix can be retrieved from the known-action database 120 for use at the given networked computing device 12.

The controller 116 is also operable to control the communications module 108 directly to effect queries to other maintenance devices 106 of the plurality of networked computing devices 12.

The controller 116 is also operable to control a web searcher module 122, which in turn is operable to employ the communications module 108 to conduct automated web searching, such as using an available search application programming interface (API), using an available question-and-answer API, using an available data-dump process and then searching the resulting data dump(s), and/or by online web scraping.

The controller 116 is operable to control an emulator controller 124, which in turn is operable to control an emulator 126 to emulate selected operations of the plurality of networked computing devices 12. For example, if a computer process executed by a networked computing device 12 results in status indication(s) indicating an error condition, the maintenance device 106 is operable to use the emulator controller 124 and the emulator 126 to emulate the computer process and emulate proposed solutions, for example.

The controller 116 is operable to control a controller agent 128, which in turn is operable to control the communications module 108, such as to effect maintenance actions at selected networked computing devices 12.

Maintenance Method

Referring to Figure 10, when electrical power is being supplied to a given maintenance device 106, its CPU 14 (not shown in Figure 9) is directed to perform the steps of a method shown generally at 130. References herein to the maintenance device 106 executing, or being directed to execute, steps of a method or other blocks of code are references to its CPU 14 executing, or being directed to execute, such steps or blocks. The method 130 begins by the maintenance device 106 executing the instructions of block 132 shown in Figure 10.

Block 132 directs the maintenance device 106 to receive a status indication associated with a computing process of a given networked computing device 12. In the second embodiment, receiving the status indication involves receiving the status indication via its communications module 108. Such status indication may be a system 10 log received from the given networked computing device 12 indicating a log status associated with the computing process. Alternatively, the status indication may be a response to a query previously transmitted from the performance monitor, where such response indicates a performance metric associated with the computing process, the networked computing device 12, the communications link 20, or any combination thereof for example. Such performance metric query may be issued by the maintenance device 106 in the context of resolving a previously identified error condition or other status type, for example.

The system 10 logs preferably include all logs of the system 10, which in variations of embodiments may include a variety of different types of logs such as application logs, docker logs, stack logs, system logs, and other types of logs of the system 10.

Referring to Figure 11 , an exemplary method for directing the maintenance device 106 to perform steps of block 132 (Figure 10) is shown generally at 134. Method 134 begins execution at block 136, which directs the maintenance device 106 to determine whether the received communication of status indication is a system 10 log or a response to a query from the performance monitor 112.

If the received communication is a system 10 log, then the maintenance device 106 is directed by block 138 to pass the status indication to the logger 110 and the status collator 114 for identifying and associating a status type with the status indication.

If the received communication is a performance metric or other response to a query from the performance monitor 112, then the maintenance device 106 is directed by block 140 to pass the status indication to the performance monitor 112 and the status collator 114 for associating with a previously identified status type, if any.

In variations of embodiments, receiving a status indication can also involve storing the status indication and/or storing its associated status type, if any.

After either block 138 or block 140 has been executed, the process is directed to return to block 132 of Figure 10.

Referring to Figure 10, after block 132 has been executed, block 142 directs the maintenance device 106 to determine one or more proposed actions associated with the status indication. In variations, proposed action(s) may be determined in association with the status indication, its associated status type, or both the status indication and its associated status type.

Referring to Figures 12 and 13, an exemplary method for directing the maintenance device 106 to perform steps of block 142 (Figure 10) is shown generally at 144. Method 144 begins execution at block 146, which directs the maintenance device 106 to retrieve zero or more known actions from a known- action databasel 20 of the maintenance device 106. In the second embodiment, retrieving known action(s) from the known-action database 120 involves retrieving known action(s) corresponding to the status indication received by block 132 (Figure 10). In variations, the known action(s) may correspond to the status indication and/or its status type, if any.

After block 146 has been executed, block 148 directs the maintenance device 106 to determine whether one or more known actions were retrieved from the known-action database 120. If no known actions were retrieved from the known-action database 120, then block 150 directs the given maintenance device 106 to retrieve shareable actions from other maintenance devices 106, if any. In the second embodiment, executing block 150 involves querying the respective databases of a number of other maintenance devices 106 to retrieve any shareable actions associated with the status indication. The respective databases may include the respective known-action databases of other maintenance devices 106, for example. In some embodiments, each different maintenance device 106 is associated with a different data centre comprising a subset of the plurality of networked computing devices 12, for example. Such different data centres may be geographically distant from each other and distributed around the world, for example. In some embodiments, some or all of the contents of the respective databases of the maintenance devices 106 may be designated as shareable to other maintenance devices 106 of the plurality of networked computing devices 12 but not shareable to other computers more generally. Additionally or alternatively, some or all of the contents of the respective databases of the maintenance devices may be designated as shareable to the public without restriction, such as via the Internet 22 for example.

After block 150 has been executed, block 152 directs the maintenance device 106 to determine whether one or more shareable actions were obtained as a result of the querying by block 150. That is, whether any shareable actions were obtained at all.

If by block 152 it is determined that no shareable actions were obtained, then the maintenance device 106 is directed by block 154 to conduct a web search and retrieve by the web search zero or more possible actions corresponding to the status indication. Executing block 154 in the second embodiment involves causing the web searcher 122 (Figure 9) to create one or more web queries in response to the status indication and/or its status type, and to cause the web searcher 122 to search web pages via the Internet 22 using the communications module 108 in search of online search results associated with the status indication and/or its status type. By way of particular example, online searching can be performed to produce possible solutions or other ameliorative maintenance actions that can be taken in response to an error condition indicated by the status indication and/or its status type. Such possible solutions, if any are found by the web searching, are typically retrieved via the Internet 22.

Various techniques may be employed to conduct the web searching of block 154. For example, some websites have associated therewith a search application programming interface (API) for searching the website. Additionally, some websites have associated therewith a question-and-answer API for providing answers to queries presented to the question-and-answer API. Some websites have a search API or question-and-answer API that imposes a usage limit, but also provides a downloadable data-dump process. In such circumstances, a combination of downloading and storing data dump(s), limited use of the API, and searching of the downloaded data accomplishes the desired web searching. Some websites permit web scraping, in which case the website is scraped to produce searchable web content or, alternatively, the website is searched and then the web content forming the search results is scraped from the website.

In some embodiments, web search results are processed using natural language processing (NLP) to produce the zero or more possible actions corresponding to the status indication. While Figure 12 shows the execution of block 150 as occurring prior to the execution of block 154, in some embodiments it is reversed such that a given maintenance device 106 will conduct a web search via the Internet 22 prior to querying other maintenance devices 106. In some embodiments, the given maintenance device 106 initiates a low-priority web search, then immediately initiates queries within the network of maintenance devices 106 prior to evaluating web search results. Other timeline variations are possible. According to the exemplary embodiment shown in Figure 12, after block 154 has been executed then block 156 directs the maintenance device 106 to determine whether one or more possible actions were obtained as a result of the web searching by block 154. That is, whether any possible actions were obtained at all.

If by block 156 it is determined that no possible actions were obtained, then the process returns a null response indicating that no proposed actions (i.e. no known actions, no shareable actions, and no possible actions) were obtained. In such circumstances, an alert to a human technician may be initiated for further human-based analysis.

Still referring to Figure 12, if by block 148 it is determined that one or more known actions were retrieved from the known-action database 120 of the given maintenance device 106, then block 158 directs the given maintenance device 106 to determine whether exactly one known action was retrieved.

If by block 158 it is determined that one known action was retrieved, then block 160 directs the maintenance device 106 to select the maintenance action to be the one retrieved known action.

After block 160 has been executed, the process returns to the method 130 at block 142 (Figure 10).

Referring back to Figure 12, if by block 158 it is determined that one known action was not retrieved, that is, that a plurality of known actions were retrieved, then block 162 directs the maintenance device 160 to select the proposed actions to include the plurality of retrieved known actions. The known actions retrieved from the known-action database 120 are assigned to be a plurality of proposed actions by selecting the proposed actions to include such known actions.

After block 162 has been executed, further processing occurs as shown in Figure 13 and as described herein below. Still referring to Figure 12, if by block 152 it is determined that one or more shareable actions were retrieved then block 164 directs the maintenance device 106 to select the proposed actions to include the one or more shareable actions.

After block 164 has been executed, further processing as described below with reference to Figure 13 occurs.

If by block 156 it is determined that one or more possible actions were retrieved, then block 166 directs the maintenance device 106 to select the proposed actions to include the one or more possible actions.

Referring to Figure 13, after block 162, 164, or 166 (Figure 12) has been executed, block 168 of Figure 13 directs the maintenance device 106 to produce an emulated status indication by emulating the computer process. In the second embodiment, the system 10 is operable to create an emulation environment, which may be a quarantined virtual machine for example, for reconstructing the computer process executed by the particular networked computing device(s) 12 that led to a given error condition or other status indication. Emulating the computer process may involve emulating logged activities, including logged input and output streams, of the networked computing device(s) 12. Emulating the computer process may involve determining performance metrics of the networked computing device(s) 12 so as to more accurately emulate the computer process, for example. Emulating the computer process typically involves determining whether the emulated status indication(s) produced by the emulated computer process are identical or analogous to the status indication originally generated by the computer process itself. Emulating the computer process to produce matching emulated status indication(s) may involve multiple iterations of emulations employing different parameters and/or different process steps, for example. Emulations of the computer process may be iteratively optimized toward matching the emulated status indication to the originally generated status indication, for example. Upon optimization of the emulated status indication, in some embodiments the maintenance device 106 is directed to return to block 146 (Figure 12) to newly search proposed action(s) in response to an optimized formulation of the status type associated with the status indication.

After block 168 has been executed, block 170 directs the maintenance device 106 to emulate each proposed action and the computing process to produce a confidence indication associated with each proposed action. In the second embodiment, if emulating the computer process alone produces an emulated status indication that matches or otherwise corresponds to the status indication, but emulating a given proposed action followed by emulating the computer process fails to produce a matching emulated status indication and does not produce new error conditions indicated by other emulated status indications, then such proposed action is assigned a high confidence indication. On the other hand, if emulating the given proposed action followed by emulating the computer process produces an emulated status indication that matches or otherwise corresponds to the originally generated status indication, then that proposed action is assigned a low confidence indication. Various techniques for computing each confidence indication may be employed, for example.

After block 170 has been executed, block 172 directs the maintenance device 106 to select, if more than one proposed action was emulated, the maintenance action to be the highest-confidence action among the emulated proposed actions. In some embodiments, a maintenance action will not be selected if none of the emulated proposed actions result in a sufficiently high confidence indication. In some embodiments, a human-based review of the proposed actions and their associated confidence indications is permitted, but need not be required.

While Figures 12 and 13 show that the proposed actions are either the known actions, the one or more shareable actions, or the one or more possible actions, in general any combination of different types of proposed actions may be employed when determining the confidence indications. For example, blocks 146, 150, and 154 (Figure 12) may be executed such that the proposed action(s) include any known actions, any shareable actions, and any possible actions that are obtained. In some embodiments, blocks 168 and 170 (Figure 13) are executed even if block 160 (Figure 12) is executed, such that a single known action retrieved from the known-action database 120 will be subjected to emulation testing. In some embodiments, if the confidence indication(s) resulting from emulation testing of known action(s) are not sufficiently high, then blocks 150 and/or 154 are executed to obtain further proposed actions for emulation testing. Other arrangements of obtaining and emulation testing proposed actions may be employed. In general, upon executing blocks 146 to 166 the proposed action(s) can include any number of known actions, possible actions, and/or shareable actions.

After block 172 has been executed such that a maintenance action is selected, the process returns to the method 130 at block 142 (Figure 10).

Referring to Figure 10, after block 142 has been executed, block 174 in the second embodiment directs the process to execute the maintenance action at the networked computing device 12. In general, executing the maintenance action may involve multiple processing steps possibly involving more than one networked computing device 12 for example. In the second embodiment, the controller 116 (Figure 9) is operable to notify the controller agent 128 of the selected maintenance action, and the controller agent 128 is operable to communicate via the communications module 108 with the networked computer device 12 to cause the maintenance action to be executed at the networked computing device 12.

Referring to Figure 14, an exemplary method for directing the plurality of networked computing devices 12 to perform steps of block 174 (Figure 10) is shown generally at 176. Method 176 begins execution at block 178, which directs the maintenance device 106 to determine whether the maintenance action is a patch-type program change (i.e. a set of changes to a computer program or its supporting data designed to update, fix or improve it).

If by block 178 it is determined that the maintenance action is a patch, then block 180 directs the maintenance device 106 to modify the computer process by causing the networked computing device 12 to execute the patch- type program change. In the second embodiment, the controller agent 128 (Figure 9) communicates the patch, or communicates instructions for accessing the patch, to the networked computing device 12 along with a remote command to execute the patch at the networked computing device 12.

If by block 178 it is determined that the maintenance action is not a patch, then block 182 directs the maintenance device 106 to modify the computing process by use of an application programming interface (API). Calling the API may require authorization as may be secured by various means of trust between the networked computing devices 12 including the maintenance device 106.

Other techniques for modifying the computing process in response to the selected maintenance action(s) may be employed.

After block 180 or 182 has been executed, the process is directed to return to the method 130 at block 174 (Figure 10).

Referring back to Figure 10, after block 174 has been executed, the method 130 ends. In general, the process of maintaining computer processes is ongoing for as long as electrical power is being supplied to the relevant devices.

Thus, there is provided a method of maintaining a computing process executable by a computing device of a plurality of networked computing devices, the method comprising: (e) receiving, from the computing device by a maintenance device of the plurality of networked computing devices, a status indication associated with the computing process; (f) determining by said maintenance device one or more proposed actions associated with said status indication; (g) selecting by said maintenance device a maintenance action from among said one or more proposed actions; and (h) executing said maintenance action at the computing device.

While embodiments of the invention have been described and illustrated, such embodiments should be considered illustrative of the invention only. The invention may include variants not described or illustrated herein in detail. Thus, the embodiments described and illustrated herein should not be considered to limit the invention as construed in accordance with the accompanying claims.




 
Previous Patent: PERPETUAL CALENDAR

Next Patent: PEER-TO-PEER CASH UBERING