WO2010116402A1 - Information processor - Google Patents

Information processor Download PDF

Info

Publication number
WO2010116402A1
WO2010116402A1 PCT/JP2009/001464 JP2009001464W WO2010116402A1 WO 2010116402 A1 WO2010116402 A1 WO 2010116402A1 JP 2009001464 W JP2009001464 W JP 2009001464W WO 2010116402 A1 WO2010116402 A1 WO 2010116402A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
memory area
update information
virtual machine
address
Prior art date
Application number
PCT/JP2009/001464
Other languages
French (fr)
Japanese (ja)
Inventor
稲垣淳一
大塚裕朗
Original Assignee
富士通株式会社
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 富士通株式会社 filed Critical 富士通株式会社
Priority to PCT/JP2009/001464 priority Critical patent/WO2010116402A1/en
Publication of WO2010116402A1 publication Critical patent/WO2010116402A1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]

Definitions

  • the present invention relates to an information processing apparatus that realizes one or more virtual machines.
  • FIG. 1 is a diagram showing an overview of server virtualization technology.
  • the server 101 operates software called a VMM (Virtual Machine Monitor) 102.
  • the VMM 102 manages hardware resources related to the memory and IO (Input / Output) of the server 101. Further, the VMM 102 provides each VM # 0 to # 2 with emulation (imitation) of hardware resources required by each VM.
  • exclusive control of the memory is performed so that the plurality of VMs do not use the same memory area of the physical memory provided in the server 101 redundantly. This exclusive control is performed by memory management of the VMM 102.
  • FIG. 2 is a diagram showing an outline of memory management by the VMM 102.
  • the memory recognized by the VM is called guest physical memory.
  • This guest physical memory is recognized as a continuous memory area from the VM.
  • the guest physical memory is grasped as a separate memory space existing for each VM.
  • FIG. 2 shows the guest physical memory when two VMs, VM # 0 and VM # 1, are operating on the VMM102.
  • there are two guest physical memories the guest physical memory # 0 of VM # 0 and the guest physical memory # 1 of VM # 1.
  • one address X exists in each of the guest physical memories # 0 and # 1. If this address X is assigned as it is to the real memory provided in the server 101, that is, the host physical memory, a conflict occurs.
  • the VMM 102 assigns the address X of the guest physical memory # 0 to the address Z of the host physical memory, and assigns the address X of the guest physical memory # 1 to the address Y of the host physical memory. In this way, the VMM 102 avoids memory contention by allocating host physical memory to different host physical memories.
  • DMA Direct Memory Access
  • the VM # 0 sets the address X as the DMA address in the IO adapter
  • the DMA write is performed on the address X of the host physical memory. Since the address X of the host physical memory is a memory area unrelated to the address X of the guest physical memory # 0, memory destruction is caused. If memory corruption is triggered, the system panics and then shuts down.
  • execution of DMA write by VM # 0 is performed according to the following procedure.
  • the VM # 0 requests the IO adapter to perform a DMA write to the address X of the guest physical memory # 0.
  • the VMM 102 traps the request for the DMA write of VM # 0 and converts the address X of the guest physical memory # 0 into the address W of the buffer area of the host physical memory. Then, the VMM 102 sets the converted address W in the DMA address setting register of the IO adapter.
  • VM # 0 instructs the IO adapter to start DMA.
  • the IO adapter executes DMA write for the address W.
  • the IO adapter When the DMA write is completed, the IO adapter notifies the completion of the DMA write by a DMA completion interrupt. (6) The VMM 102 copies the data stored at the address W of the host physical memory to the address X of the guest physical memory # 0. (7) The VMM 102 notifies the VM # 0 of the completion of the DMA write by a DMA completion interrupt. (8) The VM # 0 extracts data from the address X of the guest physical memory # 0.
  • live migration is a technique for migrating a VM running on a certain server to another server without stopping the operation.
  • FIG. 3 is a diagram showing an outline of live migration.
  • live migration includes two servers # 0 and # 1, a storage 320 shared by servers # 0 and # 1, and a network 330 to which servers # 0 and # 1 are connected. It is possible to perform in the environment provided. Live migration is performed according to the following procedure. (1) The VMM 311 operating on the migration destination server # 1 prepares the VM 312. (2) The migration source VM 302 transfers the contents of the memory used by the migration source VM 302 to the migration destination VM 310 while the migration source VM 302 continues the business. This process is called “pre-copy”.
  • the task of the migration source VM 302 is temporarily stopped, and the migration source VM 301 transfers the memory contents used by the migration source VM 302 to the migration destination VM 310. This process is referred to as “stop and copy”.
  • the migration destination VM 312 resumes the business.
  • VMM performs all memory copies such as pre-copy and stop-and-copy.
  • the VMM can execute the memory copy because the VMM manages the host physical memory.
  • the VMM mediates not only the write processing from the CPU (Central Processing Unit) to the host physical memory but also the DMA write, and detects the memory data change of the migration source VM.
  • CPU Central Processing Unit
  • IOMMU Input / Output Memory Management Unit
  • This IOMMU is a technique for increasing the speed by reducing the memory access overhead caused by the VMM as described above.
  • the IOMMU is a memory management unit that is connected to the IO adapter and the host physical memory and performs conversion between the guest physical memory address and the host physical memory address.
  • the IOMMU is mounted, as shown in FIG. 4, it is possible to execute DMA directly from the IO device to the guest physical memory of the VM.
  • this technology it is not necessary to intervene the VMM when accessing the guest physical memory by the DMA. Further, it is not necessary for the VMM to copy data between the host physical memory and the guest physical memory.
  • a bridge for a multiprocessor system having a dirty RAM mechanism in which a predetermined value is set when a memory area is written by DMA access is known.
  • a mechanism for temporarily stopping a DMA operation selected in a physical I / O adapter in order to enable data migration between physical pages that are accessed by the physical I / O adapter is known.
  • a virtualization system for a host computer having at least one host processor and system resources including memory divided into system memory having the highest privilege and user memory having the lower privilege is known.
  • the present information processing apparatus has been made in view of the above-described problems, and the problem to be solved is to provide an information processing apparatus capable of performing live migration even when IOMMU is used. It is.
  • the information processing apparatus includes the following means.
  • the virtual machine realization means realizes one or more virtual machines by managing hardware resources.
  • the data transfer means mutually converts the address of the first memory area allocated to the virtual machine and the address of the second memory area that is the real memory of the first memory area.
  • the data transfer means transfers data directly from the input / output device that controls input / output of data to / from an external device to the first memory area assigned to the virtual machine.
  • the transfer data detection means detects data directly transferred from the input / output device to the first memory area allocated to the virtual machine.
  • the update information registration unit generates update information regarding the first memory area that is changed by the data detected by the transfer data detection unit, and stores the update information in the update information storage unit.
  • the update information output means outputs the update information stored in the update information storage means.
  • the change information registration means changes the first memory changed by the data transfer. Information about the area is stored in the update information storage means.
  • the update information output means outputs update information stored in the update information output means.
  • live migration can be executed even when IOMMU is used.
  • FIG. 5 is a diagram illustrating a configuration example of the information processing apparatus 500.
  • the information processing device 500 includes CPUs 510 and 511 as arithmetic processing devices, a memory 520 as a main storage device, and a north bridge 530 as a memory control device.
  • the information processing apparatus 500 includes IO adapters 540, 541, and 542 as input / output control apparatuses, and a PCIe switch (PCI Express Switch) 550.
  • PCIe switch PCI Express Switch
  • CPUs 510 and 511 are arithmetic processing units that execute programs developed in the memory 520.
  • the CPUs 510 and 511 implement server virtualization by executing predetermined programs.
  • the CPUs 510 and 511 implement the live migration according to the present embodiment by reading and executing a predetermined program from the storage # 0 or # 1.
  • the memory 520 is a volatile memory that stores programs and data executed by the CPUs 510a and 510b.
  • a RAM Random Access Memory
  • a nonvolatile memory may be used as necessary.
  • the north bridge 530 is connected to the CPUs 510a and 510b, the memory 520, and the PCIe switch 550.
  • the north bridge 530 controls the data transfer path so that the CPUs 510a and 510b and the memory 520 and the PCIe switch 550 can communicate with each other.
  • the north bridge 530 includes an IOMMU 531 and an IO table storage unit 532.
  • the IOMMU 531 is a memory management unit that performs memory management such as conversion between the address of the guest physical memory and the address of the host physical memory.
  • guest physical address the address of the guest physical memory
  • host physical address The address of the host physical memory is called “host physical address”.
  • the IO table storage unit 532 is a storage device that stores an IO table used when the IOMMU 531 converts a guest physical address and a host physical address.
  • a cache memory or the like is used as the IO table storage unit 532. The IO table will be described with reference to FIG.
  • the IO adapters 540, 541, and 542 are interfaces with IO devices connected to the information processing device 500.
  • a DMA circuit that performs DMA is provided in each of the IO adapters 540, 541, and 542.
  • the IO device is, for example, an input / output device such as storages # 0 and # 1 that store data shown in FIG. 5 or a network device connected to a network.
  • the PCIe switch 550 is connected to the north bridge 530 and the IO adapters 540, 541, and 542.
  • the PCIe switch 550 performs switching control of a data transfer path connecting between the north bridge 530 and the IO adapters 540, 541, and 542.
  • the information processing apparatus 500 uses “PCI Express 2.0” which is a serial transfer interface standard for the data transfer path.
  • the PCIe switch 550 includes a dirty page management unit 551 and a dirty page storage unit 552.
  • the dirty page management unit 551 detects a packet as data transferred from the IO adapter 540, 541, or 542 to the memory 520 by DMA write. Then, the dirty page management unit 551 stores information regarding data added, changed, or updated by the DMA write in the dirty page storage unit 552 in units of pages.
  • dirty page information Information about dirty pages is referred to as “dirty page information”.
  • the dirty page storage unit 552 is a storage device that stores dirty page information.
  • a static RAM or the like is used as the dirty page storage unit 552.
  • the information processing apparatus 500 is connected to the information processing apparatus 501 via a network in order to perform live migration. Further, the information processing apparatus 500 and the information processing apparatus 501 share the storages # 0 and # 1.
  • the information processing apparatus 501 includes CPUs 560 and 561, a memory 570, a north bridge 580, IO adapters 590, 591 and 592, and a PCIe switch 600.
  • CPUs 560, 561, memory 570, north bridge 580, IO adapters 590, 591, 592 and PCIe switch 600 are CPU 510, 511, memory 520, north bridge 530, IO adapters 540, 541, 542 and PCIe switch 550, It is the same.
  • the north bridge 580 may not include the IOMMU 531 and the IO table storage unit 532.
  • the PCIe switch 600 may not include the dirty page management unit 551 and the dirty page storage unit 552.
  • the information processing apparatus 501 connected to the information processing apparatus 500 only needs to be able to execute the general live migration shown in FIG.
  • the configuration illustrated in FIG. 5 is an example of the information processing apparatus 500 according to the present embodiment. Therefore, the configuration of the information processing apparatus 500 is not limited to the configuration illustrated in FIG.
  • the number of CPUs, the number of IO adapters, the arrangement of units constituting the information processing apparatus 500, and the like are not limited to those illustrated in FIG.
  • the information processing apparatus 500 may include a medium driving device that drives a portable storage medium such as a CD or a DVD.
  • a medium driving device that drives a portable storage medium such as a CD or a DVD.
  • the CPUs 510 and 511 read and execute a predetermined program from the portable storage medium via the medium driving device.
  • the live migration according to the present embodiment is realized.
  • FIG. 6 is a diagram for explaining the DMA processing operation in the north bridge 530.
  • the DMA packets 610 and 611 are packets as data transferred from the IO adapter 540, 541, or 542 to a predetermined transfer destination by DMA processing.
  • the IO table 620 indicates an IO table stored in the IO table storage unit 532.
  • the IO table 620 is an address conversion table between guest physical addresses and host physical addresses.
  • the IO table 620 defines a host physical address corresponding to an address composed of a guest physical address and a source ID.
  • the IO table 620 caches (temporarily holds) some entries that are frequently used among entries in a page table 630 described later.
  • the source ID is an ID (Identification Data) that identifies a packet transfer source unit.
  • a guest physical address is abbreviated as “GPA (Guest Physical Address)”
  • a host physical address is abbreviated as “HPA (Host Physical Address)”
  • a source ID is abbreviated as “SID (Source ID)” as necessary.
  • the page table 630 is an address conversion table for guest physical addresses and host physical addresses.
  • the page table 630 defines a host physical address corresponding to the guest physical address.
  • the IOMMU 531 When detecting the DMA packet 610, the IOMMU 531 acquires the guest physical address and the source ID from the header of the detected DMA packet 610. Then, the IOMMU 531 refers to the IO table 620. Then, the IOMMU 531 determines whether or not an address composed of the guest physical address and the source ID acquired from the DMA packet 610 is registered in the IO table 620.
  • the IOMMU 531 acquires a host physical address corresponding to an address composed of the guest physical address and the source ID.
  • the IOMMU 531 changes the guest physical address indicating the transfer destination set in the header of the DMA packet 610 to the host physical address acquired from the IO table 620.
  • the IOMMU 531 refers to the page table 630 stored in the memory 520.
  • the IOMMU 531 acquires the host physical address registered in the same address as the guest physical address acquired from the DMA packet 610, which is the address of the page table 630.
  • the IOMMU 531 changes the guest physical address indicating the transfer destination set in the header of the DMA packet 610 to the host physical address acquired from the page table 630.
  • FIG. 7 is a diagram for explaining the operation of DMA processing in the PCIe switch 550.
  • the dirty page management unit 551 includes a control I / F (Interface) unit 710, a packet detection unit 720, a write pointer 730, and a read pointer 740.
  • a dirty page storage unit 552 is described in the dirty page management unit 551.
  • the dirty page storage unit 552 includes memories # 0 and # 1 that realize a FIFO (First In First Out).
  • the memories # 0 and # 1 realizing the FIFO are referred to as “FIFO # 0” and “FIFO # 1”, respectively.
  • the control I / F unit 710 is an interface of the dirty page management unit 551.
  • the VMM 102 acquires dirty page information stored in the FIFO # 0 or # 1 via the control I / F unit 710.
  • the control I / F unit 710 includes a status register 711, a data register 712, and a control register 713.
  • the status register 711 is a register that can be read / written by software such as the VMM 102.
  • the status register 711 includes the following status display bits.
  • Overflow information bit # 0 indicates that FIFO # 0 has overflowed.
  • Overflow information bit # 1 indicates that FIFO # 1 has overflowed.
  • Valid data count # 0 In FIFO # 0, a value obtained by dividing the difference between the address indicated by the write pointer 730 and the address indicated by the read pointer 740 by the size of the dirty page information. It shows how much dirty page information that has not yet been read remains in FIFO # 0.
  • Valid data count # 1 In FIFO # 1, a value obtained by dividing the difference between the address indicated by the write pointer and the address indicated by the read pointer by the size of the dirty page information. This indicates how much dirty page information that has not yet been read remains in FIFO # 1.
  • the data register 712 is a register that can be read from software such as the VMM 102. This register is used to read data stored in the FIFO # 0 or # 1 from the VMM 102.
  • the dirty page management unit 551 sets the read pointer 740 to the address where the next dirty page information is stored.
  • the control register 713 is a register that can be read / written by software such as the VMM 102.
  • the control register 713 includes the following control bits.
  • Start bit Starts registration of dirty page information in FIFO # 0 or # 1.
  • Stop bit Stops registration of dirty page information in FIFO # 0 or # 1.
  • Write select bit Selects whether to register dirty page information in two FIFOs # 0 or # 1.
  • Read select bit Selects whether dirty page information is read from two FIFOs # 0 or # 1.
  • the packet detection unit 720 detects the DMA write packet 750 input to the PCIe switch 550 while the start bit of the control register 713 is set to “1”. Then, the packet detection unit 720 acquires the guest physical address and the source ID from the header of the detected DMA write packet 750. Further, the packet detection unit 720 writes the data including the acquired guest physical address and source ID as dirty page information in the currently selected FIFO # 0 or # 1. At the same time, the packet detection unit 720 sets the address of the area where dirty page information is stored next in the write pointer 730.
  • the write pointer 730 indicates the address of dirty page information last written to FIFO # 0 or # 1.
  • write pointers 730 are provided for FIFO # 0 and for FIFO # 1, respectively.
  • the read pointer 740 indicates the address of dirty page information last read from FIFO # 0 or # 1.
  • read pointers 740 are provided for FIFO # 0 and for FIFO # 1, respectively.
  • write pointer and read pointer for FIFO # 0 are stored in write pointer 730 and read pointer 740.
  • write pointer and read pointer for FIFO # 1 are stored in write pointer 730 and read pointer 740.
  • FIG. 8 is a diagram illustrating a configuration example of FIFO # 0.
  • FIG. 8 shows only FIFO # 0, but FIFO # 1 has the same configuration.
  • the FIFO # 0 includes a source ID that indicates an IO adapter that is a transmission source of a DMA packet, and a guest physical address [63:12] that indicates a transfer destination of the DMA packet.
  • the source ID is composed of a DMA packet transmission source bus number and a function number of the DMA packet transmission source.
  • the size of one page is, for example, 4 KB.
  • the lower 12 bits of the 64-bit address data represent an address in the same page. Therefore, in this embodiment, only the data of bits 63 to 12 in the guest physical address is registered in the FIFO # 0.
  • FIG. 9 shows a configuration example of the header of the DMA packet.
  • the header of the DMA packet conforms to the standard “PCI Express 2.0”.
  • the header 1101 of the DMA packet shown in (1) of FIG. 9 shows a configuration example of the header of the DMA packet when address data having a 32-bit width is used for the guest physical address.
  • a DMA packet header 1102 shown in (2) of FIG. 9 shows a configuration example of a DMA packet header when address data having a 64-bit width is used as a guest physical address.
  • R is a reserved area. “0” is always set. “Fmt (Format)” is 2-bit data indicating the presence / absence of data stored in the payload and the header length.
  • Type is 5-bit wide data indicating the type of packet.
  • TC Transaction Class
  • TD Transaction Layer Packet
  • ECRC Extended Cyclic Redundancy Check
  • EP Error Poisoned
  • Attr Attributes
  • AT Address Translation
  • Length 10-bit width data indicating the data length of data stored in the payload.
  • bus number is 8-bit data indicating the bus number of the transmission source of the DMA packet.
  • “Function number” is 8-bit data indicating the function number of the transmission source of the DMA packet.
  • Tag is 8-bit width data indicating the management number of the DMA packet.
  • Last DW BE is 4-bit width data indicating validity / invalidity of the Last DW Byte.
  • 1st DW BE is 4-bit data indicating the validity / invalidity of the 1st DW Byte.
  • Address is 30-bit or 62-bit address data.
  • FIG. 10 is a flowchart showing the registration process of dirty page information by the dirty page management unit 551. 10 indicates the FIFO set in the write select bit of the control register 713 in the FIFO # 0 or # 1.
  • the dirty page management unit 551 starts the registration process of dirty page information (step S1000). .
  • the packet detection unit 720 refers to the header of the DMA packet input to the PCIe switch 550 from an IO adapter such as the IO adapter 540, 541, or 542.
  • the packet detection unit 720 acquires “Fmt” and “Type” from the header of the DMA packet.
  • step S1002 Step S1001 YES.
  • Fmt 10 (binary number)
  • Type 00000 (binary number) indicates a DMA write packet. If the packet detection unit 720 determines that the DMA packet input to the PCIe switch 550 is not a DMA write packet, the packet detection unit 720 executes step S1001 again (NO in step S1001).
  • step S1002 the packet detection unit 720 determines whether the difference between the address pointed to by the write pointer 730 and the address pointed to by the read pointer 740 is equal to a value obtained by dividing the size of the FIFO by the size of the dirty page information. Is determined to be Full.
  • the packet detection unit 720 determines that the FIFO is full (YES in step S1002). In this case, the packet detection unit 720 moves the process to step S1003.
  • step S1003 when the packet detection unit 720 sets “1” in the overflow information bit of the status register 711, the process proceeds to step S1008. Then, the dirty page management unit 551 ends the dirty page information registration process.
  • step S1002 when the difference between the address pointed to by the write pointer 730 and the address pointed to by the read pointer 740 is not equal to the value obtained by dividing the size of the dirty page information by the size of the FIFO, the packet detection unit 720 indicates that the FIFO is not Full. (Step S1002 NO). In this case, the packet detection unit 720 moves the process to step S1004.
  • step S1004 the packet detection unit 720 acquires a source ID and a guest physical address from the header of the DMA write packet.
  • step S1005 the packet detection unit 720 registers data including the source ID and guest physical address acquired in step S1004 as dirty page information in the FIFO address indicated by the write pointer 730.
  • step S1006 the packet detection unit 720 increments the address stored in the write pointer 730 by the area size for storing the dirty page information.
  • step S1007 the packet detection unit 720 refers to the control register 713 provided in the control I / F unit 710. If “1” is set in the stop bit of the control register 713 (YES in step S1007), the packet detection unit 720 moves the process to step S1008. Then, the dirty page management unit 551 ends the dirty page information registration process.
  • step S1007 when the stop bit of the control register 713 is not “1”, the packet detection unit 720 moves the process to step S1001 (NO in step S1007).
  • FIG. 11 is a flowchart showing a process for outputting dirty page information by the dirty page management unit 551. Note that the FIFO described in FIG. 11 indicates the FIFO set in the read select bit of the control register 713 in the FIFO # 0 or # 1.
  • step S1101 when software such as the VMM 102 reads dirty page information from the data register 712 included in the dirty page management unit 551, the control I / F unit 710 shifts the processing to step S1102.
  • step S1102 the control I / F unit 710 increments the address stored in the read pointer 740 by the area size for storing dirty page information.
  • step S1103 the control I / F unit 710 acquires dirty page information from the FIFO address indicated by the read pointer 740 and latches it in the data register 712.
  • FIG. 12 is a diagram for explaining the outline of live migration according to the present embodiment.
  • the information processing system 1200 illustrated in FIG. 12 includes a server # 0, a server # 1 that is communicably connected to the server # 0 via a network, and storages # 0 and # that are shared by the server # 0 and the server # 1. 1.
  • Server # 0 is the information processing apparatus 500 shown in FIG.
  • the server # 0 is the information processing apparatus 501 shown in FIG.
  • the VMM # 0 operates.
  • VMM # 0 implements VM # 0 and VM # 1.
  • VMM # 1 operates on the server # 1.
  • VM # 0 occupies storage # 0
  • VM # 1 occupies storage # 1.
  • FIG. 13 is a flowchart illustrating an outline of live migration according to the present embodiment.
  • the VMM # 0 requests the VMM # 1 that is the migration destination of the VM # 0 to secure a memory area to be allocated to the new VM.
  • the memory area allocated to the VM is referred to as “VM area”.
  • VMM # 1 secures a VM area in a predetermined area of the memory provided in server # 1. Then, the server # 1 notifies the server # 0 that the reservation of the VM area has been completed.
  • step S1302. the VMM # 0 obtains data stored in the area of the host physical memory allocated to the migration target VM # 0 at a certain point in time. This data stored in the area of the host physical memory allocated to the VM at a certain point (check point) is called “snapshot”.
  • step S1303 the VMM # 0 sets the start bit of the control register 713 of the dirty page management unit 551 to “1”, and starts recording dirty page information.
  • step S1304 the VMM # 0 stores the snapshot acquired in step S1302 in a predetermined area of the memory provided in the migration destination server # 1 of the VM # 0, and stores the snapshot in the VM area secured in step S1301. make a copy.
  • step S1305 the VMM # 0 acquires the remaining number of dirty page information from the dirty page management unit 551 through the valid data count of the status register 711 of the control I / F unit 710. Then, VMM # 0 compares the number of remaining dirty page information with a predetermined threshold value.
  • step S1305 If the number of remaining dirty page information is greater than the threshold (YES in step S1305), the VMM # 0 proceeds to step S1306. If the number of remaining dirty page information is less than or equal to the threshold (NO in step S1305), the VMM # 0 moves the process to step S1307.
  • step S1306 the VMM # 0 receives all the dirty page information registered in the dirty page storage unit 552 from the dirty page management unit 551 through the data register 712 of the control I / F unit 710 to date. To get.
  • the VMM # 0 converts the guest physical address of the acquired dirty page information into a host physical address. Then, the VMM # 0 acquires data stored in the converted host physical address from the memory provided in the server # 0. The VMM # 0 then copies the acquired data to the VM area secured in step S1301, which is the memory area of the migration destination server # 1 of the VM # 0.
  • VMM # 0 moves the process to step S1305.
  • the processing in steps S1302 to S1306 described above is “pre-copy”.
  • the pre-copy is performed while VM # 0 continues the business. Therefore, VMM # 0 performs read / write processing for storage # 0 via IOMMU 531 even during pre-copy. Therefore, the following stop and copy is required.
  • step S1307 the VMM # 0 stops the operation of the VM # 0.
  • step S1308 the VMM # 0 executes the same process as in step S1306.
  • step S1309 the VMM # 0 notifies the VMM # 1 operating on the migration destination server # 1 of the VM # 0 that the memory copy has been completed.
  • step S1310 upon receiving a memory copy completion notification from the VMM # 0, the VMM # 1 starts the VM # 0 operation on the VMM # 1.
  • VMM # 1 moves the process to step S1311. Then, the VMMs # 0 and # 1 end the live migration.
  • FIG. 14 is a flowchart showing specific pre-copy processing.
  • the VMM # 0 initializes the FIFOs # 0 and # 1 by setting “1” to the clear bit of the control register 713 provided in the control I / F unit 710.
  • the VMM # 0 sets the FIFO for recording dirty page information to FIFO # 0 by setting the write select bit of the control register 713 to “0”. Similarly, the VMM # 0 sets the FIFO for reading dirty page information to FIFO # 0 by setting the read select bit of the control register 713 to “0”.
  • step S1402 the VMM # 0 starts recording dirty page information by setting the start bit of the control register 713 included in the dirty page management unit 551 to “1”.
  • step S1403 the VMM # 0 executes memory copy.
  • step S1403 the memory copy process described in steps S1302 to S1304 shown in FIG. 13 is performed.
  • step S1404 the VMM # 0 shifts to a wait state for a certain time.
  • the VMM # 0 moves the process to step S1405.
  • step S1405 the VMM # 0 sets “0” or “1” in the write select bit of the control register 713 provided in the control I / F unit 710 to change the FIFO for recording dirty page information.
  • VMM # 0 changes the FIFO for recording dirty page information to FIFO # 1 by setting the write select bit of the control register 713 to “1”. To do.
  • VMM # 0 sets the write select bit of the control register 713 to “0” to change the FIFO for recording dirty page information to FIFO # 0. change.
  • step S1406 the VMM # 0 reads the status register 711 provided in the control I / F unit 710.
  • step S1407 the VMM # 0 determines whether or not the overflow information bit of the currently selected FIFO is set to “1”.
  • step S1407 If the overflow information bit of the currently selected FIFO is set to “1” (step S1407: YES), the VMM # 0 moves the process to step S1408. In this case, the VMM # 0 interrupts the live migration being executed or starts over from the beginning.
  • step S1407 if the overflow information bit of the currently selected FIFO is set to “0” (NO in step S1407), VMM # 0 proceeds to step S1409.
  • step S1409 the VMM # 0 reads the data register 712 by the number set in the valid data count of the status register 711, and acquires dirty page information.
  • step S1410 the VMM # 0 extracts only the dirty page information whose source ID indicates the storage # 0 from the dirty page information read in step S1409.
  • step S1411 The dirty page information extracted in step S1410 or the processing of S1507 described later is referred to as “copyable dirty page information”.
  • step S1411 the VMM # 0 converts the guest physical address of the copy target dirty page information into a host physical address according to the page table 630.
  • step S1412 the VMM # 0 acquires the data stored in the host physical address of the copy target dirty page information from the memory 520 provided in the server # 0. Then, the VMM # 0 transfers the acquired data to the VMM # 1 that is the migration destination of the VM # 0.
  • step S1413 the VMM # 0 changes the FIFO for reading dirty page information by setting “0” or “1” to the read select bit of the control register 713 provided in the control I / F unit 710.
  • VMM # 0 sets the read select bit of the control register 713 to “1” to change the FIFO for reading dirty page information to FIFO # 1. .
  • VMM # 0 changes the FIFO for reading dirty page information to FIFO # 0 by setting the read select bit of the control register 713 to “0”. To do.
  • step S1414 the VMM # 0 determines whether or not the pre-copy completion condition is satisfied. In the process of step S1414, the process of step S1305 shown in FIG. 13 is performed.
  • step S1414 If it is determined that the pre-copy completion condition is satisfied (YES in step S1414), the VMM # 0 proceeds to step S1415. In this case, the VMM # 0 ends the pre-copy.
  • FIG. 15 is a flowchart showing specific processing of stop-and-copy.
  • VMM # 0 starts the stop-and-copy process.
  • the process proceeds to step S1501 (step S1500).
  • step S1501 VMM # 0 shifts to a wait state for a certain time. This is to wait until the DMA write process is completely stopped. When the predetermined time has elapsed, the VMM # 0 moves the process to step S1502.
  • step S1502 the VMM # 0 changes the FIFO for recording dirty page information by setting “0” or “1” to the write select bit of the control register 713 provided in the control I / F unit 710.
  • VMM # 0 changes the FIFO for recording dirty page information to FIFO # 1 by setting the write select bit of the control register 713 to “1”. To do.
  • VMM # 0 sets the write select bit of the control register 713 to “0” to change the FIFO for recording dirty page information to FIFO # 0. change.
  • step S1503 the VMM # 0 reads the status register 711 provided in the control I / F unit 710. Then, the VMM # 0 determines whether or not the overflow information bit of the currently selected FIFO is set to “1”.
  • step S1504 if the overflow information bit of the currently selected FIFO is set to “1” (YES in step S1504), VMM # 0 proceeds to step S1505. In this case, the VMM # 0 interrupts the live migration or starts over from the beginning.
  • step S1504 if the overflow information bit of the currently selected FIFO is set to “0” (NO in step S1504), the VMM # 0 moves the process to step S1506.
  • step S1506 the VMM # 0 reads the data register 712 by the number set in the valid data count of the status register 711, and acquires dirty page information.
  • step S1507 the VMM # 0 extracts from the dirty page information read in step S1506, the copy target dirty page information in which the source ID of the dirty page information indicates the storage # 0.
  • step S1508 the VMM # 0 converts the guest physical address of the copy target dirty page information into a host physical address according to the page table 630.
  • step S1509 the VMM # 0 determines whether there is data page information in the FIFO from the valid data count bit of the status register 711 provided in the control I / F unit 710.
  • step S1509 If the valid data count in the status register 711 is “0” (YES in step S1509), the VMM # 0 determines that the FIFO is empty, and the process proceeds to step S1510.
  • step S1510 the VMM # 0 acquires the data stored in the host physical address of the copy target dirty page information from the memory 520 provided in the server # 0. Then, the VMM # 0 transfers the acquired data to the VMM # 1 that is the migration destination of the VM # 0.
  • step S1511 when the VMM # 1 receives data from the VMM # 0, the VMM # 1 stores the received data in the VM area secured by the process of step S1301 shown in FIG.
  • step S1301 the VMM # 0 moves the process to step S1511. Then, the VMM # 0 ends the stop and copy (step S1511).
  • step S1509 determines that the valid data count of the status register 711 is not “0” in step S1509 (NO in step S1509), the VMM # 0 determines that the FIFO is not empty, and the process proceeds to step S1512.
  • step S1512 the VMM # 0 changes the FIFO for reading dirty page information by setting “0” or “1” to the read select bit of the control register 713 provided in the control I / F unit 710.
  • VMM # 0 sets the read select bit of the control register 713 to “1” to change the FIFO for reading dirty page information to FIFO # 1. .
  • VMM # 0 changes the FIFO for reading dirty page information to FIFO # 0 by setting the read select bit of the control register 713 to “0”. To do.
  • the VMM # 0 moves the process to step S1501.
  • the dirty page management unit 551 detects the DMA packet by the packet detection unit 720. .
  • the dirty page management unit 551 acquires the guest physical memory and the source ID from the header of the DMA packet and registers them in the FIFO # 0 or # 1 as dirty page information. To do.
  • the dirty page management unit 551 includes a CPU 510 or 511, that is, a control I / F unit 710 with the VMM realized by the CPU 510 or 511, and is registered in the FIFO # 0 or # 1 in response to a request from the VMM. Output dirty page information.
  • the VMM operating in the information processing apparatus 500 can acquire data on the memory 520 added, changed, or updated by the DMA write using the IOMMU 531 from the dirty page information.
  • the information processing apparatus 500 includes two FIFOs, FIFO # 0 and # 1, as the dirty page storage unit 552.
  • one of the FIFOs is a write target, it is possible to avoid contention between the read process and the write process for one FIFO by making the other FIFO a read target.
  • the dirty page information registration process to the FIFO and the dirty page information read process from the FIFO can be performed efficiently.

