Patents by Inventor Carl A. Waldspurger

Carl A. Waldspurger has filed for patents to protect the following inventions. This listing includes patent applications that are pending as well as patents that have already been granted by the United States Patent and Trademark Office (USPTO).

  • Patent number: 8060883
    Abstract: Described herein are approaches to managing expandable resource reservations. In one approach, a method is described in which an attempt is made to change a resource reservation from a first amount to a second amount. The second amount is examined to determine whether it exceeds a reservation limit. The second amount is compared with available resources, and reserved.
    Type: Grant
    Filed: February 16, 2007
    Date of Patent: November 15, 2011
    Assignee: VMware, Inc.
    Inventors: Anil Rao, Carl Waldspurger, Xiaoxin Chen
  • Patent number: 8060877
    Abstract: I/O operations between a virtual machine (VM) and a device external to the VM are monitored by a virtual machine monitor (VMM). Data passing between the VM and the external device is transformed by the VMM, in some cases only when a predetermined filtering or triggering condition is met. Because the VMM, and thus the transformation operation, is transparent to the VM, the transformation cannot be prevented or undone or even affected by any action by a user of the VM. Examples of the non-defeatable transformation of I/O data include generating display overlays such as banners, masking out portions of a display, encryption, compression and network shaping such as bandwidth limiting.
    Type: Grant
    Filed: August 20, 2007
    Date of Patent: November 15, 2011
    Assignee: VMware, Inc.
    Inventors: Carl A. Waldspurger, Edouard Bugnion
  • Publication number: 20110258625
    Abstract: To generate a checkpoint for a virtual machine (VM), first, while the VM is still running, a copy-on-write (COW) disk file is created pointing to a parent disk file that the VM is using. Next, the VM is stopped, the VM's memory is marked COW, the device state of the VM is saved to memory, the VM is switched to use the COW disk file, and the VM begins running again for substantially the remainder of the checkpoint generation. Next, the device state that was stored in memory and the unmodified VM memory pages are saved to a checkpoint file. Also, a copy may be made of the parent disk file for retention as part of the checkpoint, or the original parent disk file may be retained as part of the checkpoint. If a copy of the parent disk file was made, then the COW disk file may be committed to the original parent disk file.
    Type: Application
    Filed: June 28, 2011
    Publication date: October 20, 2011
    Applicant: VMWARE, INC.
    Inventors: Carl A. WALDSPURGER, Michael NELSON, Daniel J. SCALES, Pratap SUBRAHMANYAM
  • Patent number: 8037280
    Abstract: A system and related method of operation for migrating the memory of a virtual machine from one NUMA node to another. Once the VM is migrated to a new node, migration of memory pages is performed while giving priority to the most utilized pages, so that access to these pages becomes local as soon as possible. Various heuristics are described to enable different implementations for different situations or scenarios.
    Type: Grant
    Filed: June 11, 2008
    Date of Patent: October 11, 2011
    Assignee: VMware, Inc.
    Inventors: Vivek Pandey, Ole Agesen, Alex Garthwaite, Carl Waldspurger, Rajesh Venkatasubramanian
  • Publication number: 20110231857
    Abstract: A method is described for scheduling in an intelligent manner a plurality of threads on a processor having a plurality of cores and a shared last level cache (LLC). In the method, a first and second scenario having a corresponding first and second combination of threads are identified. The cache occupancies of each of the threads for each of the scenarios are predicted. The predicted cache occupancies being a representation of an amount of the LLC that each of the threads would occupy when running with the other threads on the processor according to the particular scenario. One of the scenarios is identified that results in the least objectionable impacts on all threads, the least objectionable impacts taking into account the impact resulting from the predicted cache occupancies. Finally, a scheduling decision is made according to the one of the scenarios that results in the least objectionable impacts.
    Type: Application
    Filed: March 19, 2010
    Publication date: September 22, 2011
    Applicant: VMWARE, INC.
    Inventors: Puneet Zaroo, Richard West, Carl A. Waldspurger, Xiao Zhang
  • Patent number: 8015367
    Abstract: A host computer system is configured to present each of multiple resident contexts with an address space that may be mapped, at least in part, to corresponding portions of a host memory. The address space of a selected context is sampled, and, for each of a plurality of sampled portions of the address space of the selected context that are backed by a corresponding portion of host memory, a count of the number of portions of address spaces of any contexts that are backed by the same portion of the host memory is obtained. A metric is then computed as a function of the count. A decision about swapping out or reclaiming the allocation of the memory of the contexts is based on the metric. The metric is preferably a function of a mean (such as harmonic, geometric or arithmetic) or median of the counts for each context.
    Type: Grant
    Filed: February 16, 2007
    Date of Patent: September 6, 2011
    Assignee: VMware, Inc.
    Inventors: Anil Rao, Carl Waldspurger, Xiaoxin Chen
  • Patent number: 7984304
    Abstract: Computer-executable instructions in a computer are verified dynamically, after they have been identified for submission for execution, but before they are actually executed. In particular, for at least one current instruction that has been identified for submission to the processor for execution, an identifying value, for example, a hash value, is determined for a current memory block that contains the current instruction. The identifying value of the current memory block is then compared with a set of reference values. If the identifying value satisfies a validation condition, then execution of the current instruction by the processor is allowed. If the validation condition is not satisfied, then a response is generated: In the common case, execution of the current instruction is not allowed, or some other predetermined measure is taken.
    Type: Grant
    Filed: March 2, 2004
    Date of Patent: July 19, 2011
    Assignee: VMware, Inc.
    Inventors: Carl A. Waldspurger, Ole Agesen, Xiaoxin Chen, John R. Zedlewski, Tal Garfinkel
  • Patent number: 7971015
    Abstract: To generate a checkpoint for a virtual machine (VM), first, while the VM is still running, a copy-on-write (COW) disk file is created pointing to a parent disk file that the VM is using. Next, the VM is stopped, the VM' s memory is marked COW, the device state of the VM is saved to memory, the VM is switched to use the COW disk file, and the VM begins running again for substantially the remainder of the checkpoint generation. Next, the device state that was stored in memory and the unmodified VM memory pages are saved to a checkpoint file. Also, a copy may be made of the parent disk file for retention as part of the checkpoint, or the original parent disk file may be retained as part of the checkpoint. If a copy of the parent disk file was made, then the COW disk file may be committed to the original parent disk file.
    Type: Grant
    Filed: May 4, 2009
    Date of Patent: June 28, 2011
    Assignee: VMware, Inc.
    Inventors: Carl A. Waldspurger, Michael Nelson, Daniel J. Scales, Pratap Subrahmanyam
  • Publication number: 20110145632
    Abstract: A method is provided for recovering from an uncorrected memory error located at a memory address as identified by a memory device. A stored hash value for a memory page corresponding to the identified memory address is used to determine the correct data. Because the memory device specifies the location of the corrupted data, and the size of the window where the corruption occurred, the stored hash can be used to verify memory page reconstruction. With the known good part of the data in hand, the hashes of the pages using possible values in place of the corrupted data are calculated. It is expected that there will be a match between the previously stored hash and one of the computed hashes. As long as there is one and only one match, then that value, used in the place of the corrupted data, is the correct value. The corrupt data, once replaced, allows operation of the memory device to continue without needing to interrupt or otherwise affect a system's operation.
    Type: Application
    Filed: December 11, 2009
    Publication date: June 16, 2011
    Applicant: VMWARE, INC.
    Inventors: Carl A. WALDSPURGER, Dilpreet BINDRA, Gregory HARM, Patrick TULLMANN
  • Publication number: 20110119413
    Abstract: A method and system for providing quality of service to a plurality of hosts accessing a common resource is described. According to one embodiment, a plurality of IO requests is received from clients executing as software entities on one of the hosts. An IO request queue for each client is separately managed, and an issue queue is populated based on contents of the IO request queues. When a host issue queue is not full, a new IO request is entered into the host issue queue and is issued to the common resource. A current average latency observed at the host is calculated, and an adjusted window size is calculated at least in part based on the current average latency. The window size of the issue queue is adjusted according to the calculated window size.
    Type: Application
    Filed: January 20, 2011
    Publication date: May 19, 2011
    Applicant: VMWARE, INC.
    Inventors: Ajay GULATI, Irfan AHMAD, Carl A. WALDSPURGER
  • Patent number: 7945908
    Abstract: A sponge process, for example within a driver in a guest operating system, is associated in a virtual computer system with each virtual processor in one or more virtual machines. When timer interrupts become backlogged, for example because a virtual machine is temporarily descheduled to allow other virtual machines to run, and upon occurrence of a trigger event, a conventional interrupt is disengaged and catch-up interrupts are instead directed into an appropriate one of the sponge processes. The backlogged timer interrupts are thus delivered without unfairly attributing descheduled time to whatever processes happened to be running while the catch-up interrupts are delivered, and without violating typical guest operating system timing assumptions.
    Type: Grant
    Filed: March 31, 2006
    Date of Patent: May 17, 2011
    Assignee: VMware, Inc.
    Inventors: Carl Waldspurger, Michael Craig, Ramesh Dharan, Rajit S. Kambo, Timothy P. Mann, Stephen A. Muckle, Boris Weissman, John Zedlewski
  • Patent number: 7925850
    Abstract: A system for increasing the efficiency of migrating, at least in part, a virtual machine from a source host to a destination host is described wherein the content of one or more portions of the address space of the virtual machine are each uniquely associated at the source host with a signature that may collide, absent disambiguation, with different content at the destination host. Code in both the source and destination hosts disambiguates the signature(s) so that each disambiguated signature may be uniquely associated with content at the destination host, and so that collisions with different content are avoided at the destination host. Logic is configured to determine whether the content uniquely associated with a disambiguated signature at the destination host is already present in the destination host memory, and, if so, to back one or more portions of the address space of the virtual machine having this content with one or more portions of the destination host memory already holding this content.
    Type: Grant
    Filed: February 16, 2007
    Date of Patent: April 12, 2011
    Assignee: VMware, Inc.
    Inventors: Carl Waldspurger, Osten Kit Colbert, Xiaoxin Chen, Rajesh Venkatasubramanian
  • Patent number: 7912951
    Abstract: A method and system for providing quality of service to a plurality of hosts accessing a common resource is described. According to one embodiment, a plurality of IO requests is received from clients executing as software entities on one of the hosts. An IO request queue for each client is separately managed, and an issue queue is populated based on contents of the IO request queues. When a host issue queue is not full, a new IO request is entered into the host issue queue and is issued to the common resource. A current average latency observed at the host is calculated, and an adjusted window size is calculated at least in part based on the current average latency. The window size of the issue queue is adjusted according to the calculated window size.
    Type: Grant
    Filed: October 28, 2008
    Date of Patent: March 22, 2011
    Assignee: VMware, Inc.
    Inventors: Ajay Gulati, Irfan Ahmad, Carl A. Waldspurger
  • Publication number: 20110055479
    Abstract: A thread (or other resource consumer) is compensated for contention for system resources in a computer system having at least one processor core, a last level cache (LLC), and a main memory. In one embodiment, at each descheduling event of the thread following an execution interval, an effective CPU time is determined. The execution interval is a period of time during which the thread is being executed on the central processing unit (CPU) between scheduling events. The effective CPU time is a portion of the execution interval that excludes delays caused by contention for microarchitectural resources, such as time spent repopulating lines from the LLC that were evicted by other threads. The thread may be compensated for microarchitectural contention by increasing its scheduling priority based on the effective CPU time.
    Type: Application
    Filed: August 28, 2009
    Publication date: March 3, 2011
    Applicant: VMware, Inc.
    Inventors: Richard West, Puneet Zaroo, Carl A. Waldspurger, Xiao Zhang
  • Patent number: 7890754
    Abstract: Upon occurrence of a trigger condition, writes of allocation units of data (including code) to a device, such as writes of blocks to a disk, are first encrypted. Each allocation unit is preferably a predetermined integral multiple number of minimum I/O units. A data structure is marked to indicate which units are encrypted. Upon reads from the device, only those allocation units marked as encrypted are decrypted. The disk protected by selective encryption is preferably the virtual disk of a virtual machine (VM). The trigger condition is preferably either that the virtual disk has been initialized or that the VM has been powered on. Mechanisms are also provided for selectively declassifying (storing in unencrypted form) already-encrypted, stored data, and for determining which data units represent public, general-use data units that do not need to be encrypted. The “encrypt-on-write” feature of the invention may be used in conjunction with a “copy-on-write” technique.
    Type: Grant
    Filed: September 2, 2008
    Date of Patent: February 15, 2011
    Assignee: VMware, Inc.
    Inventors: Carl A. Waldspurger, Matthew Eccleston
  • Publication number: 20100299667
    Abstract: Read requests to a commonly accessed storage volume are conditionally issued, depending on whether or not a requested data block is already stored in memory from a prior access or to be stored in memory upon completion of a pending request. A data structure is maintained in memory to track physical memory pages and to indicate for each physical memory page the corresponding location in the storage volume from which the contents of the physical memory were read and the number of virtual memory pages that are mapped thereto.
    Type: Application
    Filed: May 19, 2010
    Publication date: November 25, 2010
    Applicant: VMware, Inc.
    Inventors: Irfan Ahmad, Carl A. Waldspurger
  • Patent number: 7831773
    Abstract: A method and system of managing data access in a shared memory cache of a processor are disclosed. The method includes probing one or more memory addresses that map to a subset of the shared memory cache and sensing a plurality of events in the one or more memory addresses. Cache utilization information is then obtained by reading a hardware performance counter of the processor. The hardware performance counter is incremented based on the occurrence of the plurality of events. Based upon the cache utilization information, an occurrence of one of the plurality of events is reduced.
    Type: Grant
    Filed: August 27, 2008
    Date of Patent: November 9, 2010
    Assignee: VMware, Inc.
    Inventors: John Zedlewski, Carl Waldspurger
  • Publication number: 20100241785
    Abstract: Methods and systems for managing distribution of host physical memory (HPM) among virtual machines (VMs) executing on a host via a hypervisor are presented, where each VM has guest system software including an operating system. A method includes an operation for reserving, by a balloon application executing in a first VM, a guest virtual memory (GVM) location in the first VM. The GVM location is mapped to a guest physical memory (GPM) location, which is mapped to a host physical memory (HPM) location. The balloon application is responsive to the hypervisor for reserving memory. Further, the method includes operations for writing a value to the reserved GVM location and for remapping a plurality of GPM locations containing the value to a single HPM location. The remapping is performed by a content-based page sharing component of the hypervisor.
    Type: Application
    Filed: March 23, 2010
    Publication date: September 23, 2010
    Applicant: VMWARE, INC.
    Inventors: Xiaoxin CHEN, Carl A. WALDSPURGER, Anil RAO
  • Publication number: 20100229173
    Abstract: A component manages and minimizes latency introduced by virtualization. The virtualization component determines that a currently scheduled guest process has executed functionality responsive to which the virtualization component is to execute a virtualization based operation, wherein the virtualization based operation is one that is not visible to the guest operating system. The virtualization component causes the guest operating system to de-schedule the currently scheduled guest process and schedule at least one separate guest process. The virtualization component then executes the virtualization based operation concurrently with the execution of the at least one separate guest process. Responsive to completing the execution of the virtualization based operation, the virtualization component causes the guest operating system to re-schedule the de-scheduled guest process.
    Type: Application
    Filed: March 4, 2009
    Publication date: September 9, 2010
    Applicant: VMWARE, INC.
    Inventors: Pratap SUBRAHMANYAM, Carl A. WALDSPURGER, Vyacheslav MALYUGIN, Tal GARFINKEL
  • Publication number: 20100205602
    Abstract: A thread scheduling mechanism is provided that flexibly enforces performance isolation of multiple threads to alleviate the effect of anti-cooperative execution behavior with respect to a shared resource, for example, hoarding a cache or pipeline, using the hardware capabilities of simultaneous multi-threaded (SMT) or multi-core processors. Given a plurality of threads running on at least two processors in at least one functional processor group, the occurrence of a rescheduling condition indicating anti-cooperative execution behavior is sensed, and, if present, at least one of the threads is rescheduled such that the first and second threads no longer execute in the same functional processor group at the same time.
    Type: Application
    Filed: April 26, 2010
    Publication date: August 12, 2010
    Applicant: VMWARE, INC.
    Inventors: John R. ZEDLEWSKI, Carl A. WALDSPURGER