WO2012063334A1 - 仮想マシンのライブマイグレーションを支援するためのメモリ制御装置及びi/oスイッチ - Google Patents

仮想マシンのライブマイグレーションを支援するためのメモリ制御装置及びi/oスイッチ Download PDF

Info

Publication number
WO2012063334A1
WO2012063334A1 PCT/JP2010/070021 JP2010070021W WO2012063334A1 WO 2012063334 A1 WO2012063334 A1 WO 2012063334A1 JP 2010070021 W JP2010070021 W JP 2010070021W WO 2012063334 A1 WO2012063334 A1 WO 2012063334A1
Authority
WO
WIPO (PCT)
Prior art keywords
memory
page
dirty
transfer
computer
Prior art date
Application number
PCT/JP2010/070021
Other languages
English (en)
French (fr)
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/JP2010/070021 priority Critical patent/WO2012063334A1/ja
Priority to JP2012542756A priority patent/JPWO2012063334A1/ja
Publication of WO2012063334A1 publication Critical patent/WO2012063334A1/ja

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]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3471Address tracing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • G06F9/5088Techniques for rebalancing the load in a distributed system involving task migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2023Failover techniques
    • G06F11/203Failover techniques using migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/885Monitoring specific for caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/508Monitor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/151Emulated environment, e.g. virtual machine

