The present disclosure described herein, in general, relates to data processing techniques and more particularly to a technique for low latency node local scheduling in distributed resource management.
A collection of autonomous machines connected by a network and unified by appropriate software and management policies is itself a computer system. This concept of a network-based computer system continues to become more and more significant in the computer industry. Network-based computers include more than a client-server computing and its emphasis on two party relationships. In network-based computing, a service (or resource) becomes a more general concept and no longer needs to be tied to a single machine, rather, it becomes a feature of the whole network-based computer. A network-based computer, or environment, can arise in a number of contexts such as in a heterogeneous collection of user workstations and server machines on a local area network, in a special purpose “clustered” machine consisting of individual processors connected by a high-speed network, or in a campus or enterprise or global network connecting several such environments together.
A distributed system is a model in which components located on networked computers communicate and coordinate their actions by passing messages. The components interact with each other in order to achieve a common goal. In a distributed system, applications running in parallel can utilize the combined resource capacity of multiple interconnected nodes by executing their tasks in parallel on different nodes. An important component in all of these environments is a resource management system, and a significant aspect of the resource management system is its job scheduling capability.
Conventionally, for assigning available resources to distributed applications on multiple nodes, a typical distributed resource scheduling (DRS) framework works as shown in
A distributed execution flow for resource requests handled conventionally according to the typical DRS framework of the
However, there is possibility of comparatively large delay in allocation of the requested resource by the AM based for client's ad-hoc request, because RM will either schedule asynchronously only after a specific time period or schedule when RA updates the node resources in Heartbeat to RM, RM schedules based on queue or resource pool hierarchy. If the queue or resource pool that the application is submitted to does not have sufficient free resource then there will be delay. Requested node might not have sufficient resource, and then application needs to wait till node gets free or Run in other location/node which will have other overhead (for instance, but not limited to network delay, slower disk, etc.) which can hamper performance. Thus, the existing DRS frameworks are not optimal for low latency node local allocation hence some of the existing applications follows an alternate approach adopted for processing ad-hoc requests in DRS framework as shown in
As shown in
However, the alternate approach adopted for processing ad-hoc requests in DRS framework as shown in
Accordingly, there exists a need to provide a framework for low latency node local scheduling for a distributed processing system having distributed resource management, such as an ad-hoc request processing system, or other distributed systems for processing job requests. The framework allows for allocation of resources directly on the node without having to contact the central RM for further resource allocations, thereby achieving low latency. It is to be noted and will be understood by a person skilled in the art that the present document illustrates/describes the embodiment of the disclosure in relation to ad-hoc request in a non-limiting manner and the disclosure can be performed for low latency node local scheduling for other job requests also. Use of such other job requests instead of ad-hoc will still be considered to be in scope of the present disclosure.
The above-described deficiencies of existing job scheduling techniques within a distributed processing system are merely intended to provide an overview of some of the problems of conventional systems/mechanism/techniques, and are not intended to be exhaustive. Other problems with conventional systems/mechanism/techniques and corresponding benefits of the various non-limiting embodiments described herein may become further apparent upon review of the following description.
This summary is provided to introduce concepts related to system and method for low latency node local scheduling in distributed resource management, and the same are further described below in the detailed description. This summary is not intended to identify essential features of the claimed subject matter nor is it intended for use in determining or limiting the scope of the claimed subject matter.
The object of the present disclosure is to provide a framework for low latency node local scheduling for a distributed processing system having distributed resource management, which allows for allocation of resources directly on the node without having to contact the central RM for further resource allocations, thereby achieving low latency. The framework also ensures resource isolation and resource re-sizing of the allocations made locally.
According to a first aspect, there is provided a system, for allocation of resources on a node, for processing at least one job request within a distributed system, the system comprising a processor, a memory operatively coupled to the processor for executing a plurality of modules present in the memory, the plurality of modules comprising an AM module operatively communicable to a RM module for allocation of resources, a local resource allocator module operatively located in a RA module for generating a master process module after the allocation of resources by the RM module, the AM module operatively communicable to the master process module after receiving the job request, the master process module operatively communicable to the local resource allocator module thereby the local resource allocator module generates one or more sub process modules for processing the job request based on the allocation of resources.
In a first possible implementation of the system according to the first aspect, the allocation of resources by the local resource allocator module comprises allocating resources for the master process module, allocating buffered resources for the one or more sub-process modules.
In a second possible implementation of the system according to the first aspect, the local resource allocator module is adapted for keeping track of the allocation of resources.
In a third possible implementation of the system according to the first aspect, the local resource allocator module is adapted for determining whether the allocation of resources for one or more sub-process modules is within a limitation of the resources preset by the master process module.
In a fourth possible implementation of the system according to the first aspect, the local resource allocator module is adapted for resizing the resources for one or more sub-process modules.
In a fifth possible implementation of the system according to the first aspect, the local resource allocator module is adapted for pausing the one or more sub-process modules.
In a sixth possible implementation of the system according to the first aspect, the master process module is adapted for coordinating with the one or more sub-process modules.
In a seventh possible implementation of the system according to the first aspect, the at least one job request comprises an ad-hoc job request.
According to the second aspect, there is provided a method, for allocation of resources on a node, for processing at least one job request within a distributed system, the method comprising communicating an AM module with a RM module for the allocation of resources, locating a local resource allocator module in a RA module for generating a master process module after the allocation of resources by the RM module, communicating the AM module with the master process module after receiving the job request, communicating the master process module with the local resource allocator module thereby generating the one or more sub process modules for processing the job request based on the allocation of resources by the local resource allocator module.
In a first possible implementation of the method according to the second aspect, the allocation of resources by the local resource allocator module comprises allocating resources for the master process module, allocating buffered resources for the one or more sub-process modules.
In a second possible implementation of the method according to the second aspect, keeping track of the allocation of resources being done by the local resource allocator module.
In a third possible implementation of the method according to the second aspect, determining, by the local resource allocator module, whether the allocation of resources for one or more sub-process modules is within a limitation of the resources preset by the master process module.
In a fourth possible implementation of the method according to the second aspect, resizing, by the local resource allocator module, the resources for one or more sub-process modules.
In a fifth possible implementation of the method according to the second aspect, pausing the one or more sub-process modules by the local resource allocator module.
In a sixth possible implementation of the method according to the second aspect, coordinating the master process module with the one or more sub-process modules.
In a seventh possible implementation of the method according to the second aspect, processing the at least one job request comprises processing an ad-hoc job request.
In order to solve the above motioned issue in current DRS framework the present disclosure provides a node local scheduling approach. Accordingly, the present disclosure provides a new local resource allocator module in RA adapted to run on each node, and also bring in the notion of master and sub-containers. The local resource allocator is adapted to allocate resources on the node on which it is running, within the scope of resource limits of master container which is a special container. The application may ask for resources for a master container which will include resources required for it and some buffer resources within which multiple sub-containers can be launched.
The various options and preferred embodiments referred to above in relation to the first implementation are also applicable in relation to the other implementations.
The detailed description is described with reference to the accompanying figures. In the figures, the left-most digit(s) of a reference number identifies the figure in which the reference number first appears. The same numbers are used throughout the drawings to refer like features and components.
It is to be understood that the attached drawings are for purposes of illustrating the concepts of the disclosure and may not be to scale.
The following clearly describes the technical solutions in the embodiments of the present disclosure with reference to the accompanying drawings in the embodiments of the present disclosure. The described embodiments are merely a part rather than all of the embodiments of the present disclosure. All other embodiments obtained by a person of ordinary skill in the art based on the embodiments of the present disclosure without creative efforts shall fall within the protection scope of the present disclosure.
The disclosure can be implemented in numerous ways, as a process, an apparatus, a system, a composition of matter, a computer readable medium such as a computer readable storage medium or a computer network wherein program instructions are sent over optical or electronic communication links. In this specification, these implementations, or any other form that the disclosure may take, may be referred to as techniques. In general, the order of the steps of disclosed processes may be altered within the scope of the disclosure.
A detailed description of one or more embodiments of the disclosure is provided below along with accompanying figures that illustrate the principles of the disclosure. The disclosure is described in connection with such embodiments, but the disclosure is not limited to any embodiment. The scope of the disclosure is limited only by the claims and the disclosure encompasses numerous alternatives, modifications and equivalents. Numerous specific details are set forth in the following description in order to provide a thorough understanding of the disclosure. These details are provided for the purpose of example and the disclosure may be practiced according to the claims without some or all of these specific details. For the purpose of clarity, technical material that is known in the technical fields related to the disclosure has not been described in detail so that the disclosure is not unnecessarily obscured.
In the following detailed description, numerous specific details are set forth in order to provide a thorough understanding of the disclosure. However, it will be understood by those skilled in the art that the present disclosure may be practiced without these specific details. In other instances, well-known methods, procedures, and components, modules, units and/or circuits have not been described in detail so as not to obscure the disclosure.
Although embodiments of the disclosure are not limited in this regard, discussions utilizing terms such as, for example, “processing,” “computing,” “calculating,” “determining,” “establishing”, “analyzing”, “checking”, or the like, may refer to operation(s) and/or process(es) of a computer, a computing platform, a computing system, or other electronic computing device, that manipulates and/or transforms data represented as physical (e.g., electronic) quantities within the computer's registers and/or memories into other data similarly represented as physical quantities within the computer's registers and/or memories or other information non-transitory storage medium that may store instructions to perform operations and/or processes.
Although embodiments of the disclosure are not limited in this regard, the terms “plurality” and “a plurality” as used herein may include, for example, “multiple” or “two or more”. The terms “plurality” or “a plurality” may be used throughout the specification to describe two or more components, devices, elements, units, parameters, or the like. Unless explicitly stated, the method embodiments described herein are not constrained to a particular order or sequence. Additionally, some of the described method embodiments or elements thereof can occur or be performed simultaneously, at the same point in time, or concurrently.
Current DRS framework has a RM and one or more RA running on different nodes. In a distributed processing system, a task is further broken down to sub-tasks which are carried out parallel on these nodes. Applications may request for resources (CPU, memory, etc.) on specific nodes from RM depending on where the relevant data resides for execution of each sub-task. If sub-task can run on the same node as where the subset of data, the sub-tasks wants the process to reside on the same node due to which the execution will be faster as data will not have to be copied across nodes.
The RM then depending on current resource allocation on the cluster will assign resources to the application (based on what was asked by the application). Once the application gets the resources in the form of containers, it will launch the sub-task on the node given in the allocation. The container is nothing but a process which runs within the resource limits allocated to it.
Now in case for an ad-hoc query or ad-hoc request processing system i.e. where user can query anything at anytime, the current DRS frameworks approach does not work well. The reason being that, the application needs to ask for resources from RM depending on data asked in the query/request when the query is received. Now, the required resources may not be immediately available as there are other low-priority applications using it. Also resources cannot be allocated till next node report comes from RA. All this can introduce delay in resource being allocated, and hence can slow down query/request processing performance. Applications may potentially ask for resources on each node and keep it with itself but this will lead to poor cluster resource utilization as those resources need to be kept by the application even if it is not using it.
Hence, to solve the above motioned issue in current DRS framework the present disclosure provides a node local scheduling approach. Accordingly, the present disclosure provides a new local resource allocator module in RA adapted to run on each node, and also bring in the notion of master and sub-containers. The local resource allocator is adapted to allocate resources on the node on which it is running, within the scope of resource limits of master container which is a special container. The application may ask for resources for a master container which will include resources required for it and some buffer resources within which multiple sub-containers can be launched.
For instance, the application can initially ask for 8 gigabytes (GB) of resources for master container on a node. This 8 GB may include, say, 2 GB say of resources which master container requires running itself and 6 GB of buffer resources. Now based on amount of data being processed, whenever a job request comes, the master container may ask for sub-containers from local resource allocator. These sub-containers will execute sub-request(s) on that node. Local resource allocator will allocate resources within limits of buffer resources of master container (i.e. 6 GB). The sub-containers may be of any resource size till it fits within limits of master container. This allows ability to carry out fine-grained scheduling.
If requests are being executed, all or some of 6 GB of buffer resources will be utilized. The current DRS frameworks already allow for utilization of free/unused resources (even if they have been allocated) by launching low-priority tasks which can be preempted when the resources allocated are to be used. So if 6 GB buffer resources are unutilized, the buffer resources can still be used by other applications according to the present disclosure.
In a distributed processing system, such as an ad-hoc request processing system, typically the RM will run as AM and Application Agent as master containers. The RM on initialization will ask for resources for RA's (as master containers) on each node. As and when query comes, the RA on each node can ask for sub-containers to be launched from local resource allocator (inside RA) within resource limits set for request agent (running as master container). This ensures that there is no delay in getting resources on the node as scheduling is done locally on the node. Moreover, the present disclosure supports pausing of running sub-containers and also resource-resizing of sub-containers due to the communication of the master container with the local resource allocator, which is running in a RA.
Accordingly, an objective of the present disclosure is to provide a framework for low latency node local scheduling for distributed processing systems, such as an ad-hoc request processing system, which allows for allocation of resources directly on the node without having to contact the central RM for further resource allocations, thereby achieving low latency. The framework also ensures resource isolation and resource re-sizing of the allocations made locally.
To achieve the above objective the present disclosure provides the notion of master container and sub-containers. The master container will be a special container which coordinates launching of sub-containers within the limit of resources allocated to it. The present disclosure provides a mechanism for DRS framework to fulfill such requests from master container.
System and method for low latency node local scheduling in distributed resource management are disclosed.
While aspects are described for system and method for low latency node local scheduling in distributed resource management, the present disclosure may be implemented in any number of different computing systems, environments, and/or configurations, the embodiments are described in the context of the following exemplary systems, devices/nodes/apparatus, and methods.
Henceforth, embodiments of the present disclosure are explained with the help of exemplary diagrams and one or more examples. However, such exemplary diagrams and examples are provided for the illustration purpose for better understanding of the present disclosure and should not be construed as limitation on scope of the present disclosure.
Referring now to
In one embodiment,
According to the present disclosure, in RA a new application program interface (API) is introduced/added which is capable of accepting a request for the launching of master containers with resource required for master containers along with the buffered/additional resource for sub-containers. The RA includes a local resource allocator. The local resource allocator is responsible for allocating resources locally to master container and the associated sub-containers within the available resource limits in the node. A master container is a special container which plays the role of coordinating the sub-container requests for the application on a specific node. The master container is adapted to enable launching of multiple sub-containers. The sub-containers are launched by local resource allocator within the limit of resources set aside for master container.
According to the present disclosure, an API may be introduced for master container to request resource resizing/pausing of sub-containers.
Referring now to
As shown in
Referring now to
Referring to the example as shown in
In one implementation, the local resource allocator optionally support following functionalities to prioritize the tasks in sub containers resources re-size, and pausing of sub-container.
Referring now to
It may be noted from the above scenario that, the query master need not request the RM to allocate resources for an ad-hoc query, and allocations under the purview of the DRS and thus resource isolation and take care of optimized utilization of cluster when idle.
Referring now to
As shown in
In one example, assume an ad-hoc request processing system where master container has been allocated 6 GB of resources on one of the nodes and application agent is launched as master container while using 2 GB of resources for itself, thereby keeping aside 4 GB of resources for sub-containers. Also 2 sub-containers of 1 GB each (Sub container 1 and Sub container 2) have been launched to process an already ongoing request. When a new request comes, flow will be as shown in
As can be seen above, when the new request comes, the present disclosure enables to carry out allocations locally within the limits of master container which helps in achieving low latency and thus higher performance.
Referring now to
Referring to an example as shown in
Referring now to
A shown in
In one implementation, the present disclosure is better suited for multi-tenant scenarios. If application needs to serve multi-tenant resource requests, then the present disclosure suits better as resource isolation for sub-containers is ensured. This means different sub-containers can process different requests from different tenants without impeding upon processing of other requests. The solution ensures that one heavy request does not hog all the system resources and enforces resource usage within the limits of what has been allocated to it.
Although the present disclosure is explained considering that the for allocation of resources, for processing jobs within a distributed system is implemented as a system 1300, it may be understood that the system 1300 may also be implemented in a variety of computing systems, such as a laptop computer, a desktop computer, a notebook, a workstation, a mainframe computer, a server, a network server, and the like. It will be understood that the system 1300 may be accessed by multiple users through one or more user devices. Examples of the system 1300 may include, but are not limited to, a portable computer, a personal digital assistant, a handheld device, and a workstation. The system 1300 is communicatively coupled to other nodes, through a network.
In one implementation, the network may be a wireless network, a wired network or a combination thereof. The network can be implemented as one of the different types of networks, such as intranet, local area network (LAN), wide area network (WAN), the internet, and the like. The network may either be a dedicated network or a shared network. The shared network represents an association of the different types of networks that use a variety of protocols, for example, Hypertext Transfer Protocol (HTTP), Transmission Control Protocol/Internet Protocol (TCP/IP), Wireless Application Protocol (WAP), and the like, to communicate with one another. Further the network may include a variety of network devices, including routers, bridges, servers, computing devices, storage devices, and the like.
In one embodiment, the system 1300 may include at least one processor 1302, an input/output (I/O) interface 1304, and a memory 1306. The at least one processor 1302 may be implemented as one or more microprocessors, microcomputers, microcontrollers, digital signal processors, central processing units, state machines, logic circuitries, and/or any devices that manipulate signals based on operational instructions. Among other capabilities, the at least one processor 1302 is configured to fetch and execute computer-readable instructions stored in the memory 1306.
The I/O interface 1304 may include a variety of software and hardware interfaces, for example, a web interface, a graphical user interface, and the like. The I/O interface 1304 may allow the system 1300 to interact with a user directly or through the client devices (not shown). Further, the I/O interface 1304 may enable the system 1300 to communicate with other computing devices, such as web servers and external data servers (not shown). The I/O interface 1304 can facilitate multiple communications within a wide variety of networks and protocol types, including wired networks, for example, LAN, cable, etc., and wireless networks, such as WLAN, cellular, or satellite. The I/O interface 1304 may include one or more ports for connecting a number of devices to one another or to another server.
The memory 1306 may include any computer-readable medium known in the art including, for example, volatile memory, such as static random access memory (SRAM) and dynamic random access memory (DRAM), and/or non-volatile memory, such as read only memory (ROM), erasable programmable ROM, flash memories, hard disks, optical disks, and magnetic tapes. The memory 1306 may include logics for performing respective functions of the system 1300.
In one first embodiment, a system 1300, for allocation of resources, for processing jobs within a distributed system which receives jobs to be processed is provided. The system 1300 includes a processor 1302 and a memory 1306 coupled to the processor for executing a plurality of modules present in the memory 1306. The memory includes at least one process 1308 and at least one resource allocator 1312. The at least one process 1308 is adapted for processing jobs within a distributed system which receives jobs to be processed. The at least one resource allocator 1312 is communicably coupled with at least one process 1308, and is adapted to generate one or more sub-processes 1314 within a limit of one or more resources allocated to the at least one process 1308 for processing jobs.
In one first detailed implementation of the first embodiment, the system may include one or more buffered process associated with the one or more sub-processes 1314.
In one second detailed implementation of the first embodiment, the at least one resource allocator is adapted to allocate the one or more sub-processes locally, within a scope of the system, to the at least one process.
In one third detailed implementation of the first embodiment, the at least one process 1308 is adapted to resize and/or pause the one or more sub-processes 1314 for processing jobs.
In one fourth detailed implementation of the first embodiment, the at least one process 1308 is adapted to co-ordinate the one or more sub-processes 1314 requests for processing jobs.
In one fifth detailed implementation of the first embodiment, the system further includes at least one RA 1310, residing in the memory 1306, having the at least one resource allocator 1312, which resides in the RA, wherein the at least one RA 1310 is adapted to generate the at least one process 1308 specifying the one or more resources allocated resources required for the at least one process 1308 and the one or more resources set aside to generate one or more sub-processes 1314.
In one sixth detailed implementation of the first embodiment, the at least one resource allocator 1312 is further adapted to track of the one or more resources available for the allocation and thereby generates the at least one process based on the one or more resources available.
In one seventh detailed implementation of the first embodiment, the system 1300 may further include at least one resource manager adapted to transmit jobs to be processed by the at least one process.
In one second embodiment, a system 1300, for allocation of resources, for processing jobs within a distributed system which receives jobs to be processed is provided. The system 1300 includes a processor 1302 and a memory 1306 coupled to the processor 1302 for executing a plurality of modules present in the memory 1306. The memory 1306 includes at least one AM, at least one process 1308, and at least one resource allocator 1312. The at least one AM is adapted to receive the jobs to be processed. The at least one process 1308 adapted for processing jobs by utilizing one or more sub-processes 1314. The at least one resource allocator 1312, communicably coupled with at least one process 1308, adapted to generate the one or more sub-processes 1314 within a limit of one or more resources allocated to the at least one process 1308 for processing jobs. The at least one resource allocator 1312 resides in at least one RA 1310.
Referring to
The order in which the method is described is not intended to be construed as a limitation, and any number of the described method blocks can be combined in any order to implement the method or alternate methods. Additionally, individual blocks may be deleted from the method without departing from the protection scope of the subject matter described herein. Furthermore, the method can be implemented in any suitable hardware, software, firmware, or combination thereof. However, for ease of explanation, in the embodiments described below, the method may be considered to be implemented in the above described system 1300.
Referring now to
Referring to
A person skilled in the art may understand that any known or new algorithms by be used for the implementation of the present disclosure. However, it is to be noted that, the present disclosure provides a method to be used during back up operation to achieve the above mentioned benefits and technical advancement irrespective of using any known or new algorithms.
A person of ordinary skill in the art may be aware that in combination with the examples described in the embodiments disclosed in this specification, units and algorithm steps may be implemented by electronic hardware, or a combination of computer software and electronic hardware. Whether the functions are performed by hardware or software depends on the particular applications and design constraint conditions of the technical solution. A person skilled in the art may use different methods to implement the described functions for each particular application, but it should not be considered that the implementation goes beyond the scope of the present disclosure.
It may be clearly understood by a person skilled in the art that for the purpose of convenient and brief description, for a detailed working process of the foregoing system, apparatus, and unit, reference may be made to a corresponding process in the foregoing method embodiments, and details are not described herein again.
In the several embodiments provided in the present disclosure, it should be understood that the disclosed system, apparatus, and method may be implemented in other manners. For example, the described apparatus embodiment is merely exemplary. For example, the unit division is merely logical function division and may be other division in an embodiment. For example, a plurality of units or components may be combined or integrated into another system, or some features may be ignored or not performed. In addition, the displayed or discussed mutual couplings or direct couplings or communication connections may be implemented through some interfaces. The indirect couplings or communication connections between the apparatuses or units may be implemented in electronic, mechanical, or other forms.
When the functions are implemented in a form of a software functional unit and sold or used as an independent product, the functions may be stored in a computer-readable storage medium. Based on such an understanding, the technical solutions of the present disclosure essentially, or the part contributing to other approaches, or a part of the technical solutions may be implemented in a form of a software product. The computer software product is stored in a storage medium, and includes several instructions for instructing a computer node (which may be a personal computer, a server, or a network node) to perform all or a part of the steps of the methods described in the embodiment of the present disclosure. The foregoing storage medium includes any medium that can store program code, such as a USB flash drive, a removable hard disk, a read-only memory (ROM), a random access memory (RAM), a magnetic disk, or an optical disc.
Devices that are in communication with each other need not be in continuous communication with each other, unless expressly specified otherwise. In addition, devices that are in communication with each other may communicate directly or indirectly through one or more intermediaries.
When a single device or article is described herein, it will be readily apparent that more than one device/article (whether or not they cooperate) may be used in place of a single device/article. Similarly, where more than one device or article is described herein (whether or not they cooperate), it will be readily apparent that a single device/article may be used in place of the more than one device or article or a different number of devices/articles may be used instead of the shown number of devices or programs. The functionality and/or the features of a device may be alternatively embodied by one or more other devices which are not explicitly described as having such functionality/features. Thus, other embodiments of the disclosure need not include the device itself.
Finally, the language used in the specification has been principally selected for readability and instructional purposes, and it may not have been selected to delineate or circumscribe the inventive subject matter. It is therefore intended that the scope of the disclosure be limited not by this detailed description, but rather by any claims that issue on an application based here on. Accordingly, the disclosure of the embodiments of the disclosure is intended to be illustrative, but not limiting, of the scope of the disclosure, which is set forth in the following claims.
With respect to the use of substantially any plural and/or singular terms herein, those having skill in the art can translate from the plural to the singular and/or from the singular to the plural as is appropriate to the context and/or application. The various singular/plural permutations may be expressly set forth herein for sake of clarity.
Although implementations for system and method for low latency node local scheduling in distributed resource management have been described in language specific to structural features and/or methods, it is to be understood that the appended claims are not necessarily limited to the specific features or methods described. Rather, the specific features and methods are disclosed as examples of implementations of system and method for low latency node local scheduling in distributed resource management.
Number | Date | Country | Kind |
---|---|---|---|
201741013938 | Apr 2017 | IN | national |
This is a continuation of U.S. patent application Ser. No. 16/658,699 filed on Oct. 21, 2019, which is a continuation of International Patent Application No. PCT/CN2018/083636 filed on Apr. 19, 2018, which claims priority to Indian Patent Application No. IN201741013938 filed on Apr. 19, 2017. All of the aforementioned patent applications are hereby incorporated by reference in their entireties.
Number | Name | Date | Kind |
---|---|---|---|
6671065 | Salgado et al. | Dec 2003 | B1 |
6694345 | Brelsford et al. | Feb 2004 | B1 |
6988139 | Jervis et al. | Jan 2006 | B1 |
8195739 | Bernardin et al. | Jun 2012 | B2 |
8392564 | Czajkowski et al. | Mar 2013 | B1 |
8706798 | Suchter et al. | Apr 2014 | B1 |
20050262506 | Dawson et al. | Nov 2005 | A1 |
20060190482 | Kishan et al. | Aug 2006 | A1 |
20090158275 | Wang | Jun 2009 | A1 |
20100077403 | Yang et al. | Mar 2010 | A1 |
20130227557 | Pechanec et al. | Aug 2013 | A1 |
20130227582 | Daly et al. | Aug 2013 | A1 |
20140038654 | Ahmadi | Feb 2014 | A1 |
20150310032 | Kalal et al. | Oct 2015 | A1 |
20160164797 | Reque | Jun 2016 | A1 |
20160239323 | Tsirkin et al. | Aug 2016 | A1 |
20160321109 | He et al. | Nov 2016 | A1 |
20180307518 | Imada et al. | Oct 2018 | A1 |
Number | Date | Country |
---|---|---|
103944769 | Jul 2014 | CN |
104780146 | Jul 2015 | CN |
105357042 | Feb 2016 | CN |
107066319 | Aug 2017 | CN |
103593242 | Feb 2014 | IN |
2014011084 | Jan 2014 | WO |
Number | Date | Country | |
---|---|---|---|
20230161622 A1 | May 2023 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 16658699 | Oct 2019 | US |
Child | 18151946 | US | |
Parent | PCT/CN2018/083636 | Apr 2018 | WO |
Child | 16658699 | US |