Abstract

Provided is an information processor equipped with a virtual information processor implementation means that implements one or more virtual information processors by managing hardware resources; a data transmission means that transmits data directly from an input-output device that controls data input-output with an external device to the first memory area assigned to the virtual information processor, by converting an address in a first memory area assigned virtually to a virtual information processor to an address in a second memory area that is the real memory of the first memory area; a transmitted data detection means that detects data directly transmitted from the input-output device to the first memory area assigned to the virtual information processor; an update information registration means that generates update information pertaining to the first memory area which is modified by the data detected with the transmitted data detecting means, and stores the update information in an update information storage means; and an update information output means that outputs the update information stored with the update information storage means.

Description

情報処理装置Information processing device
 本発明は、1または2以上の仮想機械を実現する情報処理装置に関する。 The present invention relates to an information processing apparatus that realizes one or more virtual machines.
 従来、情報処理装置としてのサーバ上で複数のVM(Virtual Machine:仮想機械)といわれる仮想的なサーバを動作させるサーバ仮想化技術が知られている。
 図1は、サーバ仮想化技術の概要を示す図である。
2. Description of the Related Art Conventionally, a server virtualization technique for operating a virtual server called a plurality of VMs (Virtual Machines) on a server as an information processing apparatus is known.
FIG. 1 is a diagram showing an overview of server virtualization technology.
 サーバ101では、VMM(Virtual Machine Monitor)102と呼ばれるソフトウェアを動作させている。このVMM102は、サーバ101のメモリやIO(Input/Output:入出力)などに関するハードウェア資源を管理する。また、VMM102は、各VM#0~#2に対して各VMが必要とするハードウェア資源をエミュレート(模倣)して提供する。 The server 101 operates software called a VMM (Virtual Machine Monitor) 102. The VMM 102 manages hardware resources related to the memory and IO (Input / Output) of the server 101. Further, the VMM 102 provides each VM # 0 to # 2 with emulation (imitation) of hardware resources required by each VM.
 複数のVMを動作させる場合、複数のVMがサーバ101に備わる物理メモリの同一アドレスの記憶領域を重複して使用しないように、メモリの排他制御が行なわれる。この排他制御は、VMM102のメモリ管理によって行なわれる。 When operating a plurality of VMs, exclusive control of the memory is performed so that the plurality of VMs do not use the same memory area of the physical memory provided in the server 101 redundantly. This exclusive control is performed by memory management of the VMM 102.
 図2は、VMM102によるメモリ管理の概要を示す図である。
 VMが認識するメモリは、ゲスト物理メモリと呼ばれる。このゲスト物理メモリは、VMからは連続するメモリ領域として把握される。一方、VM102から見るとゲスト物理メモリはVM毎に存在する別々のメモリ空間として把握される。