Definitions

  • the present invention relates to a technique called live migration in which a guest OS operating on a hypervisor of a physical machine is moved onto a hypervisor of another physical machine.
  • hypervisor software called a hypervisor that can make one computer look like a plurality of computers is widely used.
  • Using a hypervisor makes it possible to consolidate multiple servers on one server.
  • a computer on which a hypervisor is operating is called a physical machine.
  • a computer software-generated by the hypervisor is called a virtual machine.
  • a virtual machine is treated the same as a physical machine from the operating system, device driver, and application that operate on it.
  • An operating system operating on a virtual machine is particularly called a guest OS.
  • the background of the spread of the use of the hypervisor is that the processing capacity per server has dramatically increased due to the improvement of the processing capacity of the CPU, the multi-core implementation, and the increase of the memory capacity.
  • a technology for moving a guest OS operating on a server hypervisor to another server hypervisor is called migration.
  • migration moves the guest OS, aggregates it on the hypervisor of one physical machine, and stops the operation other than that physical machine, thereby reducing the power consumption of the entire system. It is possible to
  • migration which moves the guest OS between the servers by stopping the operation of the guest OS
  • migration which moves the guest OS between the servers while the guest OS is operating.
  • live migration the technique of moving between hypervisors while the latter guest OS is operating.
  • live migration With the increase in the use of hypervisors, the use of a technology called live migration is also increasing. For example, with live migration, when stopping one physical machine for maintenance, it does not stop the operation of the guest OS running on the physical machine hypervisor, but on another physical machine hypervisor. Can be moved to Therefore, since the service on the guest OS can be continued without stopping its operation, the availability of the entire system is improved as compared with the case where migration is performed by stopping the guest OS.
  • live migration in order to move a virtual machine from one hypervisor to another while the virtual machine is operating, it is also necessary to move the contents of the memory storing information when the guest OS is operating.
  • FIG. 6 shows a state before live migration.
  • the hypervisor 101 operates on the server 100 and the hypervisor 111 operates on the server 110.
  • the guest OS 102 is operating on the hypervisor 101.
  • the hypervisor and the guest OS each allocate a memory area on the memory mounted on the server.
  • the memory area 105 is allocated to the hypervisor 101
  • the memory area 106 is allocated to the guest OS 102 on the memory 104.
  • a memory area 115 is allocated on the memory 114.
  • the server 100 and the server 110 are connected to the same network 120, and can exchange data by communication.
  • the hypervisor 101 At the start of live migration, the hypervisor 101 first communicates with the hypervisor 111, and the hypervisor 111 secures the memory area 116. Next, the hypervisor 101 transfers the contents of the memory area 106 to the hypervisor 111, and the hypervisor 111 writes the contents in the memory area 116. In this way, the guest OS 102 moves from the server 100 to the server 110, and the state shown in FIG. 7 is reached, and the live migration process is completed. The problems and solutions that occur during this memory transfer will be described next.
  • FIG. 8 shows the case where the writing is performed while the hypervisor 101 is transferring the contents of the memory area 106 to the memory area 116.
  • the hypervisor 101 has transferred the memory area 106 to the memory area 200, and the contents of the memory area 200 are copied to the memory area 210 which is a part of the memory area 116.
  • the contents of the memory area 202 are rewritten by the operation of the guest OS, the contents of the memory area 200 and the contents of the memory area 210 are inconsistent.
  • FIG. 9 shows an operation when the contents of the memory area 106 are transferred from the server 100 to the server 110.
  • the hypervisor 101 on the transfer source server 100 starts monitoring the memory writing.
  • memory transfer called pre-copy is performed. In this pre-copy, the entire memory area 106 is transferred.
  • the guest OS 102 is temporarily stopped by the hypervisor 101.
  • an operation called stop-and-copy is performed to transfer a page that has been written during pre-copy and is dirty to the transfer destination server 110.
  • stop-and-copy the guest OS is not running, and no new dirty page is generated.
  • the hypervisor 111 resumes the operation of the guest OS 102.
  • the time during which the stop-and-copy operation is performed needs to be shortened as much as possible since the operation of the guest OS has to be stopped.
  • Writing to the memory area is classified into writing from the CPU by the operation of the guest OS and writing from I / O such as a network or fiber channel.
  • Non-Patent Document 1 As a method of monitoring writing from the CPU and Non-Patent Document 2 as an example of supporting hardware. Also, as a method of monitoring writing from I / O, Patent Document 1 and Non-Patent Document 3 have been proposed. Live migration is possible by these methods.
  • the hypervisor can recognize all memory writes from the I / O. Therefore, memory writes from I / O during pre-copy can be monitored as software by the hypervisor.
  • Patent Document 1 and Non-Patent Document 3 propose a method of monitoring writing from I / O.
  • the method of storing a list of pages that have been written from I / O is used, and it is necessary to use resources proportional to the number of writes to determine dirty pages in stop-and-copy operation. I have a problem.
  • a list of structures such as a linked list 500 of dirty page numbers can be considered.
  • a memory write occurs, one entry is created in the linked list 500, and the number of the page that has become dirty due to the write is stored. For example, in the state shown in FIG. 10, it is stored that the page of page number 5 is dirty at the top entry 501. Similarly, entry 508 indicates that the page with page number 11 is dirty.
  • a new entry 509 is created, and the dirty page is stored.
  • Patent Document 1 and Non-patent Document 3 in order to monitor writing from I / O, it is necessary to create a linked list of pages to which writing has been made. As described above, the method of storing the write monitoring information in the linked list is not efficient because the size of the list is proportional to the number of writes. In addition, when creating a list on hardware, there is a concern that live migration may fail when the storage capacity of the list is insufficient.
  • the size of the list is increased, and unnecessary migration for writing before the last write And the guest OS's downtime will be longer.
  • the writing frequency increases, the number of dirty pages generated during pre-copy increases, so the time of the stop-and-copy operation also increases, and the stop time of the guest OS also increases accordingly.
  • the stop time of the guest OS is determined by the speed of the stop-and-copy operation, so the stop time is shortened. In order to do this, it is necessary to further speed up the process of transferring dirty pages. That is, when the number of new writings generated during the pre-copy operation for all pages increases, it takes time to copy data even if the stop-and-copy operation is performed after that, the stop time of the guest OS becomes long.
  • An object of the present invention is to provide a memory control device and method capable of shortening the stop time of a guest OS even when the frequency of new writing during operation of the guest OS is high.
  • the switch is connected between the CPU and the I / O as a means for the problem that the writing from the I / O, which is the first problem, can not be monitored efficiently.
  • the memory monitoring mechanism monitors the memory write from the I / O to the CPU, determines which page is dirty from the address of the memory write, and updates the dirty bit arrangement.
  • the dirty bit array stores dirty / non-dirty for each page, and can be accessed as a continuous area from the hypervisor.
  • pre-copying is performed again for newly generated memory writing during the pre-copying, and newly occurring during the pre-copying again.
  • the operation such as pre-copying for the memory writing is repeated until the predetermined condition is satisfied, thereby reducing the new memory writing and stopping the operation of the guest OS.
  • Data copy time in the and-copy operation can be shortened.
  • predetermined conditions for example, the time during which the operation of the guest OS can be stopped, the amount of copy data allowable in the stop-and-copy operation, the number of times of pre-copying again, etc. can be mentioned.
  • a memory duplication mechanism for duplicating the contents of memory to the original is prepared in the switch.
  • the memory duplication mechanism has a function of referring to the dirty bit array and duplicating the contents of the memory from the server of the transfer source to the server of the transfer destination only for pages that are dirty.
  • a function to write the dirty bit array from the hypervisor, and a function to return the result referred to at the time of referring to the dirty bit to the referrer as well as non-dirty are added.
  • FIG. 8 is a diagram showing that a page is dirty due to a memory write and a corresponding bit of the dirty bit arrangement is dirty according to the first embodiment.
  • FIG. 7 is a diagram showing an I / O switch that performs memory replication efficiently using memory write monitoring information.
  • Example 2 it is a figure showing the flow of live migration operation.
  • FIG. 16 is a diagram illustrating an operation in a procedure 602 in the second embodiment. It is a figure which shows the state of the system before performing live migration. It is a figure which shows the state of the system after performing live migration.
  • FIG. 5 illustrates a linked list structure for storing dirty pages. It is a figure which shows the operation
  • the hardware required for implementation is minimized, with the first goal of efficiently monitoring writes from I / O and the second goal of efficiently using monitored results for memory transfer. It was realized to be.
  • PCI Express and the MR-IOV standard which is an extension of the PCI Express standard, are used as an example of the protocol used for connection between the CPU and the I / O.
  • the protocol is not limited to the PCI Express standard to realize the present invention, PCI Express is a standard that occupies the majority of the protocol for connecting the CPU and I / O at present, so this is the embodiment.
  • a method for efficiently monitoring the writing from the I / O of the first problem is described as a first embodiment.
  • FIG. 1 is a diagram in which a server 100 is connected to an I / O 301 and an I / O 302 via an I / O switch 300 to which the present invention is applied.
  • the guest OS 102 uses the memory area 106 as the main storage, and the memory writing is performed to the memory area 106 from the I / O 301 and the I / O 302.
  • the I / O switch 300 has a memory write monitoring unit 310 and a memory write storage unit 320 in addition to the functions of the Switch defined by the PCI Express standard.
  • the memory write monitoring unit 310 includes an address comparator 311, an upper address 312, and a lower address 312.
  • the memory write storage unit 320 has a dirty bit array 321.
  • the memory write monitoring unit 310 has a function of determining which page has become dirty based on the addresses of memory writes from the I / O 301 and I / O 302.
  • the memory write storage unit 320 has a function of storing whether each page of the memory area 106 to be transferred is a dirty page. If each bit of the dirty bit array 321 is 0, it indicates that the page is not written, and if it is 1, it indicates that the page is dirty as a result of the writing. When the writing is performed again to the page, the bit corresponding to the page remains at 1.
  • an address range of monitoring of the memory 104 is set.
  • the hypervisor 101 sets the maximum value of the address of the memory area 106 to the upper address 312 and the minimum value of the address of the memory area 106 to the lower address 313. Based on the difference between the upper address 312 and the lower address 313 and the size of one page, a dirty bit array 321 having the required number of bits is generated. Then, enable memory write monitoring and start pre-copy.
  • the I / O switch 300 When memory write is performed from the I / O 301 and I / O 302 during pre-copy, the I / O switch 300 not only transfers the memory write to the memory area 106 as an operation of the memory write but also the address comparator 311. Transfer the memory write address to If the address of the memory write is within the range of the upper address 312 and the lower address 313, the address comparator 311 considers it as a memory write to the memory area 106.
  • FIG. 2 shows a case where the memory area 106 is divided into eight pages and monitored.
  • a memory write 330 is performed from the I / O 301 to the page 331, and the page 331 becomes dirty.
  • the I / O switch 300 writes 1 to the dirty bit 332 corresponding to the page 331 which is the write destination.
  • the operation of the guest OS is temporarily stopped, and a stop-and-coopy operation of transferring a page that is dirty is started.
  • a page that has become dirty due to writing from the CPU 103 and a page that has become dirty due to writing from the I / O 301 and I / O 302 are transferred. Thereby, transfer of the memory contents of the guest OS 102 necessary for live migration can be completed.
  • the size required for the dirty bit array can be calculated by the formula: (size of memory area) / (size of one page) ⁇ 1 bit. For example, assuming that the size of the memory area allocated to the guest OS is 2TByte and the size of one page is 2MByte, the size of the dirty bit is 1Mbit. This size is proportional to the maximum size of the memory area allocated to the guest OS that performs live migration, but not proportional to the number of memory writes performed during the pre-copy operation.
  • the second embodiment shows a method for shortening the stop-and-copy operation, which is mentioned as means for solving the second problem.
  • FIG. 3 shows a system configuration for implementing the present embodiment.
  • An I / O switch 400 is provided between two servers 100 and 110 each realized by a computer having a CPU and a memory, and an I / O (device, device) 301.
  • hypervisors 101 and 111 for operating a virtual machine are operating, and in the hypervisor 101, a guest OS 102, which is an operating system operating on the virtual machine, is operating.
  • the contents of the memory area 106 in the hypervisor 101 accessed by the guest OS 102 are migrated to the memory area 116 of the hypervisor 111 while operating the guest OS 102 in order to move the guest OS 102 and operate the hypervisor 111.
  • the memory areas 106 and 116 are each composed of a plurality of pages having the same size.
  • a memory write storage unit including an address comparator 311 that determines the address of a memory to be migrated, and a dirty bit array 411 that manages the presence or absence of writing to a page of the memory to be migrated And a memory copy unit 420 that copies data between the hypervisor 101 and the hypervisor 111 based on the dirty bit array 411.
  • FIG. 3 is a view showing an I / O switch 400 having a mechanism for transferring only a page which is dirty and in which the dirty bit array 411 storing the result of monitoring the memory writing cooperates with the memory copy unit 420.
  • the I / O switch 400 has a memory duplication unit 420 in addition to the I / O switch 300 of the first embodiment.
  • the memory writing storage unit 410 has a function of communicating with the reading unit 421 of the memory duplication mechanism, and a function of reading and writing the dirty bit array 411 from the hypervisor 101 and the hypervisor 111.
  • the dirty bit is referred to from the hypervisor 101 or the memory copying unit 420, the content of the corresponding dirty bit is read out, and the value is returned to the reading unit 421 in the dirty bit array 411.
  • a function to set bit to 0 has been added.
  • the memory duplication mechanism 420 reads the dirty bit array 411 and transfers the corresponding page from the server 100 to the server 110 only when the bit corresponding to a certain page is 1, ie, the page is dirty. Have.
  • FIG. 4 shows the flow of the operation based on FIG.
  • the hypervisor 101 initializes the transfer.
  • the upper limit of the address in the memory area 106 is written to the upper address 312 and the lower limit is written to the lower address 313 to set the monitoring area.
  • the memory copy unit 420 is notified of the upper address and the lower address of the memory area 116 of the memory 114 of the hypervisor 111 which is the data transfer destination.
  • each bit of the dirty bit array 411 is set to 1. This is because the pages requiring transfer in the pre-copy operation are the entire memory area 106, which is equivalent to all pages being dirty requiring transfer.
  • step 601 the hypervisor 101 causes the memory write monitoring unit 310 to start monitoring at the same time as the start of the pre-copy operation (see FIG. 9).
  • the page written by writing to the memory from the I / O 301 during the subsequent pre-copy operation becomes a dirty page, and the corresponding bit of the dirty bit array 411 becomes 1.
  • monitoring of writing from the CPU 103 to the memory area 106 is also started as in Non-Patent Document 1 and Non-Patent Document 2.
  • the hypervisor 101 instructs the memory copy unit 420 to transfer the memory area 106.
  • the memory duplication unit 420 is notified of the address or the corresponding bit.
  • the instructed memory copy unit 420 automatically copies the contents of the memory area 106 to the memory area 116.
  • FIG. 5 shows the operation of copying one page by the memory copying unit 420.
  • dirty bit 432 of dirty bit array 411 is 1, and if it is 1, copy bit of page is started after dirty bit 432 is 0, and if there is a write between the data, the data in the page And set the dirty bit 432 to 1.
  • the reading unit 421 reads the dirty bit 432 of the dirty bit array 411. At the same time, the read dirty bit 432 becomes 0 (reset). The state of the dirty bit 432 does not change while performing an operation to make it 0 after reading. If the result of reading from the bits of the dirty bit array 411 is dirty, it is known that the corresponding page 431 is the target of transfer. This means that the page to be transferred 431 becomes a page to be transferred in the future from a dirty page that needs to be transferred after being written during the pre-copy operation, and after being transferred, it will be page 431 and page 441 It means that the content is consistent and not dirty.
  • the reading unit 421 reads the content of the page 431.
  • the read content is written to the page 441 by the writing unit 422.
  • the guest OS 102 is operating, monitoring of memory writing from the I / O 301 is being performed, and the page to which memory writing from the I / O 301 is performed is dirty It becomes.
  • step 602 When transfer of all pages is completed, the process transitions from step 602 to step 603.
  • the memory copying unit 420 notifies the hypervisor 101 of the end of data transfer of all pages by the pre-copy operation.
  • step 604 it is checked whether there is a new dirty page that has occurred during transfer of data of all pages by the pre-copy operation, and it is determined whether live migration is to be ended. If there is no write from the CPU 103 or no write from the I / O 301 during the pre-copy operation in step 602 and step 603, the process transitions to step 605 if there is no dirty page. If there is a dirty page, the process transitions to step 606.
  • procedure 605 the contents of the memory area 106 and the contents of the memory area 116 match, and the operation of the guest OS 102 can be resumed.
  • the hypervisor 101 notifies the hypervisor 111 of the end of the memory transfer, and the hypervisor 111 resumes the operation of the guest OS 102. This completes the live migration process.
  • step 606 the hypervisor 101 determines whether the number of dirty pages due to new writing during the pre-copy operation is sufficiently small (is less than a predetermined number of pages).
  • the time required for transfer is determined by (number of pages that are dirty) x (transfer time per page), and if this time is acceptable as the guest OS stop time, the number of dirty pages will be sufficiently small. . If the number of dirty pages is sufficiently small, the process transitions to step 607. Otherwise, the process transitions to step 608 to transfer dirty pages while the guest OS is operating.
  • step 607 the hypervisor 101 stops the guest OS 102. This makes it possible to perform a stop-and-copy operation. That is, the CPU 103 and the I / O 301 no longer write to the memory area 106, and the live migration transfer process is completed in the next transfer. After stopping the guest OS 102, the process transitions to step 608.
  • step 608 settings are made to retransfer pages that have become dirty during transfer of the memory area 106.
  • the hypervisor 101 writes 1 in the dirty bit corresponding to the page which is dirty due to the writing from the CPU 103.
  • both the page that has become dirty due to the writing from the CPU 103 in step 602 and the step 603 that will be performed next and the page that becomes dirty due to the writing from the I / O 301 are transferred.
  • 1 is written to the dirty bit corresponding to the page that is dirty due to the memory write.
  • the copy time per page is T / N. (N / T is copy transfer rate)
  • n 1 / T n 2 / t 1 holds.
  • n 1 / N is the rate of occurrence of new writing for all data, and n 1 / N ⁇ 1. That is, when the pre-copy operation is repeated, the amount of data (the number of pages) of a new write decreases exponentially, and the time to copy the new write also decreases exponentially. Therefore, if the stop-and-copy operation is performed after the pre-copy operation is repeated to reduce the amount of data for new writing, the operation stop time of the guest OS 102 can be shortened. Even when the frequency of occurrence of new writing is high, the operation stop time of the guest OS 102 can be shortened by repeating the pre-copy operation a sufficient number of times.
  • Ttotal T + (n 1 / N) m + 1 ) / (1- (n 1 / N)
  • a condition for switching from the pre-copy operation to the stop-and-copy operation a preset time required for copying, new writing to be transferred in the stop-and-copy operation Either the amount of data or the number of pre-copy operations up to that point can be used. Further, when estimating the value of the condition, the above calculation result can be used.
  • the stop-and-copy operation is performed after reducing the number of pages that have become dirty, so the operation stop time of the guest OS is reduced. it can.
  • the guest OS is moved between hypervisors while operating the guest OS.
  • the present invention can also be applied to a case where a normal program is moved between computers while operating the program.
  • Memory 115 Installed in Server 110 Area 114 Allocated to Hypervisor 111 in Memory 114 Area Allocated to Guest OS 102 in Memory 114 Network 200 Performs Communication Between Server 100 and Server 101 Among Memory Areas 106 Memory area 201 whose duplication is completed in the memory area 116 Memory area 202 whose duplication is not completed in the memory area 116 among the memory areas 106 Of the memory area 200
  • the memory duplication unit 421 reads the dirty bit array 411, reads only the dirty page from the memory area 106.
  • the read unit 422 The write unit 431 that writes to the memory area 116
  • the page 432 that is dirty on the memory area 106
  • the dirty bit that corresponds to the page 431 441 A linked list for storing page 500 dirty page numbers whose contents are copied from page 431 on memory area 116.

Abstract

 ハイパーバイザ上のゲストOSが透過的にI/Oを利用する構成において、ライブマイグレーション時にI/Oからのメモリ書き込みを効率的に監視できず、また監視した結果をライブマイグレーションでのメモリ転送に効率的に反映できない。ゲストOSのメモリ領域を一定サイズのページごとに分割し、CPUとI/Oの間に接続されたI/Oスイッチで、分割されたページ単位でメモリへの書き込みを監視する。また、ライブマイグレーションにおけるメモリ転送は、メモリへの書き込みを監視しているI/Oスイッチ経由で行う。I/Oスイッチは転送が必要なdirtyページを識別しているため、dirtyページだけを効率的に転送できる。

Description

仮想マシンのライブマイグレーションを支援するためのメモリ制御装置及びI/Oスイッチ
 本発明は、ある物理マシンのハイパーバイザ上で動作しているゲストOSを、別の物理マシンのハイパーバイザ上に移動させる、ライブマイグレーションと呼ばれる技術に関するものである。
 近年、ハイパーバイザと呼ばれる、1台のコンピュータを複数のコンピュータに見せかけることが出来るソフトウェアが広く利用されている。ハイパーバイザを用いると1台のサーバに複数のサーバを集約することが可能となる。一般にハイパーバイザが動作しているコンピュータを物理マシンと呼ぶ。そしてハイパーバイザによってソフトウェア的に生成されたコンピュータを仮想マシンと呼ぶ。仮想マシンは、その上で動作するオペレーティングシステムやデバイスドライバ、アプリケーションからは、物理マシンと同様に扱われる。仮想マシン上で動作するオペレーティングシステムを特にゲストOSと呼ぶ。
 ハイパーバイザの利用が広がった背景には、CPUの処理能力の向上やマルチコア化、メモリ容量の増加などによりサーバ1台あたりの処理能力が飛躍的に上昇したことが挙げられる。従来は複数台のサーバが必要とされていたシステムを、ハイパーバイザを用いて1台のサーバに集約することで、サーバのハードウェア費用や電気代といったコストを削減できるというメリットがある。
 あるサーバのハイパーバイザ上で動作するゲストOSを、別のサーバのハイパーバイザ上に移動する技術のことをマイグレーションと呼ぶ。例として、複数の物理マシン上でハイパーバイザが動いており、各ハイパーバイザ上でゲストOSが動いているシステムを考える。システム全体での負荷が小さいときに、マイグレーションによりゲストOSを移動させ、一台の物理マシンのハイパーバイザ上に集約し、その物理マシン以外の動作を停止させることで、システム全体の消費電力を削減することが可能となる。
 マイグレーションには二つの種類がある。一つはゲストOSの動作を停止させてサーバ間でゲストOSの移動を行うマイグレーションであり、もう一つはゲストOSが稼動したままサーバ間でゲストOSの移動を行うマイグレーションである。特に後者のゲストOSが動作したままハイパーバイザ間で移動させる技術のことを、ライブマイグレーションと呼ぶ。ハイパーバイザの利用の増加に伴い、ライブマイグレーションと呼ばれる技術の利用も増加している。例えば、ライブマイグレーションを用いると、ある物理マシンを保守するために停止させるときに、その物理マシンのハイパーバイザ上で動作しているゲストOSの動作を止めずに、別の物理マシンのハイパーバイザ上に移動させることが出来る。そのためゲストOS上のサービスがその動作を停止させずに継続することが出来るため、ゲストOSを停止させてマイグレーションを行う場合と比べて、システム全体として可用性が向上する。
 ライブマイグレーションでは仮想マシンの動作中に、あるハイパーバイザから別のハイパーバイザに仮想マシンを移動させるため、ゲストOSの稼動時の情報を格納しているメモリの内容も移動させる必要がある。
馬場 貴成,對馬 雄次,上原 敬太郎,特開2010-39685 複合型計算機及び複合型計算機の制御方法,2010
C. Clark,et al.,Live Migration of Virtual Machines,Proceedings of the 2nd USENIX Symposium on Networked Systems Design and Implementation,2005. Intel(R) 64 and IA-32 Architectures Software Developer’s Manual Volume 3B: System Programming Guide,Part 2,Chapter 25,Section 2,2010 佐藤 充,三吉 貴史,岩松 昇,矢崎 昌朋,堀江 健志,情報処理学会報告Vol.2010-ARC-190 No.19,直接I/O環境下の仮想マシン移動を実現するPCI Expressスイッチ,2010
 ライブマイグレーションの動作を示すために、図6、図7を用いる。まず図6はライブマイグレーション前の状態を示している。図6では、サーバ100とサーバ110の2台のサーバがあり、サーバ100の上でハイパーバイザ101が、サーバ110の上でハイパーバイザ111が動作している。そしてハイパーバイザ101上で、ゲストOS102が動作している。ハイパーバイザ、ゲストOSは、それぞれサーバに搭載されているメモリ上にメモリ領域を割り当てられる。図6の状態ではハイパーバイザ101にはメモリ領域105が、ゲストOS102にはメモリ領域106が、メモリ104上に割り当てられている。同様にハイパーバイザ111には、メモリ114上にメモリ領域115が割り当てられている。また、サーバ100とサーバ110は同一のネットワーク120に接続されており、通信によってデータをやり取りすることが出来る。
 ライブマイグレーションの開始時に、まずハイパーバイザ101はハイパーバイザ111と通信を行い、ハイパーバイザ111がメモリ領域116を確保する。次に、ハイパーバイザ101がメモリ領域106の内容をハイパーバイザ111に転送し、ハイパーバイザ111はその内容をメモリ領域116に書き込む。このようにして、ゲストOS102はサーバ100上からサーバ110に移動し、図7の状態になりライブマイグレーション処理が完結する。このメモリ転送時に発生する問題と解決方法について次に述べる。
 ライブマイグレーションは仮想マシンの動作中にメモリの内容を転送するため、メモリの内容が転送された後で、仮想マシンの動作によりメモリの内容が書き換えられてしまうという問題が生じる。メモリの内容が転送元と転送先で異なっていると、ゲストOSが正しく動作することが出来ない。図8はハイパーバイザ101がメモリ領域106の内容をメモリ領域116に転送している途中で書き込みが行われた場合を示している。ハイパーバイザ101はメモリ領域106のうち、メモリ領域200までを転送し終えており、メモリ領域200の内容は、メモリ領域116の一部であるメモリ領域210に複製されている。この状態で、ゲストOSの動作によりメモリ領域202の内容が書き換わると、メモリ領域200の内容とメモリ領域210の内容が食い違うこととなる。
 このような問題を解決するために、ライブマイグレーションを行うためのハードウェアの支援として、メモリ領域を複数に分割し、分割されたメモリ領域ごとに書き込みを監視する機能が必要となる。分割され、書き込みを監視するメモリ領域の単位をページと呼び、転送中に書き込みが行われた領域をdirtyページと呼ぶ。転送を行うメモリ領域に対する書き込みをページごとに監視し、dirtyページを転送しなおすことによって、転送元のメモリ領域の内容と転送後のメモリ領域の内容に一貫性を保つことが出来る。
 図9はサーバ100からサーバ110にメモリ領域106の内容を転送するときの動作を示している。まず、転送元サーバ100上のハイパーバイザ101がメモリ書き込みの監視を開始する。次にゲストOSが動作している状態でpre-copyと呼ばれるメモリ転送を行う。このpre-copyではメモリ領域106全体の転送が行われる。pre-copyが終了した時点で、ゲストOS102はハイパーバイザ101によって一旦停止される。そして、ゲストOS102が停止している間に、pre-copy中に書き込みが行われてdirtyとなっているページを転送先サーバ110に転送する、stop-and-copyと呼ばれる操作を行う。stop-and-copyを行っている間、ゲストOSは動作しておらず、新たなdirtyページは発生しない。stop-and-copyが終了した後、ハイパーバイザ111がゲストOS102の動作を再開する。stop-and-copy操作を行っている時間はゲストOSの動作は停止しなければならないため、可能な限り短縮する必要がある。
 メモリ領域に対する書き込みはゲストOSの動作によるCPUからの書き込みとネットワークやファイバーチャネルなどのI/Oからの書き込みとに分類される。
 CPUからの書き込みを監視する方法として非特許文献1、支援するハードウェアの例として非特許文献2がある。また、I/Oからの書き込みを監視する方法として、特許文献1や非特許文献3などが提案されている。これらの方法によって、ライブマイグレーションは可能となっている。
 さて、I/Oからの書き込みの監視方法について説明する前に、ハイパーバイザとゲストOSがI/Oをどのように扱うかについて述べる。ハイパーバイザの存在するシステムにおいて、I/Oを扱う方法は大きく二つに分類される。一つはI/Oとハイパーバイザが通信を行い、ゲストOSはI/Oと通信を行うことが出来ない方式である。この方式ではゲストOSはハイパーバイザを経由してI/Oと通信することになる。そしてもう一つの方式は、ゲストOSがハイパーバイザを介さずに、I/Oと直接通信を行う方式である。
 ゲストOSがハイパーバイザを経由してI/Oと通信を行う場合、I/Oからのメモリ書き込みは全てハイパーバイザが認識可能である。そのため、pre-copy中のI/Oからのメモリ書き込みはハイパーバイザによってソフトウェア的に監視することが可能となる。
 一方で、ゲストOSがI/Oと直接通信を行う場合には、ハイパーバイザがI/Oからのメモリ書き込みを監視する仕組みが必要となる。特許文献1や非特許文献3はI/Oからの書き込みを監視する方法を提案している。しかし、I/Oから書き込みのあったページのリストを記憶する手法を採用しており、stop-and-copy動作でdirtyページを判別するのに、書き込みの数に比例したリソースが必要となるという問題を抱えている。
 I/Oから書き込みのあったページのリストとしては、例えば図10に示すように、dirtyページ番号の連結リスト500のような構造のリストが考えられる。メモリ書き込みが発生するたびに連結リスト500にはエントリが1つ作成され、その書き込みによってdirtyとなったページの番号が記憶される。例えば図10に示す状態では先頭のエントリ501でページ番号5のページがdirtyとなったことが記憶されている。同様に、エントリ508はページ番号11のページがdirtyとなっていることを示している。そして新しくメモリ書き込みが発生するとエントリ509が新しく作成され、dirtyとなったページが記憶される。このように、メモリ書き込み1回につき1エントリ作成されるので、dirtyなページを記憶するのにメモリ書き込みの回数に比例したリソースが必要になる。従って、新たなメモリ書き込みが発生するページの数が少なくてもページ当りの書き込み回数が多いと、リストにエントリされる延べページ数が元のページ数よりも多くなる可能性がある。
 上述のように、特許文献1、非特許文献3では、I/Oからの書き込みを監視するのに、書き込みのあったページの連結リストを作成しなければならない。このように書き込み監視情報を連結リストに格納する方法では、リストのサイズが書き込みの回数に比例するため、効率的な処理とはいえない。また、ハードウェア上にリストを作成する場合、リストの記憶容量が足りなくなった時点でライブマイグレーションが失敗するという懸念がある。
 また、pre-copy動作中に同じページに対して2回以上書き込みがあった場合、同じページが重複してリストにリンクされてリストのサイズが大きくなり、最後の書き込み以前の書き込みに対する無駄なマイグレーションが行われ、ゲストOSの停止時間が長くなる。また、書き込み頻度が多くなると、pre-copy中に生成されるdirtyなページが多くなるため、stop-and-copy動作の時間も長くなり、その分、ゲストOSの停止時間が長くなる。
 そして、特許文献、非特許文献に挙げた技術ではメモリ領域に対する書き込みの監視は行うことが可能であるが、stop-and-copy動作の速度によってゲストOSの停止時間が決まるので、停止時間を短縮するためにはdirtyページの転送処理のさらなる高速化が必要である。即ち、全ページに対するpre-copy動作中に発生する新たな書き込みが多くなると、その後stop-and-copy動作を行ってもデータのコピーに時間がかかるため、ゲストOSの停止時間が長くなる。
 本発明の目的は、ゲストOSの動作中の新たな書き込みの頻度が高い場合でも、ゲストOSの停止時間を短縮できるメモリ制御装置及び方法を提供することにある。
 一つ目の課題であるI/Oからの書き込みを効率的に監視できない問題に対する手段として、CPUとI/Oの間にスイッチを接続する。スイッチ内にメモリ書き込みを監視するメモリ監視機構と、メモリ上の各ページがdirtyかどうかを記憶するdirty bit配列とを用意する。メモリ監視機構はI/OからCPUへのメモリ書き込みを監視し、メモリ書き込みのアドレスからどのページがdirtyになったかを判断し、dirty bit配列をアップデートする。dirty bit配列はページごとにdirty/非dirtyを記憶しており、ハイパーバイザから連続領域としてアクセスできるようになっている。
 また、pre-copy中に同じページに対して2回以上書き込みがあった場合でも、dirty bit配列ではdirtyのままであり、配列のサイズは増えず、かつ、最後の書き込み以前の書き込みに対する無駄なコピーを防止できる。
 更に、全ページのpre-copyを行った後、そのpre-copyの最中に新たに発生したメモリ書き込みに対して再度pre-copyを行ない、その再度のpre-copyの最中に新たに発生したメモリ書き込みに対しても同様にpre-copyを行なう、といった動作を、所定の条件が満たされるまで繰り返すことで新たなメモリ書き込みを減らすことにより、ゲストOSの動作を停止して行われるstop-and-copy動作におけるデータのコピー時間を短縮できる。ここで、所定の条件として、例えば、ゲストOSの動作の停止が可能な時間、stop-and-copy動作で許容できるコピーデータ量、再度のpre-copyの回数などがある。
 二つ目の課題である監視情報を転送の際に効率的に用いることが出来ない問題に対して、前述のdirty bit配列が存在するスイッチに二つのサーバを接続し、dirty bit配列の情報を元にメモリの内容を複製するためのメモリ複製機構をスイッチ内に用意する。メモリ複製機構はdirty bit配列を参照し、dirtyとなっているページのみ、転送元のサーバから転送先のサーバへメモリの内容を複製する機能を有する。また、dirty bit配列の機能として、ハイパーバイザからdirty bit配列に書き込む機能、dirty bitの参照時に参照した結果を参照元に返すと同時に非dirtyとする機能も追加する。
 一つ目の課題を解決することで、ライブマイグレーションを行う際にI/Oからの書き込みを効率的に監視することが可能となる。これによってライブマイグレーション中のハイパーバイザによるメモリ書き込み監視処理を軽減し、pre-copy中のゲストOSの性能低下を最小限に抑えられる。
 二つ目の課題を解決することで、ライブマイグレーションにおけるメモリ転送に必要な時間を低減することが可能となり、ゲストOSのサービスが停止する時間を短縮できる。
本発明のメモリ書き込み監視部とメモリ書き込み記憶部を備えたI/Oスイッチを示す図である。 実施例1においてメモリ書き込みによってページがdirtyとなり、かつdirty bit配列の該当するbitがdirtyとなることを示す図である。 メモリ書き込み監視情報を使い、効率的にメモリ複製を行うI/Oスイッチを示す図である。 実施例2において、ライブマイグレーション動作の流れを示す図である。 実施例2において、手順602での動作を示す図である。 ライブマイグレーションを行う前のシステムの状態を示す図である。 ライブマイグレーションを行う後のシステムの状態を示す図である。 ライブマイグレーション中に、既に転送が終わった領域にメモリ書き込みが行われた状態を示す図である。 ライブマイグレーションの一般的な動作を示す図である。 dirtyページを記憶するための連結リスト構造を示す図である。 pre-copyを繰り返した場合のライブマイグレーションの動作を示す図である。
 I/Oからの書き込みを効率的に監視するというひとつ目の目的と、監視した結果を効率的にメモリの転送に用いると言う二つ目の目的を、実装に必要なハードウェアが最小限になるように実現した。
 以下では、CPUとI/Oの間の接続に用いるプロトコルとして、PCI Express、及びPCI Express規格の拡張であるMR-IOV規格を用いた場合を例として挙げている。本発明を実現する上ではプロトコルはPCI Express規格に限定されるわけではないが、PCI Expressは現在CPUとI/Oを接続するプロトコルの大部分を占める標準になっているため、実施例ではこれを用いる。
 一つ目の課題のI/Oからの書き込みを効率的に監視する手法を実施例1として挙げる。
 図1はサーバ100が本発明を適用したI/Oスイッチ300経由でI/O301、I/O302と接続されている図である。ゲストOS102は主記憶としてメモリ領域106を利用しており、メモリ領域106にはI/O301、I/O302からメモリ書き込みが行われる。I/Oスイッチ300はPCI Express規格で定まるSwitchの機能に加えて、メモリ書き込み監視部310、メモリ書き込み記憶部320を有する。メモリ書き込み監視部310はアドレス比較器311、上位アドレス312、下位アドレス312を備えている。メモリ書き込み記憶部320はdirty bit配列321を有する。
 メモリ書き込み監視部310は、I/O301、I/O302からのメモリ書き込みのアドレスを元に、どのページがdirtyになったかを判別する機能を持つ。メモリ書き込み記憶部320は転送対象となるメモリ領域106の各ページがdirtyページかどうかを記憶する機能を持つ。dirty bit配列321の各bitは、0ならばそのページに書き込みが行われていないこと、1ならば書き込みが行われた結果dirtyであることを示す。当該ページに再度書き込みが行われた場合、当該ページに対応するbitは1のままである。
 以下ではハイパーバイザ101がライブマイグレーションのために、メモリ領域106へのI/Oからのメモリ書き込みを監視する場合の動作について述べる。CPU103からのメモリ書き込み監視も本実施例の動作と並行して行われる。
 ライブマイグレーションの開始処理として、メモリ104の監視のアドレス範囲を設定する。ハイパーバイザ101はメモリ領域106のアドレスの最大値を上位アドレス312に、メモリ領域106のアドレスの最小値を下位アドレス313に設定する。上位アドレス312と下位アドレス313との差及び1ページのサイズに基づいて、必要なbit数を有するdirty bit配列321が生成される。その後、メモリ書き込み監視を有効にし、pre-copyを開始する。
 pre-copy中にI/O301、I/O302からメモリ書き込みが行われる場合、I/Oスイッチ300はメモリ書き込み本来の動作としてメモリ領域106にメモリ書き込みを転送するのに加えて、アドレス比較器311にメモリ書き込みのアドレスを転送する。アドレス比較器311は、メモリ書き込みのアドレスが上位アドレス312、下位アドレス313の範囲内であれば、メモリ領域106へのメモリ書き込みであるとみなす。アドレス比較器311はメモリの書き込みアドレス、下位アドレス、1ページのサイズを元に、どのページがdirtyになったかを判定し、dirty bit配列321における当該ページに対応するbitを更新する。具体的にはdirtyになったページの番号=(メモリ書き込みのアドレス-下位アドレス)/(1ページのサイズ)という計算式で、更新されるべきbitの位置を得ることが出来る。
 図2はメモリ領域106を8個のページに分割して監視を行う場合を示している。ページ331にI/O301からメモリ書き込み330が行われ、ページ331がdirtyとなる場合を示している。I/Oスイッチ300は、メモリ書き込み330をメモリ領域106に転送するのに加えて、書き込み先であるページ331に対応するdirty bit332に1を書く。
 このようにしてpre-copy中のI/O301、I/O302からのメモリ書き込みが監視され、dirtyであるページとそうでないページが識別される。また、既存の手法により、CPU103からのメモリ書き込みによってdirtyとなったページも識別されている。
 pre-copy動作が終了した時点でゲストOSの動作を一旦停止し、dirtyであるページを転送するstop-and-coopy動作を開始する。このstop-and-copy動作では、CPU103からの書き込みによってdirtyとなったページ、I/O301とI/O302からの書き込みによってdirtyとなったページの両方が転送される。これによりライブマイグレーションで必要なゲストOS102のメモリ内容の転送を完了することが出来る。
 dirty bit配列に必要な大きさは(メモリ領域のサイズ)/(1ページのサイズ)×1bitという計算式で求めることが出来る。例えば、ゲストOSに割り当てられるメモリ領域のサイズを2TByte、1ページのサイズを2MByteとすると、dirty bitの大きさは1Mbitとなる。この大きさはライブマイグレーションを行うゲストOSに割り当てられるメモリ領域の最大サイズに比例するが、pre-copy動作中に行われたメモリ書き込みの回数には比例しない。
 即ち、pre-copy動作中に同一ページに対して複数回のメモリ書き込みがあっても、dirty bit配列中の対応するbitは1のまま、あるいは1が重ね書きされるので、dirty bit配列の大きさは変わらない。従って、dirty bit配列によって、前回のコピー以降に当該ページに何度も書き込みが発生しても、書き込みがあったという経緯のみがdirty bitとして記憶され、次回のコピーでは、dirty bit配列を参照して、前回のコピー以降に何度も書き込みがなされた状態にあるdirtyなページが転送される。
 このようにして、ページごとにdirtyかどうかを記録することで、メモリ書き込み回数に比例しない効率的なメモリ書き込みの監視を実現できた。
 実施例2では、二つ目の課題を解決する手段として挙げた、stop-and-copy動作を短縮する方法を示す。
 図3は、本実施例を実施するためのシステム構成を示す。それぞれがCPUとメモリを有する計算機で実現される2つのサーバ100、110とI/O(装置、機器)301との間にI/Oスイッチ400が設けられている。それぞれのサーバ100、110では、仮想マシンを動作させるためのハイパーバイザ101、111が動作しており、ハイパーバイザ101では仮想マシン上で動作するオペレーティングシステムであるゲストOS102が動作している。このゲストOS102を移動してハイパーバイザ111で動作させるために、ゲストOS102がアクセスする、ハイパーバイザ101内のメモリ領域106の内容を、ゲストOS102を動作させながら、ハイパーバイザ111のメモリ領域116にマイグレーションする。メモリ領域106、116は、それぞれが同一のサイズを有する複数のページで構成される。
 I/Oスイッチ400は、マイグレーションの対象となるメモリのアドレスを判定するアドレス比較器311、マイグレーションの対象となるメモリのページに対して書き込みの有無を管理するdirty bit配列411を含むメモリ書き込み記憶部410、及びdirty bit配列411に基づいてハイパーバイザ101とハイパーバイザ111との間でデータのコピーを行うメモリ複製部420を有する。
 図3はメモリ書き込みを監視した結果を格納するdirty bit配列411と、メモリ複製部420が連携し、dirtyであるページのみを転送する仕組みを持つI/Oスイッチ400について示す図である。I/Oスイッチ400は実施例1のI/Oスイッチ300に加えて、メモリ複製部420を有する。
 次に各機構の機能について説明する。メモリ書き込み記憶部410は、メモリ複製機構の読み出し部421と通信を行う機能、ハイパーバイザ101、ハイパーバイザ111からdirty bit配列411を読み書きする機能が追加されている。dirty bit配列411には実施例1に加えて、ハイパーバイザ101、メモリ複製部420からdirty bitを参照された際に、該当するdirty bitの内容を読み出して値を読み出し部421に返し、かつdirty bitを0にするという機能が追加されている。
 メモリ複製機構420はdirty bit配列411を読み出し、あるページに対応するbitが1であった場合、すなわちそのページがdirtyだった場合にのみ、該当するページをサーバ100からサーバ110へ転送する機能を持つ。
 図4に、図9に基づく動作の流れを示す。手順600ではハイパーバイザ101が転送の初期設定を行う。メモリ領域106のアドレスの上限を上位アドレス312に、下限を下位アドレス313に書き込み、監視領域の設定を行う。その際、データの転送先であるハイパーバイザ111のメモリ114のメモリ領域116の上位アドレスと下位アドレスをメモリ複製部420に通知する。そして、dirty bit配列411の各bitを全て1にする。これは、pre-copy動作で転送が必要なページはメモリ領域106全体であり、全てのページが転送を要するdirtyであるのと等価だからである。
 手順601では、ハイパーバイザ101がpre-copy動作の開始と同時に(図9参照)メモリ書き込み監視部310に監視を開始させる。これ以降のpre-copy動作中にI/O301からのメモリに対する書き込みで書き込まれたページはdirtyページとなり、dirty bit配列411の該当するbitが1となる。また、CPU103からメモリ領域106への書き込みも非特許文献1、非特許文献2と同様に監視が開始される。
 手順602では、ハイパーバイザ101がメモリ領域106の転送をメモリ複製部420に指示する。ハイパーバイザ101のCPUがメモリ領域をアクセスした場合は、そのアドレス又は対応するbitをメモリ複製部420に通知する。 指示を受けたメモリ複製部420がメモリ領域106の内容をメモリ領域116に自動的に複製を行う。
 図5にメモリ複製部420による1ページ分の複製の動作を示す。あるページを複製する場合、dirty bit配列411のdirty bit432が1かどうかを調べ、1であればdirty bit432を0にしてからページの複製を開始し、その間に書き込みがあったら、そのページにデータを書き込み、dirty bit432に1を設定する。
 読み出し部421は、dirty bit配列411のdirty bit432を読み出す。このときに同時に、読み出されたdirty bit432は0となる(リセットされる)。読み出してから、0にする操作を行っている間は、dirty bit432の状態は変化しない。そしてdirty bit配列411のbitから読み出した結果がdirtyであれば該当するページ431は転送の対象であることが分かる。これは、転送されるページ431は、pre-copy動作中に書き込みが行われて転送が必要なdirtyページから、将来的に転送されるページになり、転送された後はページ431とページ441で内容が一致しdirtyでなくなるということを意味している。ページ431は、dirty bit配列411のbitを読み出した結果dirtyだったので、読み出し部421はページ431の内容を読み出す。読み出された内容は書き込み部422によって、ページ441に書き込まれる。pre-copy動作による転送を行っている途中でも、ゲストOS102は動作しており、I/O301からのメモリ書き込みの監視は行われており、I/O301からのメモリ書き込みが行われたページはdirtyとなる。
 全てのページについて転送が終了したら、手順602から手順603に遷移する。メモリ複製部420は、ハイパーバイザ101にpre-copy動作による全ページのデータ転送の終了を通知する。
 手順604では、pre-copy動作による全てのページのデータの転送中に発生した新たなdirtyなページが存在するかどうかを調べ、ライブマイグレーションを終了するかどうかを決定する。手順602、手順603で、pre-copy動作中にCPU103からの書き込み、I/O301からの書き込みがなく、dirtyなページが存在しない場合は、手順605に遷移する。dirtyなページが存在する場合は、手順606に遷移する。
 手順605では、メモリ領域106の内容とメモリ領域116の内容は一致しており、ゲストOS102の動作を再開させることが出来る。ハイパーバイザ101がハイパーバイザ111にメモリ転送の終了を通知し、ハイパーバイザ111はゲストOS102の動作を再開する。これによってライブマイグレーションの処理が終了する。
 手順606では、ハイパーバイザ101が、pre-copy動作中の新たな書き込みによるdirtyページの数が十分に少ないかどうか(所定のページ数よりも少ないかどうか)を判断する。転送に要する時間は(dirtyであるページの数)×(1ページあたりの転送時間)で求まり、この時間がゲストOSの停止時間として許容できるならば、dirtyページの数が十分に少ないことになる。dirtyページが十分に少なければ手順607に遷移する。そうでないならば、ゲストOSを動作させたままdirtyページを転送するため手順608に遷移する。
 手順607ではハイパーバイザ101がゲストOS102を停止させる。これによって、stop-and-copy動作を行うことが可能となる。すなわちメモリ領域106にCPU103、I/O301から書き込みが行われなくなり、次の転送でライブマイグレーションの転送処理が終了することになる。ゲストOS102の停止後、手順608に遷移する。
 手順608では、メモリ領域106の転送中にdirtyとなったページを転送しなおすための設定を行う。ハイパーバイザ101は、CPU103からの書き込みによってdirtyとなっているページに該当するdirty bitに1を書き込む。これによって次に行われる手順602、手順603でCPU103からの書き込みでdirtyとなったページと、I/O301からの書き込みでdirtyとなったページの両方が転送されることとなる。また、I/Oからのメモリ書き込み監視機構が複数ある場合も、同様にメモリ書き込みによってdirtyとなっているページに該当するdirty bitに1を書き込む。
 ここで、本発明のように、pre-copy動作を繰り返すことにより、dirtyとなるページ数が次第に少なくなることを説明する。
 Nページの全データをコピーするのにT(時間)要したとすると、1ページ当りのコピー時間は、T/Nとなる。(N/Tはコピー転送速度) 全データのコピー後にpre-copy動作を繰り返す場合、コピー時間と新たな書き込み量が以下のようにして計算される。
1)上記の全データのコピーを行っているTの間に、nページ分の新たな書き込みが発生したとすると、これをコピーするにはt=n(T/N)=(n/N)Tかかる。
2)tの間に、nページ分の新たな書き込みが発生したとすると、これをコピーするにはt=n(T/N)かかる。ここで、新たな書き込みデータの単位時間当りの発生量は1)と同じであるから、n/T=n/tが成り立つ。この関係を用いると、t=n(T/N)=(n/N)2Tとなる。
3)tの間に、nページ分の新たな書き込みが発生したとすると、これをコピーするにはt=n(T/N)かかる。新たな書き込みデータの単位時間当りの発生量は1)と同じであるから、n/T=n/tが成り立つ。この関係を用いると、t=n(T/N)=(n/N)Tとなる。
 上記のpre-copy動作を繰り返した場合、各ステップで、コピー転送速度が一定の条件から、N/T=n/t=n/t=・・・=n/tが成り立ち、新規書き込み発生頻度が一定の条件から、n/T=n/t=・・・=n/tk-1が成り立つ。2つの条件から、第mステップ目のpre-copyを行っているt(=(n/N)T)の間に発生する新たな書き込み(ページ)はnm+1=N(n/N)m+1が得られる。但し、n/Nは全データに対する新たな書き込みの発生割合で、n/N<1である。即ち、pre-copy動作を繰り返していくと、新たな書き込みのデータ量(ページ数)が指数関数的に減少してゆき、その新たな書き込みをコピーする時間も指数関数的に減少してゆく。それ故、pre-copy動作を繰り返して新たな書き込みのデータ量を減少させた後でstop-and-copy動作を行えば、ゲストOS102の動作停止時間を短くできる。新たな書き込みの発生頻度が高い場合でも、pre-copy動作を十分な回数繰り返せば、ゲストOS102の動作停止時間を短くできる。
 なお、全ページのコピー後にm回のpre-copy動作を行った場合のコピーの所要時間Ttotalは、 Ttotal=T+t+t+t+・・・・+t=T+(n/N)T+(n/N)2T+・・・+(n/N)T=T(1-(n/N)m+1)/(1-(n/N)) で与えられる。このTtotalによって、コピーの所要時間を見積もることができる。
 図4の手順606における判定処理では、pre-copy動作からstop-and-copy動作に切り替える条件として、予め設定したコピーの所要時間、stop-and-copy動作の際に転送すべき新たな書き込みのデータ量、あるいは、それまでのpre-copy動作の回数などのいずれかを用いることができる。また、条件の値を推定する場合に、上記の計算結果を利用できる。
 このようにして、メモリ書き込み監視の結果dirtyとなっている領域のみを複製することで、メモリ書き込み監視情報を転送時に効率的に利用するメモリ複製の方法を実施できた。
 pre-copy動作を4回行った後で、stop-and-copy動作を行った場合のコピーされるデータ量の変化を図11に示す。pre-copy動作を1回行った後で、stop-and-copy動作を行った場合を示す図9と比べると、図11では、stop-and-copy動作を行う時点でのコピーされるデータ量が少なくなっていることがわかる。
 また、ゲストOSを動作したままのpre-copy動作を繰り返すことにより、dirtyとなったページ数を少なくした後で、stop-and-copy動作を行うので、その間のゲストOSの動作停止時間を短縮できる。
 本実施例では、ゲストOSを動作させながら、ゲストOSをハイパーバイザ間で移動させる場合を説明したが、通常のプログラムを、そのプログラムを動作させながら計算機間で移動させる場合にも適用できる。
