US20160139947A1 - System and method for automatically launching virtual machines based on attendance - Google Patents

System and method for automatically launching virtual machines based on attendance Download PDF

Info

Publication number
US20160139947A1
US20160139947A1 US14/546,117 US201414546117A US2016139947A1 US 20160139947 A1 US20160139947 A1 US 20160139947A1 US 201414546117 A US201414546117 A US 201414546117A US 2016139947 A1 US2016139947 A1 US 2016139947A1
Authority
US
United States
Prior art keywords
employee
virtual machine
employees
detected
event
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
US14/546,117
Other versions
US9940149B2 (en
Inventor
Santhosh Samuel Mathews
Sudhakar Errappa PARTHASARATHY
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Amzetta Technologies LLC
Original Assignee
American Megatrends Inc USA
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by American Megatrends Inc USA filed Critical American Megatrends Inc USA
Priority to US14/546,117 priority Critical patent/US9940149B2/en
Assigned to AMERICAN MEGATRENDS, INC. reassignment AMERICAN MEGATRENDS, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: MATHEWS, SANTHOSH SAMUEL, PARTHASARATHY, SUDHAKAR ERRAPPA
Publication of US20160139947A1 publication Critical patent/US20160139947A1/en
Application granted granted Critical
Publication of US9940149B2 publication Critical patent/US9940149B2/en
Assigned to AMZETTA TECHNOLOGIES, LLC, reassignment AMZETTA TECHNOLOGIES, LLC, ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: AMERICAN MEGATRENDS INTERNATIONAL, LLC,
Assigned to AMERICAN MEGATRENDS INTERNATIONAL, LLC reassignment AMERICAN MEGATRENDS INTERNATIONAL, LLC CHANGE OF NAME (SEE DOCUMENT FOR DETAILS). Assignors: AMERICAN MEGATRENDS, INC.
Active legal-status Critical Current
Adjusted expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/955Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
    • G06F17/30876
    • GPHYSICS
    • G07CHECKING-DEVICES
    • G07CTIME OR ATTENDANCE REGISTERS; REGISTERING OR INDICATING THE WORKING OF MACHINES; GENERATING RANDOM NUMBERS; VOTING OR LOTTERY APPARATUS; ARRANGEMENTS, SYSTEMS OR APPARATUS FOR CHECKING NOT PROVIDED FOR ELSEWHERE
    • G07C1/00Registering, indicating or recording the time of events or elapsed time, e.g. time-recorders for work people
    • G07C1/10Registering, indicating or recording the time of events or elapsed time, e.g. time-recorders for work people together with the recording, indicating or registering of other data, e.g. of signs of identity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45575Starting, stopping, suspending or resuming virtual machine instances

Definitions

  • the present disclosure relates generally to virtual desktop infrastructure (VDI) technology, and more particularly to systems and methods for automatically launching virtual machines based on attendance.
  • VDI virtual desktop infrastructure
  • Remote desktop virtualization implementations operate as client/server computing environments.
  • Application execution takes place on a virtual desktop of a virtual machine which is linked to the local client device over a network or a cloud using a remote display protocol through which the user interacts with applications. All applications and data used remain on the virtual machine with only display, keyboard, and mouse information communicated with the local client device which may be a conventional personal computer, a laptop computer, a thin client device, a tablet, or even a smartphone.
  • a common implementation of this approach is to host multiple desktop operating system instances on one or more virtual machine hardware platform running a hypervisor. This is generally referred to as “Virtual Desktop Infrastructure” or “VDI”.
  • VDI Virtual Desktop Infrastructure
  • the convenient access to the virtual desktops of the virtual machine presents potential wasteful consumption of energy and/or computer resources if all virtual machines are running all the times.
  • the present disclosure related to a virtual machine control system.
  • the virtual machine control system has a virtual machine controller which includes a processor and a memory storing computer executable instructions thereon.
  • the computer executable instructions when executed at the processor, are configured to: (a) register a plurality of employees, wherein each of the plurality of employees is assigned an employee ID; (b) store registration information of each of the plurality of employees in an attendance database; (c) associate one or more of a plurality of virtual machines to each of the plurality of employees, wherein each of the plurality of virtual machines has a virtual machine ID; (d) store virtual machine association information between the plurality of virtual machines and the plurality of employees in an employee ID database; (e) transmit polling inquiries periodically to the attendance database to retrieve employee presence events of the plurality of employees detected by one or more employee presence detection devices in a predetermined polling time interval, wherein for each of the employees, the employee presence events include an ingress event when the employee enters a predetermined area, and an egress event
  • the virtual machine control system further includes: the one or more employee presence detection devices configured to detect employee presence events of the plurality of employees; the attendance database configured to store employee presence events for each of the plurality of employees; the employee ID database configured to store employee IDs and one or more virtual machines associated with each of the plurality of employees; and at least one virtual machine server having the hypervisor and the plurality of virtual machines running on the hypervisor.
  • the one or more employee presence detection devices may include: a security control system of a predetermined area configured to detect the entering and exiting of the plurality of employees individually; a proximity detection device configured to detect the entering and exiting a vicinity of the predetermined area for each of the employees individually; a wireless device detection device configured to detect the presence at and the departure from the predetermined area for each of the employees individually; an online virtual machine control system configured to detect the logins and logouts of the plurality of the employees individually; and an employee working schedule control system configured to control the launching and shutting down a virtual machine according a working schedule of an employee associated with the virtual machine.
  • each of the one or more employee presence detection devices is configured to: determine that the detected employee presence event of the one of the employees is the ingress event when: (a) the employee enters the security control system of the predetermined area, (b) the employee's presence is detected by the proximity detection device of the predetermined area, (c) the employee's presence is detected by the wireless device detection device of the predetermined area, (d) the employee logs into a virtual machine remotely, or (e) a current time reaches the employee's start of predetermined working schedule; determine that the detected employee presence event of the one of the employees is the egress event when: (a) the employee exits the security control system of the predetermined area, (b) the employee's departure is detected by the proximity detection device of the predetermined area, (c) the employee's departure is detected by the wireless device detection device of the predetermined area, (d) the employee logs out of the virtual machine remotely, or (e) the current time reaches the employee's end of predetermined working schedule; and transmit the detected employee presence event of the one
  • the attendance database is configured to: (a) receive and store the registration information of each of the employees, (b) receive employee presence events of each of the employees from the one or more employee presence detection devices, (c) update the employee presence events received in the attendance database, (d) maintain the attendance information for each of the employees, (e) receive periodical polling inquiries from the virtual machine controller at the predetermined polling time interval, and (f) transmit, in response to the polling inquiries, the employee presence events occurred during last predetermined polling time interval, along with the employee ID to the virtual machine controller.
  • the employee ID database is configured to: (a) receive and store the registration information of each of the employees with corresponding employee IDs, (b) receive and store the virtual machine ID associated with each of the employees, (c) receive one or more identification inquiries from the virtual machine controller to identify a virtual machine ID based on a given employee ID, and (d) in response to the one or more identification inquiries, transmit the virtual machine ID associated with the employee with the employee ID to the virtual machine controller.
  • the virtual machine controller further includes a network interface controller configured to connect the virtual machine controller to a network.
  • the computer executable instructions include firmware, which includes: a polling module configured to transmit the polling inquiries periodically to the attendance database at the predetermined polling time interval to retrieve the employee presence events of the plurality of employees detected by the one or more employee presence detection devices; an employee ID lookup module to identify the virtual machine IDs based on the corresponding employee IDs of the employees whose employee presence events were detected during the last predetermined polling time interval; and a virtual machine control module for launching the virtual machine associated with the employee when the detected employee presence event of the employee is the ingress event and when the corresponding virtual machine is in the “off” state; and shutting down the virtual machine associated with the employee through the lookup when the detected employee presence event of the employee is the egress event and when the corresponding virtual machine is in the “on” state.
  • the firmware further includes a web server module to allow an administrator to perform virtual machine control system functions over the network.
  • a launching delay T 1 is applied to delay the launching of the virtual machine when the virtual machine control system instructs the hypervisor to launch the virtual machine
  • a shutting down delay T 2 is applied to delay the shutting down of the virtual machine when the virtual machine control system instructs the hypervisor to shut down the virtual machine.
  • the present disclosure relates to a computer-implemented method for a virtual machine control system.
  • the method includes: (a) registering, by a virtual machine controller, a plurality of employees, wherein each of the plurality of employees is assigned an employee ID; (b) storing, by the virtual machine controller, registration information of each of the plurality of employees in an attendance database; (c) associating, by the virtual machine controller, one or more of a plurality of virtual machines to each of the plurality of employees, wherein each of the plurality of virtual machines has a virtual machine ID; (d) storing, by the virtual machine controller, virtual machine association information between the plurality of virtual machines and the plurality of employees in an employee ID database; (e) transmitting, by the virtual machine controller, polling inquiries periodically to the attendance database to retrieve employee presence events of the plurality of employees detected by one or more employee presence detection devices in a predetermined polling time interval, wherein for each of the employees, the employee presence events include an ingress event when the employee enters a predetermined area,
  • the virtual machine control system includes: the virtual machine controller; the one or more employee presence detection devices configured to detect employee presence events of the employees; the attendance database configured to store employee presence events for each of the employees; the employee ID database configured to store employee IDs and one or more virtual machines associated with each of the employees; and at least one virtual machine server having the hypervisor, and the virtual machines are running on the hypervisor.
  • the virtual machine controller includes a processor, a network interface controller configured to connect the virtual machine controller to a network, and a memory storing firmware.
  • the firmware includes a polling module configured to transmit the polling inquiries periodically to the attendance database at the predetermined polling time interval to retrieve the employee presence events of the plurality of employees detected by the one or more employee presence detection devices; an employee ID lookup module to identify the virtual machine IDs based on the corresponding employee IDs of the employees whose employee presence events were detected during the last predetermined polling time interval; and a virtual machine control module for launching the virtual machine associated with the employee when the detected employee presence event of the employee is the ingress event and when the corresponding virtual machine is in the “off” state; and shutting down the virtual machine associated with the employee through the lookup when the detected employee presence event of the employee is the egress event and when the corresponding virtual machine is in the “on” state.
  • the firmware further includes a web server module to allow an administrator to perform virtual machine control system functions over the network.
  • the attendance database is configured to: (a) receive and store the registration information of each of the employees, (b) receive employee presence events of each of the employees from the one or more employee presence detection devices, (c) update the employee presence events received in the attendance database, (d) maintain the attendance information for each of the employees, (e) receive periodical polling inquiries from the virtual machine controller at the predetermined polling time interval, and (f) transmit, in response to the polling inquiries, the employee presence events occurred during last predetermined polling time interval, along with the employee ID to the virtual machine controller.
  • the employee ID database is configured to: (a) receive and store the registration information of each of the employees with corresponding employee IDs, (b) receive and store the virtual machine ID associated with each of the employees, (c) receive one or more identification inquiries from the virtual machine controller to identify a virtual machine ID based on a given employee ID, and (d) in response to the one or more identification inquiries, transmit the virtual machine ID associated with the employee with the employee ID to the virtual machine controller.
  • each of the one or more employee presence detection devices is configured to: determine that the detected employee presence event of the one of the employees is the ingress event when: (a) the employee enters the security control system of the predetermined area, (b) the employee's presence is detected by the proximity detection device of the predetermined area, (c) the employee's presence is detected by the wireless device detection device of the predetermined area, (d) the employee logs into a virtual machine remotely, or (e) a current time reaches the employee's start of predetermined working schedule; determine that the detected employee presence event of the one of the employees is the egress event when: (a) the employee exits the security control system of the predetermined area, (b) the employee's departure is detected by the proximity detection device of the predetermined area, (c) the employee's departure is detected by the wireless device detection device of the predetermined area, (d) the employee logs out of the virtual machine remotely, or (e) the current time reaches the employee's end of predetermined working schedule; and transmit the detected employee presence event of the one
  • a launching delay T 1 is applied to delay the launching of the virtual machine when the virtual machine control system instructs the hypervisor to launch the virtual machine
  • a shutting down delay T 2 is applied to delay the shutting down of the virtual machine when the virtual machine control system instructs the hypervisor to shut down the virtual machine.
  • the present disclosure relates to a non-transitory computer storage medium.
  • the non-transitory computer storage medium stores computer-executable instructions.
  • the computer-executable instructions When the computer-executable instructions are executed by a processor of a virtual machine controller, the computer-executable instructions cause the processor to perform following operations: (a) registering all employees, with each of the employees assigned an employee ID, (b) storing registration information of each of the employees in an attendance database, (c) associating one or more of virtual machines to each of the employees, with each of the virtual machines assigned a virtual machine ID, (d) storing virtual machine association information between the virtual machines and the employees in an employee ID database, (e) transmitting polling inquiries periodically to the attendance database to retrieve employee presence events of the plurality of employees detected by one or more employee presence detection devices in a predetermined polling time interval, wherein for each of the employees, the employee presence events include an ingress event when the employee enters a predetermined area, and an egress event when the employee exits the predetermined
  • the virtual machine controller includes the processor, a network interface controller configured to connect the virtual machine controller to a network, and a memory storing firmware.
  • the firmware includes: a polling module configured to transmit the polling inquiries periodically to the attendance database at the predetermined polling time interval to retrieve the employee presence events of the plurality of employees detected by the one or more employee presence detection devices; an employee ID lookup module to identify the virtual machine IDs based on the corresponding employee IDs of the employees whose employee presence events were detected during the last predetermined polling time interval; and a virtual machine control module for launching the virtual machine associated with the employee when the detected employee presence event of the employee is the ingress event and when the corresponding virtual machine is in the “off” state; and shutting down the virtual machine associated with the employee through the lookup when the detected employee presence event of the employee is the egress event and when the corresponding virtual machine is in the “on” state.
  • the firmware of the virtual machine controller also includes a web server module to allow an administrator to perform virtual machine control system functions over the network.
  • the attendance database is configured to: (a) receive and store the registration information of each of the employees, (b) receive employee presence events of each of the employees from the one or more employee presence detection devices, (c) update the employee presence events received in the attendance database, (d) maintain the attendance information for each of the employees, (e) receive periodical polling inquiries from the virtual machine controller at the predetermined polling time interval, and (f) transmit, in response to the polling inquiries, the employee presence events occurred during last predetermined polling time interval, along with the employee ID to the virtual machine controller.
  • the employee ID database is configured to: (a) receive and store the registration information of each of the employees with corresponding employee IDs, (b) receive and store the virtual machine ID associated with each of the employees, (c) receive one or more identification inquiries from the virtual machine controller to identify a virtual machine ID based on a given employee ID, and (d) in response to the one or more identification inquiries, transmit the virtual machine ID associated with the employee with the employee ID to the virtual machine controller.
  • each of the one or more employee presence detection devices is configured to: determine that the detected employee presence event of the one of the employees is the ingress event when: (a) the employee enters the security control system of the predetermined area, (b) the employee's presence is detected by the proximity detection device of the predetermined area, (c) the employee's presence is detected by the wireless device detection device of the predetermined area, (d) the employee logs into a virtual machine remotely, or (e) a current time reaches the employee's start of predetermined working schedule; determine that the detected employee presence event of the one of the employees is the egress event when: (a) the employee exits the security control system of the predetermined area, (b) the employee's departure is detected by the proximity detection device of the predetermined area, (c) the employee's departure is detected by the wireless device detection device of the predetermined area, (d) the employee logs out of the virtual machine remotely, or (e) the current time reaches the employee's end of predetermined working schedule; and transmit the detected employee presence event of the one
  • a launching delay T 1 is applied to delay the launching of the virtual machine when the virtual machine control system instructs the hypervisor to launch the virtual machine
  • a shutting down delay T 2 is applied to delay the shutting down of the virtual machine when the virtual machine control system instructs the hypervisor to shut down the virtual machine.
  • FIGS. 1-2 illustrate one or more embodiments of the present disclosure and, together with the written description, serve to explain the principles of the present disclosure.
  • the same reference numbers are used throughout the drawings to refer to the same or like elements of an embodiment, and wherein:
  • FIG. 1 schematically depicts a virtual machine control system 100 according to certain embodiments of the present disclosure
  • FIG. 2 shows a flow chart of virtual machine control system according to certain embodiments of the present disclosure.
  • “around”, “about” or “approximately” shall generally mean within 20 percent, preferably within 10 percent, and more preferably within 5 percent of a given value or range. Numerical quantities given herein are approximate, meaning that the term “around”, “about” or “approximately” can be inferred if not expressly stated.
  • phrase at least one of A, B, and C should be construed to mean a logical (A or B or C), using a non-exclusive logical OR. It should be understood that one or more steps within a method may be executed in different order (or concurrently) without altering the principles of the present disclosure.
  • module may refer to, be part of, or include an Application Specific Integrated Circuit (ASIC); an electronic circuit; a combinational logic circuit; a field programmable gate array (FPGA); a processor (shared, dedicated, or group) that executes code; other suitable hardware components that provide the described functionality; or a combination of some or all of the above, such as in a system-on-chip.
  • ASIC Application Specific Integrated Circuit
  • FPGA field programmable gate array
  • processor shared, dedicated, or group
  • the term module may include memory (shared, dedicated, or group) that stores code executed by the processor.
  • code may include software, firmware, and/or microcode, and may refer to programs, routines, functions, classes, and/or objects.
  • shared means that some or all code from multiple modules may be executed using a single (shared) processor. In addition, some or all code from multiple modules may be stored by a single (shared) memory.
  • group means that some or all code from a single module may be executed using a group of processors. In addition, some or all code from a single module may be stored using a group of memories.
  • interface generally refers to a communication tool or means at a point of interaction between components for performing data communication between the components.
  • an interface may be applicable at the level of both hardware and software, and may be uni-directional or bi-directional interface.
  • Examples of physical hardware interface may include electrical connectors, buses, ports, cables, terminals, and other I/O devices or components.
  • the components in communication with the interface may be, for example, multiple components or peripheral devices of a computer system.
  • chip or “computer chip”, as used herein, generally refer to a hardware electronic component, and may refer to or include a small electronic circuit unit, also known as an integrated circuit (IC), or a combination of electronic circuits or ICs.
  • IC integrated circuit
  • launch a virtual machine generally refers to a process of instantiating or constructing a new virtual machine instance with a specific virtual machine ID on a hypervisor. Once the virtual machine is launched, the virtual machine in an “on” state.
  • shtting down a virtual machine generally refers to a process of deleting or destructing an existing virtual machine instance with a specific virtual machine ID on a hypervisor. Once the virtual machine is destructed, the virtual machine is in an “off” state.
  • computer components may include physical hardware components, which are shown as solid line blocks, and virtual software components, which are shown as dashed line blocks.
  • virtual software components which are shown as dashed line blocks.
  • these computer components may be implemented in, but not limited to, the forms of software, firmware or hardware components, or a combination thereof.
  • FIGS. 1-2 in which embodiments of the present disclosure are shown.
  • This disclosure may, however, be embodied in many different forms and should not be construed as limited to the embodiments set forth herein; rather, these embodiments are provided so that this disclosure will be thorough and complete, and will fully convey the scope of the present disclosure to those skilled in the art.
  • Remote desktop virtualization is frequently used in a variety of different scenarios.
  • remote desktop virtualization may be used in distributed environments with high availability requirements and where desk-side technical support is not readily available, such as branch office and retail environments.
  • remote desktop virtualization may be used in environments where high network latency degrades the performance of conventional client/server applications.
  • remote desktop virtualization may be used in environments where remote access and data security requirements create conflicting requirements that can be addressed by retaining all (application) data within the data center with only display, keyboard, and mouse information communicated with the remote client.
  • Remote desktop virtualization may be used as a means of providing access to Windows applications on non-Windows endpoints including tablets, smart phones and non-Windows-based desktop PCs and laptops.
  • remote desktop virtualization may be used as a means of resource sharing, to provide low-cost desktop computing services in environments where providing every user with a dedicated desktop PC is either too expensive or otherwise unnecessary.
  • the convenient access to the virtual desktops of the virtual machine presents potential wasteful consumption of energy and/or computer resources if all virtual machines are running all the times.
  • the present disclosure relates to a virtual machine control system 100 as shown in FIG. 1 according to certain embodiments of the present disclosure.
  • the virtual machine control system 100 includes: (a) an attendance database 10 , (b) a virtual machine controller 30 , (c) an employee ID database 40 , (d) at least one virtual machine server 50 , and (e) one or more employee presence detection devices 60 .
  • the virtual machine control system 100 is used to monitor the arrivals and departure of employees at a predetermined area, and control virtual machines used by these employees. When an employee enters the predetermined area, the virtual machine control system 100 launches a virtual machine that corresponds to the employee.
  • the virtual machine control system 100 When an employee exits the predetermined area, the virtual machine control system 100 shuts down a virtual machine that corresponds to the employee.
  • the virtual machine control system 100 ascertains that the virtual machines are ready when the employees arrive, and minimizes the energy and resources consumed by the virtual machines for the employees when the employees leave the predetermined area.
  • the attendance database 10 is configured to store employee attendance information and employee presence events.
  • the employee presence events include an ingress event occurs when an employee enters a predetermined area, and an egress event occurs when an employee exits the predetermined area.
  • the virtual machine server 50 includes a processor and a memory.
  • the memory stores a hypervisor 52 .
  • Each of these virtual machines 54 has a virtual machine ID.
  • the attendance database 10 is configured to perform following operations: (a) receiving and storing the registration information of each of the employees, (b) receiving employee presence events of each of the employees from the one or more employee presence detection devices 60 , (c) updating the employee presence events received in the attendance database 10 , (d) maintaining the attendance information for each of the employees, (e) receiving periodical polling inquiries from the virtual machine controller 30 at a predetermined polling time interval, and (f) transmitting, in response to the polling inquiries, employee presence events to the virtual machine controller 30 when at least one employee presence event occurred to at least one employee during last predetermined polling time interval.
  • the employee ID database 40 is configured to perform following operations: (a) receiving and storing the registration information of each of the employees with corresponding employee IDs, (b) receiving and storing the virtual machine ID associated with each of the employees, (c) receiving one or more identification inquiries from the virtual machine controller 30 to identify a virtual machine ID based on a given employee ID, and (d) transmitting, in response to the one or more identification inquiries, the virtual machine ID associated with the employee with the employee ID to the virtual machine controller 30 .
  • the virtual machine server 50 includes: (a) a CPU 58 , (b) memory 56 , and a storage 53 .
  • a hypervisor 52 is stored in the storage 53 and a plurality of virtual machines 54 .
  • the CPU 58 is a host processor which is configured to control operation of the virtual machine server 50 .
  • the CPU 58 can execute the hypervisor 52 or other applications of the virtual machine server 50 .
  • the virtual machine server 50 may run on more than one CPU as the host processor, such as two CPUs, four CPUs, eight CPUs, or any suitable number of CPUs.
  • the memory 56 can be a volatile memory, such as the random-access memory (RAM), for storing the data and information during the operation of the virtual machine server 50 .
  • RAM random-access memory
  • the memory 56 can be a volatile memory, such as the random-access memory (RAM), for storing the data and information during the operation of the virtual machine server 50 .
  • the storage 53 is a non-volatile data storage media for storing the hypervisor 52 and other applications of the virtual machine server 50 . Examples of the storage 53 may include flash memory, memory cards, USB drives, hard drives, floppy disks, optical drives, or any other types of data storage devices.
  • the hypervisor 52 is a program that allows multiple virtual machine instances to run simultaneously and share a single hardware host, such as the virtual machine server 50 .
  • the hypervisor 52 when executed at the CPU 58 , implements hardware virtualization techniques and allows one or more operating systems or other applications to run concurrently as guests of one or more virtual machines on the host server (i.e. the virtual machine server 50 ).
  • the hypervisor 52 allows each user to run an operating system instance as a virtual machine.
  • the hypervisor 52 may be of various types and designs, such as MICROSOFT HYPER-V, XEN, VMWARE ESX, or other types of hypervisors.
  • the hypervisor 52 emulates one or more virtual computer machine, including a virtual CPU, and a virtual memory.
  • One or more virtual machines 54 - 1 , 54 - 2 , 54 - 3 , . . . , and 54 -N can operate in the hypervisor 52 .
  • VMOS virtual machine operation system
  • the virtual machines 54 include N virtual machines 54 , and they are a first virtual machine 54 - 1 , a second virtual machine 54 - 2 , the third virtual machine 54 - 3 , . . . , and a N-th virtual machine 54 -N.
  • one or more of virtual desktops are running on each of the virtual machines.
  • the employee presence detection devices 60 are used to detect the employee presence events of the employees. Each of the employees is assigned an employee ID. When an employee enters or leaves a predetermined area, an employee presence event has occurred to the employee and this employee presence event along with the employee ID assigned to the employee is detected by the employee presence detection devices 60 .
  • the employee presence detection devices 60 transmit the employee presence event, and the corresponding employee ID to the attendance database 10 over a network 20 as shown in FIG. 1 .
  • the employee presence detection devices 60 include: (a) a security control system of a predetermined area configured to detect the entering and exiting of the employees individually, (b) a proximity detection device configured to detect the entering and exiting a vicinity of the predetermined area of the employees individually, (c) a wireless device detection device configured to detect the presence of the employees in the coverage area of the predetermined area individually, (d) an online virtual machine control system configured to detect the logins and logouts of the employees individually, (e) an employee working schedule control system configured to control the launching and shutting down a virtual machine according a working schedule of an employee associated with the virtual machine, and (f) other presence detection devices configured to detect presence at the predetermined area for each of the employees individually.
  • the employee presence event includes: (a) an ingress event when the employee enters the predetermined area, and (b) an egress event when the employee exits the predetermined area.
  • the employee presence detection devices 60 are configured to detect an ingress event occurred to the employee: when the employee enters a security system of the predetermined area, when the employee is automatically connected to a wireless communication system at the predetermined area, when the employee logs into a virtual machine remotely, and when current time reaches the employee's end of predetermined working schedule.
  • the employee presence detection devices 60 are configured to detect an egress event occurred to an employee when the employee exits a security system of the predetermined area, when the employee is automatically disconnected to a Wi-Fi connection system at the predetermined area, when the employee logs out a virtual machine remotely, and when current time reaches the end of the employee's predetermined working schedule. Once the employee presence detection devices 60 detects one or more employee presence events, the employee presence detection devices 60 transmit the one or more employee presence events detected to the attendance database 10 along with the corresponding employee IDs respectively.
  • the virtual machine controller 30 includes: (a) a processor 31 , (b) a network interface controller 32 , and (c) a memory 33 .
  • the processor 31 is configured to perform virtual machine control system 100 functions.
  • the network interface controller 32 is configured to connect the virtual machine controller 30 to a network 20 .
  • the memory 33 stores firmware 34 of the virtual machine controller 30 .
  • the firmware 34 of the virtual machine controller 30 includes: (a) a polling module 36 , (b) a virtual machine control module 37 , and (c) an employee ID lookup module 38 .
  • the polling module 36 is configured to transmit polling inquiries periodically to the attendance database 10 at a predetermined polling time interval to retrieve any employee presence events of the employees detected by the employee presence detection devices 60 .
  • the attendance database 10 transmits all employee presence events occurred to the employees during the last polling time period along with their corresponding employee IDs to the employee ID lookup module 38 .
  • the employee ID lookup module 38 then sends an identification inquiries to the employee ID database 40 to performs a look-up using the employee IDs received in to identify the virtual machine IDs based on the corresponding employee IDs whose employee presence events were detected during the last predetermined polling time interval.
  • the employee ID database 40 transmits the virtual machine ID associated with the employee with the employee ID to the virtual machine control module 37 .
  • the virtual machine control module 37 will perform virtual machine controls to the corresponding virtual machines based on the employee presence events, the employee IDs, and their corresponding virtual machines with the identified virtual machine IDs.
  • the virtual machine control module 37 launches the virtual machine associated with the employee ID.
  • the virtual machine control module 37 shuts down the virtual machine associated with the employee ID.
  • the firmware 34 of the virtual machine controller 30 is programmed to perform following operations: (a) registering the employees with their employee IDs, (b) storing registration information of each of the employees in the attendance database 10 , (c) associating one or more of the virtual machines to each of the employees, (d) storing virtual machine association information between the virtual machines 54 and the employees in the employee ID database 40 , (e) transmitting polling inquiries periodically to the attendance database 10 to retrieve employee presence events of the employees detected by the one or more employee presence detection devices 60 in a predetermined polling time interval, (f) identifying, in response to a detected employee presence event of an employee, the virtual machine ID associated with the employee ID of the employee through look-up in the employee ID database 40 , and (g) instructing the hypervisor 52 to launch the virtual machine with the virtual machine ID associated the employee ID when the employee presence event occurred to the employee is an ingress event and when the virtual machine is in an “off” state, and shut down the virtual machine with the virtual machine ID associated the employee ID when the employee presence event
  • the launching or the shutting down may not necessarily launch or shut down immediately.
  • An optional launching delay T 1 may be introduced to delay the launching of the virtual machine identified when the virtual machine control system 100 instructs the hypervisor 52 to launch the virtual machine identified.
  • an optional shutting down delay T 2 may be introduced to delay the shutting down of the virtual machine identified when the virtual machine control system 100 instructs the hypervisor 52 to shut down the virtual machine identified.
  • a parking management system may detect the employee's presence at the parking garage. On one hand, it may take certain time (e.g. T-walk) for the employee to reach his/her office. On the other hand, it may take certain time (e.g. T-launch) for the virtual machine to launch and be ready for the employee to use.
  • the optional launching delay T 1 may be defined as: (T-walk)-(T-launch) such that the virtual machine will be ready when the employee arrives to his/her office. This optional launching delay T 1 may be adjusted by the work load of the virtual machine identified at the time, or the applications were running when the virtual machine identified was shut down the previous day.
  • the virtual machine control system 100 determines to shut down one or more virtual machines associated with employee.
  • the virtual machine identified may not be shutting down immediately because there may be some applications running and require gracefully shut down.
  • it should wait certain time (e.g. T-delay).
  • the optional launching delay T 1 and the optional shutting down delay T 2 for each employee may be set up at the virtual machine control system 100 individually, and are saved in the virtual machine control system 100 .
  • FIG. 2 shows a flow chart of virtual machine control system 100 according to certain embodiments of the present disclosure.
  • a program of the virtual machine control system 100 is started and a polling timer is initiated.
  • the polling time period may be set at one minute.
  • the polling time period may be set at ten seconds.
  • the polling time period may be set at other time lengths.
  • the polling time period is set at a value when the employee presence detection devices 60 detect no more than one employee presence event during the polling time period.
  • the virtual machine control system 100 checks if the polling timer is timed out. When the polling timer is not timed out, the program goes back to operation 204 and continues to wait. When the polling timer is timed out, the program continues to operation 206 .
  • the virtual machine control system 100 sends a polling inquiry to the attendance database 10 to retrieve employee presence events of the employees detected by the employee presence detection devices 60 .
  • the virtual machine control system 100 checks whether the virtual machines controller 30 receives any employee presence events of the employees detected by the employee presence detection devices 60 during the last polling time period. When there is no employee presence event occurred during last polling time period, the program goes back to operation 204 and continues to wait. When at least one employee presence event occurred during last polling time period, the program continues 210 and continues to wait.
  • the virtual machine control system 100 goes through all employee presence events one at a time.
  • the virtual machine control system 100 checks whether the employee presence event received is an ingress event or an egress event.
  • the program goes to operation 212 .
  • the program goes to operation 224 .
  • the employee lookup module 38 receives an employee ID that corresponds to the employee who had the ingress event from the attendance database 10 .
  • the employee lookup module 38 retrieves one or more virtual machine IDs associated with the employee, and sends the one or more virtual machine IDs retrieved to the virtual machines control module 37 .
  • the virtual machines control module 37 checks operation status of the virtual machines identified by the one or more virtual machine IDs retrieved. If two or more virtual machines are identified, then the virtual machines control module 37 checks operation status of these virtual machines one at a time. If the virtual machine identified is operating or in an “on” state, the program goes back to operation 204 and continues to wait. If the virtual machine identified is not operating or in an “Off” state, the program continues to operation 218 to launch the virtual machine identified.
  • the virtual machine control system 100 retrieves the optional launching delay T 1 , and calculates the actual time delay based on the current virtual machines loads and applications running when the virtual machines was shut down on the previous day, and start a launch timer.
  • the program loops back to operation 220 until the launch timer is timed out, and then the program continues to operation 222 .
  • the virtual machine control module 37 sends instructions to the hypervisor 50 to launch the virtual machine identified.
  • the program continues to operation 204 after the virtual machine identified is launched.
  • the virtual machine control system 100 checks whether the employee presence event received is an egress event. When an egress event occurred to an employee, the program goes to operation 226 . Otherwise, the program goes to operation 204 .
  • the employee lookup module 38 receives an employee ID that corresponds to the employee who had the egress event from the attendance database 10 .
  • the employee lookup module 38 retrieves one or more virtual machine IDs associated with the employee, and sends the one or more virtual machine IDs retrieved to the virtual machines control module 37 .
  • the virtual machines control module 37 checks operation status of the virtual machines identified by the one or more virtual machine IDs retrieved. If more than one virtual machines are identified, then the virtual machines control module 37 checks operation status of these virtual machines one at a time. If the virtual machine identified is not operating or in an “Off” state, the program goes back to operation 204 and continues to wait. If the virtual machine identified is operating or in an “On” state, the program continues to operation 232 to shut down the virtual machine identified.
  • the virtual machine control system 100 retrieves the optional shutting down delay T 2 , calculates the actual time delay based on current loads of the virtual machines, and starts a shut-down timer.
  • the program loops back to operation 234 until the shut-down timer is timed out, and then the program continues to operation 236 .
  • the virtual machine control module 37 sends instructions to the hypervisor 50 to shut down the virtual machine identified.
  • the program continues to operation 204 after the virtual machine identified is shut down.
  • the present disclosure relates to a computer-implemented method in a virtual machine control system 100 .
  • the computer-implemented method includes following operations: (a) registering all employees, with each of the employees assigned an employee ID, (b) storing registration information of each of the employees in an attendance database 10 , (c) associating one or more of a virtual machines 50 to each of the employees, with each of the virtual machines assigned a virtual machine ID, (d) storing virtual machine association information between the virtual machines and the employees in an employee ID database 40 , (e) transmitting polling inquiries periodically to the attendance database 10 to retrieve employee presence events of the employees detected by one or more employee presence detection devices 60 in a predetermined polling time interval, with the employee presence events having an ingress event when an employee enters a predetermined area, and an egress event when the employee exits the predetermined area, (f) identifying, in response to a detected employee presence event of an employee, the virtual machine ID associated with the employee ID of the employee through look-up in the employee ID database 40 .
  • the virtual machine control system 100 includes: (a) the one or more employee presence detection devices 60 configured to detect employee presence events of the employees, (b) the attendance database 10 configured to store employee presence events for each of the employees, (c) the employee ID database 40 configured to store employee IDs and one or more virtual machines associated with each of the employees, (d) at least one virtual machine server 50 having the hypervisor 52 , and the virtual machines 54 are running on the hypervisor 52 , and (e) a virtual machine controller 30 configured to perform virtual machine control functions of the virtual machine control system 100 .
  • the virtual machine controller 30 includes a processor 31 , a network interface controller 32 , and a memory 33 .
  • the processor 31 performs various functions of the virtual machine control system 100 .
  • the network interface controller 32 connects the virtual machine controller 30 to a network 20 .
  • the memory 33 stores firmware 34 .
  • the firmware 34 includes: a polling module 36 , an employee ID lookup module 38 , and a virtual machine control module 37 .
  • the polling module 36 transmits polling inquiries periodically to the attendance database 10 at the predetermined polling time interval to retrieve any employee presence events of the employees detected by the one or more employee presence detection devices 60 .
  • the employee ID lookup module 38 is used for virtual machine ID look up, and identifying the virtual machine IDs based on the corresponding employee IDs whose employee presence events were detected during the last predetermined polling time interval.
  • the virtual machine control module 37 is to perform control functions of the virtual machine controller 30 .
  • the functions of the virtual machine controller 30 include: (a) launching the virtual machine associated with the employee when the employee presence event occurred to the employee is an ingress event and when the corresponding virtual machine is in an “off” state, and (b) shutting down the virtual machine associated with the employee through the lookup when the employee presence event occurred to the employee is an egress event and when the corresponding virtual machine is in an “on” state.
  • the firmware 34 of the virtual machine controller 30 also includes a web server module 35 to allow an administrator to perform virtual machine control system 100 functions over the network 20 .
  • the attendance database 10 is configured to: (a) receive and store the registration information of each of the employees, (b) receive employee presence events of each of the employees from the one or more employee presence detection devices 60 , (c) update the employee presence events received in the attendance database 10 , (d) maintain the attendance information for each of the employees, (e) receive periodical polling inquiries from the virtual machine controller 30 at the predetermined polling time interval, and (f) transmit, in response to the polling inquiries, the employee presence events occurred during last predetermined polling time interval, along with the employee ID to the virtual machine controller 30 .
  • the employee ID database 40 is configured to: (a) receive and store the registration information of each of the employees with corresponding employee IDs, (b) receive and store the virtual machine ID associated with each of the employees, (c) receive one or more identification inquiries from the virtual machine controller 30 to identify a virtual machine ID based on a given employee ID, and (d) in response to the one or more identification inquiries, transmit the virtual machine ID associated with the employee with the employee ID to the virtual machine controller 30 .
  • each of the one or more employee presence detection devices is configured to: determine that the detected employee presence event of the one of the employees is the ingress event when: (a) the employee enters the security control system of the predetermined area, (b) the employee's presence is detected by the proximity detection device of the predetermined area, (c) the employee's presence is detected by the wireless device detection device of the predetermined area, (d) the employee logs into a virtual machine remotely, or (e) a current time reaches the employee's start of predetermined working schedule; determine that the detected employee presence event of the one of the employees is the egress event when: (a) the employee exits the security control system of the predetermined area, (b) the employee's departure is detected by the proximity detection device of the predetermined area, (c) the employee's departure is detected by the wireless device detection device of the predetermined area, (d) the employee logs out of the virtual machine remotely, or (e) the current time reaches the employee's end of predetermined working schedule; and transmit the detected employee presence event of the one
  • the present disclosure relates to a non-transitory computer storage medium.
  • the non-transitory computer storage medium stores computer-executable instructions.
  • the computer-executable instructions When the computer-executable instructions are executed by a processor 31 of a virtual machine controller 30 , the computer-executable instructions cause the processor 31 to perform following operations: (a) registering all employees, with each of the employees assigned an employee ID, (b) storing registration information of each of the employees in an attendance database 10 , (c) associating one or more of a virtual machines 50 to each of the employees, with each of the virtual machines assigned a virtual machine ID, (d) storing virtual machine association information between the virtual machines and the employees in an employee ID database 40 , (e) transmitting polling inquiries periodically to the attendance database 10 to retrieve employee presence events of the employees detected by one or more employee presence detection devices 60 in a predetermined polling time interval, with the employee presence events having an ingress event when an employee enters a predetermined area, and an egress event when the employee exits
  • the virtual machine control system 100 includes: (a) the one or more employee presence detection devices 60 configured to detect employee presence events of the employees, (b) the attendance database 10 configured to store employee presence events for each of the employees, (c) the employee ID database 40 configured to store employee IDs and one or more virtual machines associated with each of the employees, (d) at least one virtual machine server 50 having the hypervisor 52 , and the virtual machines 54 are running on the hypervisor 52 , and (e) a virtual machine controller 30 configured to perform virtual machine control functions of the virtual machine control system 100 .
  • the virtual machine controller 30 includes a processor 31 , a network interface controller 32 , and a memory 33 .
  • the processor 31 performs various functions of the virtual machine control system 100 .
  • the network interface controller 32 connects the virtual machine controller 30 to a network 20 .
  • the memory 33 stores firmware 34 .
  • the firmware 34 includes: a polling module 36 , an employee ID lookup module 38 , and a virtual machine control module 37 .
  • the polling module 36 transmits polling inquiries periodically to the attendance database 10 at the predetermined polling time interval to retrieve any employee presence events of the employees detected by the one or more employee presence detection devices 60 .
  • the employee ID lookup module 38 is used for virtual machine ID look up, and identifying the virtual machine IDs based on the corresponding employee IDs whose employee presence events were detected during the last predetermined polling time interval.
  • the virtual machine control module 37 is to perform control functions of the virtual machine controller 30 .
  • the functions of the virtual machine controller 30 include: (a) launching the virtual machine associated with the employee when the employee presence event occurred to the employee is an ingress event and when the corresponding virtual machine is in an “off” state, and (b) shutting down the virtual machine associated with the employee through the lookup when the employee presence event occurred to the employee is an egress event and when the corresponding virtual machine is in an “on” state.
  • the firmware 34 of the virtual machine controller 30 also includes a web server module 35 to allow an administrator to perform virtual machine control system 100 functions over the network 20 .
  • the attendance database 10 is configured to: (a) receive and store the registration information of each of the employees, (b) receive employee presence events of each of the employees from the one or more employee presence detection devices 60 , (c) update the employee presence events received in the attendance database 10 , (d) maintain the attendance information for each of the employees, (e) receive periodical polling inquiries from the virtual machine controller 30 at the predetermined polling time interval, and (f) transmit, in response to the polling inquiries, the employee presence events occurred during last predetermined polling time interval, along with the employee ID to the virtual machine controller 30 .
  • the employee ID database 40 is configured to: (a) receive and store the registration information of each of the employees with corresponding employee IDs, (b) receive and store the virtual machine ID associated with each of the employees, (c) receive one or more identification inquiries from the virtual machine controller 30 to identify a virtual machine ID based on a given employee ID, and (d) in response to the one or more identification inquiries, transmit the virtual machine ID associated with the employee with the employee ID to the virtual machine controller 30 .
  • each of the one or more employee presence detection devices 60 is configured to: determine that the detected employee presence event of the one of the employees is the ingress event when: (a) the employee enters the security control system of the predetermined area, (b) the employee's presence is detected by the proximity detection device of the predetermined area, (c) the employee's presence is detected by the wireless device detection device of the predetermined area, (d) the employee logs into a virtual machine remotely, or (e) a current time reaches the employee's start of predetermined working schedule; determine that the detected employee presence event of the one of the employees is the egress event when: (a) the employee exits the security control system of the predetermined area, (b) the employee's departure is detected by the proximity detection device of the predetermined area, (c) the employee's departure is detected by the wireless device detection device of the predetermined area, (d) the employee logs out of the virtual machine remotely, or (e) the current time reaches the employee's end of predetermined working schedule; and transmit the detected employee presence event of the

Abstract

Certain aspect of the present disclosure relates to a virtual machine (VM) control system, which includes a VM controller. For a plurality of employees, the VM controller registers each employee by assigning an employee ID, and stores registration information in an attendance database. The VM controller also associates one or more VMs to each employee, and stores VM association information between the VMs and the employees in an employee ID database. The VM controller transmits polling inquiries periodically to the attendance database to retrieve employee presence events of the employees. For each employee, the employee presence events include an ingress event and an egress event. When the ingress event is detected and the associated VM is off, the VM controller launches the associated VM. When the egress event is detected and the associated VM is on, the VM controller shuts down the associated VM.

Description

    FIELD
  • The present disclosure relates generally to virtual desktop infrastructure (VDI) technology, and more particularly to systems and methods for automatically launching virtual machines based on attendance.
  • BACKGROUND
  • The background description provided herein is for the purpose of generally presenting the context of the disclosure. Work of the presently named inventors, to the extent it is described in this background section, as well as aspects of the description that may not otherwise qualify as prior art at the time of filing, are neither expressly nor impliedly admitted as prior art against the present disclosure.
  • Remote desktop virtualization implementations operate as client/server computing environments. Application execution takes place on a virtual desktop of a virtual machine which is linked to the local client device over a network or a cloud using a remote display protocol through which the user interacts with applications. All applications and data used remain on the virtual machine with only display, keyboard, and mouse information communicated with the local client device which may be a conventional personal computer, a laptop computer, a thin client device, a tablet, or even a smartphone. A common implementation of this approach is to host multiple desktop operating system instances on one or more virtual machine hardware platform running a hypervisor. This is generally referred to as “Virtual Desktop Infrastructure” or “VDI”. However, the convenient access to the virtual desktops of the virtual machine presents potential wasteful consumption of energy and/or computer resources if all virtual machines are running all the times.
  • Therefore, an unaddressed need exists in the art to address the aforementioned deficiencies and inadequacies.
  • SUMMARY
  • In one aspect, the present disclosure related to a virtual machine control system. In certain embodiments, the virtual machine control system has a virtual machine controller which includes a processor and a memory storing computer executable instructions thereon. The computer executable instructions, when executed at the processor, are configured to: (a) register a plurality of employees, wherein each of the plurality of employees is assigned an employee ID; (b) store registration information of each of the plurality of employees in an attendance database; (c) associate one or more of a plurality of virtual machines to each of the plurality of employees, wherein each of the plurality of virtual machines has a virtual machine ID; (d) store virtual machine association information between the plurality of virtual machines and the plurality of employees in an employee ID database; (e) transmit polling inquiries periodically to the attendance database to retrieve employee presence events of the plurality of employees detected by one or more employee presence detection devices in a predetermined polling time interval, wherein for each of the employees, the employee presence events include an ingress event when the employee enters a predetermined area, and an egress event when the employee exits the predetermined area; (f) identify, in response to a detected employee presence event of one of the employees, the virtual machine ID associated with the employee ID of the employee through look-up in the employee ID database; and (g) instruct a hypervisor to launch the virtual machine with the virtual machine ID associated with the employee ID when the detected employee presence event of the one of the employees is the ingress event and when the virtual machine is in an “off” state; and shut down the virtual machine with the virtual machine ID associated with the employee ID when the detected employee presence event of the one of the employees is the egress event and when the virtual machine is in an “on” state.
  • In certain embodiments, the virtual machine control system further includes: the one or more employee presence detection devices configured to detect employee presence events of the plurality of employees; the attendance database configured to store employee presence events for each of the plurality of employees; the employee ID database configured to store employee IDs and one or more virtual machines associated with each of the plurality of employees; and at least one virtual machine server having the hypervisor and the plurality of virtual machines running on the hypervisor.
  • In certain embodiments, the one or more employee presence detection devices may include: a security control system of a predetermined area configured to detect the entering and exiting of the plurality of employees individually; a proximity detection device configured to detect the entering and exiting a vicinity of the predetermined area for each of the employees individually; a wireless device detection device configured to detect the presence at and the departure from the predetermined area for each of the employees individually; an online virtual machine control system configured to detect the logins and logouts of the plurality of the employees individually; and an employee working schedule control system configured to control the launching and shutting down a virtual machine according a working schedule of an employee associated with the virtual machine.
  • In certain embodiments, each of the one or more employee presence detection devices is configured to: determine that the detected employee presence event of the one of the employees is the ingress event when: (a) the employee enters the security control system of the predetermined area, (b) the employee's presence is detected by the proximity detection device of the predetermined area, (c) the employee's presence is detected by the wireless device detection device of the predetermined area, (d) the employee logs into a virtual machine remotely, or (e) a current time reaches the employee's start of predetermined working schedule; determine that the detected employee presence event of the one of the employees is the egress event when: (a) the employee exits the security control system of the predetermined area, (b) the employee's departure is detected by the proximity detection device of the predetermined area, (c) the employee's departure is detected by the wireless device detection device of the predetermined area, (d) the employee logs out of the virtual machine remotely, or (e) the current time reaches the employee's end of predetermined working schedule; and transmit the detected employee presence event of the one of the employees to the attendance database.
  • In certain embodiments, the attendance database is configured to: (a) receive and store the registration information of each of the employees, (b) receive employee presence events of each of the employees from the one or more employee presence detection devices, (c) update the employee presence events received in the attendance database, (d) maintain the attendance information for each of the employees, (e) receive periodical polling inquiries from the virtual machine controller at the predetermined polling time interval, and (f) transmit, in response to the polling inquiries, the employee presence events occurred during last predetermined polling time interval, along with the employee ID to the virtual machine controller.
  • In certain embodiments, the employee ID database is configured to: (a) receive and store the registration information of each of the employees with corresponding employee IDs, (b) receive and store the virtual machine ID associated with each of the employees, (c) receive one or more identification inquiries from the virtual machine controller to identify a virtual machine ID based on a given employee ID, and (d) in response to the one or more identification inquiries, transmit the virtual machine ID associated with the employee with the employee ID to the virtual machine controller.
  • In certain embodiments, the virtual machine controller further includes a network interface controller configured to connect the virtual machine controller to a network. In certain embodiments, the computer executable instructions include firmware, which includes: a polling module configured to transmit the polling inquiries periodically to the attendance database at the predetermined polling time interval to retrieve the employee presence events of the plurality of employees detected by the one or more employee presence detection devices; an employee ID lookup module to identify the virtual machine IDs based on the corresponding employee IDs of the employees whose employee presence events were detected during the last predetermined polling time interval; and a virtual machine control module for launching the virtual machine associated with the employee when the detected employee presence event of the employee is the ingress event and when the corresponding virtual machine is in the “off” state; and shutting down the virtual machine associated with the employee through the lookup when the detected employee presence event of the employee is the egress event and when the corresponding virtual machine is in the “on” state.
  • In certain embodiments, the firmware further includes a web server module to allow an administrator to perform virtual machine control system functions over the network.
  • In certain embodiments, a launching delay T1 is applied to delay the launching of the virtual machine when the virtual machine control system instructs the hypervisor to launch the virtual machine, and a shutting down delay T2 is applied to delay the shutting down of the virtual machine when the virtual machine control system instructs the hypervisor to shut down the virtual machine.
  • In another aspect, the present disclosure relates to a computer-implemented method for a virtual machine control system. The method includes: (a) registering, by a virtual machine controller, a plurality of employees, wherein each of the plurality of employees is assigned an employee ID; (b) storing, by the virtual machine controller, registration information of each of the plurality of employees in an attendance database; (c) associating, by the virtual machine controller, one or more of a plurality of virtual machines to each of the plurality of employees, wherein each of the plurality of virtual machines has a virtual machine ID; (d) storing, by the virtual machine controller, virtual machine association information between the plurality of virtual machines and the plurality of employees in an employee ID database; (e) transmitting, by the virtual machine controller, polling inquiries periodically to the attendance database to retrieve employee presence events of the plurality of employees detected by one or more employee presence detection devices in a predetermined polling time interval, wherein for each of the employees, the employee presence events include an ingress event when the employee enters a predetermined area, and an egress event when the employee exits the predetermined area; (f) in response to a detected employee presence event of one of the employees, identifying, by the virtual machine controller, the virtual machine ID associated with the employee ID of the employee through look-up in the employee ID database; and (g) instructing, by the virtual machine controller, a hypervisor to launch the virtual machine with the virtual machine ID associated with the employee ID when the detected employee presence event of the one of the employees is the ingress event and when the virtual machine is in an “off” state; and shut down the virtual machine with the virtual machine ID associated with the employee ID when the detected employee presence event of the one of the employees is the egress event and when the virtual machine is in an “on” state.
  • In certain embodiments, the virtual machine control system includes: the virtual machine controller; the one or more employee presence detection devices configured to detect employee presence events of the employees; the attendance database configured to store employee presence events for each of the employees; the employee ID database configured to store employee IDs and one or more virtual machines associated with each of the employees; and at least one virtual machine server having the hypervisor, and the virtual machines are running on the hypervisor.
  • In certain embodiments, the virtual machine controller includes a processor, a network interface controller configured to connect the virtual machine controller to a network, and a memory storing firmware. The firmware includes a polling module configured to transmit the polling inquiries periodically to the attendance database at the predetermined polling time interval to retrieve the employee presence events of the plurality of employees detected by the one or more employee presence detection devices; an employee ID lookup module to identify the virtual machine IDs based on the corresponding employee IDs of the employees whose employee presence events were detected during the last predetermined polling time interval; and a virtual machine control module for launching the virtual machine associated with the employee when the detected employee presence event of the employee is the ingress event and when the corresponding virtual machine is in the “off” state; and shutting down the virtual machine associated with the employee through the lookup when the detected employee presence event of the employee is the egress event and when the corresponding virtual machine is in the “on” state.
  • In certain embodiments, the firmware further includes a web server module to allow an administrator to perform virtual machine control system functions over the network.
  • In certain embodiments, the attendance database is configured to: (a) receive and store the registration information of each of the employees, (b) receive employee presence events of each of the employees from the one or more employee presence detection devices, (c) update the employee presence events received in the attendance database, (d) maintain the attendance information for each of the employees, (e) receive periodical polling inquiries from the virtual machine controller at the predetermined polling time interval, and (f) transmit, in response to the polling inquiries, the employee presence events occurred during last predetermined polling time interval, along with the employee ID to the virtual machine controller.
  • In certain embodiments, the employee ID database is configured to: (a) receive and store the registration information of each of the employees with corresponding employee IDs, (b) receive and store the virtual machine ID associated with each of the employees, (c) receive one or more identification inquiries from the virtual machine controller to identify a virtual machine ID based on a given employee ID, and (d) in response to the one or more identification inquiries, transmit the virtual machine ID associated with the employee with the employee ID to the virtual machine controller.
  • In certain embodiments, each of the one or more employee presence detection devices is configured to: determine that the detected employee presence event of the one of the employees is the ingress event when: (a) the employee enters the security control system of the predetermined area, (b) the employee's presence is detected by the proximity detection device of the predetermined area, (c) the employee's presence is detected by the wireless device detection device of the predetermined area, (d) the employee logs into a virtual machine remotely, or (e) a current time reaches the employee's start of predetermined working schedule; determine that the detected employee presence event of the one of the employees is the egress event when: (a) the employee exits the security control system of the predetermined area, (b) the employee's departure is detected by the proximity detection device of the predetermined area, (c) the employee's departure is detected by the wireless device detection device of the predetermined area, (d) the employee logs out of the virtual machine remotely, or (e) the current time reaches the employee's end of predetermined working schedule; and transmit the detected employee presence event of the one of the employees to the attendance database.
  • In certain embodiments, a launching delay T1 is applied to delay the launching of the virtual machine when the virtual machine control system instructs the hypervisor to launch the virtual machine, and a shutting down delay T2 is applied to delay the shutting down of the virtual machine when the virtual machine control system instructs the hypervisor to shut down the virtual machine.
  • In yet another aspect, the present disclosure relates to a non-transitory computer storage medium. In certain embodiments, the non-transitory computer storage medium stores computer-executable instructions. When the computer-executable instructions are executed by a processor of a virtual machine controller, the computer-executable instructions cause the processor to perform following operations: (a) registering all employees, with each of the employees assigned an employee ID, (b) storing registration information of each of the employees in an attendance database, (c) associating one or more of virtual machines to each of the employees, with each of the virtual machines assigned a virtual machine ID, (d) storing virtual machine association information between the virtual machines and the employees in an employee ID database, (e) transmitting polling inquiries periodically to the attendance database to retrieve employee presence events of the plurality of employees detected by one or more employee presence detection devices in a predetermined polling time interval, wherein for each of the employees, the employee presence events include an ingress event when the employee enters a predetermined area, and an egress event when the employee exits the predetermined area, (f) identifying, in response to a detected employee presence event of one of the employees, the virtual machine ID associated with the employee ID of the employee through look-up in the employee ID database, and (g) instructing a hypervisor to launch the virtual machine with the virtual machine ID associated with the employee ID when the detected employee presence event of the one of the employees is the ingress event and when the virtual machine is in an “off” state; and shut down the virtual machine with the virtual machine ID associated with the employee ID when the detected employee presence event of the one of the employees is the egress event and when the virtual machine is in an “on” state.
  • In certain embodiments, the virtual machine controller includes the processor, a network interface controller configured to connect the virtual machine controller to a network, and a memory storing firmware. The firmware includes: a polling module configured to transmit the polling inquiries periodically to the attendance database at the predetermined polling time interval to retrieve the employee presence events of the plurality of employees detected by the one or more employee presence detection devices; an employee ID lookup module to identify the virtual machine IDs based on the corresponding employee IDs of the employees whose employee presence events were detected during the last predetermined polling time interval; and a virtual machine control module for launching the virtual machine associated with the employee when the detected employee presence event of the employee is the ingress event and when the corresponding virtual machine is in the “off” state; and shutting down the virtual machine associated with the employee through the lookup when the detected employee presence event of the employee is the egress event and when the corresponding virtual machine is in the “on” state.
  • In certain embodiments, the firmware of the virtual machine controller also includes a web server module to allow an administrator to perform virtual machine control system functions over the network.
  • In certain embodiments, the attendance database is configured to: (a) receive and store the registration information of each of the employees, (b) receive employee presence events of each of the employees from the one or more employee presence detection devices, (c) update the employee presence events received in the attendance database, (d) maintain the attendance information for each of the employees, (e) receive periodical polling inquiries from the virtual machine controller at the predetermined polling time interval, and (f) transmit, in response to the polling inquiries, the employee presence events occurred during last predetermined polling time interval, along with the employee ID to the virtual machine controller.
  • In certain embodiments, the employee ID database is configured to: (a) receive and store the registration information of each of the employees with corresponding employee IDs, (b) receive and store the virtual machine ID associated with each of the employees, (c) receive one or more identification inquiries from the virtual machine controller to identify a virtual machine ID based on a given employee ID, and (d) in response to the one or more identification inquiries, transmit the virtual machine ID associated with the employee with the employee ID to the virtual machine controller.
  • In certain embodiments, each of the one or more employee presence detection devices is configured to: determine that the detected employee presence event of the one of the employees is the ingress event when: (a) the employee enters the security control system of the predetermined area, (b) the employee's presence is detected by the proximity detection device of the predetermined area, (c) the employee's presence is detected by the wireless device detection device of the predetermined area, (d) the employee logs into a virtual machine remotely, or (e) a current time reaches the employee's start of predetermined working schedule; determine that the detected employee presence event of the one of the employees is the egress event when: (a) the employee exits the security control system of the predetermined area, (b) the employee's departure is detected by the proximity detection device of the predetermined area, (c) the employee's departure is detected by the wireless device detection device of the predetermined area, (d) the employee logs out of the virtual machine remotely, or (e) the current time reaches the employee's end of predetermined working schedule; and transmit the detected employee presence event of the one of the employees to the attendance database.
  • In certain embodiments, a launching delay T1 is applied to delay the launching of the virtual machine when the virtual machine control system instructs the hypervisor to launch the virtual machine, and a shutting down delay T2 is applied to delay the shutting down of the virtual machine when the virtual machine control system instructs the hypervisor to shut down the virtual machine.
  • These and other aspects of the present disclosure will become apparent from the following description of the preferred embodiment taken in conjunction with the following drawings and their captions, although variations and modifications therein may be affected without departing from the spirit and scope of the novel concepts of the disclosure.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • The present disclosure will become more fully understood from the detailed description and the accompanying drawings FIGS. 1-2. These accompanying drawings illustrate one or more embodiments of the present disclosure and, together with the written description, serve to explain the principles of the present disclosure. Wherever possible, the same reference numbers are used throughout the drawings to refer to the same or like elements of an embodiment, and wherein:
  • FIG. 1 schematically depicts a virtual machine control system 100 according to certain embodiments of the present disclosure;
  • FIG. 2 shows a flow chart of virtual machine control system according to certain embodiments of the present disclosure.
  • DETAILED DESCRIPTION
  • The present disclosure is more particularly described in the following examples that are intended as illustrative only since numerous modifications and variations therein will be apparent to those skilled in the art. Various embodiments of the disclosure are now described in detail. Referring to the drawings, like numbers, if any, indicate like components throughout the views. As used in the description herein and throughout the claims that follow, the meaning of “a”, “an”, and “the” includes plural reference unless the context clearly dictates otherwise. Also, as used in the description herein and throughout the claims that follow, the meaning of “in” includes “in” and “on” unless the context clearly dictates otherwise. Moreover, titles or subtitles may be used in the specification for the convenience of a reader, which shall have no influence on the scope of the present disclosure. Additionally, some terms used in this specification are more specifically defined below.
  • The terms used in this specification generally have their ordinary meanings in the art, within the context of the disclosure, and in the specific context where each term is used. Certain terms that are used to describe the disclosure are discussed below, or elsewhere in the specification, to provide additional guidance to the practitioner regarding the description of the disclosure. For convenience, certain terms may be highlighted, for example using italics and/or quotation marks. The use of highlighting has no influence on the scope and meaning of a term; the scope and meaning of a term is the same, in the same context, whether or not it is highlighted. It will be appreciated that same thing can be said in more than one way. Consequently, alternative language and synonyms may be used for any one or more of the terms discussed herein, nor is any special significance to be placed upon whether or not a term is elaborated or discussed herein. Synonyms for certain terms are provided. A recital of one or more synonyms does not exclude the use of other synonyms. The use of examples anywhere in this specification including examples of any terms discussed herein is illustrative only, and in no way limits the scope and meaning of the disclosure or of any exemplified term. Likewise, the disclosure is not limited to various embodiments given in this specification.
  • Unless otherwise defined, all technical and scientific terms used herein have the same meaning as commonly understood by one of ordinary skill in the art to which this disclosure pertains. In the case of conflict, the present document, including definitions will control.
  • As used herein, “around”, “about” or “approximately” shall generally mean within 20 percent, preferably within 10 percent, and more preferably within 5 percent of a given value or range. Numerical quantities given herein are approximate, meaning that the term “around”, “about” or “approximately” can be inferred if not expressly stated.
  • As used herein, “plurality” means two or more.
  • As used herein, the terms “comprising,” “including,” “carrying,” “having,” “containing,” “involving,” and the like are to be understood to be open-ended, i.e., to mean including but not limited to.
  • As used herein, the phrase at least one of A, B, and C should be construed to mean a logical (A or B or C), using a non-exclusive logical OR. It should be understood that one or more steps within a method may be executed in different order (or concurrently) without altering the principles of the present disclosure.
  • As used herein, the term “module” may refer to, be part of, or include an Application Specific Integrated Circuit (ASIC); an electronic circuit; a combinational logic circuit; a field programmable gate array (FPGA); a processor (shared, dedicated, or group) that executes code; other suitable hardware components that provide the described functionality; or a combination of some or all of the above, such as in a system-on-chip. The term module may include memory (shared, dedicated, or group) that stores code executed by the processor.
  • The term “code”, as used herein, may include software, firmware, and/or microcode, and may refer to programs, routines, functions, classes, and/or objects. The term shared, as used above, means that some or all code from multiple modules may be executed using a single (shared) processor. In addition, some or all code from multiple modules may be stored by a single (shared) memory. The term group, as used above, means that some or all code from a single module may be executed using a group of processors. In addition, some or all code from a single module may be stored using a group of memories.
  • The term “interface”, as used herein, generally refers to a communication tool or means at a point of interaction between components for performing data communication between the components. Generally, an interface may be applicable at the level of both hardware and software, and may be uni-directional or bi-directional interface. Examples of physical hardware interface may include electrical connectors, buses, ports, cables, terminals, and other I/O devices or components. The components in communication with the interface may be, for example, multiple components or peripheral devices of a computer system.
  • The terms “chip” or “computer chip”, as used herein, generally refer to a hardware electronic component, and may refer to or include a small electronic circuit unit, also known as an integrated circuit (IC), or a combination of electronic circuits or ICs.
  • The term “launch a virtual machine”, as used herein, generally refers to a process of instantiating or constructing a new virtual machine instance with a specific virtual machine ID on a hypervisor. Once the virtual machine is launched, the virtual machine in an “on” state. The term “shutting down a virtual machine”, as used herein, generally refers to a process of deleting or destructing an existing virtual machine instance with a specific virtual machine ID on a hypervisor. Once the virtual machine is destructed, the virtual machine is in an “off” state.
  • The present disclosure relates to computer systems. As depicted in the drawings, computer components may include physical hardware components, which are shown as solid line blocks, and virtual software components, which are shown as dashed line blocks. One of ordinary skill in the art would appreciate that, unless otherwise indicated, these computer components may be implemented in, but not limited to, the forms of software, firmware or hardware components, or a combination thereof.
  • The present disclosure will now be described more fully hereinafter with reference to the accompanying drawings, FIGS. 1-2, in which embodiments of the present disclosure are shown. This disclosure may, however, be embodied in many different forms and should not be construed as limited to the embodiments set forth herein; rather, these embodiments are provided so that this disclosure will be thorough and complete, and will fully convey the scope of the present disclosure to those skilled in the art.
  • Remote desktop virtualization is frequently used in a variety of different scenarios. For example, remote desktop virtualization may be used in distributed environments with high availability requirements and where desk-side technical support is not readily available, such as branch office and retail environments. In certain embodiments, remote desktop virtualization may be used in environments where high network latency degrades the performance of conventional client/server applications. In certain embodiments, remote desktop virtualization may be used in environments where remote access and data security requirements create conflicting requirements that can be addressed by retaining all (application) data within the data center with only display, keyboard, and mouse information communicated with the remote client. Remote desktop virtualization may be used as a means of providing access to Windows applications on non-Windows endpoints including tablets, smart phones and non-Windows-based desktop PCs and laptops. In certain embodiments, remote desktop virtualization may be used as a means of resource sharing, to provide low-cost desktop computing services in environments where providing every user with a dedicated desktop PC is either too expensive or otherwise unnecessary. As described above, the convenient access to the virtual desktops of the virtual machine presents potential wasteful consumption of energy and/or computer resources if all virtual machines are running all the times. Thus, it is desirable to keep virtual machines off when users of these virtual machines are not present at the work place, and launch a virtual machine when a user associated with the virtual machine is present at the work place.
  • In accordance with the purposes of present disclosure, as embodied and broadly described herein, in certain aspects, the present disclosure relates to a virtual machine control system 100 as shown in FIG. 1 according to certain embodiments of the present disclosure. The virtual machine control system 100 includes: (a) an attendance database 10, (b) a virtual machine controller 30, (c) an employee ID database 40, (d) at least one virtual machine server 50, and (e) one or more employee presence detection devices 60. In certain embodiments, the virtual machine control system 100 is used to monitor the arrivals and departure of employees at a predetermined area, and control virtual machines used by these employees. When an employee enters the predetermined area, the virtual machine control system 100 launches a virtual machine that corresponds to the employee. When an employee exits the predetermined area, the virtual machine control system 100 shuts down a virtual machine that corresponds to the employee. The virtual machine control system 100 ascertains that the virtual machines are ready when the employees arrive, and minimizes the energy and resources consumed by the virtual machines for the employees when the employees leave the predetermined area.
  • In certain embodiments, the attendance database 10 is configured to store employee attendance information and employee presence events. The employee presence events include an ingress event occurs when an employee enters a predetermined area, and an egress event occurs when an employee exits the predetermined area. The virtual machine server 50 includes a processor and a memory. The memory stores a hypervisor 52. When the hypervisor 52 is operating on the processor of the virtual machine server 50, a number of virtual machines 54-I, I=1, 2, . . . N may be instantiated or launched, or shut down by the virtual machine control system 100. Each of these virtual machines 54 has a virtual machine ID.
  • In certain embodiments, the attendance database 10 is configured to perform following operations: (a) receiving and storing the registration information of each of the employees, (b) receiving employee presence events of each of the employees from the one or more employee presence detection devices 60, (c) updating the employee presence events received in the attendance database 10, (d) maintaining the attendance information for each of the employees, (e) receiving periodical polling inquiries from the virtual machine controller 30 at a predetermined polling time interval, and (f) transmitting, in response to the polling inquiries, employee presence events to the virtual machine controller 30 when at least one employee presence event occurred to at least one employee during last predetermined polling time interval.
  • In certain embodiments, the employee ID database 40 is configured to perform following operations: (a) receiving and storing the registration information of each of the employees with corresponding employee IDs, (b) receiving and storing the virtual machine ID associated with each of the employees, (c) receiving one or more identification inquiries from the virtual machine controller 30 to identify a virtual machine ID based on a given employee ID, and (d) transmitting, in response to the one or more identification inquiries, the virtual machine ID associated with the employee with the employee ID to the virtual machine controller 30.
  • In certain embodiments, the virtual machine server 50 includes: (a) a CPU 58, (b) memory 56, and a storage 53. A hypervisor 52 is stored in the storage 53 and a plurality of virtual machines 54. The CPU 58 is a host processor which is configured to control operation of the virtual machine server 50. The CPU 58 can execute the hypervisor 52 or other applications of the virtual machine server 50. In certain embodiments, the virtual machine server 50 may run on more than one CPU as the host processor, such as two CPUs, four CPUs, eight CPUs, or any suitable number of CPUs. The memory 56 can be a volatile memory, such as the random-access memory (RAM), for storing the data and information during the operation of the virtual machine server 50. The memory 56 can be a volatile memory, such as the random-access memory (RAM), for storing the data and information during the operation of the virtual machine server 50. The storage 53 is a non-volatile data storage media for storing the hypervisor 52 and other applications of the virtual machine server 50. Examples of the storage 53 may include flash memory, memory cards, USB drives, hard drives, floppy disks, optical drives, or any other types of data storage devices.
  • The hypervisor 52 is a program that allows multiple virtual machine instances to run simultaneously and share a single hardware host, such as the virtual machine server 50. The hypervisor 52, when executed at the CPU 58, implements hardware virtualization techniques and allows one or more operating systems or other applications to run concurrently as guests of one or more virtual machines on the host server (i.e. the virtual machine server 50). The hypervisor 52 allows each user to run an operating system instance as a virtual machine. In certain embodiments, the hypervisor 52 may be of various types and designs, such as MICROSOFT HYPER-V, XEN, VMWARE ESX, or other types of hypervisors.
  • As shown in FIG. 1, when the hypervisor instance 52 runs on the virtual machine server 50, the hypervisor 52 emulates one or more virtual computer machine, including a virtual CPU, and a virtual memory. One or more virtual machines 54-1, 54-2, 54-3, . . . , and 54-N can operate in the hypervisor 52. Each of the virtual machines 54-i, i=1, 2, . . . , N can run a virtual machine operation system (VMOS), such as WINDOWS or LINUX. For brevity, unless otherwise noted, a virtual machine and the virtual machines operating system run in that virtual machines are collectively referred to as a virtual machine (such as each virtual machines 54-i, i=1, 2, . . . , N shown in FIG. 1).
  • In one embodiment, the virtual machines 54 include N virtual machines 54, and they are a first virtual machine 54-1, a second virtual machine 54-2, the third virtual machine 54-3, . . . , and a N-th virtual machine 54-N. In certain embodiments, one or more of virtual desktops are running on each of the virtual machines.
  • In certain embodiments, the employee presence detection devices 60 are used to detect the employee presence events of the employees. Each of the employees is assigned an employee ID. When an employee enters or leaves a predetermined area, an employee presence event has occurred to the employee and this employee presence event along with the employee ID assigned to the employee is detected by the employee presence detection devices 60. The employee presence detection devices 60 transmit the employee presence event, and the corresponding employee ID to the attendance database 10 over a network 20 as shown in FIG. 1.
  • In certain embodiments, the employee presence detection devices 60 include: (a) a security control system of a predetermined area configured to detect the entering and exiting of the employees individually, (b) a proximity detection device configured to detect the entering and exiting a vicinity of the predetermined area of the employees individually, (c) a wireless device detection device configured to detect the presence of the employees in the coverage area of the predetermined area individually, (d) an online virtual machine control system configured to detect the logins and logouts of the employees individually, (e) an employee working schedule control system configured to control the launching and shutting down a virtual machine according a working schedule of an employee associated with the virtual machine, and (f) other presence detection devices configured to detect presence at the predetermined area for each of the employees individually.
  • In certain embodiments, the employee presence event includes: (a) an ingress event when the employee enters the predetermined area, and (b) an egress event when the employee exits the predetermined area. The employee presence detection devices 60 are configured to detect an ingress event occurred to the employee: when the employee enters a security system of the predetermined area, when the employee is automatically connected to a wireless communication system at the predetermined area, when the employee logs into a virtual machine remotely, and when current time reaches the employee's end of predetermined working schedule. The employee presence detection devices 60 are configured to detect an egress event occurred to an employee when the employee exits a security system of the predetermined area, when the employee is automatically disconnected to a Wi-Fi connection system at the predetermined area, when the employee logs out a virtual machine remotely, and when current time reaches the end of the employee's predetermined working schedule. Once the employee presence detection devices 60 detects one or more employee presence events, the employee presence detection devices 60 transmit the one or more employee presence events detected to the attendance database 10 along with the corresponding employee IDs respectively.
  • In certain embodiments, the virtual machine controller 30 includes: (a) a processor 31, (b) a network interface controller 32, and (c) a memory 33. The processor 31 is configured to perform virtual machine control system 100 functions. The network interface controller 32 is configured to connect the virtual machine controller 30 to a network 20. The memory 33 stores firmware 34 of the virtual machine controller 30. The firmware 34 of the virtual machine controller 30 includes: (a) a polling module 36, (b) a virtual machine control module 37, and (c) an employee ID lookup module 38. In certain embodiments, the polling module 36 is configured to transmit polling inquiries periodically to the attendance database 10 at a predetermined polling time interval to retrieve any employee presence events of the employees detected by the employee presence detection devices 60. When the employee presence events are detected by the employee presence detection devices 60, the attendance database 10 transmits all employee presence events occurred to the employees during the last polling time period along with their corresponding employee IDs to the employee ID lookup module 38. The employee ID lookup module 38 then sends an identification inquiries to the employee ID database 40 to performs a look-up using the employee IDs received in to identify the virtual machine IDs based on the corresponding employee IDs whose employee presence events were detected during the last predetermined polling time interval. In response to the look-up, the employee ID database 40 transmits the virtual machine ID associated with the employee with the employee ID to the virtual machine control module 37. The virtual machine control module 37 will perform virtual machine controls to the corresponding virtual machines based on the employee presence events, the employee IDs, and their corresponding virtual machines with the identified virtual machine IDs. When the employee presence event occurred to the employee is an ingress event and when the corresponding virtual machine is in an “off” state, the virtual machine control module 37 launches the virtual machine associated with the employee ID. When the employee presence event occurred to the employee is an egress event and when the corresponding virtual machine is in an “on” state, the virtual machine control module 37 shuts down the virtual machine associated with the employee ID.
  • In certain embodiments, the firmware 34 of the virtual machine controller 30 is programmed to perform following operations: (a) registering the employees with their employee IDs, (b) storing registration information of each of the employees in the attendance database 10, (c) associating one or more of the virtual machines to each of the employees, (d) storing virtual machine association information between the virtual machines 54 and the employees in the employee ID database 40, (e) transmitting polling inquiries periodically to the attendance database 10 to retrieve employee presence events of the employees detected by the one or more employee presence detection devices 60 in a predetermined polling time interval, (f) identifying, in response to a detected employee presence event of an employee, the virtual machine ID associated with the employee ID of the employee through look-up in the employee ID database 40, and (g) instructing the hypervisor 52 to launch the virtual machine with the virtual machine ID associated the employee ID when the employee presence event occurred to the employee is an ingress event and when the virtual machine is in an “off” state, and shut down the virtual machine with the virtual machine ID associated the employee ID when the employee presence event occurred to the employee is an egress event and when the virtual machine is in an “on” state.
  • When the virtual machine control system 100 determines to launch or shut down a virtual machine as identified, the launching or the shutting down may not necessarily launch or shut down immediately. An optional launching delay T1 may be introduced to delay the launching of the virtual machine identified when the virtual machine control system 100 instructs the hypervisor 52 to launch the virtual machine identified. Similarly, an optional shutting down delay T2 may be introduced to delay the shutting down of the virtual machine identified when the virtual machine control system 100 instructs the hypervisor 52 to shut down the virtual machine identified.
  • In certain embodiments, for example, when an employee drives into a parking garage, and a parking management system may detect the employee's presence at the parking garage. On one hand, it may take certain time (e.g. T-walk) for the employee to reach his/her office. On the other hand, it may take certain time (e.g. T-launch) for the virtual machine to launch and be ready for the employee to use. The optional launching delay T1 may be defined as: (T-walk)-(T-launch) such that the virtual machine will be ready when the employee arrives to his/her office. This optional launching delay T1 may be adjusted by the work load of the virtual machine identified at the time, or the applications were running when the virtual machine identified was shut down the previous day.
  • In certain embodiments, for example, when an employee leaves his or her office and his egress event is detected by a wireless communication system, the virtual machine control system 100 determines to shut down one or more virtual machines associated with employee. The virtual machine identified may not be shutting down immediately because there may be some applications running and require gracefully shut down. On the other hand, in order to avoid shutting down the virtual machine when the employee will just leave the office for a quick meeting, or pick up something from the car, it should wait certain time (e.g. T-delay).
  • The optional launching delay T1 and the optional shutting down delay T2 for each employee may be set up at the virtual machine control system 100 individually, and are saved in the virtual machine control system 100.
  • FIG. 2 shows a flow chart of virtual machine control system 100 according to certain embodiments of the present disclosure.
  • At operation 202, a program of the virtual machine control system 100 is started and a polling timer is initiated. In one embodiment, the polling time period may be set at one minute. In another embodiment, the polling time period may be set at ten seconds. In certain embodiments, the polling time period may be set at other time lengths. In one embodiment, the polling time period is set at a value when the employee presence detection devices 60 detect no more than one employee presence event during the polling time period.
  • At operation 204, the virtual machine control system 100 checks if the polling timer is timed out. When the polling timer is not timed out, the program goes back to operation 204 and continues to wait. When the polling timer is timed out, the program continues to operation 206.
  • At operation 206, the virtual machine control system 100 sends a polling inquiry to the attendance database 10 to retrieve employee presence events of the employees detected by the employee presence detection devices 60.
  • At operation 208, the virtual machine control system 100 checks whether the virtual machines controller 30 receives any employee presence events of the employees detected by the employee presence detection devices 60 during the last polling time period. When there is no employee presence event occurred during last polling time period, the program goes back to operation 204 and continues to wait. When at least one employee presence event occurred during last polling time period, the program continues 210 and continues to wait.
  • At operation 210, when more than one employee presence events occurred during the last polling time period, the virtual machine control system 100 goes through all employee presence events one at a time. The virtual machine control system 100 checks whether the employee presence event received is an ingress event or an egress event. When an ingress event occurred to an employee, the program goes to operation 212. When an egress event occurred to an employee, the program goes to operation 224.
  • At operation 212, the employee lookup module 38 receives an employee ID that corresponds to the employee who had the ingress event from the attendance database 10.
  • At operation 214, the employee lookup module 38 retrieves one or more virtual machine IDs associated with the employee, and sends the one or more virtual machine IDs retrieved to the virtual machines control module 37.
  • At operation 216, the virtual machines control module 37 checks operation status of the virtual machines identified by the one or more virtual machine IDs retrieved. If two or more virtual machines are identified, then the virtual machines control module 37 checks operation status of these virtual machines one at a time. If the virtual machine identified is operating or in an “on” state, the program goes back to operation 204 and continues to wait. If the virtual machine identified is not operating or in an “Off” state, the program continues to operation 218 to launch the virtual machine identified.
  • At operation 218, the virtual machine control system 100 retrieves the optional launching delay T1, and calculates the actual time delay based on the current virtual machines loads and applications running when the virtual machines was shut down on the previous day, and start a launch timer.
  • At operation 220, the program loops back to operation 220 until the launch timer is timed out, and then the program continues to operation 222.
  • At operation 222, the virtual machine control module 37 sends instructions to the hypervisor 50 to launch the virtual machine identified. The program continues to operation 204 after the virtual machine identified is launched.
  • At operation 224, the virtual machine control system 100 checks whether the employee presence event received is an egress event. When an egress event occurred to an employee, the program goes to operation 226. Otherwise, the program goes to operation 204.
  • At operation 226, the employee lookup module 38 receives an employee ID that corresponds to the employee who had the egress event from the attendance database 10.
  • At operation 228, the employee lookup module 38 retrieves one or more virtual machine IDs associated with the employee, and sends the one or more virtual machine IDs retrieved to the virtual machines control module 37.
  • At operation 230, the virtual machines control module 37 checks operation status of the virtual machines identified by the one or more virtual machine IDs retrieved. If more than one virtual machines are identified, then the virtual machines control module 37 checks operation status of these virtual machines one at a time. If the virtual machine identified is not operating or in an “Off” state, the program goes back to operation 204 and continues to wait. If the virtual machine identified is operating or in an “On” state, the program continues to operation 232 to shut down the virtual machine identified.
  • At operation 232, the virtual machine control system 100 retrieves the optional shutting down delay T2, calculates the actual time delay based on current loads of the virtual machines, and starts a shut-down timer.
  • At operation 234, the program loops back to operation 234 until the shut-down timer is timed out, and then the program continues to operation 236.
  • At operation 236, the virtual machine control module 37 sends instructions to the hypervisor 50 to shut down the virtual machine identified. The program continues to operation 204 after the virtual machine identified is shut down.
  • In another aspect, the present disclosure relates to a computer-implemented method in a virtual machine control system 100. The computer-implemented method includes following operations: (a) registering all employees, with each of the employees assigned an employee ID, (b) storing registration information of each of the employees in an attendance database 10, (c) associating one or more of a virtual machines 50 to each of the employees, with each of the virtual machines assigned a virtual machine ID, (d) storing virtual machine association information between the virtual machines and the employees in an employee ID database 40, (e) transmitting polling inquiries periodically to the attendance database 10 to retrieve employee presence events of the employees detected by one or more employee presence detection devices 60 in a predetermined polling time interval, with the employee presence events having an ingress event when an employee enters a predetermined area, and an egress event when the employee exits the predetermined area, (f) identifying, in response to a detected employee presence event of an employee, the virtual machine ID associated with the employee ID of the employee through look-up in the employee ID database 40, and (g) instructing a hypervisor 52 to launch the virtual machine with the virtual machine ID associated with the employee ID when the employee presence event occurred to the employee is an ingress event and when the virtual machine is in an “off” state, and shut down the virtual machine with the virtual machine ID associated with the employee ID when the employee presence event occurred to the employee is an egress event and when the virtual machine is in an “on” state.
  • In certain embodiments, the virtual machine control system 100 includes: (a) the one or more employee presence detection devices 60 configured to detect employee presence events of the employees, (b) the attendance database 10 configured to store employee presence events for each of the employees, (c) the employee ID database 40 configured to store employee IDs and one or more virtual machines associated with each of the employees, (d) at least one virtual machine server 50 having the hypervisor 52, and the virtual machines 54 are running on the hypervisor 52, and (e) a virtual machine controller 30 configured to perform virtual machine control functions of the virtual machine control system 100.
  • In certain embodiments, the virtual machine controller 30 includes a processor 31, a network interface controller 32, and a memory 33. The processor 31 performs various functions of the virtual machine control system 100. The network interface controller 32 connects the virtual machine controller 30 to a network 20. The memory 33 stores firmware 34. The firmware 34 includes: a polling module 36, an employee ID lookup module 38, and a virtual machine control module 37. The polling module 36 transmits polling inquiries periodically to the attendance database 10 at the predetermined polling time interval to retrieve any employee presence events of the employees detected by the one or more employee presence detection devices 60. The employee ID lookup module 38 is used for virtual machine ID look up, and identifying the virtual machine IDs based on the corresponding employee IDs whose employee presence events were detected during the last predetermined polling time interval. The virtual machine control module 37 is to perform control functions of the virtual machine controller 30. The functions of the virtual machine controller 30 include: (a) launching the virtual machine associated with the employee when the employee presence event occurred to the employee is an ingress event and when the corresponding virtual machine is in an “off” state, and (b) shutting down the virtual machine associated with the employee through the lookup when the employee presence event occurred to the employee is an egress event and when the corresponding virtual machine is in an “on” state.
  • In certain embodiments, the firmware 34 of the virtual machine controller 30 also includes a web server module 35 to allow an administrator to perform virtual machine control system 100 functions over the network 20.
  • In certain embodiments, the attendance database 10 is configured to: (a) receive and store the registration information of each of the employees, (b) receive employee presence events of each of the employees from the one or more employee presence detection devices 60, (c) update the employee presence events received in the attendance database 10, (d) maintain the attendance information for each of the employees, (e) receive periodical polling inquiries from the virtual machine controller 30 at the predetermined polling time interval, and (f) transmit, in response to the polling inquiries, the employee presence events occurred during last predetermined polling time interval, along with the employee ID to the virtual machine controller 30.
  • In certain embodiments, the employee ID database 40 is configured to: (a) receive and store the registration information of each of the employees with corresponding employee IDs, (b) receive and store the virtual machine ID associated with each of the employees, (c) receive one or more identification inquiries from the virtual machine controller 30 to identify a virtual machine ID based on a given employee ID, and (d) in response to the one or more identification inquiries, transmit the virtual machine ID associated with the employee with the employee ID to the virtual machine controller 30.
  • In certain embodiments, each of the one or more employee presence detection devices is configured to: determine that the detected employee presence event of the one of the employees is the ingress event when: (a) the employee enters the security control system of the predetermined area, (b) the employee's presence is detected by the proximity detection device of the predetermined area, (c) the employee's presence is detected by the wireless device detection device of the predetermined area, (d) the employee logs into a virtual machine remotely, or (e) a current time reaches the employee's start of predetermined working schedule; determine that the detected employee presence event of the one of the employees is the egress event when: (a) the employee exits the security control system of the predetermined area, (b) the employee's departure is detected by the proximity detection device of the predetermined area, (c) the employee's departure is detected by the wireless device detection device of the predetermined area, (d) the employee logs out of the virtual machine remotely, or (e) the current time reaches the employee's end of predetermined working schedule; and transmit the detected employee presence event of the one of the employees to the attendance database.
  • In yet another aspect, the present disclosure relates to a non-transitory computer storage medium. In certain embodiments, the non-transitory computer storage medium stores computer-executable instructions. When the computer-executable instructions are executed by a processor 31 of a virtual machine controller 30, the computer-executable instructions cause the processor 31 to perform following operations: (a) registering all employees, with each of the employees assigned an employee ID, (b) storing registration information of each of the employees in an attendance database 10, (c) associating one or more of a virtual machines 50 to each of the employees, with each of the virtual machines assigned a virtual machine ID, (d) storing virtual machine association information between the virtual machines and the employees in an employee ID database 40, (e) transmitting polling inquiries periodically to the attendance database 10 to retrieve employee presence events of the employees detected by one or more employee presence detection devices 60 in a predetermined polling time interval, with the employee presence events having an ingress event when an employee enters a predetermined area, and an egress event when the employee exits the predetermined area, (f) identifying, in response to a detected employee presence event of an employee, the virtual machine ID associated with the employee ID of the employee through look-up in the employee ID database 40, and (g) instructing a hypervisor 52 to launch the virtual machine with the virtual machine ID associated with the employee ID when the employee presence event occurred to the employee is an ingress event and when the virtual machine is in an “off” state, and shut down the virtual machine with the virtual machine ID associated with the employee ID when the employee presence event occurred to the employee is an egress event and when the virtual machine is in an “on” state.
  • In certain embodiments, the virtual machine control system 100 includes: (a) the one or more employee presence detection devices 60 configured to detect employee presence events of the employees, (b) the attendance database 10 configured to store employee presence events for each of the employees, (c) the employee ID database 40 configured to store employee IDs and one or more virtual machines associated with each of the employees, (d) at least one virtual machine server 50 having the hypervisor 52, and the virtual machines 54 are running on the hypervisor 52, and (e) a virtual machine controller 30 configured to perform virtual machine control functions of the virtual machine control system 100.
  • In certain embodiments, the virtual machine controller 30 includes a processor 31, a network interface controller 32, and a memory 33. The processor 31 performs various functions of the virtual machine control system 100. The network interface controller 32 connects the virtual machine controller 30 to a network 20. The memory 33 stores firmware 34. The firmware 34 includes: a polling module 36, an employee ID lookup module 38, and a virtual machine control module 37. The polling module 36 transmits polling inquiries periodically to the attendance database 10 at the predetermined polling time interval to retrieve any employee presence events of the employees detected by the one or more employee presence detection devices 60. The employee ID lookup module 38 is used for virtual machine ID look up, and identifying the virtual machine IDs based on the corresponding employee IDs whose employee presence events were detected during the last predetermined polling time interval. The virtual machine control module 37 is to perform control functions of the virtual machine controller 30. The functions of the virtual machine controller 30 include: (a) launching the virtual machine associated with the employee when the employee presence event occurred to the employee is an ingress event and when the corresponding virtual machine is in an “off” state, and (b) shutting down the virtual machine associated with the employee through the lookup when the employee presence event occurred to the employee is an egress event and when the corresponding virtual machine is in an “on” state.
  • In certain embodiments, the firmware 34 of the virtual machine controller 30 also includes a web server module 35 to allow an administrator to perform virtual machine control system 100 functions over the network 20.
  • In certain embodiments, the attendance database 10 is configured to: (a) receive and store the registration information of each of the employees, (b) receive employee presence events of each of the employees from the one or more employee presence detection devices 60, (c) update the employee presence events received in the attendance database 10, (d) maintain the attendance information for each of the employees, (e) receive periodical polling inquiries from the virtual machine controller 30 at the predetermined polling time interval, and (f) transmit, in response to the polling inquiries, the employee presence events occurred during last predetermined polling time interval, along with the employee ID to the virtual machine controller 30.
  • In certain embodiments, the employee ID database 40 is configured to: (a) receive and store the registration information of each of the employees with corresponding employee IDs, (b) receive and store the virtual machine ID associated with each of the employees, (c) receive one or more identification inquiries from the virtual machine controller 30 to identify a virtual machine ID based on a given employee ID, and (d) in response to the one or more identification inquiries, transmit the virtual machine ID associated with the employee with the employee ID to the virtual machine controller 30.
  • In certain embodiments, each of the one or more employee presence detection devices 60 is configured to: determine that the detected employee presence event of the one of the employees is the ingress event when: (a) the employee enters the security control system of the predetermined area, (b) the employee's presence is detected by the proximity detection device of the predetermined area, (c) the employee's presence is detected by the wireless device detection device of the predetermined area, (d) the employee logs into a virtual machine remotely, or (e) a current time reaches the employee's start of predetermined working schedule; determine that the detected employee presence event of the one of the employees is the egress event when: (a) the employee exits the security control system of the predetermined area, (b) the employee's departure is detected by the proximity detection device of the predetermined area, (c) the employee's departure is detected by the wireless device detection device of the predetermined area, (d) the employee logs out of the virtual machine remotely, or (e) the current time reaches the employee's end of predetermined working schedule; and transmit the detected employee presence event of the one of the employees to the attendance database 10.
  • The foregoing description of the exemplary embodiments of the disclosure has been presented only for the purposes of illustration and description and is not intended to be exhaustive or to limit the disclosure to the precise forms disclosed. Many modifications and variations are possible in light of the above teaching.
  • The embodiments were chosen and described in order to explain the principles of the disclosure and their practical application so as to enable others skilled in the art to utilize the disclosure and various embodiments and with various modifications as are suited to the particular use contemplated. Alternative embodiments will become apparent to those skilled in the art to which the present disclosure pertains without departing from its spirit and scope. Accordingly, the scope of the present disclosure is defined by the appended claims rather than the foregoing description and the exemplary embodiments described therein.

Claims (25)

What is claimed is:
1. A virtual machine control system, comprising:
a virtual machine controller comprising a processor and a memory storing computer executable instructions, wherein the computer executable instructions, when executed at the processor, are configured to
register a plurality of employees, wherein each of the plurality of employees is assigned an employee ID;
store registration information of each of the plurality of employees in an attendance database;
associate one or more of a plurality of virtual machines to each of the plurality of employees, wherein each of the plurality of virtual machines has a virtual machine ID;
store virtual machine association information between the plurality of virtual machines and the plurality of employees in an employee ID database;
transmit polling inquiries periodically to the attendance database to retrieve employee presence events of the plurality of employees detected by one or more employee presence detection devices in a predetermined polling time interval, wherein for each of the employees, the employee presence events include an ingress event when the employee enters a predetermined area, and an egress event when the employee exits the predetermined area;
identify, in response to a detected employee presence event of one of the employees, the virtual machine ID associated with the employee ID of the employee through look-up in the employee ID database; and
instruct a hypervisor to
launch the virtual machine with the virtual machine ID associated with the employee ID when the detected employee presence event of the one of the employees is the ingress event and when the virtual machine is in an “off” state; and
shut down the virtual machine with the virtual machine ID associated with the employee ID when the detected employee presence event of the one of the employees is the egress event and when the virtual machine is in an “on” state.
2. The virtual machine control system of claim 1, further comprising:
the one or more employee presence detection devices configured to detect employee presence events of the plurality of employees;
the attendance database configured to store employee presence events for each of the plurality of employees;
the employee ID database configured to store employee IDs and one or more virtual machines associated with each of the plurality of employees; and
at least one virtual machine server having the hypervisor and the plurality of virtual machines running on the hypervisor.
3. The virtual machine control system of claim 1, wherein the one or more employee presence detection devices comprise:
a security control system of a predetermined area configured to detect the entering and exiting of the plurality of employees individually;
a proximity detection device configured to detect the entering and exiting a vicinity of the predetermined area for each of the employees individually;
a wireless device detection device configured to detect the presence at and the departure from the predetermined area for each of the employees individually;
an online virtual machine control system configured to detect the logins and logouts of the plurality of the employees individually; and
an employee working schedule control system configured to control the launching and shutting down a virtual machine according a working schedule of an employee associated with the virtual machine.
4. The virtual machine control system of claim 3, wherein each of the one or more employee presence detection devices is configured to:
determine that the detected employee presence event of the one of the employees is the ingress event when:
the employee enters the security control system of the predetermined area;
the employee's presence is detected by the proximity detection device of the predetermined area;
the employee's presence is detected by the wireless device detection device of the predetermined area;
the employee logs into a virtual machine remotely; or
a current time reaches the employee's start of predetermined working schedule;
determine that the detected employee presence event of the one of the employees is the egress event when:
the employee exits the security control system of the predetermined area;
the employee's departure is detected by the proximity detection device of the predetermined area;
the employee's departure is detected by the wireless device detection device of the predetermined area;
the employee logs out of the virtual machine remotely; or
the current time reaches the employee's end of predetermined working schedule; and
transmit the detected employee presence event of the one of the employees to the attendance database.
5. The virtual machine control system of claim 1, wherein the attendance database is configured to:
receive and store the registration information of each of the plurality of employees;
receive employee presence events of each of the plurality of employees from the one or more employee presence detection devices;
update the employee presence events received in the attendance database;
maintain the attendance information for each of the plurality of employees;
receive periodical polling inquiries from the virtual machine controller at the predetermined polling time interval; and
transmit, in response to the polling inquiries, the employee presence events occurred during last predetermined polling time interval, along with the employee ID to the virtual machine controller.
6. The virtual machine control system of claim 1, wherein the employee ID database is configured to:
receive and store the registration information of each of the plurality of employees with corresponding employee IDs;
receive and store the virtual machine ID associated with each of the plurality of employees;
receive one or more identification inquiries from the virtual machine controller to identify a virtual machine ID based on a given employee ID; and
transmit, in response to the one or more identification inquiries, the virtual machine ID associated with the employee with the employee ID to the virtual machine controller.
7. The virtual machine control system of claim 1, wherein
the virtual machine controller further comprises a network interface controller configured to connect the virtual machine controller to a network; and
the computer executable instructions comprise firmware, wherein the firmware comprises:
a polling module configured to transmit the polling inquiries periodically to the attendance database at the predetermined polling time interval to retrieve the employee presence events of the plurality of employees detected by the one or more employee presence detection devices;
an employee ID lookup module to identify the virtual machine IDs based on the corresponding employee IDs of the employees whose employee presence events were detected during the last predetermined polling time interval; and
a virtual machine control module for launching the virtual machine associated with the employee when the detected employee presence event of the employee is the ingress event and when the corresponding virtual machine is in the “off” state; and shutting down the virtual machine associated with the employee through the lookup when the detected employee presence event of the employee is the egress event and when the corresponding virtual machine is in the “on” state.
8. The virtual machine control system of claim 7, wherein the firmware further comprises a web server module configured to allow an administrator to perform virtual machine control system functions over the network.
9. The virtual machine control system of claim 1, wherein a launching delay T1 is applied to delay the launching of the virtual machine when the virtual machine control system instructs the hypervisor to launch the virtual machine, and a shutting down delay T2 is applied to delay the shutting down of the virtual machine when the virtual machine control system instructs the hypervisor to shut down the virtual machine.
10. A computer-implemented method for a virtual machine control system, the method comprising:
registering, by a virtual machine controller, a plurality of employees, wherein each of the plurality of employees is assigned an employee ID;
storing, by the virtual machine controller, registration information of each of the plurality of employees in an attendance database;
associating, by the virtual machine controller, one or more of a plurality of virtual machines to each of the plurality of employees, wherein each of the plurality of virtual machines has a virtual machine ID;
storing, by the virtual machine controller, virtual machine association information between the plurality of virtual machines and the plurality of employees in an employee ID database;
transmitting, by the virtual machine controller, polling inquiries periodically to the attendance database to retrieve employee presence events of the plurality of employees detected by one or more employee presence detection devices in a predetermined polling time interval, wherein for each of the employees, the employee presence events include an ingress event when the employee enters a predetermined area, and an egress event when the employee exits the predetermined area;
in response to a detected employee presence event of one of the employees, identifying, by the virtual machine controller, the virtual machine ID associated with the employee ID of the employee through look-up in the employee ID database; and
instructing, by the virtual machine controller, a hypervisor to launch the virtual machine with the virtual machine ID associated with the employee ID when the detected employee presence event of the one of the employees is the ingress event and when the virtual machine is in an “off” state; and
shut down the virtual machine with the virtual machine ID associated with the employee ID when the detected employee presence event of the one of the employees is the egress event and when the virtual machine is in an “on” state.
11. The computer-implemented method of claim 10, wherein the virtual machine control system comprises:
the virtual machine controller;
the one or more employee presence detection devices to detect the employee presence events of the plurality of employees;
the attendance database configured to store the employee presence events for each of the plurality of employees;
the employee ID database configured to store employee IDs and one or more virtual machines associated with each of the plurality of employees; and
at least one virtual machine server having the hypervisor and the plurality of virtual machines running on the hypervisor.
12. The computer-implemented method of claim 10, wherein the virtual machine controller comprises:
a processor;
a network interface controller configured to connect the virtual machine controller to a network; and
a memory storing firmware, wherein the firmware comprises:
a polling module configured to transmit the polling inquiries periodically to the attendance database at the predetermined polling time interval to retrieve the employee presence events of the plurality of employees detected by the one or more employee presence detection devices;
an employee ID lookup module to identify the virtual machine IDs based on the corresponding employee IDs of the employees whose employee presence events were detected during the last predetermined polling time interval; and
a virtual machine control module for launching the virtual machine associated with the employee when the detected employee presence event of the employee is the ingress event and when the corresponding virtual machine is in the “off” state; and shutting down the virtual machine associated with the employee through the lookup when the detected employee presence event of the employee is the egress event and when the corresponding virtual machine is in the “on” state.
13. The computer-implemented method of claim 12, wherein the firmware further comprises a web server module configured to allow an administrator to perform virtual machine control system functions over the network.
14. The computer-implemented method of claim 10, wherein the attendance database is configured to:
receive and store the registration information of each of the plurality of employees;
receive employee presence events of each of the plurality of employees from the one or more employee presence detection devices;
update the employee presence events received in the attendance database;
maintain the attendance information for each of the plurality of employees;
receive periodical polling inquiries from the virtual machine controller at the predetermined polling time interval; and
transmit, in response to the polling inquiries, the employee presence events occurred during last predetermined polling time interval, along with the employee ID to the virtual machine controller.
15. The computer-implemented method of claim 10, wherein the employee ID database is configured to:
receive and store the registration information of each of the plurality of employees with corresponding employee IDs;
receive and store the virtual machine ID associated with each of the plurality of employees;
receive one or more identification inquiries from the virtual machine controller to identify a virtual machine ID based on a given employee ID; and
transmit, in response to the one or more identification inquiries, the virtual machine ID associated with the employee with the employee ID to the virtual machine controller.
16. The computer-implemented method of claim 10, wherein the one or more employee presence detection devices comprise:
a security control system of a predetermined area configured to detect the entering and exiting of the plurality of employees individually;
a proximity detection device configured to detect the entering and exiting a vicinity of the predetermined area for each of the employees individually;
a wireless device detection device configured to detect the presence at and the departure from the predetermined area for each of the employees individually;
an online virtual machine control system configured to detect the logins and logouts of the plurality of the employees individually; and
an employee working schedule control system configured to control the launching and shutting down a virtual machine according a working schedule of an employee associated with the virtual machine.
17. The computer-implemented method of claim 16, wherein each of the one or more employee presence detection devices is configured to:
determine that the detected employee presence event of the one of the employees is the ingress event when:
the employee enters the security control system of the predetermined area;
the employee's presence is detected by the proximity detection device of the predetermined area;
the employee's presence is detected by the wireless device detection device of the predetermined area;
the employee logs into a virtual machine remotely; or
a current time reaches the employee's start of predetermined working schedule;
determine that the detected employee presence event of the one of the employees is the egress event when:
the employee exits the security control system of the predetermined area;
the employee's departure is detected by the proximity detection device of the predetermined area;
the employee's departure is detected by the wireless device detection device of the predetermined area;
the employee logs out of the virtual machine remotely; or
the current time reaches the employee's end of predetermined working schedule; and
transmit the detected employee presence event of the one of the employees to the attendance database.
18. The computer-implemented method of claim 10, wherein a launching delay T1 is applied to delay the launching of the virtual machine when the virtual machine control system instructs the hypervisor to launch the virtual machine, and a shutting down delay T2 is applied to delay the shutting down of the virtual machine when the virtual machine control system instructs the hypervisor to shut down the virtual machine.
19. A non-transitory computer storage medium having computer-executable instructions stored thereon which, when executed by a processor of a virtual machine controller, cause the processor to perform following operations:
registering a plurality of employees, wherein each of the plurality of employees is assigned an employee ID;
storing registration information of each of the plurality of employees in an attendance database;
associating one or more of a plurality of virtual machines to each of the plurality of employees, wherein each of the plurality of virtual machines has a virtual machine ID;
storing virtual machine association information between the plurality of virtual machines and the plurality of employees in an employee ID database;
transmitting polling inquiries periodically to the attendance database to retrieve employee presence events of the plurality of employees detected by one or more employee presence detection devices in a predetermined polling time interval, wherein for each of the employees, the employee presence events include an ingress event when the employee enters a predetermined area, and an egress event when the employee exits the predetermined area;
identifying, in response to a detected employee presence event of one of the employees, the virtual machine ID associated with the employee ID of the employee through look-up in the employee ID database; and
instructing a hypervisor to
launch the virtual machine with the virtual machine ID associated with the employee ID when the detected employee presence event of the one of the employees is the ingress event and when the virtual machine is in an “off” state; and
shut down the virtual machine with the virtual machine ID associated with the employee ID when the detected employee presence event of the one of the employees is the egress event and when the virtual machine is in an “on” state.
20. The non-transitory computer storage medium of claim 19, wherein the virtual machine controller comprises:
the processor;
a network interface controller configured to connect the virtual machine controller to a network; and
a memory storing firmware, wherein the firmware comprises:
a polling module configured to transmit the polling inquiries periodically to the attendance database at the predetermined polling time interval to retrieve the employee presence events of the plurality of employees detected by the one or more employee presence detection devices;
an employee ID lookup module to identify the virtual machine IDs based on the corresponding employee IDs of the employees whose employee presence events were detected during the last predetermined polling time interval; and
a virtual machine control module for launching the virtual machine associated with the employee when the detected employee presence event of the employee is the ingress event and when the corresponding virtual machine is in the “off” state; and shutting down the virtual machine associated with the employee through the lookup when the detected employee presence event of the employee is the egress event and when the corresponding virtual machine is in the “on” state.
21. The non-transitory computer storage medium of claim 19, wherein the attendance database is configured to:
receive and store the registration information of each of the plurality of employees;
receive employee presence events of each of the plurality of employees from the one or more employee presence detection devices;
update the employee presence events received in the attendance database;
maintain the attendance information for each of the plurality of employees;
receive periodical polling inquiries from the virtual machine controller at the predetermined polling time interval; and
transmit, in response to the polling inquiries, the employee presence events occurred during last predetermined polling time interval, along with the employee ID to the virtual machine controller.
22. The non-transitory computer storage medium of claim 19, wherein the employee ID database is configured to:
receive and store the registration information of each of the plurality of employees with corresponding employee IDs;
receive and store the virtual machine ID associated with each of the plurality of employees;
receive one or more identification inquiries from the virtual machine controller to identify a virtual machine ID based on a given employee ID; and
transmit, in response to the one or more identification inquiries, the virtual machine ID associated with the employee with the employee ID to the virtual machine controller.
23. The non-transitory computer storage medium of claim 19, wherein the one or more employee presence detection devices comprise:
a security control system of a predetermined area configured to detect the entering and exiting of the plurality of employees individually;
a proximity detection device configured to detect the entering and exiting a vicinity of the predetermined area for each of the employees individually;
a wireless device detection device configured to detect the presence at and the departure from the predetermined area for each of the employees individually;
an online virtual machine control system configured to detect the logins and logouts of the plurality of the employees individually; and
an employee working schedule control system configured to control the launching and shutting down a virtual machine according a working schedule of an employee associated with the virtual machine.
24. The non-transitory computer storage medium of claim 19, wherein the computer executable instructions are further configured to:
determine that the detected employee presence event of the one of the employees is the ingress event when:
the employee enters the security control system of the predetermined area;
the employee's presence is detected by the proximity detection device of the predetermined area;
the employee's presence is detected by the wireless device detection device of the predetermined area;
the employee logs into a virtual machine remotely; or
a current time reaches the employee's start of predetermined working schedule;
determine that the detected employee presence event of the one of the employees is the egress event when:
the employee exits the security control system of the predetermined area;
the employee's departure is detected by the proximity detection device of the predetermined area;
the employee's departure is detected by the wireless device detection device of the predetermined area;
the employee logs out of the virtual machine remotely; or
the current time reaches the employee's end of predetermined working schedule; and
transmit the detected employee presence event of the one of the employees to the attendance database.
25. The non-transitory computer storage medium of claim 19, wherein a launching delay T1 is applied to delay the launching of the virtual machine when the virtual machine control system instructs the hypervisor to launch the virtual machine, and a shutting down delay T2 is applied to delay the shutting down of the virtual machine when the virtual machine control system instructs the hypervisor to shut down the virtual machine.
US14/546,117 2014-11-18 2014-11-18 System and method for automatically launching virtual machines based on attendance Active 2035-10-18 US9940149B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US14/546,117 US9940149B2 (en) 2014-11-18 2014-11-18 System and method for automatically launching virtual machines based on attendance

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US14/546,117 US9940149B2 (en) 2014-11-18 2014-11-18 System and method for automatically launching virtual machines based on attendance

Publications (2)

Publication Number Publication Date
US20160139947A1 true US20160139947A1 (en) 2016-05-19
US9940149B2 US9940149B2 (en) 2018-04-10

Family

ID=55961758

Family Applications (1)

Application Number Title Priority Date Filing Date
US14/546,117 Active 2035-10-18 US9940149B2 (en) 2014-11-18 2014-11-18 System and method for automatically launching virtual machines based on attendance

Country Status (1)

Country Link
US (1) US9940149B2 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160373374A1 (en) * 2015-06-17 2016-12-22 Aliane Technologies Co., Expansion device for virtual interface and network server system thereof

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10496443B2 (en) * 2017-05-03 2019-12-03 Vmware, Inc. OS/hypervisor-based persistent memory
US10474550B2 (en) 2017-05-03 2019-11-12 Vmware, Inc. High availability for persistent memory

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080184226A1 (en) * 2007-01-29 2008-07-31 Takeaki Ota Controller system and method therefor
US20100325278A1 (en) * 2009-06-22 2010-12-23 Red Hat Israel, Ltd. Methods for automatically launching a virtual machine associated with a client during startup
US20130283263A1 (en) * 2012-04-19 2013-10-24 Dincloud, Inc. System and method for managing resources in a virtual machine environment
US8683548B1 (en) * 2011-09-30 2014-03-25 Emc Corporation Computing with policy engine for multiple virtual machines
US20150339461A1 (en) * 2014-05-23 2015-11-26 Ebay Inc. Presence-based content restriction
US20150363181A1 (en) * 2014-06-13 2015-12-17 International Business Machines Corporation Software deployment in a distributed virtual machine environment
US9430624B1 (en) * 2013-04-30 2016-08-30 United Services Automobile Association (Usaa) Efficient logon

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013091196A1 (en) 2011-12-21 2013-06-27 华为技术有限公司 Method, device, and system for setting user's right to access virtual machine

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080184226A1 (en) * 2007-01-29 2008-07-31 Takeaki Ota Controller system and method therefor
US20100325278A1 (en) * 2009-06-22 2010-12-23 Red Hat Israel, Ltd. Methods for automatically launching a virtual machine associated with a client during startup
US8683548B1 (en) * 2011-09-30 2014-03-25 Emc Corporation Computing with policy engine for multiple virtual machines
US20130283263A1 (en) * 2012-04-19 2013-10-24 Dincloud, Inc. System and method for managing resources in a virtual machine environment
US9430624B1 (en) * 2013-04-30 2016-08-30 United Services Automobile Association (Usaa) Efficient logon
US20150339461A1 (en) * 2014-05-23 2015-11-26 Ebay Inc. Presence-based content restriction
US20150363181A1 (en) * 2014-06-13 2015-12-17 International Business Machines Corporation Software deployment in a distributed virtual machine environment

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Mohsen Amini Salehi, "Resource provisioning based on preempting virtual machines in distributed systems", 2013 John Wiley & Sons, Ltd. *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160373374A1 (en) * 2015-06-17 2016-12-22 Aliane Technologies Co., Expansion device for virtual interface and network server system thereof
US10135752B2 (en) * 2015-06-17 2018-11-20 Aliane Technologies Co. Expansion device for virtual interface and network server system thereof

Also Published As

Publication number Publication date
US9940149B2 (en) 2018-04-10

Similar Documents

Publication Publication Date Title
US9645625B2 (en) System and method for power management of computing devices in a virtual desktop infrastructure
US9912535B2 (en) System and method of performing high availability configuration and validation of virtual desktop infrastructure (VDI)
US9223596B1 (en) Virtual machine fast provisioning based on dynamic criterion
US8904159B2 (en) Methods and systems for enabling control to a hypervisor in a cloud computing environment
US9886299B2 (en) System and method for dynamically allocating resources of virtual machines based on service-level agreements (SLA) and privilege levels of users
US8762695B2 (en) Computing device and method for registering identification information of network interface card in operating system
US11243795B2 (en) CPU overcommit with guest idle polling
WO2018039967A1 (en) Virtual machine switching method and apparatus, electronic device, and computer program product
US9715403B2 (en) Optimized extended context management for virtual machines
US20150278042A1 (en) Vm availability during migration and vm network failures in host computing systems
US9471357B2 (en) Monitoring virtual machine interface and local graphical user interface on a thin client and alternating therebetween
US20180246840A1 (en) Intelligent Certificate Discovery in Physical and Virtualized Networks
US9519503B2 (en) Systems and methods for virtual machine attribution with fault resilient memory tag
US9940149B2 (en) System and method for automatically launching virtual machines based on attendance
US10552194B2 (en) Virtualization operations for directly assigned devices
US10467023B2 (en) System and method of interactive splash screen in embedded environments
US9921865B2 (en) Population of system tables by hypervisor
US20180338007A1 (en) System and method for providing extensible communication gateway with session pooling
US9569241B2 (en) Sharing devices assigned to virtual machines using runtime exclusion
US11481206B2 (en) Code update in system management mode
US20160373523A1 (en) Profile management method and apparatus for running of virtual desktop in heterogeneous server
US20200150972A1 (en) Performing actions opportunistically in connection with reboot events in a cloud computing system
US9471361B2 (en) Virtual machine (VM) sequencer and scheduler to avoid boot storm
US10810032B2 (en) System and method for dynamic guest-controlled halt polling using a CPU governor
US9772869B2 (en) System and method for performing efficient failover and virtual machine (VM) migration in virtual desktop infrastructure (VDI)

Legal Events

Date Code Title Description
AS Assignment

Owner name: AMERICAN MEGATRENDS, INC., GEORGIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:MATHEWS, SANTHOSH SAMUEL;PARTHASARATHY, SUDHAKAR ERRAPPA;REEL/FRAME:034196/0549

Effective date: 20141117

STCF Information on status: patent grant

Free format text: PATENTED CASE

AS Assignment

Owner name: AMZETTA TECHNOLOGIES, LLC,, GEORGIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:AMERICAN MEGATRENDS INTERNATIONAL, LLC,;REEL/FRAME:053007/0151

Effective date: 20190308

Owner name: AMERICAN MEGATRENDS INTERNATIONAL, LLC, GEORGIA

Free format text: CHANGE OF NAME;ASSIGNOR:AMERICAN MEGATRENDS, INC.;REEL/FRAME:053007/0233

Effective date: 20190211

FEPP Fee payment procedure

Free format text: ENTITY STATUS SET TO SMALL (ORIGINAL EVENT CODE: SMAL); ENTITY STATUS OF PATENT OWNER: SMALL ENTITY

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YR, SMALL ENTITY (ORIGINAL EVENT CODE: M2551); ENTITY STATUS OF PATENT OWNER: SMALL ENTITY

Year of fee payment: 4