FIG. 2 is a diagram showing an outline of memory management by the VMM 102.
The memory recognized by the VM is called guest physical memory. This guest physical memory is recognized as a continuous memory area from the VM. On the other hand, when viewed from the VM 102, the guest physical memory is grasped as a separate memory space existing for each VM.
 図2は、VM#0とVM#1の2つのVMがVMM102上で動作している場合のゲスト物理メモリを示している。この場合、VM#0のゲスト物理メモリ#0とVM#1のゲスト物理メモリ#1の2つのゲスト物理メモリが存在する。 FIG. 2 shows the guest physical memory when two VMs, VM # 0 and VM # 1, are operating on the VMM102. In this case, there are two guest physical memories, the guest physical memory # 0 of VM # 0 and the guest physical memory # 1 of VM # 1.
 例えば、アドレスXは、ゲスト物理メモリ#0および#1にそれぞれ1つずつ存在する。このアドレスXをそのままサーバ101に備わる実メモリ、すなわちホスト物理メモリに割り当てると競合が発生する。 For example, one address X exists in each of the guest physical memories # 0 and # 1. If this address X is assigned as it is to the real memory provided in the server 101, that is, the host physical memory, a conflict occurs.
 そこで、VMM102は、ゲスト物理メモリ#0のアドレスXをホスト物理メモリのアドレスZに割り当て、ゲスト物理メモリ#1のアドレスXをホスト物理メモリのアドレスYに割り当てる。このように、VMM102は、ホスト物理メモリを別々のホスト物理メモリに割り当てることにより、メモリの競合を回避する。 Therefore, the VMM 102 assigns the address X of the guest physical memory # 0 to the address Z of the host physical memory, and assigns the address X of the guest physical memory # 1 to the address Y of the host physical memory. In this way, the VMM 102 avoids memory contention by allocating host physical memory to different host physical memories.
 VMがDMA(Direct Memory Access)を起動する場合にも同様のメモリ管理が必要となる。
 例えば、VM#0が、DMA転送により、ゲスト物理メモリ#0のアドレスXにデータを書き込む場合を考える。なお、DMA転送により所定のメモリ領域にデータを書き込むことを「DMAライト」という。また、DMA転送によるデータの書き込み先を示すメモリアドレスを「DMAアドレス」という。
Similar memory management is required when the VM activates DMA (Direct Memory Access).
For example, consider a case where VM # 0 writes data to address X of guest physical memory # 0 by DMA transfer. Note that writing data to a predetermined memory area by DMA transfer is called “DMA write”. A memory address indicating a data write destination by DMA transfer is referred to as a “DMA address”.
 この場合、VM#0がIOアダプタにDMAアドレスとしてアドレスXを設定すると、DMAライトはホスト物理メモリのアドレスXに対して行われる。ホスト物理メモリのアドレスXはゲスト物理メモリ#0のアドレスXとは無関係のメモリ領域であるため、メモリ破壊が引き起こされる。メモリ破壊が引き起こされた場合には、システムにパニックが発生し、その後システムが停止する。 In this case, when the VM # 0 sets the address X as the DMA address in the IO adapter, the DMA write is performed on the address X of the host physical memory. Since the address X of the host physical memory is a memory area unrelated to the address X of the guest physical memory # 0, memory destruction is caused. If memory corruption is triggered, the system panics and then shuts down.
 したがって、VM#0によるDMAライトの実行は、以下のような手順で行なわれる。
(1)VM#0は、IOアダプタに対して、ゲスト物理メモリ#0のアドレスXへのDMAライトを要求する。
(2)VMM102は、VM#0のDMAライトの要求をトラップし、ゲスト物理メモリ#0のアドレスXをホスト物理メモリのバッファ領域のアドレスWに変換する。そして、VMM102は、変換したアドレスWをIOアダプタのDMAアドレス設定レジスタに設定する。
(3)VM#0は、IOアダプタに対してDMA開始を指示する。
(4)IOアダプタは、アドレスWに対してDMAライトを実行する。
(5)DMAライトが完了すると、IOアダプタは、DMA完了割り込みによりDMAライトの完了を通知する。
(6)VMM102は、ホスト物理メモリのアドレスWに格納されたデータをゲスト物理メモリ#0のアドレスXにコピーする。
(7)VMM102は、DMA完了割り込みによりVM#0にDMAライトの完了を通知する。
(8)VM#0は、ゲスト物理メモリ#0のアドレスXからデータを取り出す。
Therefore, execution of DMA write by VM # 0 is performed according to the following procedure.
(1) The VM # 0 requests the IO adapter to perform a DMA write to the address X of the guest physical memory # 0.
(2) The VMM 102 traps the request for the DMA write of VM # 0 and converts the address X of the guest physical memory # 0 into the address W of the buffer area of the host physical memory. Then, the VMM 102 sets the converted address W in the DMA address setting register of the IO adapter.
(3) VM # 0 instructs the IO adapter to start DMA.
(4) The IO adapter executes DMA write for the address W.
(5) When the DMA write is completed, the IO adapter notifies the completion of the DMA write by a DMA completion interrupt.
(6) The VMM 102 copies the data stored at the address W of the host physical memory to the address X of the guest physical memory # 0.
(7) The VMM 102 notifies the VM # 0 of the completion of the DMA write by a DMA completion interrupt.
(8) The VM # 0 extracts data from the address X of the guest physical memory # 0.
 サーバ仮想化に関する機能の一つに、ライブ・マイグレーション(Live Migration)という技術がある。このライブ・マイグレーションとは、あるサーバで稼働中のVMを、別のサーバに動作を停止することなく当該動作を移行させる技術である。 One of the functions related to server virtualization is a technology called live migration. This live migration is a technique for migrating a VM running on a certain server to another server without stopping the operation.
 図3は、ライブ・マイグレーションの概要を示す図である。
 ライブ・マイグレーションは、図3に示すように、2台のサーバ#0および#1と、サーバ#0および#1が共有するストレージ320と、サーバ#0および#1が接続するネットワーク330と、を備える環境で行うことが可能である。ライブ・マイグレーションは、以下のような手順で行なわれる。
(1)移動先サーバ#1で動作するVMM311は、VM312を用意する。
(2)移動元VM302が業務を継続している状態で、移動元VMM301は、移動元VM302が使用しているメモリ内容を移動先VM310に転送する。この処理を「プレ・コピー」という。
(3)移動元VM302の業務を一時的に停止し、移動元VMM301は、移動元VM302が使用しているメモリ内容を移動先VM310に転送する。この処理を「ストップ・アンド・コピー」という。
(4)移動先VMM311からの指示に応じて、移動先VM312は業務を再開する。
FIG. 3 is a diagram showing an outline of live migration.
As shown in FIG. 3, live migration includes two servers # 0 and # 1, a storage 320 shared by servers # 0 and # 1, and a network 330 to which servers # 0 and # 1 are connected. It is possible to perform in the environment provided. Live migration is performed according to the following procedure.
(1) The VMM 311 operating on the migration destination server # 1 prepares the VM 312.
(2) The migration source VM 302 transfers the contents of the memory used by the migration source VM 302 to the migration destination VM 310 while the migration source VM 302 continues the business. This process is called “pre-copy”.
(3) The task of the migration source VM 302 is temporarily stopped, and the migration source VM 301 transfers the memory contents used by the migration source VM 302 to the migration destination VM 310. This process is referred to as “stop and copy”.
(4) In response to an instruction from the migration destination VMM 311, the migration destination VM 312 resumes the business.
 上述のように、プレ・コピーやストップ・アンド・コピーなどのメモリ・コピーはすべてVMMが行なう。VMMがメモリ・コピーを実行できるのは、VMMがホスト物理メモリを管理しているからである。 As mentioned above, VMM performs all memory copies such as pre-copy and stop-and-copy. The VMM can execute the memory copy because the VMM manages the host physical memory.
 VMMは、CPU(Central Processing Unit)からホスト物理メモリへのライト処理だけでなくDMAライトについても介在し、移動元VMのメモリ・データの変更分を検出する。 The VMM mediates not only the write processing from the CPU (Central Processing Unit) to the host physical memory but also the DMA write, and detects the memory data change of the migration source VM.
 IO仮想化技術としてIOMMU(Input/Output Memory Management Unit)という技術がある。このIOMMUは、上述のようなVMM介在によるメモリアクセスのオーバーヘッドを軽減することで高速化を図る技術である。 There is a technology called IOMMU (Input / Output Memory Management Unit) as an IO virtualization technology. This IOMMU is a technique for increasing the speed by reducing the memory access overhead caused by the VMM as described above.
 IOMMUは、IOアダプタとホスト物理メモリとに接続し、ゲスト物理メモリアドレスとホスト物理メモリアドレスの変換を実施するメモリ管理ユニットである。
 IOMMUを実装すると、図4に示すように、IO装置からVMのゲスト物理メモリに直接DMAを実行することが可能となる。この技術を使用すると、DMAによるゲスト物理メモリへのアクセスの際に、VMMが介在する必要がなくなる。また、VMMがホスト物理メモリ-ゲスト物理メモリ間でのデータコピーを行なう必要もなくなる。
The IOMMU is a memory management unit that is connected to the IO adapter and the host physical memory and performs conversion between the guest physical memory address and the host physical memory address.
When the IOMMU is mounted, as shown in FIG. 4, it is possible to execute DMA directly from the IO device to the guest physical memory of the VM. When this technology is used, it is not necessary to intervene the VMM when accessing the guest physical memory by the DMA. Further, it is not necessary for the VMM to copy data between the host physical memory and the guest physical memory.
 上記技術に関連して、メモリ領域がDMAアクセスによって書き込まれたときに所定の値がセットされるダーティRAM機構を備えるマルチプロセッサ・システム用のブリッジについて知られている。 In connection with the above technique, a bridge for a multiprocessor system having a dirty RAM mechanism in which a predetermined value is set when a memory area is written by DMA access is known.
 また、仮想計算機移動の際の構成の再設定の煩雑さを解消し、仮想計算機および仮想計算機制御プログラムの移動、複製あるいは保存を行うことによってシステムの可用性を向上する仮想計算機制御方法について知られている。 Also known is a virtual machine control method that eliminates the complexity of resetting the configuration when moving a virtual machine and improves the availability of the system by moving, copying, or saving the virtual machine and the virtual machine control program. Yes.
 また、物理I/Oアダプタによるアクセスを受ける物理ページ間でのデータのマイグレーションを可能にするために、物理I/Oアダプタにおいて選択されたDMAオペレーションを一時的に停止させる機構について知られている。 Also, a mechanism for temporarily stopping a DMA operation selected in a physical I / O adapter in order to enable data migration between physical pages that are accessed by the physical I / O adapter is known.
 少なくとも1つのホストプロセッサと、最も高い特権を有するシステムメモリとより低い特権を有するユーザメモリとに分割されているメモリを含むシステムリソースとを有するホストコンピュータの仮想化システムについて知られている。
特開2002-518734号公報 特開2006-072591号公報 特開2007-287140号公報 特開2007-510198号公報
A virtualization system for a host computer having at least one host processor and system resources including memory divided into system memory having the highest privilege and user memory having the lower privilege is known.
JP 2002-518734 A JP 2006-072591 A JP 2007-287140 A JP 2007-510198 A
 上述のように、IOMMUを使用すると、DMAアクセス時にVMMは介在しないことになる。この場合、VMMは、DMAライトによるゲスト物理メモリの更新を把握できないので、VMMは、メモリ・コピーを正しく実行することができない。そのため、IOMMU使用するとライブ・マイグレーションを実現できなくなるという問題があった。 As described above, when IOMMU is used, no VMM is interposed during DMA access. In this case, since the VMM cannot grasp the update of the guest physical memory by the DMA write, the VMM cannot correctly execute the memory copy. For this reason, there is a problem that live migration cannot be realized if IOMMU is used.
 本情報処理装置は、上述した問題に鑑みてなされたものであり、その解決しようとする課題は、IOMMUを使用する場合であってもライブ・マイグレーションを実行可能にする情報処理装置を提供することである。 The present information processing apparatus has been made in view of the above-described problems, and the problem to be solved is to provide an information processing apparatus capable of performing live migration even when IOMMU is used. It is.
 上記課題を解決するために、本情報処理装置は、以下の手段を備える。
 仮想機械実現手段は、ハードウェア資源を管理することにより、1または2以上の仮想機械を実現する。
In order to solve the above problems, the information processing apparatus includes the following means.
The virtual machine realization means realizes one or more virtual machines by managing hardware resources.
 データ転送手段は、前記仮想機械に割り当てられる第1のメモリ領域のアドレスと、前記第1のメモリ領域の実メモリである第2のメモリ領域のアドレスと、を相互に変換する。そして、データ転送手段は、外部装置とのデータの入出力を制御する入出力装置から前記仮想機械に割り当てられる前記第1のメモリ領域に直接データ転送を行なう。 The data transfer means mutually converts the address of the first memory area allocated to the virtual machine and the address of the second memory area that is the real memory of the first memory area. The data transfer means transfers data directly from the input / output device that controls input / output of data to / from an external device to the first memory area assigned to the virtual machine.
 転送データ検出手段は、前記入出力装置から前記仮想機械に割り当てられる前記第1のメモリ領域に直接データ転送されるデータを検出する。
 更新情報登録手段は、前記転送データ検出手段により検出したデータにより変更される前記第1のメモリ領域に関する更新情報を生成し、前記更新情報を更新情報記憶手段に記憶する。
The transfer data detection means detects data directly transferred from the input / output device to the first memory area allocated to the virtual machine.
The update information registration unit generates update information regarding the first memory area that is changed by the data detected by the transfer data detection unit, and stores the update information in the update information storage unit.
 更新情報出力手段は、前記更新情報記憶手段に記憶される更新情報を出力する。
 本情報処理装置によると、仮想機械が、データ転送手段を用いて外部装置から第1のメモリ領域に直接データ転送を行なうと、変更情報登録手段が、そのデータ転送により変更される第1のメモリ領域に関する情報を更新情報記憶手段に記憶する。また、更新情報出力手段は、更新情報出力手段に記憶される更新情報を出力する。
The update information output means outputs the update information stored in the update information storage means.
According to the information processing apparatus, when the virtual machine directly transfers data from the external device to the first memory area using the data transfer means, the change information registration means changes the first memory changed by the data transfer. Information about the area is stored in the update information storage means. The update information output means outputs update information stored in the update information output means.
 以上に説明した情報処理装置によると、IOMMUを使用する場合であってもライブ・マイグレーションを実行することが可能となる。 According to the information processing apparatus described above, live migration can be executed even when IOMMU is used.
サーバ仮想化技術の概要を示す図である。It is a figure which shows the outline | summary of a server virtualization technique. VMMによるメモリ管理の概要を示す図である。It is a figure which shows the outline | summary of the memory management by VMM. ライブ・マイグレーションの概要を示す図である。It is a figure which shows the outline | summary of live migration. IOMMUについて説明する図である。It is a figure explaining IOMMU. 情報処理装置の構成例を示す図である。It is a figure which shows the structural example of information processing apparatus. ノース・ブリッジにおけるDMA処理の動作を説明する図である。It is a figure explaining the operation | movement of the DMA process in a north bridge. PCIeスイッチにおけるDMA処理の動作を説明する図である。It is a figure explaining the operation | movement of the DMA process in a PCIe switch. FIFO#0の構成例を示す図である。It is a figure which shows the structural example of FIFO # 0. DMAパケットのヘッダの構成例を示す図である。It is a figure which shows the structural example of the header of a DMA packet. ダーティ・ページ管理ユニットによるダーティ・ページ情報の登録処理を示すフローチャートである。It is a flowchart which shows the registration process of dirty page information by a dirty page management unit. ダーティ・ページ管理ユニットによるダーティ・ページ情報の出力処理を示すフローチャートである。It is a flowchart which shows the output process of dirty page information by a dirty page management unit. 本実施例に係るライブ・マイグレーションの概要を説明する図である。It is a figure explaining the outline | summary of the live migration which concerns on a present Example. 本実施例に係るライブ・マイグレーションの概要を示すフローチャートである。It is a flowchart which shows the outline | summary of the live migration which concerns on a present Example. プレ・コピーの具体的な処理を示すフローチャートである。It is a flowchart which shows the specific process of a pre copy. ストップ・アンド・コピーの具体的な処理を示すフローチャートである。It is a flowchart which shows the specific process of stop and copy.
 以下、本実施形態の一例について、図5~図15に基づいて説明する。