100 ライブマイグレーションにおける移動元のサーバ
101 ライブマイグレーションにおける移動元のハイパーバイザ
102 ハイパーバイザ101上で動作する、ライブマイグレーションの対象のゲストOS
103 サーバ100に搭載されているCPU
104 サーバ100に搭載されているメモリ
105 メモリ104においてハイパーバイザ101に割り当てられている領域
106 メモリ104においてゲストOS102に割り当てられている領域
107 サーバ100に搭載されているI/O
110 ライブマイグレーションにおける移動先のサーバ
111 ライブマイグレーションにおける移動先のハイパーバイザ
113 サーバ110に搭載されているCPU
114 サーバ110に搭載されているメモリ
115 メモリ114においてハイパーバイザ111に割り当てられている領域
116 メモリ114においてゲストOS102に割り当てられる領域
120 サーバ100とサーバ101間の通信を行うネットワーク
200 メモリ領域106のうちメモリ領域116に複製が終了しているメモリ領域
201 メモリ領域106のうちメモリ領域116に複製が終了していないメモリ領域
202 メモリ領域200のうち複製後に書き込みが行われたメモリ領域
210 メモリ領域116のうちメモリ領域106から複製が行われたメモリ領域
211 メモリ領域116のうちメモリ領域106からの複製が終了していないメモリ領域
300 サーバ100とI/O301、I/O302を接続する実施例1の機能を持つI/Oスイッチ
310 I/O301、I/O302からの書き込みを監視するメモリ書き込み監視部
311 書き込みアドレスが上位アドレス312と下位アドレス313の間に入っているかを判定する比較器
320 ページがdirtyかどうかを記憶するための記憶部
321 ページごとにdirtyかどうかを記憶するdirty bit配列
330 ページ331をdirtyにするメモリ書き込み
331 メモリ領域106上のメモリ書き込み330によってdirtyとなるページ
332 dirty bit配列321のページ331に対応するdirty bit
400 実施例2の機能を持つI/Oスイッチ
410 ハイパーバイザ102、メモリ複製部420からdirty bit配列411にアクセス可能なメモリ書き込み記憶部
411 dirty bit読み出し時に読み出した値を返し、かつ0を書き込む機能を持つdirty bit配列
420 メモリ104から値を読み、メモリ114に書き込みを行うメモリ複製部
421 dirty bit配列411を読み出し、dirtyページのみをメモリ領域106から読み出す読み出し部
422 読み出し部421が読み出した内容をメモリ領域116に書き込む書き込み部
431 メモリ領域106上のdirtyとなっているページ
432 ページ431に対応するdirty bit
441 メモリ領域116上でページ431から内容がコピーされるページ
500 dirtyページ番号を記憶するための連結リスト。