(本実施例に係る情報処理装置)
 図5は、情報処理装置500の構成例を示す図である。
Hereinafter, an example of this embodiment will be described with reference to FIGS.
(Information processing apparatus according to this embodiment)
FIG. 5 is a diagram illustrating a configuration example of the information processing apparatus 500.
 情報処理装置500は、演算処理装置としてのCPU510および511と、主記憶装置としてのメモリ520と、メモリ制御装置としてのノース・ブリッジ530と、を備える。又、情報処理装置500は、入出力制御装置としてのIOアダプタ540、541および542と、PCIeスイッチ(PCI Express Switch)550と、を備える。 The information processing device 500 includes CPUs 510 and 511 as arithmetic processing devices, a memory 520 as a main storage device, and a north bridge 530 as a memory control device. The information processing apparatus 500 includes IO adapters 540, 541, and 542 as input / output control apparatuses, and a PCIe switch (PCI Express Switch) 550.
 CPU510および511は、メモリ520に展開されるプログラムを実行する演算処理装置である。CPU510および511は、所定のプログラムを実行することにより、サーバの仮想化を実現する。また、CPU510および511は、ストレージ#0や#1などから所定のプログラムを読み出して実行することにより、本実施例に係るライブ・マイグレーションを実現する。 CPUs 510 and 511 are arithmetic processing units that execute programs developed in the memory 520. The CPUs 510 and 511 implement server virtualization by executing predetermined programs. In addition, the CPUs 510 and 511 implement the live migration according to the present embodiment by reading and executing a predetermined program from the storage # 0 or # 1.
 なお、サーバの仮想化に必要なハードウェア資源やメモリ等管理などの技術ついては従来技術が利用できる。
 メモリ520は、CPU510aおよび510bが実行するプログラムやデータを記憶する揮発性メモリである。例えば、RAM(Random Access Memory)などがメモリ520として使用される。なお、必要に応じて不揮発性メモリを使用してもよい。
Note that conventional technologies can be used for technologies such as management of hardware resources and memory necessary for server virtualization.
The memory 520 is a volatile memory that stores programs and data executed by the CPUs 510a and 510b. For example, a RAM (Random Access Memory) or the like is used as the memory 520. A nonvolatile memory may be used as necessary.
 ノース・ブリッジ530は、CPU510aおよび510bと、メモリ520およびPCIeスイッチ550と接続している。ノース・ブリッジ530は、CPU510aおよび510bと、メモリ520やPCIeスイッチ550と、が相互に通信可能となるようにデータ転送路を制御する。 The north bridge 530 is connected to the CPUs 510a and 510b, the memory 520, and the PCIe switch 550. The north bridge 530 controls the data transfer path so that the CPUs 510a and 510b and the memory 520 and the PCIe switch 550 can communicate with each other.
 また、ノース・ブリッジ530は、IOMMU531と、IOテーブル記憶部532と、を備える。
 IOMMU531は、ゲスト物理メモリのアドレスとホスト物理メモリのアドレスとの変換を実施するなどのメモリ管理を行なうメモリ管理ユニットである。以下、ゲスト物理メモリのアドレスを「ゲスト物理アドレス」という。また、ホスト物理メモリのアドレスを「ホスト物理アドレス」という。
The north bridge 530 includes an IOMMU 531 and an IO table storage unit 532.
The IOMMU 531 is a memory management unit that performs memory management such as conversion between the address of the guest physical memory and the address of the host physical memory. Hereinafter, the address of the guest physical memory is referred to as “guest physical address”. The address of the host physical memory is called “host physical address”.
 IOテーブル記憶部532は、IOMMU531がゲスト物理アドレスとホスト物理アドレスの変換を行なうときに使用するIOテーブルを記憶する記憶装置である。例えば、キャッシュメモリなどがIOテーブル記憶部532として使用される。IOテーブルについては、図6で説明する。 The IO table storage unit 532 is a storage device that stores an IO table used when the IOMMU 531 converts a guest physical address and a host physical address. For example, a cache memory or the like is used as the IO table storage unit 532. The IO table will be described with reference to FIG.
 IOアダプタ540、541および542は、情報処理装置500と接続するIO装置とのインタフェースである。DMAを行なうDMA回路は、各IOアダプタ540、541および542に備わる。 The IO adapters 540, 541, and 542 are interfaces with IO devices connected to the information processing device 500. A DMA circuit that performs DMA is provided in each of the IO adapters 540, 541, and 542.
 IO装置とは、例えば、図5に示すデータを記憶するストレージ#0、#1やネットワークと接続するネットワーク機器などの入出力装置である。
 PCIeスイッチ550は、ノース・ブリッジ530、IOアダプタ540、541および542と接続している。
The IO device is, for example, an input / output device such as storages # 0 and # 1 that store data shown in FIG. 5 or a network device connected to a network.
The PCIe switch 550 is connected to the north bridge 530 and the IO adapters 540, 541, and 542.
 PCIeスイッチ550は、ノース・ブリッジ530とIOアダプタ540、541および542との間を結ぶデータ転送路の切り替え制御などを行なう。情報処理装置500は、データ転送路にシリアル転送インタフェースの規格である「PCI Express 2.0」を使用している。 The PCIe switch 550 performs switching control of a data transfer path connecting between the north bridge 530 and the IO adapters 540, 541, and 542. The information processing apparatus 500 uses “PCI Express 2.0” which is a serial transfer interface standard for the data transfer path.
 また、PCIeスイッチ550は、ダーティ・ページ管理ユニット551と、ダーティ・ページ記憶部552と、を備える。
 ダーティ・ページ管理ユニット551は、IOアダプタ540、541または542からメモリ520に、DMAライトによって転送されるデータとしてのパケットを検出する。そして、ダーティ・ページ管理ユニット551は、DMAライトによって追加、変更または更新等されたデータに関する情報をページ単位でダーティ・ページ記憶部552に記憶する。
The PCIe switch 550 includes a dirty page management unit 551 and a dirty page storage unit 552.
The dirty page management unit 551 detects a packet as data transferred from the IO adapter 540, 541, or 542 to the memory 520 by DMA write. Then, the dirty page management unit 551 stores information regarding data added, changed, or updated by the DMA write in the dirty page storage unit 552 in units of pages.
 以下、DMAライトによって追加、変更または更新等されたページ単位のデータを、「ダーティ・ページ」という。また、ダーティ・ページに関する情報を、「ダーティ・ページ情報」という。 Hereinafter, page unit data added, changed, or updated by the DMA write is referred to as “dirty page”. Information about dirty pages is referred to as “dirty page information”.
 ダーティ・ページ記憶部552は、ダーティ・ページ情報を記憶する記憶装置である。例えば、スタティックRAMなどがダーティ・ページ記憶部552として使用される。
 情報処理装置500は、ライブ・マイグレーションを実施するために情報処理装置501とネットワークを介して接続している。また、情報処理装置500と情報処理装置501は、ストレージ#0および#1を共有する。
The dirty page storage unit 552 is a storage device that stores dirty page information. For example, a static RAM or the like is used as the dirty page storage unit 552.
The information processing apparatus 500 is connected to the information processing apparatus 501 via a network in order to perform live migration. Further, the information processing apparatus 500 and the information processing apparatus 501 share the storages # 0 and # 1.
 情報処理装置501は、CPU560および561と、メモリ570と、ノース・ブリッジ580と、IOアダプタ590、591および592と、PCIeスイッチ600と、を備える。 The information processing apparatus 501 includes CPUs 560 and 561, a memory 570, a north bridge 580, IO adapters 590, 591 and 592, and a PCIe switch 600.
 CPU560、561、メモリ570、ノース・ブリッジ580、IOアダプタ590、591、592およびPCIeスイッチ600は、CPU510、511、メモリ520、ノース・ブリッジ530、IOアダプタ540、541、542およびPCIeスイッチ550と、同様である。 CPUs 560, 561, memory 570, north bridge 580, IO adapters 590, 591, 592 and PCIe switch 600 are CPU 510, 511, memory 520, north bridge 530, IO adapters 540, 541, 542 and PCIe switch 550, It is the same.
 ただし、ノース・ブリッジ580には、IOMMU531およびIOテーブル記憶部532を備えなくてもよい。同様に、PCIeスイッチ600には、ダーティ・ページ管理ユニット551およびダーティ・ページ記憶部552を備えなくてもよい。 However, the north bridge 580 may not include the IOMMU 531 and the IO table storage unit 532. Similarly, the PCIe switch 600 may not include the dirty page management unit 551 and the dirty page storage unit 552.
 情報処理装置500と接続する情報処理装置501は、図3で示した一般的なライブ・マイグレーションが実行可能であればよい。
 図5に示した構成は、本実施例に係る情報処理装置500の一例である。したがって、図5に示す構成に情報処理装置500の構成を限定する趣旨ではない。例えば、CPUの数やIOアダプタの数、情報処理装置500を構成する各ユニットの配置などを図5に示すものに限定する趣旨ではない。
The information processing apparatus 501 connected to the information processing apparatus 500 only needs to be able to execute the general live migration shown in FIG.
The configuration illustrated in FIG. 5 is an example of the information processing apparatus 500 according to the present embodiment. Therefore, the configuration of the information processing apparatus 500 is not limited to the configuration illustrated in FIG. For example, the number of CPUs, the number of IO adapters, the arrangement of units constituting the information processing apparatus 500, and the like are not limited to those illustrated in FIG.
 また、情報処理装置500は、CDやDVDなどの可搬記憶媒体を駆動する媒体駆動装置を備えてもよい。本実施例に係るライブ・マイグレーションをCDやDVDなどの可搬記憶媒体に記憶した場合、CPU510および511は、媒体駆動装置を介して可搬記憶媒体から所定のプログラムを読み出して実行することにより、本実施例に係るライブ・マイグレーションを実現する。 Further, the information processing apparatus 500 may include a medium driving device that drives a portable storage medium such as a CD or a DVD. When the live migration according to the present embodiment is stored in a portable storage medium such as a CD or DVD, the CPUs 510 and 511 read and execute a predetermined program from the portable storage medium via the medium driving device. The live migration according to the present embodiment is realized.
 図6は、ノース・ブリッジ530におけるDMA処理の動作を説明する図である。
 DMAパケット610および611は、DMA処理によりIOアダプタ540、541または542から所定の転送先に転送されるデータとしてのパケットである。
FIG. 6 is a diagram for explaining the DMA processing operation in the north bridge 530.
The DMA packets 610 and 611 are packets as data transferred from the IO adapter 540, 541, or 542 to a predetermined transfer destination by DMA processing.
 IOテーブル620は、IOテーブル記憶部532に記憶されるIOテーブルを示している。IOテーブル620は、ゲスト物理アドレスとホスト物理アドレスのアドレス変換テーブルである。IOテーブル620は、ゲスト物理アドレスとソースIDとからなるアドレスに対応するホスト物理アドレスを定義する。 The IO table 620 indicates an IO table stored in the IO table storage unit 532. The IO table 620 is an address conversion table between guest physical addresses and host physical addresses. The IO table 620 defines a host physical address corresponding to an address composed of a guest physical address and a source ID.
 IOテーブル620は、後述するページテーブル630のエントリのうち頻繁に使用する一部のエントリをキャッシュ(一時保持)するものである。
 ここで、ソースIDとは、パケットの転送元のユニットを識別するID(Identification Data)である。
The IO table 620 caches (temporarily holds) some entries that are frequently used among entries in a page table 630 described later.
Here, the source ID is an ID (Identification Data) that identifies a packet transfer source unit.
 以下、図面中では必要に応じて、ゲスト物理アドレスを「GPA(Guest Physical Address)」、ホスト物理アドレスを「HPA(Host Physical Address)」、ソースIDを「SID(Source ID)と略記する。 Hereinafter, in the drawings, a guest physical address is abbreviated as “GPA (Guest Physical Address)”, a host physical address is abbreviated as “HPA (Host Physical Address)”, and a source ID is abbreviated as “SID (Source ID)” as necessary.
 ページテーブル630は、ゲスト物理アドレスとホスト物理アドレスのアドレス変換テーブルである。ページテーブル630は、ゲスト物理アドレスに対応するホスト物理アドレスを定義している。 The page table 630 is an address conversion table for guest physical addresses and host physical addresses. The page table 630 defines a host physical address corresponding to the guest physical address.
 IOMMU531は、DMAパケット610を検出すると、検出したDMAパケット610のヘッダから、ゲスト物理アドレスとソースIDとを取得する。
 すると、IOMMU531は、IOテーブル620を参照する。そして、IOMMU531は、DMAパケット610から取得したゲスト物理アドレスとソースIDとからなるアドレスが、IOテーブル620に登録されているか否かを判別する。
When detecting the DMA packet 610, the IOMMU 531 acquires the guest physical address and the source ID from the header of the detected DMA packet 610.
Then, the IOMMU 531 refers to the IO table 620. Then, the IOMMU 531 determines whether or not an address composed of the guest physical address and the source ID acquired from the DMA packet 610 is registered in the IO table 620.
 DMAパケット610から取得したゲスト物理アドレスとソースIDとからなるアドレスが登録されている場合、IOMMU531は、そのゲスト物理アドレスとソースIDとからなるアドレスに対応するホスト物理アドレスを取得する。 When an address composed of a guest physical address and a source ID acquired from the DMA packet 610 is registered, the IOMMU 531 acquires a host physical address corresponding to an address composed of the guest physical address and the source ID.
 そして、IOMMU531は、DMAパケット610のヘッダに設定されている転送先を示すゲスト物理アドレスを、IOテーブル620から取得したホスト物理アドレスに変更する。 Then, the IOMMU 531 changes the guest physical address indicating the transfer destination set in the header of the DMA packet 610 to the host physical address acquired from the IO table 620.
 一方、DMAパケット610から取得したゲスト物理アドレスとソースIDとからなるアドレスがIOテーブル620に登録されていない場合、IOMMU531は、メモリ520に格納されているページテーブル630を参照する。 On the other hand, when the address composed of the guest physical address and the source ID acquired from the DMA packet 610 is not registered in the IO table 620, the IOMMU 531 refers to the page table 630 stored in the memory 520.
 そして、IOMMU531は、ページテーブル630のアドレスであって、DMAパケット610から取得したゲスト物理アドレスと同一のアドレスに登録されているホスト物理アドレスを取得する。 Then, the IOMMU 531 acquires the host physical address registered in the same address as the guest physical address acquired from the DMA packet 610, which is the address of the page table 630.
 そして、IOMMU531は、DMAパケット610のヘッダに設定されている転送先を示すゲスト物理アドレスを、ページテーブル630から取得したホスト物理アドレスに変更する。 Then, the IOMMU 531 changes the guest physical address indicating the transfer destination set in the header of the DMA packet 610 to the host physical address acquired from the page table 630.
 以上のようにして転送先のアドレスがゲスト物理アドレスからホスト物理アドレスに変換されたDMAパケット611は、メモリ520に出力される。
 図7は、PCIeスイッチ550におけるDMA処理の動作を説明する図である。
The DMA packet 611 in which the transfer destination address is converted from the guest physical address to the host physical address as described above is output to the memory 520.
FIG. 7 is a diagram for explaining the operation of DMA processing in the PCIe switch 550.
 ダーティ・ページ管理ユニット551は、制御I/F(Interface)部710と、パケット検出部720と、ライトポインタ730と、リードポインタ740と、を備える。 The dirty page management unit 551 includes a control I / F (Interface) unit 710, a packet detection unit 720, a write pointer 730, and a read pointer 740.
 なお、ダーティ・ページ管理ユニット551の動作の理解を容易にするために、図7では、ダーティ・ページ管理ユニット551の中にダーティ・ページ記憶部552を記載している。 In order to facilitate understanding of the operation of the dirty page management unit 551, in FIG. 7, a dirty page storage unit 552 is described in the dirty page management unit 551.
 ダーティ・ページ記憶部552は、FIFO(First In First Out:先入れ先出しメモリ)を実現するメモリ#0および#1からなる。以下、FIFOを実現するメモリ#0および#1をそれぞれ「FIFO#0」、「FIFO#1」という。 The dirty page storage unit 552 includes memories # 0 and # 1 that realize a FIFO (First In First Out). Hereinafter, the memories # 0 and # 1 realizing the FIFO are referred to as “FIFO # 0” and “FIFO # 1”, respectively.
 制御I/F部710は、ダーティ・ページ管理ユニット551のインタフェースである。VMM102は、制御I/F部710を介してFIFO#0または#1に記憶されているダーティ・ページ情報を取得する。 The control I / F unit 710 is an interface of the dirty page management unit 551. The VMM 102 acquires dirty page information stored in the FIFO # 0 or # 1 via the control I / F unit 710.
 制御I/F部710は、ステータスレジスタ711と、データレジスタ712と、コントロールレジスタ713と、を備える。
 ステータスレジスタ711は、VMM102などのソフトウェアからリード/ライトが可能なレジスタである。ステータスレジスタ711は、以下のような状態表示ビットを備える。