Claims (9)

  1. 電子計算機とI/O装置が接続され、
    前記電子計算機のメモリの特定領域をページに分割し、分割されたページごとにメモリ書き込みの有無を記憶するためのdirty bit配列と、
    I/O装置からの電子計算機のメモリに対するメモリ書き込みを監視するメモリ書き込み監視機構を有し、
    前記監視機構によって、前記メモリの特定領域に対するI/O装置からのメモリ書き込みが観測された時に、
    メモリ書き込みのアドレスからメモリ書き込みの行われたページを決定し、
    前記dirty bit配列に前記ページに対するメモリ書き込みがあったことを記録する
    ことを特徴とするメモリ制御装置。
  2. 前記メモリ制御装置は、さらに、前記電子計算機から他の電子計算機へ
    メモリの内容を転送するメモリ複製機構を有し、
    dirty bit配列において転送が必要と記憶されているページのみを、
    メモリ複製機構が前記電子計算機から前記他の電子計算機に転送する
    ことを特徴とする請求項1記載のメモリ制御装置。
  3. 前記メモリ複製機構が、
    前記dirty bit配列を参照する際に、
    ページ毎の、転送が不要という状態かあるいは転送か必要という状態かの情報を読み出し、
    前記情報に転送が必要と記憶されている場合、
    前記情報を読み出したページについては転送が不要と記憶しなおす
    ことを特徴とする請求項2記載のメモリ制御装置。
  4. 前記いずれかの電子計算機が、
    前記dirty bit配列を、
    ページ毎に個別に、転送が不要という状態から転送が必要という状態に
    変更可能である
    ことを特徴とする請求項2記載のメモリ制御装置。
  5. 前記メモリ書き込み監視機構が、
    前記dirty bit配列に前記ページに対するメモリ書き込みがあったことを記録し、
    前記メモリ複製機構が、
    メモリ書き込みがあったと記録されているページを転送が必要と記憶されているページと判断し、
    前記dirty bit配列において転送が必要と記憶されているページのみを、
    転送元電子計算機から転送先電子計算機に転送する
    ことを特徴とする請求項1に記載のメモリ制御装置。
  6.  I/O装置と、プログラムもしくは前記I/O装置からアクセスされているメモリを有する第1の計算機と、前記プログラムの移動先の第2の計算機とに接続されたI/Oスイッチであって、前記I/Oスイッチは、
     複数ページに分割され、前記第1の計算機のメモリ内の前記プログラムがアクセスする特定領域の前記分割されたページごとにメモリ書き込みの有無を記憶するためのdirty bit配列を記憶する記憶手段と、
     前記プログラムもしくは前記I/O装置からの前記第1の計算機のメモリに対するメモリ書き込みを監視するメモリ書き込み監視手段と、
     前記プログラムに関連するメモリの内容を前記第1の計算機から前記第2の計算機にコピーするメモリ複製手段とを有し、
     前記メモリ複製手段は、
     前記プログラムもしくは前記I/O装置の動作中に、前記特定領域の全ページに対して、前記それぞれのページのコピー後に前記dirty bit配列の対応するbitをリセットしてから、前記第1の計算機のメモリから前記第2の計算機のメモリにそれぞれのページをコピーするメモリ転送を行い、
     前記メモリ書き込み監視手段に基づいて、前記メモリ転送中にメモリ書き込みがあったページに対応する、前記dirty bit配列のbitに、メモリ書き込みがあったことを記憶するdirty記憶を行い、
     前記dirty bit配列における前記dirty記憶が所定の条件を満たさない場合は、前記dirty bit配列の各bitに基づいて、前記メモリ転送中にメモリ書き込みがあったページに対して、前記メモリ転送及び前記dirty記憶を再度行い、
     前記dirty bit配列における前記dirty記憶が前記所定の条件を満たす場合は、前記プログラムもしくは前記I/O装置の動作を停止して、前記dirty bit配列の各bitに基づいて、前記メモリ転送中にメモリ書き込みがあったページに対して前記メモリ転送を行った後で、前記メモリ転送を停止することを特徴とするI/Oスイッチ。
  7.  I/O装置と、プログラムもしくは前記I/O装置からアクセスされているメモリを有する第1の計算機と、前記プログラムの移動先の第2の計算機とに接続されたI/Oスイッチにおけるメモリ制御方法は、
     複数ページに分割され、前記第1の計算機のメモリ内の前記プログラムがアクセスする特定領域の前記分割されたページごとにメモリ書き込みの有無を記憶するためのdirty bit配列を記憶部に記憶し、
     前記プログラムもしくは前記I/O装置の動作中に、前記特定領域の全ページに対して、前記それぞれのページのコピー後に前記dirty bit配列の対応するbitをリセットしてから、前記第1の計算機のメモリから前記第2の計算機のメモリにそれぞれのページをコピーするメモリ転送を行い、
     前記プログラムもしくは前記I/O装置からの前記第1の計算機のメモリに対するメモリ書き込みの監視結果に基づいて、前記メモリ転送中にメモリ書き込みがあったページに対応する、前記dirty bit配列のbitに、メモリ書き込みがあったことを記憶するdirty記憶を行い、
     前記dirty bit配列における前記dirty記憶が所定の条件を満たさない場合は、前記dirty bit配列の各bitに基づいて、前記メモリ転送中にメモリ書き込みがあったページに対して、前記メモリ転送及び前記dirty記憶を再度行い、
     前記dirty bit配列における前記dirty記憶が前記所定の条件を満たす場合は、前記プログラムもしくは前記I/O装置の動作を停止して、前記dirty bit配列の各bitに基づいて、前記メモリ転送中にメモリ書き込みがあったページに対して前記メモリ転送を行った後で、前記メモリ転送を停止することを特徴とするメモリ制御方法。
  8.  前記所定の条件は、予め設定したコピーの所要時間、前記プログラムもしくは前記I/O装置の動作を停止して転送すべき新たな書き込みのデータ量、あるいは、それまでの前記メモリ転送及び前記dirty記憶の動作の回数のいずれかであることを特徴とする請求項6記載のI/Oスイッチ。
  9.  前記所定の条件は、予め設定したコピーの所要時間、前記プログラムもしくは前記I/O装置の動作を停止して転送すべき新たな書き込みのデータ量、あるいは、それまでの前記メモリ転送及び前記dirty記憶の動作の回数のいずれかであることを特徴とする請求項7記載のメモリ制御方法。
PCT/JP2010/070021 2010-11-10 2010-11-10 仮想マシンのライブマイグレーションを支援するためのメモリ制御装置及びi/oスイッチ WO2012063334A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
PCT/JP2010/070021 WO2012063334A1 (ja) 2010-11-10 2010-11-10 仮想マシンのライブマイグレーションを支援するためのメモリ制御装置及びi/oスイッチ
JP2012542756A JPWO2012063334A1 (ja) 2010-11-10 2010-11-10 仮想マシンのライブマイグレーションを支援するためのメモリ制御装置及びi/oスイッチ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2010/070021 WO2012063334A1 (ja) 2010-11-10 2010-11-10 仮想マシンのライブマイグレーションを支援するためのメモリ制御装置及びi/oスイッチ

Publications (1)

Publication Number Publication Date
WO2012063334A1 true WO2012063334A1 (ja) 2012-05-18

Family

ID=46050516

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2010/070021 WO2012063334A1 (ja) 2010-11-10 2010-11-10 仮想マシンのライブマイグレーションを支援するためのメモリ制御装置及びi/oスイッチ

Country Status (2)

Country Link
JP (1) JPWO2012063334A1 (ja)
WO (1) WO2012063334A1 (ja)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013515303A (ja) * 2010-11-29 2013-05-02 ▲ホア▼▲ウェイ▼技術有限公司 仮想ストレージ移行のための方法およびシステム、ならびに仮想マシンモニタ
CN103324582A (zh) * 2013-06-17 2013-09-25 华为技术有限公司 一种内存迁移方法、装置及设备
JP2014191752A (ja) * 2013-03-28 2014-10-06 Fujitsu Ltd マイグレーション処理プログラム,マイグレーション方法及びクラウドシステム
KR20150102304A (ko) * 2014-02-28 2015-09-07 단국대학교 산학협력단 가상 머신의 라이브 마이그레이션 방법 및 장치
US9436751B1 (en) 2013-12-18 2016-09-06 Google Inc. System and method for live migration of guest
US9483414B2 (en) 2013-11-25 2016-11-01 Red Hat Israel, Ltd. Ordered memory pages transmission in virtual machine live migration
WO2019012958A1 (ja) * 2017-07-11 2019-01-17 株式会社Seltech ハイパーバイザプログラム
US10341177B2 (en) 2015-08-04 2019-07-02 Fujitsu Limited Parallel computing system and migration method
US10621010B2 (en) 2016-11-29 2020-04-14 Fujitsu Limited Information processing apparatus and migration method

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010039685A (ja) * 2008-08-04 2010-02-18 Hitachi Ltd 複合型計算機及び複合型計算機の制御方法
JP2010055318A (ja) * 2008-08-27 2010-03-11 Hitachi Ltd ハイパバイザを有する計算機システム
WO2010116402A1 (ja) * 2009-03-30 2010-10-14 富士通株式会社 情報処理装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010039685A (ja) * 2008-08-04 2010-02-18 Hitachi Ltd 複合型計算機及び複合型計算機の制御方法
JP2010055318A (ja) * 2008-08-27 2010-03-11 Hitachi Ltd ハイパバイザを有する計算機システム
WO2010116402A1 (ja) * 2009-03-30 2010-10-14 富士通株式会社 情報処理装置

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013515303A (ja) * 2010-11-29 2013-05-02 ▲ホア▼▲ウェイ▼技術有限公司 仮想ストレージ移行のための方法およびシステム、ならびに仮想マシンモニタ
US9411620B2 (en) 2010-11-29 2016-08-09 Huawei Technologies Co., Ltd. Virtual storage migration method, virtual storage migration system and virtual machine monitor
JP2014191752A (ja) * 2013-03-28 2014-10-06 Fujitsu Ltd マイグレーション処理プログラム,マイグレーション方法及びクラウドシステム
CN103324582A (zh) * 2013-06-17 2013-09-25 华为技术有限公司 一种内存迁移方法、装置及设备
US9483414B2 (en) 2013-11-25 2016-11-01 Red Hat Israel, Ltd. Ordered memory pages transmission in virtual machine live migration
US9436751B1 (en) 2013-12-18 2016-09-06 Google Inc. System and method for live migration of guest
KR20150102304A (ko) * 2014-02-28 2015-09-07 단국대학교 산학협력단 가상 머신의 라이브 마이그레이션 방법 및 장치
KR101581531B1 (ko) 2014-02-28 2016-01-11 단국대학교 산학협력단 가상 머신의 라이브 마이그레이션 방법 및 장치
US10341177B2 (en) 2015-08-04 2019-07-02 Fujitsu Limited Parallel computing system and migration method
US10621010B2 (en) 2016-11-29 2020-04-14 Fujitsu Limited Information processing apparatus and migration method
WO2019012958A1 (ja) * 2017-07-11 2019-01-17 株式会社Seltech ハイパーバイザプログラム
JPWO2019012958A1 (ja) * 2017-07-11 2020-05-07 積水ハウス株式会社 ハイパーバイザプログラム
JP7090080B2 (ja) 2017-07-11 2022-06-23 積水ハウス株式会社 ハイパーバイザプログラム