The control I / F unit 710 includes a status register 711, a data register 712, and a control register 713.
The status register 711 is a register that can be read / written by software such as the VMM 102. The status register 711 includes the following status display bits.
 オーバーフロー情報ビット#0:FIFO#0がオーバーフローを起こしたことを示す。
 オーバーフロー情報ビット#1:FIFO#1がオーバーフローを起こしたことを示す。
Overflow information bit # 0: indicates that FIFO # 0 has overflowed.
Overflow information bit # 1: indicates that FIFO # 1 has overflowed.
 有効データカウント#0:FIFO#0において、ライトポインタ730が示すアドレスとリードポインタ740が示すアドレスとの差をダーティ・ページ情報のサイズで除した値を示す。まだ読み出していないダーティ・ページ情報がFIFO#0にどれだけ残っているかを示す。 Valid data count # 0: In FIFO # 0, a value obtained by dividing the difference between the address indicated by the write pointer 730 and the address indicated by the read pointer 740 by the size of the dirty page information. It shows how much dirty page information that has not yet been read remains in FIFO # 0.
 有効データカウント#1:FIFO#1において、ライトポインタが示すアドレスとリードポインタが示すアドレスとの差をダーティ・ページ情報のサイズで除した値を示す。まだ読み出していないダーティ・ページ情報がFIFO#1にどれだけ残っているかを示す。 Valid data count # 1: In FIFO # 1, a value obtained by dividing the difference between the address indicated by the write pointer and the address indicated by the read pointer by the size of the dirty page information. This indicates how much dirty page information that has not yet been read remains in FIFO # 1.
 データレジスタ712は、VMM102などのソフトウェアからリードが可能なレジスタである。FIFO#0または#1に記憶されているデータをVMM102から読み出すために使用するレジスタである。 The data register 712 is a register that can be read from software such as the VMM 102. This register is used to read data stored in the FIFO # 0 or # 1 from the VMM 102.
 データレジスタ712は、コントロールレジスタ713のリードセレクトビットで指定したFIFO#0または#1から読み出されたダーティ・ページ情報がセットされる。ダーティ・ページ管理ユニット551は、データレジスタ712に格納されているダーティ・ページ情報がリードされると同時に、リードポインタ740に、次のダーティ・ページ情報が記憶されるアドレスに設定する。 In the data register 712, the dirty page information read from the FIFO # 0 or # 1 designated by the read select bit of the control register 713 is set. When the dirty page information stored in the data register 712 is read, the dirty page management unit 551 sets the read pointer 740 to the address where the next dirty page information is stored.
 コントロールレジスタ713は、VMM102などのソフトウェアからリード/ライトが可能なレジスタである。コントロールレジスタ713は、以下のような制御ビットを備える。 The control register 713 is a register that can be read / written by software such as the VMM 102. The control register 713 includes the following control bits.
 スタートビット:FIFO#0または#1へのダーティ・ページ情報の登録を開始する。
 ストップビット:FIFO#0または#1へのダーティ・ページ情報の登録を停止する。
Start bit: Starts registration of dirty page information in FIFO # 0 or # 1.
Stop bit: Stops registration of dirty page information in FIFO # 0 or # 1.
 クリアビット :FIFO#0または#1のポインタを0に戻し、FIFO#0または#1を空の状態にする。空の状態とは、FIFOに登録されているダーティ・ページ情報がない状態である。 Clear bit: The pointer of FIFO # 0 or # 1 is returned to 0, and FIFO # 0 or # 1 is made empty. The empty state is a state where there is no dirty page information registered in the FIFO.
 ライトセレクトビット:2つのFIFO#0または#1のどちらにダーティ・ページ情報を登録するかを選択する。
 リードセレクトビット:2つのFIFO#0または#1のどちらからダーティ・ページ情報を読み出すかを選択する。
Write select bit: Selects whether to register dirty page information in two FIFOs # 0 or # 1.
Read select bit: Selects whether dirty page information is read from two FIFOs # 0 or # 1.
 パケット検出部720は、コントロールレジスタ713のスタートビットが「1」に設定されている間、PCIeスイッチ550に入力されるDMAライトパケット750を検出する。そして、パケット検出部720は、検出したDMAライトパケット750のヘッダから、ゲスト物理アドレスとソースIDを取得する。さらに、パケット検出部720は、取得したゲスト物理アドレスとソースIDとからなるデータをダーティ・ページ情報として、選択中のFIFO#0または#1に書き込む。同時に、パケット検出部720は、ライトポインタ730に、次にダーティ・ページ情報を記憶する領域のアドレスを設定する。 The packet detection unit 720 detects the DMA write packet 750 input to the PCIe switch 550 while the start bit of the control register 713 is set to “1”. Then, the packet detection unit 720 acquires the guest physical address and the source ID from the header of the detected DMA write packet 750. Further, the packet detection unit 720 writes the data including the acquired guest physical address and source ID as dirty page information in the currently selected FIFO # 0 or # 1. At the same time, the packet detection unit 720 sets the address of the area where dirty page information is stored next in the write pointer 730.
 ライトポインタ730は、FIFO#0または#1へ最後に書き込まれたダーティ・ページ情報のアドレスを示す。本実施例では、図7に示すように、FIFO#0用とFIFO#1用とにそれぞれライトポインタ730が備えられている。 The write pointer 730 indicates the address of dirty page information last written to FIFO # 0 or # 1. In the present embodiment, as shown in FIG. 7, write pointers 730 are provided for FIFO # 0 and for FIFO # 1, respectively.
 リードポインタ740は、FIFO#0または#1から最後に読み出されたダーティ・ページ情報のアドレスを示す。本実施例では、図7に示すように、FIFO#0用とFIFO#1用とにそれぞれリードポインタ740を備える。 The read pointer 740 indicates the address of dirty page information last read from FIFO # 0 or # 1. In the present embodiment, as shown in FIG. 7, read pointers 740 are provided for FIFO # 0 and for FIFO # 1, respectively.
 なお、FIFO#0が選択されている場合には、FIFO#0についてのライトポインタおよびリードポインタがライトポインタ730およびリードポインタ740に格納される。 When FIFO # 0 is selected, the write pointer and read pointer for FIFO # 0 are stored in write pointer 730 and read pointer 740.
 同様に、FIFO#1が選択されている場合には、FIFO#1についてのライトポインタおよびリードポインタがライトポインタ730およびリードポインタ740に格納される。 Similarly, when FIFO # 1 is selected, the write pointer and read pointer for FIFO # 1 are stored in write pointer 730 and read pointer 740.
 図8は、FIFO#0の構成例を示す図である。なお、図8には、FIFO#0についてのみ示すが、FIFO#1についても同様の構成である。
 FIFO#0は、DMAパケットの送信元のIOアダプタを示すソースIDと、そのDMAパケットの転送先を示すゲスト物理アドレス[63:12]と、を備える。PCI Expressの場合、ソースIDは、DMAパケットの送信元のバス番号と、そのDMAパケットの送信元のファンクション番号と、からなる。
FIG. 8 is a diagram illustrating a configuration example of FIFO # 0. FIG. 8 shows only FIFO # 0, but FIFO # 1 has the same configuration.
The FIFO # 0 includes a source ID that indicates an IO adapter that is a transmission source of a DMA packet, and a guest physical address [63:12] that indicates a transfer destination of the DMA packet. In the case of PCI Express, the source ID is composed of a DMA packet transmission source bus number and a function number of the DMA packet transmission source.
 本実施例では、1ページのサイズを例えば4KBとする。この場合、64ビット幅のアドレスデータの下位12ビットは同一ページ内のアドレスを表す。したがって、本実施例では、ゲスト物理アドレスのうち、ビット63~12までのデータのみをFIFO#0に登録する。 In this embodiment, the size of one page is, for example, 4 KB. In this case, the lower 12 bits of the 64-bit address data represent an address in the same page. Therefore, in this embodiment, only the data of bits 63 to 12 in the guest physical address is registered in the FIFO # 0.
 ゲスト物理アドレスに32ビット長のデータを使用する場合、ゲスト物理アドレスのビット63~32に「0」を補完した64ビット長のアドレスデータをFIFO#0に登録する。 When using 32-bit data for the guest physical address, register the 64-bit address data in which “0” is complemented to bits 63 to 32 of the guest physical address in FIFO # 0.
 上述のソースID、ゲスト物理アドレスは、DMAパケットのヘッダから取得することができる。
 図9は、DMAパケットのヘッダの構成例を示している。本実施例では、PCIeスイッチ550を使用しているので、DMAパケットのヘッダは規格「PCI Express 2.0」に準じる。
The above-mentioned source ID and guest physical address can be obtained from the header of the DMA packet.
FIG. 9 shows a configuration example of the header of the DMA packet. In this embodiment, since the PCIe switch 550 is used, the header of the DMA packet conforms to the standard “PCI Express 2.0”.
 図9の(1)に示すDMAパケットのヘッダ1101は、ゲスト物理アドレスに32ビット幅のアドレスデータを使用する場合のDMAパケットのヘッダの構成例を示す。また、図9の(2)に示すDMAパケットのヘッダ1102は、ゲスト物理アドレスに64ビット幅のアドレスデータを使用する場合のDMAパケットのヘッダの構成例を示す。 The header 1101 of the DMA packet shown in (1) of FIG. 9 shows a configuration example of the header of the DMA packet when address data having a 32-bit width is used for the guest physical address. A DMA packet header 1102 shown in (2) of FIG. 9 shows a configuration example of a DMA packet header when address data having a 64-bit width is used as a guest physical address.
 「R」は、リザーブ領域である。常に「0」が設定される。
 「Fmt(Format)」は、ペイロードに格納されたデータの有無、ヘッダ長を示す2ビット幅のデータである。
“R” is a reserved area. “0” is always set.
“Fmt (Format)” is 2-bit data indicating the presence / absence of data stored in the payload and the header length.
 「Type」は、パケットのタイプを示す5ビット幅のデータである。
 「TC(Transaction Class)」は、パケットの優先度を示す3ビット幅のデータである。
“Type” is 5-bit wide data indicating the type of packet.
“TC (Transaction Class)” is 3-bit width data indicating the priority of a packet.
 「TD(TLP(Transaction Layer Packet) Digest)」は、エラーチェック符号であるECRC(Extended Cyclical Redundancy Check)の有無を示す1ビット幅のデータである。 “TD (TLP (Transaction Layer Packet) Digest)” is 1-bit data indicating the presence or absence of an ECRC (Extended Cyclic Redundancy Check) that is an error check code.
 「EP(Error Poisoned)」は、ペイロードに格納されたデータが壊れている可能性を示す1ビット幅のデータである。
 「Attr(Attributes)」は、パケットの順序やプロトコルに関する補足情報を示す2ビット幅のデータである。
“EP (Error Poisoned)” is 1-bit data indicating the possibility that the data stored in the payload is corrupted.
“Attr (Attributes)” is 2-bit data indicating supplementary information related to the packet order and protocol.
 「AT(Address Translation)」は、アドレス変換に関する補足情報を示す2ビット幅のデータである。
 「Length」は、ペイロードに格納されているデータのデータ長を示す10ビット幅のデータである。
“AT (Address Translation)” is 2-bit data indicating supplementary information related to address translation.
“Length” is 10-bit width data indicating the data length of data stored in the payload.
 「バス番号」は、DMAパケットの送信元のバス番号を示す8ビット幅のデータである。
 「ファンクション番号」は、DMAパケットの送信元のファンクション番号を示す8ビット幅のデータである。
The “bus number” is 8-bit data indicating the bus number of the transmission source of the DMA packet.
“Function number” is 8-bit data indicating the function number of the transmission source of the DMA packet.
 「Tag」は、DMAパケットの管理番号を示す8ビット幅のデータである。
 「Last DW BE」は、Last DW Byteの有効・無効を示す4ビット幅のデータである。
“Tag” is 8-bit width data indicating the management number of the DMA packet.
“Last DW BE” is 4-bit width data indicating validity / invalidity of the Last DW Byte.
 「1st DW BE」は、1st DW Byteの有効・無効を示す4ビット幅のデータである。
 「アドレス」は、30ビット幅または62ビット幅のアドレスデータである。
“1st DW BE” is 4-bit data indicating the validity / invalidity of the 1st DW Byte.
“Address” is 30-bit or 62-bit address data.
 図10は、ダーティ・ページ管理ユニット551によるダーティ・ページ情報の登録処理を示すフローチャートである。なお、図10中に記載のFIFOは、FIFO#0または#1のうち、コントロールレジスタ713のライトセレクトビットに設定されたFIFOを示す。 FIG. 10 is a flowchart showing the registration process of dirty page information by the dirty page management unit 551. 10 indicates the FIFO set in the write select bit of the control register 713 in the FIFO # 0 or # 1.
 VMM102などのソフトウェアが、ダーティ・ページ管理ユニット551に備わるコントロールレジスタ713のスタートビットを「1」に設定すると、ダーティ・ページ管理ユニット551は、ダーティ・ページ情報の登録処理を開始する(ステップS1000)。 When software such as the VMM 102 sets the start bit of the control register 713 included in the dirty page management unit 551 to “1”, the dirty page management unit 551 starts the registration process of dirty page information (step S1000). .
 ステップS1001において、パケット検出部720は、IOアダプタ540、541または542などのIOアダプタからPCIeスイッチ550に入力したDMAパケットのヘッダを参照する。 In step S1001, the packet detection unit 720 refers to the header of the DMA packet input to the PCIe switch 550 from an IO adapter such as the IO adapter 540, 541, or 542.
 そして、パケット検出部720は、DMAパケットのヘッダから「Fmt」と「Type」を取得する。
 パケット検出部720は、IOアダプタからメモリ520に転送され、Fmt=10(2進数)またはFmt=11(2進数)、かつType=00000(2進数)であるDMAライトパケットを検出すると、ステップS1002に移行する(ステップS1001 YES)。
Then, the packet detection unit 720 acquires “Fmt” and “Type” from the header of the DMA packet.
When the packet detection unit 720 detects a DMA write packet that is transferred from the IO adapter to the memory 520 and has Fmt = 10 (binary number) or Fmt = 11 (binary number) and Type = 00000 (binary number), step S1002 (Step S1001 YES).
 なお、Fmt=10(2進数)の場合、ゲスト物理アドレスに32ビット幅のアドレスデータを使用するDMAパケットであることを示している。また、Fmt=11(2進数)の場合、ゲスト物理アドレスに64ビット幅のアドレスデータを使用するDMAパケットであることを示している。 Note that, when Fmt = 10 (binary number), it indicates a DMA packet that uses 32-bit address data as a guest physical address. Further, when Fmt = 11 (binary number), it indicates that the packet is a DMA packet using 64-bit address data as a guest physical address.
 また、Type=00000(2進数)は、DMAライトパケットであることを示している。
 パケット検出部720は、PCIeスイッチ550に入力したDMAパケットが、DMAライトパケットでないと判断すると、ステップS1001を再度実行する(ステップS1001 NO)。
Type = 00000 (binary number) indicates a DMA write packet.
If the packet detection unit 720 determines that the DMA packet input to the PCIe switch 550 is not a DMA write packet, the packet detection unit 720 executes step S1001 again (NO in step S1001).
 ステップS1002において、パケット検出部720は、ライトポインタ730が指すアドレスとリードポインタ740が指すアドレスとの差が、FIFOのサイズにダーティ・ページ情報のサイズを除した値に等しいか否かにより、FIFOがFullか否かを判別する。 In step S1002, the packet detection unit 720 determines whether the difference between the address pointed to by the write pointer 730 and the address pointed to by the read pointer 740 is equal to a value obtained by dividing the size of the FIFO by the size of the dirty page information. Is determined to be Full.
 ライトポインタ730が指すアドレスとリードポインタ740が指すアドレスとの差が0の場合、パケット検出部720は、FIFOがFullと判断する(ステップS1002 YES)。この場合、パケット検出部720は、処理をステップS1003に移行する。 When the difference between the address pointed to by the write pointer 730 and the address pointed to by the read pointer 740 is 0, the packet detection unit 720 determines that the FIFO is full (YES in step S1002). In this case, the packet detection unit 720 moves the process to step S1003.
 ステップS1003において、パケット検出部720は、ステータスレジスタ711のオーバーフロー情報ビットに「1」を設定すると、処理をステップS1008に移行する。そして、ダーティ・ページ管理ユニット551は、ダーティ・ページ情報の登録処理を終了する。 In step S1003, when the packet detection unit 720 sets “1” in the overflow information bit of the status register 711, the process proceeds to step S1008. Then, the dirty page management unit 551 ends the dirty page information registration process.
 ステップS1002において、ライトポインタ730が指すアドレスとリードポインタ740が指すアドレスとの差がFIFOのサイズにダーティ・ページ情報のサイズを除した値に等しくない場合、パケット検出部720は、FIFOがFullでないと判断する(ステップS1002 NO)。この場合、パケット検出部720は、処理をステップS1004に移行する。 In step S1002, when the difference between the address pointed to by the write pointer 730 and the address pointed to by the read pointer 740 is not equal to the value obtained by dividing the size of the dirty page information by the size of the FIFO, the packet detection unit 720 indicates that the FIFO is not Full. (Step S1002 NO). In this case, the packet detection unit 720 moves the process to step S1004.
 ステップS1004において、パケット検出部720は、DMAライトパケットのヘッダからソースIDとゲスト物理アドレスを取得する。
 ステップS1005において、パケット検出部720は、ライトポインタ730が示すFIFOのアドレスに、ステップS1004で取得したソースIDとゲスト物理アドレスからなるデータをダーティ・ページ情報として登録する。
In step S1004, the packet detection unit 720 acquires a source ID and a guest physical address from the header of the DMA write packet.
In step S1005, the packet detection unit 720 registers data including the source ID and guest physical address acquired in step S1004 as dirty page information in the FIFO address indicated by the write pointer 730.
 ステップS1006において、パケット検出部720は、ダーティ・ページ情報を格納する領域サイズだけ、ライトポインタ730に格納されているアドレスをインクリメントする。 In step S1006, the packet detection unit 720 increments the address stored in the write pointer 730 by the area size for storing the dirty page information.
 ステップS1007において、パケット検出部720は、制御I/F部710に備わるコントロールレジスタ713を参照する。そして、コントロールレジスタ713のストップビットに「1」が設定されている場合(ステップS1007 YES)、パケット検出部720は、処理をステップS1008に移行する。そしてダーティ・ページ管理ユニット551は、ダーティ・ページ情報の登録処理を終了する。 In step S1007, the packet detection unit 720 refers to the control register 713 provided in the control I / F unit 710. If “1” is set in the stop bit of the control register 713 (YES in step S1007), the packet detection unit 720 moves the process to step S1008. Then, the dirty page management unit 551 ends the dirty page information registration process.
 ステップS1007において、コントロールレジスタ713のストップビットが「1」でない場合、パケット検出部720は、処理をステップS1001に移行する(ステップS1007 NO)。 In step S1007, when the stop bit of the control register 713 is not “1”, the packet detection unit 720 moves the process to step S1001 (NO in step S1007).
 図11は、ダーティ・ページ管理ユニット551によるダーティ・ページ情報の出力処理を示すフローチャートである。なお、図11中に記載のFIFOは、FIFO#0または#1のうち、コントロールレジスタ713のリードセレクトビットに設定されたFIFOのことを示す。 FIG. 11 is a flowchart showing a process for outputting dirty page information by the dirty page management unit 551. Note that the FIFO described in FIG. 11 indicates the FIFO set in the read select bit of the control register 713 in the FIFO # 0 or # 1.
 ステップS1101において、VMM102などのソフトウェアが、ダーティ・ページ管理ユニット551に備わるデータレジスタ712からダーティ・ページ情報を読み出すと、制御I/F部710は、処理をステップS1102に移行する。 In step S1101, when software such as the VMM 102 reads dirty page information from the data register 712 included in the dirty page management unit 551, the control I / F unit 710 shifts the processing to step S1102.
 ステップS1102において、制御I/F部710は、ダーティ・ページ情報を格納する領域サイズだけ、リードポインタ740に格納されているアドレスをインクリメントする。 In step S1102, the control I / F unit 710 increments the address stored in the read pointer 740 by the area size for storing dirty page information.
 ステップS1103において、制御I/F部710は、リードポインタ740が示すFIFOのアドレスからダーティ・ページ情報を取得し、データレジスタ712にラッチする。 In step S1103, the control I / F unit 710 acquires dirty page information from the FIFO address indicated by the read pointer 740 and latches it in the data register 712.
 以上の処理が終了すると、制御I/F部710は、処理をステップS1104に移行する。そして、制御I/F部710は、ダーティ・ページ情報の出力処理を終了する。
(本実施例に係るライブ・マイグレーション)
 図12は、本実施例に係るライブ・マイグレーションの概要を説明する図である。
When the above process ends, the control I / F unit 710 shifts the process to step S1104. Then, the control I / F unit 710 ends the dirty page information output process.
(Live migration according to this example)
FIG. 12 is a diagram for explaining the outline of live migration according to the present embodiment.
 図12に示す情報処理システム1200は、サーバ#0と、サーバ#0とネットワークを介して互いに通信可能に接続するサーバ#1と、サーバ#0とサーバ#1とが共有するストレージ#0および#1と、を備える。 The information processing system 1200 illustrated in FIG. 12 includes a server # 0, a server # 1 that is communicably connected to the server # 0 via a network, and storages # 0 and # that are shared by the server # 0 and the server # 1. 1.
 サーバ#0は、図5に示した情報処理装置500である。また、サーバ#0は、図5に示した情報処理装置501である。
 サーバ#0ではVMM#0が動作する。VMM#0は、VM#0およびVM#1を実現する。一方、サーバ#1ではVMM#1が動作する。また、VM#0はストレージ#0を専有し、VM#1はストレージ#1を専有する。
Server # 0 is the information processing apparatus 500 shown in FIG. The server # 0 is the information processing apparatus 501 shown in FIG.
On the server # 0, the VMM # 0 operates. VMM # 0 implements VM # 0 and VM # 1. On the other hand, VMM # 1 operates on the server # 1. Also, VM # 0 occupies storage # 0, and VM # 1 occupies storage # 1.
 以上の状態において、サーバ#0で動作するVMM#0が実現するVM#0を、サーバ#1で動作するVMM#1上に移動するライブ・マイグレーションを行なう場合について以下に説明する。 A case will be described below in which live migration is performed in which VM # 0 realized by VMM # 0 operating on server # 0 is moved to VMM # 1 operating on server # 1 in the above state.
 図13は、本実施例に係るライブ・マイグレーションの概要を示すフローチャートである。
 ステップS1301において、VMM#0は、VM#0の移動先であるVMM#1に対して、新たなVMに割り当てるメモリ領域の確保を要求する。以下、VMに割り当てるメモリ領域を「VM領域」という。
FIG. 13 is a flowchart illustrating an outline of live migration according to the present embodiment.
In step S1301, the VMM # 0 requests the VMM # 1 that is the migration destination of the VM # 0 to secure a memory area to be allocated to the new VM. Hereinafter, the memory area allocated to the VM is referred to as “VM area”.
 一方、VMM#1からVM領域確保の要求を受けると、VMM#1は、サーバ#1に備わるメモリの所定の領域にVM領域を確保する。そして、サーバ#1は、サーバ#0に対してVM領域の確保が完了したことを通知する。 On the other hand, when a VM area securing request is received from VMM # 1, VMM # 1 secures a VM area in a predetermined area of the memory provided in server # 1. Then, the server # 1 notifies the server # 0 that the reservation of the VM area has been completed.
 サーバ#1からVM領域の確保が完了した旨の通知を受けると、サーバ#0は、処理をステップS1302に移行する。
 ステップS1302において、VMM#0は、ある時点において、移動の対象であるVM#0に割り当てられているホスト物理メモリの領域に格納されているデータを取得する。この、ある時点(チェックポイント時点)においてVMに割り当てられているホスト物理メモリの領域に格納されているデータを「スナップショット」という。
Upon receiving a notification from the server # 1 that the reservation of the VM area has been completed, the server # 0 moves the process to step S1302.
In step S1302, the VMM # 0 obtains data stored in the area of the host physical memory allocated to the migration target VM # 0 at a certain point in time. This data stored in the area of the host physical memory allocated to the VM at a certain point (check point) is called “snapshot”.
 ステップS1303において、VMM#0は、ダーティ・ページ管理ユニット551のコントロールレジスタ713のスタートビットを「1」に設定し、ダーティ・ページ情報の記録を開始する。 In step S1303, the VMM # 0 sets the start bit of the control register 713 of the dirty page management unit 551 to “1”, and starts recording dirty page information.
 ステップS1304において、VMM#0は、ステップS1302で取得したスナップショットを、VM#0の移動先のサーバ#1に備わるメモリの所定の領域であって、ステップS1301で確保したVM領域に、メモリ・コピーする。 In step S1304, the VMM # 0 stores the snapshot acquired in step S1302 in a predetermined area of the memory provided in the migration destination server # 1 of the VM # 0, and stores the snapshot in the VM area secured in step S1301. make a copy.
 ステップS1305において、VMM#0は、ダーティ・ページ管理ユニット551から制御I/F部710のステータスレジスタ711の有効データカウントを介して、残りのダーティ・ページ情報数を取得する。そして、VMM#0は、残りのダーティ・ページ情報数とあらかじめ決められた閾値とを比較する。 In step S1305, the VMM # 0 acquires the remaining number of dirty page information from the dirty page management unit 551 through the valid data count of the status register 711 of the control I / F unit 710. Then, VMM # 0 compares the number of remaining dirty page information with a predetermined threshold value.
 残りのダーティ・ページ情報数が閾値より大きい場合(ステップS1305 YES)、VMM#0は、処理をステップS1306に移行する。また、残りのダーティ・ページ情報数が閾値以下の場合(ステップS1305 NO)、VMM#0は、処理をステップS1307に移行する。 If the number of remaining dirty page information is greater than the threshold (YES in step S1305), the VMM # 0 proceeds to step S1306. If the number of remaining dirty page information is less than or equal to the threshold (NO in step S1305), the VMM # 0 moves the process to step S1307.
 ステップS1306において、VMM#0は、ダーティ・ページ管理ユニット551から制御I/F部710のデータレジスタ712を介して、ダーティ・ページ記憶部552に現在までに登録されている全てのダーティ・ページ情報を取得する。 In step S1306, the VMM # 0 receives all the dirty page information registered in the dirty page storage unit 552 from the dirty page management unit 551 through the data register 712 of the control I / F unit 710 to date. To get.
 そして、VMM#0は、取得したダーティ・ページ情報のゲスト物理アドレスをホスト物理アドレスに変換する。
 すると、VMM#0は、サーバ#0に備わるメモリから、変換したホスト物理アドレスに格納されているデータを取得する。そして、VMM#0は、取得したデータを、VM#0の移動先のサーバ#1に備わるメモリの領域であって、ステップS1301で確保したVM領域に、メモリ・コピーする。
Then, the VMM # 0 converts the guest physical address of the acquired dirty page information into a host physical address.
Then, the VMM # 0 acquires data stored in the converted host physical address from the memory provided in the server # 0. The VMM # 0 then copies the acquired data to the VM area secured in step S1301, which is the memory area of the migration destination server # 1 of the VM # 0.
 メモリ・コピーを実行すると、VMM#0は、処理をステップS1305に移行する。
 以上に説明したステップS1302~S1306の処理が「プレ・コピー」である。プレ・コピーは、VM#0が業務を継続中に行なわれる。したがって、プレ・コピー中もVMM#0は、IOMMU531を介して、ストレージ#0に対するリード/ライト処理を行なう。そのため、以下のストップ・アンド・コピーが必要となる。
When the memory copy is executed, the VMM # 0 moves the process to step S1305.
The processing in steps S1302 to S1306 described above is “pre-copy”. The pre-copy is performed while VM # 0 continues the business. Therefore, VMM # 0 performs read / write processing for storage # 0 via IOMMU 531 even during pre-copy. Therefore, the following stop and copy is required.
 ステップS1307において、VMM#0は、VM#0の業務を停止する。
 ステップS1308において、VMM#0は、ステップS1306と同様の処理を実行する。
In step S1307, the VMM # 0 stops the operation of the VM # 0.
In step S1308, the VMM # 0 executes the same process as in step S1306.
 以上に説明したステップS1307~S1308の処理が「ストップ・アンド・コピー」である。
 ステップS1309において、VMM#0は、VM#0の移動先のサーバ#1で動作しているVMM#1に、メモリ・コピーの完了を通知する。
The processing in steps S1307 to S1308 described above is “stop and copy”.
In step S1309, the VMM # 0 notifies the VMM # 1 operating on the migration destination server # 1 of the VM # 0 that the memory copy has been completed.
 ステップS1310において、VMM#0からメモリ・コピーの完了通知を受けると、VMM#1は、VMM#1上でVM#0の業務を開始させる。VMM#1上でVM#0が業務を再開すると、VMM#1は、処理をステップS1311に移行する。そして、VMM#0および#1は、ライブ・マイグレーションを終了する。 In step S1310, upon receiving a memory copy completion notification from the VMM # 0, the VMM # 1 starts the VM # 0 operation on the VMM # 1. When VM # 0 resumes the business on VMM # 1, VMM # 1 moves the process to step S1311. Then, the VMMs # 0 and # 1 end the live migration.
 図14は、プレ・コピーの具体的な処理を示すフローチャートである。
 ステップS1401において、VMM#0は、制御I/F部710に備わるコントロールレジスタ713のクリアビットに「1」を設定することにより、FIFO#0および#1を初期化する。
FIG. 14 is a flowchart showing specific pre-copy processing.
In step S1401, the VMM # 0 initializes the FIFOs # 0 and # 1 by setting “1” to the clear bit of the control register 713 provided in the control I / F unit 710.
 また、VMM#0は、コントロールレジスタ713のライトセレクトビットを「0」に設定することにより、ダーティ・ページ情報を記録するFIFOをFIFO#0に設定する。同様に、VMM#0は、コントロールレジスタ713のリードセレクトビットを「0」に設定することにより、ダーティ・ページ情報を読み出すFIFOをFIFO#0に設定する。 Also, the VMM # 0 sets the FIFO for recording dirty page information to FIFO # 0 by setting the write select bit of the control register 713 to “0”. Similarly, the VMM # 0 sets the FIFO for reading dirty page information to FIFO # 0 by setting the read select bit of the control register 713 to “0”.
 ステップS1402において、VMM#0は、ダーティ・ページ管理ユニット551に備わるコントロールレジスタ713のスタートビットを「1」に設定することにより、ダーティ・ページ情報の記録を開始する。 In step S1402, the VMM # 0 starts recording dirty page information by setting the start bit of the control register 713 included in the dirty page management unit 551 to “1”.
 ステップS1403において、VMM#0は、メモリ・コピーを実行する。このステップS1403では、図13に示したステップS1302~S1304で説明したメモリ・コピー処理が行なわれる。 In step S1403, the VMM # 0 executes memory copy. In step S1403, the memory copy process described in steps S1302 to S1304 shown in FIG. 13 is performed.
 ステップS1404において、VMM#0は、一定時間ウェイト状態に移行する。一定時間経過すると、VMM#0は、処理をステップS1405に移行する。
 ステップS1405において、VMM#0は、制御I/F部710に備わるコントロールレジスタ713のライトセレクトビットに「0」または「1」を設定することにより、ダーティ・ページ情報を記録するFIFOを変更する。
In step S1404, the VMM # 0 shifts to a wait state for a certain time. When the predetermined time has elapsed, the VMM # 0 moves the process to step S1405.
In step S1405, the VMM # 0 sets “0” or “1” in the write select bit of the control register 713 provided in the control I / F unit 710 to change the FIFO for recording dirty page information.
 例えば、現在選択中のFIFOがFIFO#0の場合、VMM#0は、コントロールレジスタ713のライトセレクトビットに「1」を設定することにより、ダーティ・ページ情報を記録するFIFOをFIFO#1に変更する。 For example, if the currently selected FIFO is FIFO # 0, VMM # 0 changes the FIFO for recording dirty page information to FIFO # 1 by setting the write select bit of the control register 713 to “1”. To do.
 同様に、現在選択中のFIFOがFIFO#1の場合、VMM#0は、コントロールレジスタ713のライトセレクトビットに「0」を設定することにより、ダーティ・ページ情報を記録するFIFOをFIFO#0に変更する。 Similarly, if the currently selected FIFO is FIFO # 1, VMM # 0 sets the write select bit of the control register 713 to “0” to change the FIFO for recording dirty page information to FIFO # 0. change.
 ステップS1406において、VMM#0は、制御I/F部710に備わるステータスレジスタ711を読み出す。
 ステップS1407において、VMM#0は、現在選択中のFIFOのオーバーフロー情報ビットが「1」に設定されているか否かを判別する。
In step S1406, the VMM # 0 reads the status register 711 provided in the control I / F unit 710.
In step S1407, the VMM # 0 determines whether or not the overflow information bit of the currently selected FIFO is set to “1”.
 現在選択中のFIFOのオーバーフロー情報ビットが「1」に設定されている場合(ステップS1407 YES)、VMM#0は、処理をステップS1408に移行する。この場合、VMM#0は、実行中のライブ・マイグレーションを中断、または最初からやり直す。 If the overflow information bit of the currently selected FIFO is set to “1” (step S1407: YES), the VMM # 0 moves the process to step S1408. In this case, the VMM # 0 interrupts the live migration being executed or starts over from the beginning.
 ステップS1407において、現在選択中のFIFOのオーバーフロー情報ビットが「0」に設定されている場合(ステップS1407 NO)、VMM#0は、処理をステップS1409に移行する。 In step S1407, if the overflow information bit of the currently selected FIFO is set to “0” (NO in step S1407), VMM # 0 proceeds to step S1409.
 ステップS1409において、VMM#0は、ステータスレジスタ711の有効データカウントに設定されている数だけデータレジスタ712を読み出し、ダーティ・ページ情報を取得する。 In step S1409, the VMM # 0 reads the data register 712 by the number set in the valid data count of the status register 711, and acquires dirty page information.
 ステップS1410において、VMM#0は、ステップS1409で読み出したダーティ・ページ情報のうち、ソースIDがストレージ#0を示すダーティ・ページ情報のみを抽出する。 In step S1410, the VMM # 0 extracts only the dirty page information whose source ID indicates the storage # 0 from the dirty page information read in step S1409.
 ステップS1410または後述するS1507の処理で抽出するダーティ・ページ情報を「コピー対象ダーティ・ページ情報」という。
 ステップS1411において、VMM#0は、コピー対象ダーティ・ページ情報のゲスト物理アドレスを、ページテーブル630にしたがって、ホスト物理アドレスに変換する。