Also Published As

Publication number Publication date
JPWO2012063334A1 (ja) 2014-05-12

Similar Documents

Publication Publication Date Title
WO2012063334A1 (ja) 仮想マシンのライブマイグレーションを支援するためのメモリ制御装置及びi/oスイッチ
JP6791834B2 (ja) 記憶システム及び制御ソフトウェア配置方法
US9158578B1 (en) System and method for migrating virtual machines
Luo et al. Live and incremental whole-system migration of virtual machines using block-bitmap
US7769952B2 (en) Storage system for controlling disk cache
JP5037881B2 (ja) ストレージシステム及びその制御方法
US8639898B2 (en) Storage apparatus and data copy method
JP4808275B2 (ja) ネットワークブートシステム
JP6882662B2 (ja) マイグレーションプログラム、情報処理装置およびマイグレーション方法
US9875056B2 (en) Information processing system, control program, and control method
US9354907B1 (en) Optimized restore of virtual machine and virtual disk data
EP2784683B1 (en) Storage control program, storage control method, storage system and hierarchy control apparatus thereof
JP2010049502A (ja) ストレージサブシステム、及びこれを有するストレージシステム
KR102304130B1 (ko) 비휘발성 랜덤 액세스 메모리를 이용한 세그먼트 클리닝 방법 및 이를 구현하기 위한 메모리 관리 장치
US20190278632A1 (en) Information processing apparatus and information processing system
JP6028415B2 (ja) 仮想サーバ環境のデータ移行制御装置、方法、システム
Li et al. Efficient live virtual machine migration for memory write-intensive workloads
US20210157729A1 (en) Method and apparatus for performing pipeline-based accessing management in storage server with aid of caching metadata with hardware pipeline module during processing object write command
JP2015191414A (ja) 制御装置、ディスクアレイ装置、及び制御方法、並びにコンピュータ・プログラム
WO2023169185A1 (zh) 内存管理方法和装置
Hsu et al. An adaptive pre-copy strategy for virtual machine live migration
JP7057408B2 (ja) 記憶システム及びその制御方法
EP4033346B1 (en) Affinity-based cache operation for a persistent storage device
US11687359B2 (en) Hybrid memory management apparatus and method for many-to-one virtualization environment
WO2016006072A1 (ja) 管理計算機およびストレージシステム

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: 10859492

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2012542756

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 10859492

Country of ref document: EP

Kind code of ref document: A1