The dirty page information extracted in step S1410 or the processing of S1507 described later is referred to as “copyable dirty page information”.
In step S1411, the VMM # 0 converts the guest physical address of the copy target dirty page information into a host physical address according to the page table 630.
 ステップS1412において、VMM#0は、コピー対象ダーティ・ページ情報のホスト物理アドレスに格納されているデータを、サーバ#0に備わるメモリ520から取得する。そして、VMM#0は、取得したデータを、VM#0の移動先であるVMM#1に転送する。 In step S1412, the VMM # 0 acquires the data stored in the host physical address of the copy target dirty page information from the memory 520 provided in the server # 0. Then, the VMM # 0 transfers the acquired data to the VMM # 1 that is the migration destination of the VM # 0.
 一方、VMM#1は、VMM#0からデータを受信すると、受信したデータを図13に示したステップS1301の処理で確保したVM領域に格納する。
 ステップS1413において、VMM#0は、制御I/F部710に備わるコントロールレジスタ713のリードセレクトビットに「0」または「1」を設定することにより、ダーティ・ページ情報を読み出すFIFOを変更する。
On the other hand, when the VMM # 1 receives data from the VMM # 0, the VMM # 1 stores the received data in the VM area secured by the process of step S1301 shown in FIG.
In step S1413, the VMM # 0 changes the FIFO for reading dirty page information by setting “0” or “1” to the read select bit of the control register 713 provided in the control I / F unit 710.
 例えば、現在選択中のFIFOがFIFO#0の場合、VMM#0は、コントロールレジスタ713のリードセレクトビットに「1」を設定することにより、ダーティ・ページ情報を読み出すFIFOをFIFO#1に変更する。 For example, if the currently selected FIFO is FIFO # 0, VMM # 0 sets the read select bit of the control register 713 to “1” to change the FIFO for reading dirty page information to FIFO # 1. .
 同様に、現在選択中のFIFOがFIFO#1の場合、VMM#0は、コントロールレジスタ713のリードセレクトビットに「0」を設定することにより、ダーティ・ページ情報を読み出すFIFOをFIFO#0に変更する。 Similarly, when the currently selected FIFO is FIFO # 1, VMM # 0 changes the FIFO for reading dirty page information to FIFO # 0 by setting the read select bit of the control register 713 to “0”. To do.
 ステップS1414において、VMM#0は、プレ・コピーの完了条件を満たしているか否かを判別する。このステップS1414の処理では、図13に示したステップS1305の処理が行なわれる。 In step S1414, the VMM # 0 determines whether or not the pre-copy completion condition is satisfied. In the process of step S1414, the process of step S1305 shown in FIG. 13 is performed.
 プレ・コピーの完了条件が満たされていると判断した場合(ステップS1414 YES)、VMM#0は、処理をステップS1415に移行する。この場合、VMM#0は、プレ・コピーを終了する。 If it is determined that the pre-copy completion condition is satisfied (YES in step S1414), the VMM # 0 proceeds to step S1415. In this case, the VMM # 0 ends the pre-copy.
 また、プレ・コピーの完了条件を満たされていないと判断した場合(ステップS1414 NO)、VMM#0は、処理をステップS1404に移行する。
 図15は、ストップ・アンド・コピーの具体的な処理を示すフローチャートである。
If it is determined that the pre-copy completion condition is not satisfied (NO in step S1414), the VMM # 0 proceeds to step S1404.
FIG. 15 is a flowchart showing specific processing of stop-and-copy.
 図14に示したプレ・コピーが完了すると、VMM#0は、ストップ・アンド・コピー処理を開始する。VMM#0は、VM#0の業務を停止すると、処理をステップS1501に移行する(ステップS1500)。 When the pre-copy shown in FIG. 14 is completed, VMM # 0 starts the stop-and-copy process. When the VMM # 0 stops the operation of the VM # 0, the process proceeds to step S1501 (step S1500).
 ステップS1501において、VMM#0は、一定時間ウェイト状態に移行する。DMAライト処理が完全に停止するまでの待つためである。一定時間経過すると、VMM#0は、処理をステップS1502に移行する。 In step S1501, VMM # 0 shifts to a wait state for a certain time. This is to wait until the DMA write process is completely stopped. When the predetermined time has elapsed, the VMM # 0 moves the process to step S1502.
 ステップS1502において、VMM#0は、制御I/F部710に備わるコントロールレジスタ713のライトセレクトビットに「0」または「1」を設定することにより、ダーティ・ページ情報を記録するFIFOを変更する。 In step S1502, the VMM # 0 changes the FIFO for recording dirty page information by setting “0” or “1” to the write select bit of the control register 713 provided in the control I / F unit 710.
 例えば、現在選択中のFIFOがFIFO#0の場合、VMM#0は、コントロールレジスタ713のライトセレクトビットに「1」を設定することにより、ダーティ・ページ情報を記録するFIFOをFIFO#1に変更する。 For example, if the currently selected FIFO is FIFO # 0, VMM # 0 changes the FIFO for recording dirty page information to FIFO # 1 by setting the write select bit of the control register 713 to “1”. To do.
 同様に、現在選択中のFIFOがFIFO#1の場合、VMM#0は、コントロールレジスタ713のライトセレクトビットに「0」を設定することにより、ダーティ・ページ情報を記録するFIFOをFIFO#0に変更する。 Similarly, if the currently selected FIFO is FIFO # 1, VMM # 0 sets the write select bit of the control register 713 to “0” to change the FIFO for recording dirty page information to FIFO # 0. change.
 ステップS1503において、VMM#0は、制御I/F部710に備わるステータスレジスタ711を読み出す。そして、VMM#0は、現在選択中のFIFOのオーバーフロー情報ビットが「1」に設定されているか否かを判別する。 In step S1503, the VMM # 0 reads the status register 711 provided in the control I / F unit 710. Then, the VMM # 0 determines whether or not the overflow information bit of the currently selected FIFO is set to “1”.
 ステップS1504において、VMM#0は、現在選択中のFIFOのオーバーフロー情報ビットが「1」に設定されている場合(ステップS1504 YES)、VMM#0は、処理をステップS1505に移行する。この場合、VMM#0は、ライブ・マイグレーションを中断、または最初からやり直す。 In step S1504, if the overflow information bit of the currently selected FIFO is set to “1” (YES in step S1504), VMM # 0 proceeds to step S1505. In this case, the VMM # 0 interrupts the live migration or starts over from the beginning.
 ステップS1504において、現在選択中のFIFOのオーバーフロー情報ビットが「0」に設定されている場合(ステップS1504 NO)、VMM#0は、処理をステップS1506に移行する。 In step S1504, if the overflow information bit of the currently selected FIFO is set to “0” (NO in step S1504), the VMM # 0 moves the process to step S1506.
 ステップS1506において、VMM#0は、ステータスレジスタ711の有効データカウントに設定されている数だけデータレジスタ712を読み出し、ダーティ・ページ情報を取得する。 In step S1506, the VMM # 0 reads the data register 712 by the number set in the valid data count of the status register 711, and acquires dirty page information.
 ステップS1507において、VMM#0は、ステップS1506で読み出したダーティ・ページ情報のうち、ダーティ・ページ情報のソースIDがストレージ#0を示すコピー対象ダーティ・ページ情報を抽出する。 In step S1507, the VMM # 0 extracts from the dirty page information read in step S1506, the copy target dirty page information in which the source ID of the dirty page information indicates the storage # 0.
 ステップS1508において、VMM#0は、コピー対象ダーティ・ページ情報のゲスト物理アドレスを、ページテーブル630にしたがって、ホスト物理アドレスに変換する。 In step S1508, the VMM # 0 converts the guest physical address of the copy target dirty page information into a host physical address according to the page table 630.
 ステップS1509において、VMM#0は、制御I/F部710に備わるステータスレジスタ711の有効データカウントビットから、FIFOにデータページ情報があるか否かを判別する。 In step S1509, the VMM # 0 determines whether there is data page information in the FIFO from the valid data count bit of the status register 711 provided in the control I / F unit 710.
 ステータスレジスタ711の有効データカウントが「0」の場合(ステップS1509 YES)、VMM#0は、FIFOがemptyと判断し、処理をステップS1510に移行する。 If the valid data count in the status register 711 is “0” (YES in step S1509), the VMM # 0 determines that the FIFO is empty, and the process proceeds to step S1510.
 ステップS1510において、VMM#0は、コピー対象ダーティ・ページ情報のホスト物理アドレスに格納されているデータを、サーバ#0に備わるメモリ520から取得する。そして、VMM#0は、取得したデータを、VM#0の移動先であるVMM#1に転送する。 In step S1510, the VMM # 0 acquires the data stored in the host physical address of the copy target dirty page information from the memory 520 provided in the server # 0. Then, the VMM # 0 transfers the acquired data to the VMM # 1 that is the migration destination of the VM # 0.
 一方、VMM#1は、VMM#0からデータを受信すると、受信したデータを図13に示したステップS1301の処理で確保したVM領域に格納する。
 VMM#1へのデータ転送が完了すると、VMM#0は、処理をステップS1511に移行する。そして、VMM#0は、ストップ・アンド・コピーを終了する(ステップS1511)。
On the other hand, when the VMM # 1 receives data from the VMM # 0, the VMM # 1 stores the received data in the VM area secured by the process of step S1301 shown in FIG.
When the data transfer to the VMM # 1 is completed, the VMM # 0 moves the process to step S1511. Then, the VMM # 0 ends the stop and copy (step S1511).
 一方、ステップS1509において、ステータスレジスタ711の有効データカウントが「0」でない場合(ステップS1509 NO)、VMM#0は、FIFOがemptyでないと判断し、処理をステップS1512に移行する。 On the other hand, if the valid data count of the status register 711 is not “0” in step S1509 (NO in step S1509), the VMM # 0 determines that the FIFO is not empty, and the process proceeds to step S1512.
 ステップS1512において、VMM#0は、制御I/F部710に備わるコントロールレジスタ713のリードセレクトビットに「0」または「1」を設定することにより、ダーティ・ページ情報を読み出すFIFOを変更する。 In step S1512, the VMM # 0 changes the FIFO for reading dirty page information by setting “0” or “1” to the read select bit of the control register 713 provided in the control I / F unit 710.
 例えば、現在選択中のFIFOがFIFO#0の場合、VMM#0は、コントロールレジスタ713のリードセレクトビットに「1」を設定することにより、ダーティ・ページ情報を読み出すFIFOをFIFO#1に変更する。 For example, if the currently selected FIFO is FIFO # 0, VMM # 0 sets the read select bit of the control register 713 to “1” to change the FIFO for reading dirty page information to FIFO # 1. .
 同様に、現在選択中のFIFOがFIFO#1の場合、VMM#0は、コントロールレジスタ713のリードセレクトビットに「0」を設定することにより、ダーティ・ページ情報を読み出すFIFOをFIFO#0に変更する。 Similarly, when the currently selected FIFO is FIFO # 1, VMM # 0 changes the FIFO for reading dirty page information to FIFO # 0 by setting the read select bit of the control register 713 to “0”. To do.
 ダーティ・ページ情報を読み出すFIFOを変更すると、VMM#0は、処理をステップS1501に移行する。
 以上に説明したように、ダーティ・ページ管理ユニット551は、IOアダプタ540、541および542からメモリ520に転送されるDMAパケットがPCIeスイッチ550を通過すると、そのDMAパケットをパケット検出部720によって検出する。
When the FIFO that reads the dirty page information is changed, the VMM # 0 moves the process to step S1501.
As described above, when the DMA packet transferred from the IO adapters 540, 541, and 542 to the memory 520 passes through the PCIe switch 550, the dirty page management unit 551 detects the DMA packet by the packet detection unit 720. .
 そして、検出したDMAパケットがDMAライトパケットである場合、ダーティ・ページ管理ユニット551は、DMAパケットのヘッダからゲスト物理メモリとソースIDを取得し、ダーティ・ページ情報としてFIFO#0または#1に登録する。 If the detected DMA packet is a DMA write packet, the dirty page management unit 551 acquires the guest physical memory and the source ID from the header of the DMA packet and registers them in the FIFO # 0 or # 1 as dirty page information. To do.
 また、ダーティ・ページ管理ユニット551は、CPU510または511、すなわちCPU510または511が実現するVMMとの制御I/F部710を備え、VMMからの要求に応じてFIFO#0または#1に登録されているダーティ・ページ情報を出力する。 The dirty page management unit 551 includes a CPU 510 or 511, that is, a control I / F unit 710 with the VMM realized by the CPU 510 or 511, and is registered in the FIFO # 0 or # 1 in response to a request from the VMM. Output dirty page information.
 その結果、情報処理装置500で動作しているVMMは、ダーティ・ページ情報から、IOMMU531を利用したDMAライトによって追加、変更または更新等されたメモリ520上のデータを取得することが可能となる。 As a result, the VMM operating in the information processing apparatus 500 can acquire data on the memory 520 added, changed, or updated by the DMA write using the IOMMU 531 from the dirty page information.
 以上のように、DMAライトによって追加、変更または更新等されたメモリ520上のデータを取得することが可能となったことにより、図13~図15に示したプレ・コピーおよびストップ・アンド・コピーが可能となる。その結果、IOMMUを使用する場合であってもライブ・マイグレーションを実行することが可能となる。 As described above, since the data on the memory 520 added, changed, or updated by the DMA write can be acquired, the pre-copy and stop-and-copy shown in FIGS. Is possible. As a result, live migration can be performed even when IOMMU is used.
 また、情報処理装置500は、ダーティ・ページ記憶部552として、FIFO#0および#1の2つのFIFOを備える。そして、一方のFIFOが書込み対象の場合、他方のFIFOを読み出し対象とすることにより、1つのFIFOに対して読み込み処理と書込み処理が競合することを回避することが可能となる。その結果、FIFOへのダーティ・ページ情報の登録処理と、FIFOからのダーティ・ページ情報の読み出し処理と、を効率的に行なうことができる。 In addition, the information processing apparatus 500 includes two FIFOs, FIFO # 0 and # 1, as the dirty page storage unit 552. When one of the FIFOs is a write target, it is possible to avoid contention between the read process and the write process for one FIFO by making the other FIFO a read target. As a result, the dirty page information registration process to the FIFO and the dirty page information read process from the FIFO can be performed efficiently.

Claims (12)

  1.  ハードウェア資源を管理することにより、1または2以上の仮想機械を実現する仮想機械実現手段と、
     前記仮想機械に割り当てられる第1のメモリ領域のアドレスと、前記第1のメモリ領域の実メモリである第2のメモリ領域のアドレスと、を相互に変換することにより、外部装置とのデータの入出力を制御する入出力装置から前記仮想機械に割り当てられる前記第1のメモリ領域に直接データ転送を行なうデータ転送手段と、
     前記入出力装置から前記仮想機械に割り当てられる前記第1のメモリ領域に直接データ転送されるデータを検出する転送データ検出手段と、
     前記転送データ検出手段により検出したデータにより変更される前記第1のメモリ領域に関する更新情報を生成し、前記更新情報を更新情報記憶手段に記憶する更新情報登録手段と、
     前記更新情報記憶手段に記憶される更新情報を出力する更新情報出力手段と、
     を備えることを特徴とする情報処理装置。
    Virtual machine implementation means for managing one or more virtual machines by managing hardware resources;
    By mutually converting the address of the first memory area allocated to the virtual machine and the address of the second memory area that is the real memory of the first memory area, data input to the external device is performed. Data transfer means for directly transferring data from the input / output device for controlling output to the first memory area allocated to the virtual machine;
    Transfer data detection means for detecting data directly transferred from the input / output device to the first memory area allocated to the virtual machine;
    Update information registration means for generating update information related to the first memory area changed by the data detected by the transfer data detection means, and storing the update information in an update information storage means;
    Update information output means for outputting update information stored in the update information storage means;
    An information processing apparatus comprising:
  2.  前記転送データ検出手段が検出するデータは、前記仮想機械からの指示により、前記入出力装置から前記仮想機械に割り当てられる前記第1のメモリ領域に直接データ転送され、前記第1のメモリ領域に書き込まれるデータである、
     ことを特徴とする請求項1に記載の情報処理装置。
    The data detected by the transfer data detecting means is directly transferred from the input / output device to the first memory area allocated to the virtual machine and written to the first memory area in accordance with an instruction from the virtual machine. Data
    The information processing apparatus according to claim 1.
  3.  前記更新情報は、前記データを転送した前記入出力装置を識別する識別情報と、前記データの転送先である前記第1のメモリ領域のアドレスと、を含む情報である、
     ことを特徴とする請求項1に記載の情報処理装置。
    The update information is information including identification information for identifying the input / output device that has transferred the data, and an address of the first memory area that is a transfer destination of the data.
    The information processing apparatus according to claim 1.
  4.  前記更新情報記憶手段は、第1の記憶手段と第2の記憶手段と、を備え、
     互いに独立して更新情報の記憶または読み出しが可能である、
     ことを特徴とする請求項1に記載の情報処理装置。
    The update information storage means includes a first storage means and a second storage means,
    Update information can be stored or read out independently of each other.
    The information processing apparatus according to claim 1.
  5.  ハードウェア資源を管理することにより、1または2以上の仮想機械を実現するステップと、
     前記仮想機械に割り当てられる第1のメモリ領域のアドレスと、前記第1のメモリ領域の実メモリである第2のメモリ領域のアドレスと、を相互に変換することにより、外部装置とのデータの入出力を制御する入出力装置から前記仮想機械に割り当てられる前記第1のメモリ領域に直接データ転送を行なうステップと、
     前記入出力装置から前記仮想機械に割り当てられる前記第1のメモリ領域に直接データ転送されるデータを検出するステップと、
     検出したデータにより変更される前記第1のメモリ領域に関する更新情報を生成し、前記更新情報を更新情報記憶手段に記憶するステップと、
     前記更新情報記憶手段に記憶される更新情報を出力するステップと、
     を備えることを特徴とする情報処理装置の仮想化方法。
    Implementing one or more virtual machines by managing hardware resources;
    By mutually converting the address of the first memory area allocated to the virtual machine and the address of the second memory area that is the real memory of the first memory area, data input to the external device is performed. Direct data transfer from an input / output device controlling output to the first memory area assigned to the virtual machine;
    Detecting data transferred directly from the input / output device to the first memory area allocated to the virtual machine;
    Generating update information related to the first memory area changed by the detected data, and storing the update information in an update information storage means;
    Outputting update information stored in the update information storage means;
    An information processing apparatus virtualization method comprising:
  6.  ハードウェア資源を管理することにより、1または2以上の仮想機械を実現する仮想機械実現手段と、
     前記仮想機械に割り当てられる第1のメモリ領域のアドレスと、前記第1のメモリ領域の実メモリである第2のメモリ領域のアドレスと、を相互に変換することにより、外部装置とのデータの入出力を制御する入出力装置から前記仮想機械に割り当てられる前記第1のメモリ領域に直接データ転送を行なうデータ転送手段と、
     移動対象の前記仮想機械に割り当てられる第1のメモリ領域に格納されるデータを取得して移動先に転送するメモリ領域転送手段と、
     前記入出力装置から前記仮想機械に割り当てられる前記第1のメモリ領域に直接データ転送されるデータを検出する転送データ検出手段と、
     前記転送データ検出手段により検出したデータにより変更される前記第1のメモリ領域に関する更新情報を生成し、前記更新情報を更新情報記憶手段に記憶する更新情報登録手段と、
     前記更新情報記憶手段から更新情報を取得する更新情報取得手段と、
     前記更新情報取得手段により取得した更新情報に基づいて、移動対象の前記仮想機械に割り当てられる第1のメモリ領域において前記転送データ検出手段により検出したデータにより変更された更新データを、前記移動先に転送する更新データ転送手段と、
     を備えることを特徴とする情報処理装置。
    Virtual machine implementation means for managing one or more virtual machines by managing hardware resources;
    By mutually converting the address of the first memory area allocated to the virtual machine and the address of the second memory area that is the real memory of the first memory area, data input to the external device is performed. Data transfer means for directly transferring data from the input / output device for controlling output to the first memory area allocated to the virtual machine;
    Memory area transfer means for acquiring data stored in a first memory area allocated to the virtual machine to be moved and transferring the data to a destination;
    Transfer data detection means for detecting data directly transferred from the input / output device to the first memory area allocated to the virtual machine;
    Update information registration means for generating update information related to the first memory area changed by the data detected by the transfer data detection means, and storing the update information in an update information storage means;
    Update information acquisition means for acquiring update information from the update information storage means;
    Based on the update information acquired by the update information acquisition unit, update data changed by the data detected by the transfer data detection unit in the first memory area allocated to the virtual machine to be moved is transferred to the destination. Update data transfer means for transferring;
    An information processing apparatus comprising:
  7.  前記転送データ検出手段が検出するデータは、前記仮想機械からの指示により、前記入出力装置から前記仮想機械に割り当てられる前記第1のメモリ領域に直接データ転送され、前記第1のメモリ領域に書き込まれるデータである、
     ことを特徴とする請求項6に記載の情報処理装置。
    The data detected by the transfer data detecting means is directly transferred from the input / output device to the first memory area allocated to the virtual machine and written to the first memory area in accordance with an instruction from the virtual machine. Data
    The information processing apparatus according to claim 6.
  8.  前記更新情報は、前記データを転送した前記入出力装置を識別する識別情報と、前記データの転送先である前記第1のメモリ領域のアドレスと、を含む情報である、
     ことを特徴とする請求項6に記載の情報処理装置。
    The update information is information including identification information for identifying the input / output device that has transferred the data, and an address of the first memory area that is a transfer destination of the data.
    The information processing apparatus according to claim 6.
  9.  前記更新情報記憶手段は、第1の記憶手段と第2の記憶手段と、を備え、
     互いに独立して更新情報の記憶または読み出しが可能である、
     ことを特徴とする請求項6に記載の情報処理装置。
    The update information storage means includes a first storage means and a second storage means,
    Update information can be stored or read out independently of each other.
    The information processing apparatus according to claim 6.
  10.  前記更新データ転送手段は、
      前記更新情報記憶手段に記憶される更新情報の数が一定値以下になるまで、前記更新データを前記移動先に転送する第1の更新データ転送手段と、
      前記移動対象の前記仮想機械の動作を停止した後に、前記更新データを前記移動先に転送する第2の更新データ転送手段と、
     を備える、
     ことを特徴とする請求項6に記載の情報処理装置。
    The update data transfer means includes
    First update data transfer means for transferring the update data to the destination until the number of update information stored in the update information storage means becomes a predetermined value or less;
    Second update data transfer means for transferring the update data to the destination after stopping the operation of the virtual machine to be moved;
    Comprising
    The information processing apparatus according to claim 6.
  11.  第1の情報処理装置により実現する仮想機械を、前記第1の情報処理装置と通信可能に接続する第2の情報処理装置に移動させるマイグレーション方法において、
     ハードウェア資源を管理することにより、1または2以上の前記仮想機械を実現するステップと、
     前記仮想機械に割り当てられる第1のメモリ領域のアドレスと、前記第1のメモリ領域の実メモリである第2のメモリ領域のアドレスと、を相互に変換することにより、外部装置とのデータの入出力を制御する入出力装置から前記仮想機械に割り当てられる前記第1のメモリ領域に直接データ転送を行なうステップと、
     移動対象の前記仮想機械に割り当てられる第1のメモリ領域に格納されるデータを取得して前記第2の情報処理装置に転送するステップと、
     前記入出力装置から前記仮想機械に割り当てられる前記第1のメモリ領域に直接データ転送されるデータを検出するステップと、
     検出したデータにより変更される前記第1のメモリ領域に関する更新情報を生成し、前記更新情報を更新情報記憶手段に記憶するステップと、
     前記更新情報記憶手段から更新情報を取得するステップと、
     前記更新情報に基づいて、移動対象の前記仮想機械に割り当てられる第1のメモリ領域において前記検出したデータにより変更された更新データを、前記第2の情報処理装置に転送するステップと、
     を備えることを特徴とするマイグレーション方法。
    In a migration method for moving a virtual machine realized by a first information processing apparatus to a second information processing apparatus that is communicably connected to the first information processing apparatus,
    Implementing one or more virtual machines by managing hardware resources;
    By mutually converting the address of the first memory area allocated to the virtual machine and the address of the second memory area that is the real memory of the first memory area, data input to the external device is performed. Direct data transfer from an input / output device controlling output to the first memory area assigned to the virtual machine;
    Acquiring data stored in a first memory area allocated to the virtual machine to be moved and transferring the data to the second information processing apparatus;
    Detecting data transferred directly from the input / output device to the first memory area allocated to the virtual machine;
    Generating update information related to the first memory area changed by the detected data, and storing the update information in an update information storage means;
    Obtaining update information from the update information storage means;
    Transferring update data changed by the detected data in the first memory area allocated to the virtual machine to be moved to the second information processing device based on the update information;
    A migration method comprising:
  12.  演算処理装置を有する第1の情報処理装置により実現する仮想機械を、前記第1の情報処理装置と通信可能に接続する第2の情報処理装置に移動させるマイグレーション用プログラムにおいて、
     ハードウェア資源を管理することにより、1または2以上の仮想機械を実現する仮想機械実現処理と、
     前記仮想機械に割り当てられる第1のメモリ領域のアドレスと、前記第1のメモリ領域の実メモリである第2のメモリ領域のアドレスと、を相互に変換することにより、外部装置とのデータの入出力を制御する入出力装置から前記仮想機械に割り当てられる前記第1のメモリ領域に直接データ転送を行なうデータ転送処理と、
     移動対象の前記仮想機械に割り当てられる第1のメモリ領域に格納されるデータを取得して前記第1の情報処理装置に転送するメモリ領域転送処理と、
     前記入出力装置から前記仮想機械に割り当てられる前記第1のメモリ領域に直接データ転送されるデータを検出する転送データ検出処理と、
     前記転送データ検出処理により検出したデータにより変更される前記第1のメモリ領域に関する更新情報を生成し、前記更新情報を更新情報記憶手段に記憶する更新情報登録処理と、
     前記更新情報記憶手段から更新情報を取得する更新情報取得処理と、
     前記更新情報取得処理により取得した更新情報に基づいて、移動対象の前記仮想機械に割り当てられる第1のメモリ領域において前記転送データ検出処理により検出したデータにより変更された更新データを、前記第1の情報処理装置に転送する更新データ転送処理と、
     を前記演算処理装置に実行させることを特徴とするプログラム。
    In a migration program for moving a virtual machine realized by a first information processing apparatus having an arithmetic processing apparatus to a second information processing apparatus that is communicably connected to the first information processing apparatus,
    Virtual machine realization processing for realizing one or more virtual machines by managing hardware resources;
    By mutually converting the address of the first memory area allocated to the virtual machine and the address of the second memory area that is the real memory of the first memory area, data input to the external device is performed. A data transfer process for directly transferring data from the input / output device for controlling output to the first memory area allocated to the virtual machine;
    Memory area transfer processing for acquiring data stored in a first memory area allocated to the virtual machine to be moved and transferring the data to the first information processing apparatus;
    A transfer data detection process for detecting data directly transferred from the input / output device to the first memory area allocated to the virtual machine;
    An update information registration process for generating update information related to the first memory area to be changed by the data detected by the transfer data detection process, and storing the update information in an update information storage unit;
    Update information acquisition processing for acquiring update information from the update information storage means;
    Based on the update information acquired by the update information acquisition process, the update data changed by the data detected by the transfer data detection process in the first memory area allocated to the virtual machine to be moved is the first data Update data transfer processing to be transferred to the information processing device;
    Is executed by the arithmetic processing unit.
PCT/JP2009/001464 2009-03-30 2009-03-30 Information processor WO2010116402A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/JP2009/001464 WO2010116402A1 (en) 2009-03-30 2009-03-30 Information processor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2009/001464 WO2010116402A1 (en) 2009-03-30 2009-03-30 Information processor

Publications (1)

Publication Number Publication Date
WO2010116402A1 true WO2010116402A1 (en) 2010-10-14

Family

ID=42935717

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2009/001464 WO2010116402A1 (en) 2009-03-30 2009-03-30 Information processor

Country Status (1)

Country Link
WO (1) WO2010116402A1 (en)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011221945A (en) * 2010-04-14 2011-11-04 Hitachi Ltd Data transfer device, computer system and memory copy device
WO2012063334A1 (en) * 2010-11-10 2012-05-18 株式会社日立製作所 Memory control device and i/o switch for assisting live migration of virtual machine
JP2012128807A (en) * 2010-12-17 2012-07-05 Fujitsu Ltd Information processing apparatus
JP2012221063A (en) * 2011-04-05 2012-11-12 Nippon Telegr & Teleph Corp <Ntt> Virtual machine synchronization method and system, and virtual machine and program of active system
JP2014191752A (en) * 2013-03-28 2014-10-06 Fujitsu Ltd Migration processing program, migration method, and cloud system
US8966480B2 (en) 2011-03-31 2015-02-24 Fujitsu Limited System for migrating a virtual machine between computers
JP2018500646A (en) * 2014-11-12 2018-01-11 インテル コーポレイション Live migration of virtual machines from / to host computer using graphics virtualization
CN110931072A (en) * 2019-11-28 2020-03-27 深信服科技股份有限公司 Bad track scanning method, device, equipment and storage medium

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002518734A (en) * 1998-06-15 2002-06-25 サン・マイクロシステムズ・インコーポレーテッド Tracking memory page changes in bridges for multiprocessor systems
JP2008269600A (en) * 2007-04-16 2008-11-06 Internatl Business Mach Corp <Ibm> Method, device and program for controlling migration of logical partition
JP2009217608A (en) * 2008-03-11 2009-09-24 Hitachi Ltd Virtual computer system and control method therefor

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002518734A (en) * 1998-06-15 2002-06-25 サン・マイクロシステムズ・インコーポレーテッド Tracking memory page changes in bridges for multiprocessor systems
JP2008269600A (en) * 2007-04-16 2008-11-06 Internatl Business Mach Corp <Ibm> Method, device and program for controlling migration of logical partition
JP2009217608A (en) * 2008-03-11 2009-09-24 Hitachi Ltd Virtual computer system and control method therefor

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011221945A (en) * 2010-04-14 2011-11-04 Hitachi Ltd Data transfer device, computer system and memory copy device
WO2012063334A1 (en) * 2010-11-10 2012-05-18 株式会社日立製作所 Memory control device and i/o switch for assisting live migration of virtual machine
JPWO2012063334A1 (en) * 2010-11-10 2014-05-12 株式会社日立製作所 Memory control device and I / O switch for supporting live migration of virtual machine
JP2012128807A (en) * 2010-12-17 2012-07-05 Fujitsu Ltd Information processing apparatus
US8924624B2 (en) 2010-12-17 2014-12-30 Fujitsu Limited Information processing device
US8966480B2 (en) 2011-03-31 2015-02-24 Fujitsu Limited System for migrating a virtual machine between computers
JP2012221063A (en) * 2011-04-05 2012-11-12 Nippon Telegr & Teleph Corp <Ntt> Virtual machine synchronization method and system, and virtual machine and program of active system
JP2014191752A (en) * 2013-03-28 2014-10-06 Fujitsu Ltd Migration processing program, migration method, and cloud system
JP2018500646A (en) * 2014-11-12 2018-01-11 インテル コーポレイション Live migration of virtual machines from / to host computer using graphics virtualization
CN110931072A (en) * 2019-11-28 2020-03-27 深信服科技股份有限公司 Bad track scanning method, device, equipment and storage medium
CN110931072B (en) * 2019-11-28 2022-03-22 深信服科技股份有限公司 Bad track scanning method, device, equipment and storage medium

Similar Documents

Publication Publication Date Title
WO2010116402A1 (en) Information processor
US8924624B2 (en) Information processing device
JP5619173B2 (en) Symmetric live migration of virtual machines
RU2532708C2 (en) Method and apparatus for input/output operation in virtualisation environment
AU2012265964B2 (en) Configure storage class memory command
CA2819161C (en) Data returned responsive to executing a start subchannel instruction
US9367459B2 (en) Scheduling method and multi-core processor system
WO2021000689A1 (en) Virtual machine migration method and apparatus
DK2601586T3 (en) USING INDIRECT DATA ADDRESS FOR EXTENDED ASYNCHRONOUS DATA MOVER
EP2718807B1 (en) Chaining move specification blocks
EP2601580B1 (en) Deconfigure storage class memory command
WO2012168098A1 (en) Store storage class memory information command
EP2808786B1 (en) Method of controlling computer system and computer system
US10152275B1 (en) Reverse order submission for pointer rings
EP4170492A1 (en) System and interrupt processing method
US10649686B2 (en) Memory cache pressure reduction for pointer rings
JP2008021252A (en) Computer system and address allocating method
US10795708B1 (en) Transparent disk caching for virtual machines and applications
US10545697B1 (en) Reverse order request queueing by para-virtual device drivers
WO2016059692A1 (en) Computer and i/o processing control method
US20120066676A1 (en) Disabling circuitry from initiating modification, at least in part, of state-associated information
US11237836B2 (en) Reverse order queue updates by virtual devices
Lee VAR: Vulkan API Remoting for GPU-accelerated Rendering and Computation in Virtual Machines
Kim et al. Barrier enabled QEMU

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 09842914

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 09842914

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP