RU2780969C1 - Faster access of the memory apparatus of a virtual machine reserved by a virtual memory apparatus of a computing host apparatus - Google Patents
Faster access of the memory apparatus of a virtual machine reserved by a virtual memory apparatus of a computing host apparatus Download PDFInfo
- Publication number
- RU2780969C1 RU2780969C1 RU2021117704A RU2021117704A RU2780969C1 RU 2780969 C1 RU2780969 C1 RU 2780969C1 RU 2021117704 A RU2021117704 A RU 2021117704A RU 2021117704 A RU2021117704 A RU 2021117704A RU 2780969 C1 RU2780969 C1 RU 2780969C1
- Authority
- RU
- Russia
- Prior art keywords
- storage
- host
- memory
- virtual
- entries
- Prior art date
Links
- 238000000034 method Methods 0.000 claims abstract description 173
- 230000008569 process Effects 0.000 claims abstract description 127
- 238000003860 storage Methods 0.000 claims description 535
- 238000013519 translation Methods 0.000 claims description 64
- 238000012545 processing Methods 0.000 claims description 27
- 230000004044 response Effects 0.000 claims description 13
- 238000013467 fragmentation Methods 0.000 claims description 9
- 238000006062 fragmentation reaction Methods 0.000 claims description 9
- 230000015572 biosynthetic process Effects 0.000 claims description 8
- 230000002265 prevention Effects 0.000 claims description 4
- 238000001514 detection method Methods 0.000 claims description 2
- 238000005516 engineering process Methods 0.000 abstract description 3
- 230000000694 effects Effects 0.000 abstract description 2
- 239000000126 substance Substances 0.000 abstract 1
- 210000000352 storage cell Anatomy 0.000 description 106
- 230000014616 translation Effects 0.000 description 38
- 210000004027 cell Anatomy 0.000 description 36
- 230000000875 corresponding effect Effects 0.000 description 33
- 230000007246 mechanism Effects 0.000 description 21
- 230000008901 benefit Effects 0.000 description 15
- 230000009471 action Effects 0.000 description 7
- 230000008859 change Effects 0.000 description 7
- 238000004891 communication Methods 0.000 description 7
- 238000007726 management method Methods 0.000 description 6
- 230000001960 triggered effect Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 238000006243 chemical reaction Methods 0.000 description 4
- 230000002596 correlated effect Effects 0.000 description 4
- 238000005457 optimization Methods 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 4
- 238000010276 construction Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 238000005192 partition Methods 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000004513 sizing Methods 0.000 description 2
- 238000012549 training Methods 0.000 description 2
- CDFKCKUONRRKJD-UHFFFAOYSA-N 1-(3-chlorophenoxy)-3-[2-[[3-(3-chlorophenoxy)-2-hydroxypropyl]amino]ethylamino]propan-2-ol;methanesulfonic acid Chemical compound CS(O)(=O)=O.CS(O)(=O)=O.C=1C=CC(Cl)=CC=1OCC(O)CNCCNCC(O)COC1=CC=CC(Cl)=C1 CDFKCKUONRRKJD-UHFFFAOYSA-N 0.000 description 1
- 102100024758 Differentially expressed in FDCP 6 homolog Human genes 0.000 description 1
- 101000830440 Homo sapiens Differentially expressed in FDCP 6 homolog Proteins 0.000 description 1
- 244000035744 Hura crepitans Species 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 230000003213 activating effect Effects 0.000 description 1
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
- 238000012800 visualization Methods 0.000 description 1
Images
Abstract
Description
Уровень техникиState of the art
[0001] Современные вычислительные устройства работают посредством исполнения машиноисполняемых инструкций из высокоскоростного энергозависимого запоминающего устройства в форме оперативного запоминающего устройства (RAM), и исполнение таких машиноисполняемых инструкций зачастую влечет за собой считывание данных из RAM. Вследствие затрат, ограничений по физическому размеру, требований по мощности и других аналогичных ограничений, вычислительные устройства типично содержат меньший объем RAM, чем требуется посредством процессов, которые типично выполняются на таких вычислительных устройствах. Чтобы справляться с такими ограничениями, используется виртуальное запоминающее устройство, за счет чего запоминающее устройство, которое выглядит доступным для процессов, выполняющихся на вычислительном устройстве, больше, чем предоставляет схема физического запоминающего устройства. Взаимосвязь между виртуальным запоминающим устройством и физическим запоминающим устройством типично управляется посредством одного или более диспетчеров запоминающего устройства, которые реализуют, поддерживают и/или обращаются к "таблице страниц", информация которой разграничивает взаимосвязь между одним или более адресов ячеек виртуального запоминающего устройства и местоположениями соответствующих данных, в физическом запоминающем устройстве или в некоторой форме носителей хранения данных. Чтобы справляться с объемами запоминающего устройства, релевантными для современных вычислительных устройств и процессов, выполняемых на них, современная таблица страниц типично состоит из нескольких иерархических уровней таблиц, при этом таблица иерархически более высокого уровня имеет записи, которые идентифицируют различную таблицу иерархически более низкого уровня, и таблица иерархически самого нижнего уровня содержит записи, которые не идентифицируют еще одну дополнительную таблицу, а вместо этого идентифицируют непосредственно адреса ячеек запоминающего устройства.[0001] Modern computing devices operate by executing computer-executable instructions from a high-speed volatile storage device in the form of random access memory (RAM), and execution of such computer-executable instructions often entails reading data from RAM. Due to cost, physical size limitations, power requirements, and other similar constraints, computing devices typically contain less RAM than is required by the processes that typically run on such computing devices. To cope with such limitations, virtual storage is used, whereby the storage that appears to be available to processes running on the computing device is larger than the physical storage layout provides. The relationship between virtual storage and physical storage is typically managed by one or more storage managers that implement, maintain, and/or access a "page table" whose information demarcates the relationship between one or more virtual storage cell addresses and corresponding data locations. , in physical storage, or in some form of storage media. To handle the storage capacities relevant to modern computing devices and the processes running on them, a modern page table typically consists of several hierarchical levels of tables, with the higher level table having entries that identify a different lower level table, and the hierarchically lowest level table contains entries that do not identify yet another additional table, but instead directly identify the addresses of the memory cells.
[0002] Из числа процессов, которые могут выполняться посредством вычислительных устройств, предусмотрены процессы, которые виртуализируют или абстрагируют базовые аппаратные средства вычислительного устройства. Такие процессы включают в себя виртуальные машины, которые могут моделировать полное базовое вычислительное устройство для процессов, выполняемых внутри виртуализированного вычислительного контекста, предоставленного посредством таких виртуальных машин. Гипервизор или аналогичный набор машиноисполняемых инструкций может упрощать инициализацию виртуальной машины посредством виртуализации или абстрагирования базовых аппаратных средств физического вычислительного устройства, вмещающего такой гипервизор. Гипервизор может поддерживать таблицу адресов второго уровня (SLAT), которая также может иерархически организовываться способом, аналогичным вышеуказанным таблицам страниц. SLAT может сохранять информацию, которая разграничивает взаимосвязь между одним или более адресов ячеек запоминающего устройства, которые выглядят местоположениями ячеек физического запоминающего устройства для процессов, выполняющихся поверх гипервизора, включающих в себя процессы, выполняющиеся внутри контекста виртуальной машины, виртуализация базовых вычислительных аппаратных средств которого упрощается посредством гипервизора, и местоположениями ячеек запоминающего устройства непосредственно для фактического физического запоминающего устройства.[0002] Of the processes that can be executed by computing devices, processes are provided that virtualize or abstract the underlying hardware of a computing device. Such processes include virtual machines that can simulate a complete underlying computing device for processes running within a virtualized computing context provided by such virtual machines. A hypervisor or similar set of machine-executable instructions may facilitate initialization of a virtual machine by virtualizing or abstracting the underlying hardware of the physical computing device hosting such a hypervisor. The hypervisor may maintain a Second Level Address Table (SLAT), which may also be hierarchically organized in a manner similar to the above page tables. The SLAT may store information that delimits a relationship between one or more storage cell addresses that appear to be physical storage cell locations for processes running on top of a hypervisor, including processes running inside a virtual machine context whose underlying computing hardware virtualization is facilitated by hypervisor, and storage cell locations directly to the actual physical storage device.
[0003] Когда процесс, выполняющийся внутри контекста виртуальной машины, например, осуществляет доступ к запоминающему устройству, могут выполняться два различных поиска. Один поиск может выполняться непосредственно в контексте виртуальной машины, чтобы коррелировать запрашиваемый адрес ячейки виртуального запоминающего устройства с адресом ячейки физического запоминающего устройства. Поскольку такой поиск выполняется непосредственно в контексте виртуальной машины, идентифицированный адрес ячейки физического запоминающего устройства представляет собой только адрес ячейки физического запоминающего устройства, воспринимаемый посредством процессов, выполняющихся внутри контекста виртуальной машины. Такой поиск может выполняться посредством диспетчера запоминающего устройства, выполняющегося внутри контекста виртуальной машины, и может осуществляться с обращением к таблице страниц, которая существует в контексте виртуальной машины. Второй поиск затем может выполняться за пределами контекста виртуальной машины. Более конкретно, адрес ячейки физического запоминающего устройства (в контексте виртуальной машины), идентифицированный посредством первого поиска, может коррелироваться с фактическим адресом ячейки физического запоминающего устройства. Такой второй поиск может влечь за собой обращение, посредством одного или более модулей обработки вычислительного устройства, к SLAT, которая может коррелировать воспринимаемые адреса ячеек физического запоминающего устройства с фактическими адресами ячеек физического запоминающего устройства.[0003] When a process running inside a virtual machine context, for example, accesses a storage device, two different lookups can be performed. One lookup may be performed directly in the virtual machine context to correlate the requested virtual storage cell address with the physical storage cell address. Because such a lookup is performed directly within the virtual machine context, the physical storage location address identified is only the address of the physical storage location as perceived by processes running within the virtual machine context. Such a lookup may be performed by a storage manager running within a virtual machine context, and may be performed by referring to a page table that exists within the virtual machine context. The second lookup can then be performed outside of the virtual machine context. More specifically, the physical storage location address (in the context of a virtual machine) identified by the first lookup may be correlated with the actual physical storage location address. Such a second lookup may entail accessing, by one or more processing units of the computing device, an SLAT that may correlate perceived physical storage cell addresses with actual physical storage cell addresses.
[0004] Как указано, как таблицы страниц, так и SLAT могут представлять собой иерархические компоновки различных иерархических уровней таблиц. Таким образом, производительность табличного поиска, независимо от того, выполняется он посредством диспетчера запоминающего устройства с обращением к таблице страниц либо выполняется посредством гипервизора с обращением к SLAT, может влечь за собой определение соответствующей записи таблицы на иерархическом самом верхнем уровне таблицы, при обращении к таблице иерархически более низкого уровня, которая идентифицируется посредством этой записи таблицы, определение соответствующей записи таблицы в этой таблице иерархически более низкого уровня, обращение к таблице иерархически еще более низкого уровня, которая идентифицируется посредством этой записи таблицы и т.д., до тех пор, пока таблица самого нижнего иерархического уровня не достигается, после чего отдельные записи этой таблицы самого нижнего иерархического уровня идентифицируют один или более конкретных адресов или диапазонов адресов непосредственно запоминающего устройства, предположительно для идентификации еще одной дополнительной таблицы. Каждая обращение к таблице иерархически более низкого уровня потребляет циклы процессора и увеличивает длительность доступа к запоминающему устройству.[0004] As indicated, both page tables and SLATs can be hierarchical arrangements of different hierarchical levels of tables. Thus, the performance of a table lookup, whether performed by the storage manager accessing the page table or performed by the hypervisor accessing the SLAT, may entail determining the corresponding table entry at the hierarchical topmost level of the table when the table is accessed. hierarchically lower level that is identified by this table entry, determining the corresponding table entry in this hierarchically lower level table, referring to the table of a still lower level hierarchically that is identified by this table entry, etc., until table of the lowest hierarchical level is not reached, whereupon the individual entries of this table of the lowest hierarchical level identify one or more specific addresses or address ranges of immediate storage, presumably to identify yet another additional table. Each access to a table in a hierarchically lower level consumes processor cycles and increases the duration of access to the storage device.
[0005] В случае доступа к запоминающему устройству из процесса, выполняющегося внутри контекста виртуальной машины, например, длительность такого доступа к запоминающему устройству может включать в себя прохождение иерархических уровней таблицы страниц, выполняемое посредством диспетчера запоминающего устройства, в контексте виртуальной машины, и, помимо этого, прохождение иерархических уровней SLAT, выполняемое посредством гипервизора. Дополнительная задержка, введенная посредством поиска, выполняемого посредством гипервизора, с обращением к SLAT, делает доступ к запоминающему устройству из процессов, выполняющихся внутри контекста виртуальной машины, либо, фактически, из любого процесса, который осуществляет доступ к запоминающему устройству через гипервизор, более неэффективным по сравнению с процессами, осуществляющими доступ к запоминающему устройству более непосредственно. Такая неэффективность может мешать пользователям достигать выгод по безопасности и других преимуществ, предоставленных посредством осуществления доступа к запоминающему устройству через гипервизор.[0005] In the case of accessing the storage device from a process executing inside a virtual machine context, for example, the duration of such access to the storage device may include traversal of the page table hierarchical levels performed by the storage manager, in the context of the virtual machine, and, in addition to of this, traversal of the hierarchical SLAT levels performed by the hypervisor. The extra latency introduced by hypervisor-based lookups with SLAT calls makes accessing the storage device from processes running inside the VM context, or, in fact, from any process that accesses the storage device through the hypervisor, more inefficient. compared to processes that access the storage device more directly. Such inefficiency may prevent users from achieving the security and other benefits provided by accessing the storage device through a hypervisor.
Сущность изобретенияThe essence of the invention
[0006] Чтобы повышать эффективность использования запоминающего устройства посредством процессов виртуальной машины, выполняющихся на вычислительном хост-устройстве, эти процессы виртуальной машины могут резервироваться посредством виртуального запоминающего устройства хоста, за счет этого обеспечивая возможность применения традиционных эффективностей виртуального запоминающего устройства к запоминающему устройству, потребляемому посредством таких процессов виртуальной машины. Чтобы увеличивать скорость, с которой иерархические уровни таблицы адресов второго уровня (SLAT) проходятся в качестве части доступа к запоминающему устройству в таком окружении, в котором гостевое физическое запоминающее устройство окружения виртуальной машины резервируется посредством виртуального запоминающего устройства, назначенного одному или более процессов, выполняющихся на вычислительном хост-устройстве, один или более иерархических уровней таблиц в SLAT могут пропускаться или иным образом не подлежать обращению, в силу этого приводя к более эффективному SLAT-прохождению и более эффективному доступу к запоминающему устройству. Хотя SLAT может заполняться корреляциями в запоминающем устройстве на иерархически более высоких уровнях таблиц, таблица страниц вычислительного хост-устройства, поддерживающая инициализацию вычислительного хост-устройства виртуального запоминающего устройства, может поддерживать соответствующий смежный набор корреляций в запоминающем устройстве на иерархически самом нижнем уровне таблицы, за счет этого обеспечивая возможность вычислительному хост-устройству откачивать страницы или иным образом манипулировать меньшими порциями запоминающего устройства. Если такое манипулирование возникает, SLAT может повторно заполняться корреляциями в запоминающем устройстве на иерархически самом нижнем уровне таблицы. С другой стороны, если хост может повторно собирать достаточно большой смежный набор небольших страниц, SLAT может снова заполняться корреляцией на иерархически более высоких уровнях таблиц, в силу этого опять приводя к более эффективному SLAT-прохождению и более эффективному доступу к запоминающему устройству. Таким образом, более эффективное SLAT-прохождение может достигаться при поддержании преимуществ по эффективности использования запоминающего устройства для резервирования процессов виртуальной машины с виртуальным запоминающим устройством вычислительного хост-устройства.[0006] In order to improve storage efficiency by virtual machine processes executing on a host computing device, these virtual machine processes can be backed up by host virtual storage, thereby allowing conventional virtual storage efficiencies to be applied to storage consumed by such virtual machine processes. To increase the rate at which hierarchical levels of the Second Level Address Table (SLAT) are traversed as part of a storage access in such an environment in which the guest physical storage of the virtual machine environment is backed up by a virtual storage assigned to one or more processes running on computing host device, one or more hierarchical levels of tables in the SLAT may be skipped or otherwise unreferenced, thereby resulting in more efficient SLAT traversal and more efficient storage access. While the SLAT may be populated with in-memory correlations at hierarchically higher table levels, a computing host page table supporting initialization of the virtual storage computing host can maintain a corresponding contiguous set of in-memory correlations at the hierarchically lower table level, by thereby allowing the computing host device to page out or otherwise manipulate smaller portions of the storage device. If such manipulation occurs, the SLAT may be repopulated with correlations in storage at the hierarchically lowest level of the table. On the other hand, if the host can reassemble a large enough contiguous set of small pages, the SLAT can repopulate with correlation at hierarchically higher table levels, thereby again resulting in more efficient SLAT traversal and more efficient storage access. Thus, more efficient SLAT traversal can be achieved while maintaining the storage efficiency advantages of redundant virtual machine processes with virtual storage of the computing host device.
[0007] Это краткое изложение сущности изобретения приведено для представления в упрощенной форме подборки концепций, которые дополнительно описаны ниже в подробном описании. Данное краткое изложение сущности изобретения не имеет намерением ни то, чтобы идентифицировать ключевые признаки или важнейшие признаки заявленного изобретения, ни то, чтобы использоваться для ограничения объем заявляемого изобретения.[0007] This Summary is provided to introduce in simplified form a selection of concepts that are further described below in the Detailed Description. This summary is not intended to identify key features or essential features of the claimed invention, nor is it intended to be used to limit the scope of the claimed invention.
[0008] Дополнительные признаки и преимущества должны становиться очевидными из нижеприведенного подробного описания, которое указывается далее со ссылкой на прилагаемые чертежи.[0008] Additional features and advantages should become apparent from the following detailed description, which is set forth with reference to the accompanying drawings.
Краткое описание чертежейBrief description of the drawings
[0009] Нижеприведенное подробное описание может лучше всего пониматься при рассмотрении вместе с прилагаемыми чертежами, из которых:[0009] The following detailed description may be best understood when viewed in conjunction with the accompanying drawings, of which:
[0010] Фиг. 1 является блок-схемой примерного вычислительного устройства;[0010] FIG. 1 is a block diagram of an exemplary computing device;
[0011] Фиг. 2 является схемой системы для примерной аппаратной и программной вычислительной системы;[0011] FIG. 2 is a system diagram for an exemplary hardware and software computing system;
[0012] Фиг. 3 является блок-схемой, иллюстрирующей терминологию, используемую в данном документе;[0012] FIG. 3 is a block diagram illustrating the terminology used in this document;
[0013] Фиг. 4 является блок-схемой последовательности операций, иллюстрирующей примерный способ для резервирования гостевого физического запоминающего устройства с виртуальным запоминающим устройством хоста;[0013] FIG. 4 is a flowchart illustrating an exemplary method for reserving guest physical storage with host virtual storage;
[0014] Фиг. 5 является блок-схемой последовательности операций способа, иллюстрирующей различные примерные действия в жизненном цикле данных в гостевом физическом запоминающем устройстве, которое резервируется посредством виртуального запоминающего устройства хоста;[0014] FIG. 5 is a flowchart illustrating various exemplary activities in the life cycle of data in a guest physical storage device that is backed up by a host virtual storage device;
[0015] Фиг. 6 является блок-схемой, иллюстрирующей примерный механизм для резервирования гостевого физического запоминающего устройства с виртуальным запоминающим устройством хоста;[0015] FIG. 6 is a block diagram illustrating an exemplary mechanism for reserving guest physical storage with host virtual storage;
[0016] Фиг. 7 является блок-схемой, иллюстрирующей примерный механизм для более эффективной трансляции между гостевым физическим запоминающим устройством и физическим запоминающим устройством хоста при резервировании гостевого физического запоминающего устройства с виртуальным запоминающим устройством хоста; и[0016] FIG. 7 is a block diagram illustrating an exemplary mechanism for more efficient translation between guest physical storage and host physical storage when reserving a guest physical storage with host virtual storage; and
[0017] Фиг. 8 является блок-схемой последовательности операций, иллюстрирующей примерный способ для более эффективной трансляции между гостевым физическим запоминающим устройством и физическим запоминающим устройством хоста при резервировании гостевого физического запоминающего устройства с виртуальным запоминающим устройством хоста.[0017] FIG. 8 is a flowchart illustrating an exemplary method for more efficient translation between guest physical storage and host physical storage when reserving a guest physical storage with host virtual storage.
Подробное описание изобретенияDetailed description of the invention
[0018] Нижеприведенное описание относится к повышению эффективности доступа к запоминающему устройству при одновременном предоставлении более эффективного использования запоминающего устройства на вычислительных устройствах, вмещающих один или более процессов виртуальной машины, которые предоставляют вычислительные окружения виртуальной машины. Чтобы повышать эффективность использования запоминающего устройства посредством процессов виртуальной машины, выполняющихся на вычислительном хост-устройстве, эти процессы виртуальной машины могут резервироваться посредством виртуального запоминающего устройства хоста, за счет этого обеспечивая возможность применения традиционных эффективностей виртуального запоминающего устройства к запоминающему устройству, потребляемому посредством таких процессов виртуальной машины. Чтобы увеличивать скорость, с которой иерархические уровни таблицы адресов второго уровня (SLAT) проходятся в качестве части доступа к запоминающему устройству в таком окружении, в котором гостевое физическое запоминающее устройство окружения виртуальной машины резервируется посредством виртуального запоминающего устройства, назначенного одному или более процессов, выполняющихся на вычислительном хост-устройстве, один или более иерархических уровней таблиц в SLAT могут пропускаться или иным образом не подлежать обращению, в силу этого приводя к более эффективному SLAT-прохождению и более эффективному доступу к запоминающему устройству. Хотя SLAT может заполняться корреляциями в запоминающем устройстве на иерархически более высоких уровнях таблиц, таблица страниц вычислительного хост-устройства, поддерживающая инициализацию вычислительного хост-устройства виртуального запоминающего устройства, может поддерживать соответствующий смежный набор корреляций в запоминающем устройстве на иерархически самом нижнем уровне таблицы, за счет этого обеспечивая возможность вычислительному хост-устройству откачивать страницы или иным образом манипулировать меньшими порциями запоминающего устройства. Если такое манипулирование возникает, SLAT может повторно заполняться корреляциями в запоминающем устройстве на иерархически самом нижнем уровне таблицы. С другой стороны, если хост может повторно собирать достаточно большой смежный набор небольших страниц, SLAT может снова заполняться корреляцией на иерархически более высоких уровнях таблиц, в силу этого опять приводя к более эффективному SLAT-прохождению и более эффективному доступу к запоминающему устройству. Таким образом, более эффективное SLAT-прохождение может достигаться при поддержании преимуществ по эффективности использования запоминающего устройства для резервирования процессов виртуальной машины с виртуальным запоминающим устройством вычислительного хост-устройства.[0018] The following description relates to improving the efficiency of storage access while providing more efficient use of storage on computing devices hosting one or more virtual machine processes that provide virtual machine computing environments. To improve storage efficiency by virtual machine processes running on a host computing device, these virtual machine processes can be backed up by host virtual storage, thereby allowing conventional virtual storage efficiencies to be applied to storage consumed by such virtual storage processes. cars. To increase the rate at which hierarchical levels of the Second Level Address Table (SLAT) are traversed as part of a storage access in such an environment in which the guest physical storage of the virtual machine environment is backed up by a virtual storage assigned to one or more processes running on computing host device, one or more hierarchical levels of tables in the SLAT may be skipped or otherwise unreferenced, thereby resulting in more efficient SLAT traversal and more efficient storage access. While the SLAT may be populated with in-memory correlations at hierarchically higher table levels, a computing host page table supporting initialization of the virtual storage computing host can maintain a corresponding contiguous set of in-memory correlations at the hierarchically lower table level, by thereby allowing the computing host device to page out or otherwise manipulate smaller portions of the storage device. If such manipulation occurs, the SLAT may be repopulated with correlations in storage at the hierarchically lowest level of the table. On the other hand, if the host can reassemble a large enough contiguous set of small pages, the SLAT can repopulate with correlation at hierarchically higher table levels, thereby again resulting in more efficient SLAT traversal and more efficient storage access. Thus, more efficient SLAT traversal can be achieved while maintaining the storage efficiency advantages of redundant virtual machine processes with virtual storage of the computing host device.
[0019] Хотя необязательно, нижеприведенное описание приводится в общем контексте машиноисполняемых инструкций, таких как программные модули, исполняющиеся посредством вычислительного устройства. Более конкретно, описание упоминает действия и символические представления операций, которые выполняются посредством одного или более вычислительных устройств или периферийных устройств, если не указано иное. По существу, следует понимать, что такие действия и операции, которые иногда упоминаются как машиноисполняемые, включают в себя манипулирование посредством модуля обработки электрическими сигналами, представляющими данные в структурированной форме. Это манипулирование преобразует данные или поддерживает их в местоположениях в запоминающем устройстве, которые переконфигурируют или иным образом изменяют работу вычислительного устройства или периферийных устройств способом, хорошо понимаемым специалистами в данной области техники. Структуры данных, в которых хранятся данные, представляют собой физические местоположения, которые имеют конкретные свойства, заданные посредством формата данных.[0019] Although optional, the following description is given in the general context of computer-executable instructions, such as program modules, executable by a computing device. More specifically, the description refers to acts and symbolic representations of operations that are performed by one or more computing devices or peripherals, unless otherwise noted. As such, it should be understood that such actions and operations, which are sometimes referred to as computer-executed, include the manipulation, by means of a processing module, of electrical signals representing data in a structured form. This manipulation transforms or maintains data in storage locations that reconfigure or otherwise change the operation of the computing device or peripherals in a manner well understood by those skilled in the art. The data structures in which data is stored are physical locations that have specific properties specified by the data format.
[0020] В общем, программные модули включают в себя процедуры, программы, объекты, компоненты, структуры данных и т.п., которые выполняют конкретные задачи или реализуют конкретные абстрактные типы данных. Кроме того, специалисты в данной области техники должны принимать во внимание, что вычислительные устройства не должны быть обязательно ограничены традиционными персональными компьютерами и включают в себя другие вычислительные конфигурации, включающие в себя серверы, карманные устройства, многопроцессорные системы, микропроцессорную или программируемую бытовую электронную аппаратуру, сетевые PC, миникомпьютеры, мэйнфреймы и т.п. Аналогично, вычислительные устройства не должны обязательно быть ограничены автономными вычислительными устройствами, поскольку механизмы также могут осуществляться на практике в распределенных вычислительных окружениях, в которых задачи выполняются посредством удаленных устройств обработки, которые связываются через сеть связи. В распределенном вычислительном окружении, программные модули могут размещаться как в локальных, так и в удаленных устройствах хранения данных.[0020] In general, program modules include procedures, programs, objects, components, data structures, and the like that perform specific tasks or implement specific abstract data types. Furthermore, those skilled in the art should appreciate that computing devices should not necessarily be limited to traditional personal computers and include other computing configurations including servers, handheld devices, multiprocessor systems, microprocessor or programmable consumer electronics, network PCs, minicomputers, mainframes, etc. Likewise, computing devices need not be limited to stand-alone computing devices, as the mechanisms may also be practiced in distributed computing environments where tasks are performed by remote processing devices that communicate through a communications network. In a distributed computing environment, program modules may reside in both local and remote storage devices.
[0021] Перед продолжением подробного описания выделения ячеек запоминающего устройства и механизмов доступа, упомянутых выше, подробное описание примерного вычислительного хост-устройства, которое предоставляет контекст для нижеприведенных описаний, содержит ссылку на примерное вычислительное устройство 100, показанное на фиг. 1. Примерное вычислительное устройство 100 может включать в себя, но не только, один или более центральных процессоров 120 (CPU), системное запоминающее устройство 130 и системную шину 121, которая соединяет различные системные компоненты, включающие в себя системное запоминающее устройство, с модулем 120 обработки. Системная шина 121 может представлять собой любой из нескольких типов шинных структур, включающих в себя шину запоминающего устройства или контроллер запоминающего устройства, периферийную шину и локальную шину с использованием любой из множества шинных архитектур. Вычислительное устройство 100 необязательно может включать в себя графические аппаратные средства, в том числе, но не только, графический аппаратный интерфейс 160 и устройство 161 отображения, которое может включать в себя устройства отображения, допускающие прием сенсорного пользовательского ввода, такие как сенсорное или мультисенсорное устройство отображения. В зависимости от конкретной физической реализации, одно или более из CPU 120, системного запоминающего устройства 130 и других компонентов вычислительного устройства 100 могут физически совместно размещаться, к примеру, на одной микросхеме. В таком случае, часть или вся системная шина 121 может представлять собой исключительно кремниевые трассы в одномикросхемной структуре, и ее иллюстрация на фиг. 1 может представлять собой исключительно удобство обозначения для целей иллюстрации.[0021] Before continuing with the detailed description of storage allocation and access mechanisms mentioned above, the detailed description of an exemplary computing host device, which provides context for the descriptions below, makes reference to the
[0022] Вычислительное устройство 100 также типично включает в себя машиночитаемые носители, которые могут включать в себя любые доступные носители, к которым может осуществляться доступ посредством вычислительного устройства 100, и включает в себя энергозависимые и энергонезависимые носители, а также съемные и стационарные носители. В качестве примера, а не ограничения, машиночитаемые носители могут содержать компьютерные носители хранения данных и среды связи. Компьютерные носители хранения данных включают в себя носители, реализованные согласно любому способу или технологии для хранения контента, такие как машиночитаемые инструкции, структуры данных, программные модули или другие данные. Компьютерные носители хранения данных включают в себя, но не только, RAM, ROM, EEPROM, флэш-память или другую технологию запоминающих устройств, CD-ROM, универсальные цифровые диски (DVD) или другое устройство хранения данных на оптических дисках, магнитные кассеты, магнитную ленту, устройство хранения данных на магнитных дисках или другие магнитные устройства хранения данных либо любой другой носитель, который может использоваться для того, чтобы сохранять требуемый контент, и к которому может осуществляться доступ посредством вычислительного устройства 100. Тем не менее, компьютерные носители хранения данных не включают в себя среды связи. Среды связи типично содержат машиночитаемые инструкции, структуры данных, программные модули или другие данные в модулированном сигнале данных, таком как несущая волна или другой транспортный механизм, и включают в себя любые носители для доставки контента. В качестве примера, а не ограничения, среды связи включают в себя проводные среды, такие как проводная сеть или прямое проводное соединение, и беспроводные среды, такие как акустические, радиочастотные (RF), инфракрасные и другие беспроводные среды. Комбинации любых из вышеперечисленных типов также следует включать в число машиночитаемых носителей.[0022]
[0023] Системное запоминающее устройство 130 включает в себя компьютерные носители хранения данных в форме энергозависимого и/или энергонезависимого запоминающего устройства, такого как постоянное запоминающее устройство 131 (ROM) и оперативное запоминающее устройство 132 (RAM). Базовая система 133 ввода/вывода (BIOS), содержащая базовые процедуры, которые помогают передавать контент между элементами в вычислительном устройстве 100, к примеру, в ходе запуска, типично сохраняется в ROM 131. RAM 132 типично содержит данные и/или программные модули, которые являются непосредственно доступными и/или в данный момент управляются посредством модуля 120 обработки. В качестве примера, а не ограничения, фиг. 1 иллюстрирует операционную систему 134, другие программные модули 135 и программные данные 136.[0023]
[0024] Вычислительное устройство 100 также может включать в себя другие съемные/стационарные, энергозависимые/энергонезависимые компьютерные носители хранения. Только в качестве примера, фиг. 1 иллюстрирует накопитель 141 на жестких дисках, который считывает или записывает из/на стационарные энергонезависимые магнитные носители. Другие съемные/стационарные, энергозависимые/энергонезависимые компьютерные носители хранения данных, которые могут использоваться с примерным вычислительным устройством, включают в себя, но не только, кассеты с магнитной лентой, карты флэш-памяти, универсальные цифровые диски, цифровую видеоленту, полупроводниковое RAM, полупроводниковое ROM и другие компьютерные носители хранения данных, заданные и разграниченные выше. Накопитель 141 на жестких дисках типично соединяется с системной шиной 121 посредством интерфейса энергонезависимого запоминающего устройства, такого как интерфейс 140.[0024]
[0025] Накопители и ассоциированные с ними компьютерные носители хранения, поясненные выше и проиллюстрированные на фиг. 1, предоставляют хранение машиночитаемых инструкций, структур данных, программных модулей и других данных для вычислительного устройства 100. На фиг. 1, например, накопитель 141 на жестких дисках проиллюстрирован как сохраняющий операционную систему 144, другие программные модули 145 и программные данные 146. Следует отметить, что эти компоненты могут быть либо идентичными, либо отличными от операционной системы 134, других программных модулей 135 и программных данных 136. Операционная система 144, другие программные модули 145 и программные данные 146 приводятся в настоящем документе с разными номерами, чтобы иллюстрировать то, что, как минимум, они представляют собой различные копии.[0025] The drives and associated computer storage media discussed above and illustrated in FIG. 1 provide storage of computer readable instructions, data structures, program modules, and other data for
[0026] Вычислительное устройство 100 может работать в сетевом окружении с использованием логических соединений с одним или более удаленных компьютеров. Вычислительное устройство 100 проиллюстрировано как соединенное с общим сетевым соединением 151 (с сетью 190) через сетевой интерфейс или адаптер 150, который, в свою очередь, соединяется с системной шиной 121. В сетевом окружении, программные модули, проиллюстрированные относительно вычислительного устройства 100 либо его частей или периферийных устройств, могут сохраняться в запоминающем устройстве одного или более других вычислительных устройств, которые функционально соединяются с вычислительным устройством 100 через общее сетевое соединение 161. Следует принимать во внимание, что показанные сетевые соединения являются примерными, и могут использоваться другие средства установления линии связи между вычислительными устройствами,.[0026]
[0027] Хотя описывается в качестве одного физического устройства, примерное вычислительное устройство 100 может представлять собой виртуальное вычислительное устройство, причем в этом случае функциональность вышеописанных физических компонентов, таких как CPU 120, системное запоминающее устройство 130, сетевой интерфейс 160 и другие аналогичные компоненты, может предоставляться посредством машиноисполняемых инструкций. Такие машиноисполняемые инструкции могут исполняться на одном физическом вычислительном устройстве или могут распределяться по нескольким физическим вычислительным устройствам, в том числе распределяться по нескольким физическим вычислительным устройствам динамическим способом таким образом, что конкретные физические вычислительные устройства, вмещающие такие машиноисполняемые инструкции, могут динамически изменяться во времени в зависимости от потребности и доступности. В ситуации, в которой примерное вычислительное устройство 100 представляет собой виртуализированное устройство, базовые физические вычислительные устройства, вмещающие такое виртуализированное вычислительное устройство, могут непосредственно содержать физические компоненты, аналогичные физическим компонентам, описанным выше, и работающие аналогично. Кроме того, виртуальные вычислительные устройства могут использоваться на нескольких уровнях, при этом одно виртуальное вычислительное устройство выполняется внутри конструкции другого виртуального вычислительного устройства. Таким образом, термин "вычислительное устройство", при использовании в данном документе, означает либо физическое вычислительное устройство, либо виртуализированное вычислительное окружение, включающее в себя виртуальное вычислительное устройство, в котором машиноисполняемые инструкции могут выполняться способом, совместимым с их выполнением посредством физического вычислительного устройства. Аналогично, термины, означающие физические компоненты вычислительного устройства, при использовании в данном документе означают либо эти физические компоненты, либо их виртуализации, выполняющие идентичные или эквивалентные функции.[0027] Although described as a single physical device,
[0028] Обращаясь к фиг. 2, система 200, показанная на нем, иллюстрирует вычислительную систему, содержащую как аппаратные средства вычислительного устройства, так и процессы, выполняющиеся в ней. Более конкретно, примерная система 200, показанная на фиг. 2, включает в себя непосредственно аппаратные средства вычислительного устройства, такие как вышеуказанные модули 120 обработки и RAM 132, проиллюстрированные в качестве части вышеописанного примерного вычислительного устройства 100. Дополнительно, примерная система 200 включает в себя гипервизор, такой как примерный гипервизор 210, который может состоять из машиноисполняемых инструкций, которые выполняются посредством примерного вычислительного устройства 100, чтобы обеспечивать возможность вычислительному устройству 100 выполнять функциональность, ассоциированную с примерным гипервизором 210. Как подробнее описано ниже, примерный гипервизор 210 может включать в себя или может обращаться к таблице адресов второго уровня (SLAT), такой как примерная SLAT 220.[0028] Referring to FIG. 2, the
[0029] Примерный гипервизор 210 может виртуализировать набор вычислительных аппаратных средств, которые могут либо быть соразмерными с аппаратными средствами вычислительного устройства 100, либо отличаться от них, что включает в себя отличия по типу и/или разрядности процессора, отличия по объему и/или типу RAM, отличия по объему и/или типу носителей хранения данных и другие аналогичные отличия. Такая виртуализация может, в числе прочего, активировать один или более процессов виртуальной машины, таких как примерные процессы 260 и 250 виртуальной машины. Гипервизор 210 может представлять, как для процессов, выполняющихся внутри контекста этих виртуальных машин, так и для любого другого процесса, выполняющегося поверх гипервизора, вероятность выполнения непосредственно на аппаратных средствах 110 вычислительного устройства. Примерная система 200, показанная на фиг. 2, иллюстрирует операционную систему, такую как примерная операционная система 240, выполняющаяся поверх примерного гипервизора 210. В свою очередь, как проиллюстрировано посредством примерной системы 200, примерная операционная система 240 может иметь выполняющиеся в ней одну одна или более машиноисполняемых прикладных программ, таких как вышеуказанные процессы 260 и 250 виртуальной машины.[0029] The
[0030] Примерная операционная система 240 может содержать различные компоненты, субкомпоненты или их аспекты, которые являются релевантными для нижеприведенных описаний. Хотя проиллюстрированы в качестве визуально различных элементов на фиг. 2, такое визуальное изображение не имеет намерение передавать конкретную вычислительную независимость, к примеру, границы процессов, независимые запоминающие хранилища либо другие аналогичные вычислительные разграничения. Один аспект операционной системы 240 может представлять собой диспетчер запоминающего устройства, такой как примерный диспетчер 241 запоминающего устройства. Более конкретно, примерный диспетчер 241 запоминающего устройства может считывать код или данные из одного или более машиночитаемых носителей хранения данных и копировать такой код или данные в запоминающее устройство, которое может поддерживаться посредством RAM 132.[0030]
[0031] При использовании в данном документе, термин "виртуальное запоминающее устройство" употребляется не со ссылкой на виртуальную машину, а вместо этого на понятие представления, для прикладных программ или других процессов, выполняющихся на вычислительном устройстве, вероятности наличия доступа к большему объему запоминающего устройства, чем физически присутствует в RAM 132. Таким образом, например, функциональность виртуального запоминающего устройства, предоставленная посредством операционной системы 240, может обеспечивать возможность загрузки кода и/или данных в запоминающее устройство, которое в конечном счете поддерживается посредством физического запоминающего устройства, такого как физическое запоминающее устройство 132, но объем которого превышает физическое запоминающее устройство. Диспетчер 241 запоминающего устройства, выполняющийся в качестве части операционной системы 240, может поддерживать, модифицировать и/или использовать таблицу 250 страниц для того, чтобы учитывать корреляцию между одним или более адресов ячеек виртуального запоминающего устройства и одним или более адресов ячеек физического запоминающего устройства. Более конкретно, таблица 250 страниц предоставляет трансляцию адресов между одной схемой адресации ячеек запоминающего устройства и другой, отличающейся схемой адресации ячеек запоминающего устройства. Чтобы добиваться этого, таблица 250 страниц может содержать несколько иерархических уровней таблиц, подробнее описанных ниже, которые могут коррелировать один или более адресов ячеек запоминающего устройства согласно одной схеме адресации ячеек запоминающего устройства, а именно, адреса ячеек виртуального запоминающего устройства, с одним или более адресов ячеек запоминающего устройства согласно другой, отличающейся схеме адресации ячеек запоминающего устройства, а именно, с адресами ячеек физического запоминающего устройства.[0031] As used herein, the term "virtual storage" is not used with reference to a virtual machine, but instead to the concept of representing, for applications or other processes running on a computing device, the likelihood of having access to more storage than is physically present in
[0032] Примерная система 200, показанная на фиг. 2, иллюстрирует прикладные программы, выполняющиеся поверх операционной системы 240. В частности, такие прикладные программы могут представлять собой прикладные программы виртуальных машин, которые могут создавать экземпляр процессов виртуальной машины, таких как примерные процессы 260 и 270 виртуальной машины. Каждый процесс виртуальной машины может создавать виртуальное вычислительное окружение, которое может вмещать собственную операционную систему, прикладные программы и другую аналогичную функциональность, которая может вмещаться физическим вычислительным окружением, таким как физическое вычислительное окружение, представленное посредством вычислительного устройства 100. В примерной системе 200, показанной на фиг. 2, примерный процесс 260 виртуальной машины проиллюстрирован как создающий окружение 261 виртуальной машины, и примерный процесс 270 виртуальной машины проиллюстрирован как создающий окружение 271 виртуальной машины. Примерное окружение 271 виртуальной машины проиллюстрировано как вмещающее операционную систему, в форме примерной операционной системы 281, которая может быть аналогичной примерной операционной системе 240 или может представлять собой другой тип операционной системы. Для целей иллюстрации, примерная операционная система 281, выполняющаяся внутри примерного окружения 271 виртуальной машины, проиллюстрирована как содержащая диспетчер запоминающего устройства, а именно, примерный диспетчер 282 запоминающего устройства, который, в свою очередь, обращается к таблице страниц, а именно, к примерной таблице 283 страниц для того, чтобы предоставлять виртуальное запоминающее устройство в окружении 271 виртуальной машины. Такое виртуальное запоминающее устройство в окружении 271 виртуальной машины может использоваться посредством процессов, выполняющихся поверх примерной операционной системы 281, таких как примерные процессы 291 и 292, которые проиллюстрированы на фиг. 2 как также выполняющиеся внутри примерного окружения 271 виртуальной машины.[0032] The
[0033] Способом, аналогичным способу, реализованному посредством диспетчеров 241 и 282 запоминающего устройства, гипервизор 210, в упрощении представления виртуального набора вычислительных аппаратных средств, включающих в себя запоминающее устройство, может аналогично транслировать адреса ячеек запоминающего устройства из одной схемы адресации ячеек запоминающего устройства в другую, отличающуюся схему адресации ячеек запоминающего устройства. Более конкретно, гипервизор 210 может транслировать адреса ячеек запоминающего устройства, которые представляются посредством гипервизора 210 в качестве адресов ячеек физического запоминающего устройства, в фактические адреса ячеек физического запоминающего устройства, такие как, например, адреса ячеек запоминающего устройства, которые идентифицируют физические местоположения в запоминающем устройстве 132. Такая трансляция может выполняться с обращением к другой иерархически организованной таблице, а именно, к SLAT 220, которая также может предоставлять трансляцию адресов ячеек запоминающего устройства между одной схемой адресации ячеек запоминающего устройства, в этом случае адресов, которые воспринимаются посредством процессов, выполняющихся поверх гипервизора 210, в качестве адресов ячеек физического запоминающего устройства, и другой, отличающейся схемой адресации ячеек запоминающего устройства, а именно, в этом случае, фактических адресов ячеек физического запоминающего устройства.[0033] In a manner similar to that implemented by the storage device managers 241 and 282, the
[0034] Согласно одному аспекту, виртуальное запоминающее устройство, предоставленное посредством операционной системы 240, может использоваться для того, чтобы резервировать физическое запоминающее устройство виртуальной машины вместо использования выделений ячеек физического запоминающего устройства без подкачки страниц на вычислительном хост-устройстве. Это обеспечивает возможность диспетчеру 241 запоминающего устройства управлять физическим запоминающим устройством хоста, ассоциированным с гостевым физическим запоминающим устройством. В частности, логика управления запоминающим устройством, которая уже существует на хосте, такая как диспетчер 241 запоминающего устройства, теперь может использоваться для того, чтобы управлять физическим запоминающим устройством гостевых виртуальных машин. Это позволяет обеспечивать возможность использования меньшего гипервизора, с точки зрения объема кода, используемого для того, чтобы реализовывать гипервизор, такой как примерный гипервизор 210. Меньший гипервизор может быть более защищенным, поскольку предусмотрен меньшей объем кода, который может использоваться, либо который может иметь ошибки. Дополнительно, это обеспечивает увеличенную плотность виртуальных машин на хосте, поскольку меньшее физическое запоминающее устройство хоста может использоваться для того, чтобы реализовывать виртуальные машины. Например, ранее, поскольку процесс виртуальной машины требует запоминающего устройства без подкачки страниц, если примерное вычислительное устройство 100 содержит 3 ГБ RAM 132, то он может только вмещать один процесс виртуальной машины, который создает виртуальную машину, имеющую 2 ГБ RAM. В отличие от этого, если запоминающее устройство, потребляемое посредством процесса виртуальной машины, такого как примерный процесс 270 виртуальной машины, представляет собой виртуальное запоминающее устройство, такое как виртуальное запоминающее устройство, предоставленное посредством диспетчера 241 запоминающего устройства операционной системы 240, то пространство виртуального запоминающего устройства в 4 ГБ может предоставлять поддержку для двух процессов виртуальной машины, каждый из которых создает виртуальную машину, имеющую 2 ГБ RAM. Таким образом, примерное вычислительное устройство 100 может вмещать два процесса виртуальной машины, вместо только одного, за счет этого увеличивая плотность процессов виртуальной машины, выполняющихся на примерном вычислительном устройстве 100.[0034] According to one aspect, the virtual storage provided by the
[0035] Другие преимущества включают в себя одну кодовую базу управления запоминающим устройством, управляющую всем запоминающим устройством в системе (в хост- и в виртуальной машине). Таким образом, улучшения, исправления и/или настройка одной кодовой базы обеспечивают преимущества для всех. Дополнительно, это может приводить к уменьшению затрат на инженерно-техническое обеспечение вследствие необходимости поддерживать только одну кодовую базу. Другое примерное преимущество может заключаться в том, что виртуальные машины могут сразу извлекать выгоду из улучшений по плотности, таких как подкачка страниц, совместное использование страниц, тренировка и подстройка рабочих наборов, кластеризация отказов и т.д. Другое примерное преимущество может заключаться в том, что лимиты потребления виртуального запоминающего устройства и физического запоминающего устройства могут задаваться на виртуальных машинах идентично любому другому процессу, обеспечивая для администраторов способность управлять поведением системы. Другое примерное преимущество может заключаться в том, что дополнительные признаки могут добавляться в диспетчер запоминающего устройства хоста для того, чтобы предоставлять большую производительность, плотность и функциональность для виртуальных машин (и другие рабочие нагрузки не для виртуальных машин с большой вероятностью также должны извлекать выгоду из них).[0035] Other advantages include a single storage management codebase managing all of the storage in the system (host and virtual machine). Thus, improvements, fixes, and/or tweaks to one codebase provide benefits for everyone. Additionally, this may result in reduced engineering costs due to the need to maintain only one codebase. Another exemplary benefit could be that VMs can immediately benefit from density improvements such as paging, page sharing, working set training and tuning, failure clustering, and so on. Another exemplary advantage may be that virtual storage and physical storage consumption limits can be set on virtual machines identically to any other process, providing administrators with the ability to control system behavior. Another exemplary benefit would be that additional features can be added to the host storage manager in order to provide greater performance, density, and functionality for virtual machines (and other non-virtual machine workloads are likely to benefit from them as well). ).
[0036] Обращаясь к фиг. 3, система 300 иллюстрирует терминологию, используемую в данном документе для того, чтобы упоминать несколько уровней таблиц страниц и соответствующих схем адресации ячеек запоминающего устройства, которые являются применимыми к системе 200, показанной на фиг. 2. Более конкретно, в окружении 271 виртуальной машины, примерный диспетчер 282 запоминающего устройства может обращаться к таблице 283 страниц для того, чтобы коррелировать адреса ячеек виртуального запоминающего устройства, в контексте окружения 271 виртуальной машины, в адреса ячеек физического запоминающего устройства, снова, в контексте окружения 271 виртуальной машины. Как указано выше, термин "виртуальное запоминающее устройство" означает не запоминающее устройство в окружении виртуальной машины, а вместо этого объем запоминающего устройства, доступного для процессов, выполняющихся на вычислительном устройстве, которое поддерживается посредством, но превышает емкость физического запоминающего устройства. Таким образом, чтобы номинативно отличать между виртуальным запоминающим устройством в окружении виртуальной машины и виртуальным запоминающим устройством в невиртуализированном (или без программного обеспечения) вычислительном окружении, используются прилагательные "гостевой" и "хост-", при этом прилагательное "гостевой" указывает вычислительное окружение виртуальной машины, а прилагательное "хост-" указывает вычислительное окружение без программного обеспечения, в котором выполняется процесс виртуальной машины, который предоставляет окружение виртуальной машины.[0036] Referring to FIG. 3, system 300 illustrates the terminology used herein to refer to multiple levels of page tables and corresponding memory cell addressing schemes that are applicable to
[0037] По сути, и как проиллюстрировано в системе 301, адреса в схеме адресации ячеек "гостевого виртуального запоминающего устройства 311" могут коррелироваться с адресами в схеме адресации ячеек "гостевого физического запоминающего устройства 312" посредством таблицы 283 страниц в окружении 271 виртуальной машины, которое показано на фиг 2. Аналогично, адреса в схеме адресации ячеек "виртуального запоминающего устройства хоста 321" могут коррелироваться с адресами в схеме адресации ячеек "физического запоминающего устройства хоста 322" посредством таблицы 250 страниц, которая представляет собой часть примерной операционной системы 240, которая показана на фиг 2 как выполняющаяся в невиртуальном вычислительном окружении. Хотя не проиллюстрировано посредством примерной системы 301 на фиг. 3, согласно одному аспекту и как подробнее описано ниже, гостевое физическое запоминающее устройство 312 окружения виртуальной машины может резервироваться посредством виртуального запоминающего устройства хоста 321, за счет этого предоставляя вышеуказанные преимущества. Такое резервирование гостевого физического запоминающего устройства 312 с виртуальным запоминающим устройством хоста 321 может влечь за собой модификацию SLAT 220, которая предоставляет трансляцию между схемой адресации ячеек "гостевого физического запоминающего устройства 312" и схемой адресации ячеек "физического запоминающего устройства хоста 322", как проиллюстрировано посредством примерной системы 301.[0037] As such, and as illustrated in
[0038] Обращаясь к системе 302, также показанной на фиг. 3, проиллюстрирована иерархическая компоновка таблиц, к примеру, которая может использоваться для того, чтобы реализовывать примерную таблицу 250 страниц, примерную таблицу 283 страниц и/или примерную SLAT 220. Чтобы справляться с объемами запоминающего устройства, применимыми к современным вычислительным устройствам и процессам прикладной программы, таблицы 250, 283 страниц и/или SLAT 220 должны иметь несколько, типично четыре, уровней иерархических таблиц. Тем не менее, для простоты иллюстрации система 302 иллюстрирует только два уровня иерархических таблиц. Таблица 340 иерархически более высокого уровня может содержать несколько записей таблицы, таких как примерные записи 341, 342, 343 и 344 таблицы. Например, таблица 340 иерархически более высокого уровня может иметь размер в 4 КБ и может содержать 512 дискретных записей таблицы, которые могут иметь размер в восемь байтов. Каждая запись таблицы может содержать указатель или другой аналогичный идентификатор таблицы иерархически более низкого уровня, такой как одна из примерных таблиц 350 и 360 иерархически более низкого уровня. Таким образом, например, примерная запись 341 таблицы может содержать идентификацию примерной таблицы 350 иерархически более низкого уровня, как проиллюстрировано посредством стрелки 371. Если таблица 340 иерархически более высокого уровня имеет размер в 4 КБ, и каждая запись таблицы имеет размер в восемь байтов, по меньшей мере, некоторые из этих восьми байтов данных могут представлять собой указатель либо другой аналогичный идентификатор таблицы 350 иерархически более низкого уровня. Примерная запись 342 таблицы, аналогичным образом, может содержать идентификацию таблицы 360 иерархически более низкого уровня, как проиллюстрировано посредством стрелки 372. Каждая из оставшихся дискретных записей таблицы для примерной таблицы 340 иерархически более высокого уровня, аналогично, может идентифицировать уникальные таблицы иерархически более низкого уровня. Таким образом, в примере, в котором таблица 340 иерархически более высокого уровня имеет размер в 4 КБ и содержит 512 записей таблицы, каждая из которых иметь размер в восемь байтов, такая таблица 340 иерархически более высокого уровня может содержать 512 идентификаций 512 уникальных иерархических таблиц более низкого уровня, таких как примерные таблицы 350 и 360 иерархически более низкого уровня.[0038] Referring to
[0039] Каждая из таблиц иерархически более низкого уровня, аналогичным способом, может содержать отдельные записи таблицы. Например, примерная таблица 350 иерархически более низкого уровня может содержать примерные записи 251, 352, 353 и 354 таблицы. Аналогично, примерная таблица 360 иерархически более низкого уровня может содержать записи 361, 362, 363 и 364 таблицы. В качестве одного примера, каждая из таблиц иерархически более низкого уровня может иметь эквивалентный размер и структуру с таблицей 340 иерархически более высокого уровня. Таким образом, примерная таблица 350 иерархически более низкого уровня может иметь размер в 4 КБ и может содержать 512 записей таблицы, таких как примерные записи 351, 352, 353 и 354 таблицы, которые могут иметь размер в восемь байтов. В примере, проиллюстрированном посредством системы 302, записи таблицы для таблиц иерархически более низкого уровня, такие как, например, примерные записи 351, 352, 353 и 354 таблицы для примерной таблицы 350 иерархически более низкого уровня, могут идентифицировать непрерывный диапазон адресов ячеек запоминающего устройства. Например, примерная запись 351 таблицы может идентифицировать диапазон адресов 371 ячеек запоминающего устройства, как проиллюстрировано посредством стрелки 391. Диапазон адресов 371 ячеек запоминающего устройства может содержать "страницу" запоминающего устройства и может составлять наименьший отдельно управляемый объем запоминающего устройства. Таким образом, такие действия, как перемещение информации, сохраненной в энергозависимом запоминающем устройстве, временно на энергонезависимые носители хранения данных или наоборот, в качестве части активации объема виртуального запоминающего устройства, который превышает объем установленного физического запоминающего устройства, могут выполняться на постраничной основе. Дополнительно, разрешения на доступ могут устанавливаться на постраничной основе. Например, поскольку диапазон запоминающего устройства 371 отдельно идентифицируется посредством записи 351 таблицы, разрешения на доступ могут применяться ко всем адресам ячеек запоминающего устройства в диапазоне запоминающего устройства 371. С другой стороны, разрешения на доступ адресов ячеек запоминающего устройства в диапазоне запоминающего устройства 371 могут быть независимыми от разрешений на доступ, устанавливаемых для диапазона запоминающего устройства 372, которое может уникально идентифицироваться посредством другой записи таблицы, а именно, записи 352 таблицы, как проиллюстрировано посредством стрелки 392.[0039] Each of the tables of the hierarchically lower level, in a similar way, may contain separate table entries. For example, exemplary hierarchically lower table 350 may contain
[0040] Объем запоминающего устройства на одной странице запоминающего устройства, такой как диапазон запоминающего устройства 371, может зависеть от различных факторов, включающих в себя конструкцию процессора и другие аппаратные факторы, а также соединения связи и т.п. В одном примере, страница запоминающего устройства, такая как страница, представленная посредством диапазона запоминающего устройства 371, может иметь размер в 4 КБ.[0040] The storage capacity per page of the storage device, such as the range of the storage device 371, may depend on various factors including processor design and other hardware factors, as well as communication connections, and the like. In one example, a page of a storage device, such as the page represented by a range of storage device 371, may be 4 KB in size.
[0041] При приеме запроса на то, чтобы осуществлять доступ к местоположениям ячеек запоминающего устройства, идентифицированным посредством одного или более адресов ячеек запоминающего устройства, может идентифицироваться запись таблицы в таблице иерархически более высокого уровня, которая соответствует диапазону адресов ячеек запоминающего устройства, который включает в себя адреса ячеек запоминающего устройства, к которым должен осуществляться доступ. Например, если адреса ячеек запоминающего устройства, к которым осуществляется доступ, включаются в запоминающее устройство, представленное посредством запоминающего устройства 371, запись 341 таблицы может идентифицироваться в таблице 340 иерархически более высокого уровня. Идентификация записи 341 таблицы, в свою очередь, может приводить к идентификации таблицы 350 иерархически более низкого уровня. В таблице 350 иерархически более низкого уровня адреса ячеек запоминающего устройства, к которым должен осуществляться доступ, могут определяться в качестве части запоминающего устройства, которая идентифицируется посредством записи 351 таблицы. Информация в записи 351 таблицы затем может идентифицировать запоминающее устройство 371, искомое для доступа.[0041] Upon receipt of a request to access storage cell locations identified by one or more memory cell addresses, a table entry in a hierarchically higher table can be identified that corresponds to a range of memory cell addresses that includes the addresses of the memory cells to be accessed. For example, if the addresses of storage cells that are accessed are included in the storage device represented by the storage device 371, the
[0042] Каждое такое прохождение по иерархически более низкому уровню таблицы страниц может увеличивать задержку между приемом запроса на то, чтобы осуществлять доступ к запоминающему устройству, и возвратом доступа к этому запоминающему устройству. Согласно одному аспекту, запись таблицы для таблицы иерархически более высокого уровня, такая как, например, примерная запись 341 таблицы для таблицы 340 иерархически более высокого уровня, может идентифицировать не таблицу иерархически более низкого уровня, такую как примерная таблица 350 иерархически более низкого уровня, а вместо этого страницу запоминающего устройства, которая может соответствовать всему диапазону запоминающего устройства, который должен идентифицироваться посредством записей таблицы в таблице иерархически более низкого уровня. Таким образом, например, если каждая страница запоминающего устройства 371, 372 и 373, идентифицированного посредством отдельных записей 351, 352 и 353 таблицы для таблицы 350 иерархически более низкого уровня, имеет размер в 4 КБ, то диапазон запоминающего устройства с размером в 2 МБ может идентифицироваться посредством комбинированного количества всех отдельных записей таблицы для таблицы 350 иерархически более низкого уровня, поскольку примерная таблица 350 иерархически более низкого уровня может содержать 512 записей таблицы, каждая из которых идентифицирует диапазон запоминающего устройства с размером в 4 КБ. В таком примере, если все 2 МБ запоминающего устройства обрабатываются в качестве одной страницы запоминающего устройства в 2 МБ, такая одна большая страница запоминающего устройства может идентифицироваться непосредственно посредством примерной записи 341 таблицы для таблицы 340 иерархически более высокого уровня. В таком случае, поскольку примерная запись 341 таблицы должна непосредственно идентифицировать одну страницу запоминающего устройства в 2 МБ, такую как примерная страница 370 запоминающего устройства в 2 МБ, и не должна идентифицировать таблицу иерархически более низкого уровня, не возникает необходимости вообще обращаться к таблицам иерархически более низкого уровня. Например, если таблица страниц или SLAT содержит четыре иерархических уровня, использование большой страницы запоминающего устройства, такой как примерная большая страница 370 запоминающего устройства, должно обеспечивать возможность одному из этих иерархических уровней таблиц пропускаться и не подлежать обращению, за счет этого предоставляя трансляцию адресов ячеек запоминающего устройства между виртуальным и физическим запоминающим устройством посредством обращения только к трем иерархическим уровням таблиц, вместо четырех, предоставляя доступ к запоминающему устройству более эффективно, а именно, на 25% более эффективно.. Поскольку страница составляет наименьший объем отдельно управляемого запоминающего устройства, если страница запоминающего устройства с размером в 2 МБ используется, то разрешения на доступ к запоминающему устройству, например, могут быть идентичными для всех 2 МБ запоминающего устройства в такой большой странице запоминающего устройства.[0042] Each such traversal of the hierarchically lower level of the page table may increase the delay between receiving a request to access a storage device and returning access to that storage device. In one aspect, a table entry for a hierarchically higher table, such as, for example,
[0043] В качестве дополнительного примера, если предусмотрена иерархически организованная таблица, которая находится иерархически выше примерной таблицы 340, и каждая запись в примерной таблице 340, такая как записи 341, 342, 343 и 344, может адресовать страницу запоминающего устройства в 2 МБ, такую как примерная страница 370 запоминающего устройства в 2 МБ, то 512 таких отдельных записей таблицы при агрегировании вместе могут адресовать 1 ГБ запоминающего устройства. Если одна страница запоминающего устройства в 1 ГБ использована, обращение к таблице 340 и последующее обращение к таблице иерархически более низкого уровня, такой как примерная таблица 350, могут исключаться. Возвращаясь к примеру, в котором таблица страниц или SLAT содержит четыре иерархических уровня, использование такой огромной страницы запоминающего устройства должно обеспечивать возможность двум из этих иерархических уровней таблиц пропускаться и не подлежать обращению, за счет этого предоставляя трансляцию адресов ячеек запоминающего устройства между виртуальным и физическим запоминающим устройством посредством обращения только к иерархическим уровням таблиц, вместо четырех, предоставляя доступ к запоминающему устройству приблизительно за половину времени. С другой стороны, поскольку страница составляет наименьший объем отдельно управляемого запоминающего устройства, если страница запоминающего устройства с размером в 1 ГБ используется, то разрешения на доступ к запоминающему устройству, например, могут быть идентичными для всего 1 ГБ запоминающего устройства в такой огромной странице запоминающего устройства.[0043] As a further example, if a hierarchically organized table is provided that is hierarchically above exemplary table 340, and each entry in exemplary table 340, such as
[0044] Термин "большая страница запоминающего устройства", при использовании в данном документе, означает непрерывный диапазон запоминающего устройства, который имеет такой размер, что он охватывает все диапазоны запоминающего устройства, которые должны идентифицироваться посредством одной таблицы на иерархически самом нижнем уровне, и может уникально и непосредственно идентифицироваться посредством одной записи таблицы для таблицы на один иерархический уровень выше таблицы иерархически самого нижнего уровня. В конкретном примере установления размеров, предоставленном выше, "большая страница запоминающего устройства", при задании этого термина в данном документе, должна представлять собой страницу запоминающего устройства с размером в 2 МБ. Тем не менее, как указано, термин "большая страница запоминающего устройства" не означает конкретный размер, и вместо этого объем запоминающего устройства в "большой странице запоминающего устройства" зависит от иерархического проектирования непосредственно таблицы страниц и объема запоминающего устройства, к которому обращаются посредством каждой записи таблицы на иерархически самом нижнем уровне таблицы страниц.[0044] The term "large storage page", as used herein, means a contiguous storage range that is of such a size that it covers all storage ranges to be identified by a single table at the hierarchically lowest level, and may be uniquely and directly identifiable by one table entry for the table one hierarchical level above the table of the hierarchically lowest level. In the specific sizing example provided above, "large storage page", as the term is defined herein, should be a 2 MB storage page. However, as stated, the term "large storage page" does not imply a specific size, and instead the amount of storage in a "large storage page" depends on the hierarchical design of the page table itself and the amount of storage accessed by each entry. tables at the hierarchically lowest level of the page table.
[0045] Аналогичным образом, термин "огромная страница запоминающего устройства", при использовании в данном документе, означает непрерывный диапазон запоминающего устройства, который имеет такой размер, что он охватывает все диапазоны запоминающего устройства, которые должны идентифицироваться посредством одной таблицы на иерархически втором снизу уровне, и может уникально и непосредственно идентифицироваться посредством одной записи таблицы для таблицы на один иерархический уровень выше таблицы иерархически второго самого нижнего уровня. В конкретном примере установления размеров, предоставленном выше, "огромная страница запоминающего устройства", при использовании этого термина в данном документе, должна представлять собой страницу запоминающего устройства с размером в 1 ГБ. С другой стороны, как указано, термин "огромная страница запоминающего устройства" не означает конкретный размер, и вместо этого объем запоминающего устройства в "огромной странице запоминающего устройства" зависит от иерархического проектирования непосредственно таблицы страниц и объема запоминающего устройства, к которому обращаются посредством каждой записи таблицы на иерархически самом нижнем уровне таблицы страниц.[0045] Similarly, the term "huge storage page", as used herein, means a contiguous storage range that is sized to cover all storage ranges to be identified by a single table at the hierarchically second-lowest level. , and can be uniquely and directly identified by a single table entry for a table one hierarchical level above the table of the hierarchically second lowest level. In the specific sizing example provided above, a "huge storage page", as that term is used herein, would be a 1 GB storage page. On the other hand, as stated, the term "storage giant page" does not mean a specific size, and instead the storage space in the "storage giant page" depends on the hierarchical design of the page table itself and the storage space accessed by each entry. tables at the hierarchically lowest level of the page table.
[0046] Возвращаясь к фиг. 2, описания механизмов, посредством которых виртуальное запоминающее устройство хоста (вычислительного хост-устройства) может использоваться для того, чтобы резервировать гостевое физическое запоминающее устройство (виртуальной машины), предоставляются со ссылкой на стек виртуализации, такой как примерный стек 230 виртуализации, показанный на фиг. 2. Процесс пользовательского режима может выполняться на вычислительном хост-устройстве, чтобы предоставлять виртуальное запоминающее устройство для резервирования гостевых виртуальных машин. Один такой процесс пользовательского режима может создаваться для каждой гостевой машины. Альтернативно, один процесс пользовательского режима может использоваться для нескольких виртуальных машин, либо несколько процессов могут использоваться для одной виртуальной машины. Альтернативно, виртуальное запоминающее устройство может реализовываться способами, отличающимися от использования процесса пользовательского режима, как проиллюстрировано ниже. Для целей иллюстрации, виртуальное запоминающее устройство, назначенное процессу 270 виртуальной машины, может использоваться для того, чтобы резервировать гостевое физическое запоминающее устройство, представленное посредством процесса 270 виртуальной машины в окружении 271 виртуальной машины, и, аналогично, виртуальное запоминающее устройство, назначенное процессу 260 виртуальной машины, может использоваться для того, чтобы резервировать гостевое физическое запоминающее устройство, представленное посредством процесса 260 виртуальной машины в окружении 261 виртуальной машины. Хотя иллюстрируется по сути в примерной системе 200 по фиг. 2, вышеуказанный процесс пользовательского режима может быть отдельным от процессов виртуальной машины, таких как примерные процессы 260 и 270 виртуальной машины.[0046] Returning to FIG. 2, descriptions of the mechanisms by which a host (computing host device) virtual storage device can be used to reserve a guest physical storage device (virtual machine) are provided with reference to a virtualization stack, such as the
[0047] Согласно одному аспекту, стек виртуализации, такой как примерный стек 230 виртуализации, может выделять виртуальное запоминающее устройство хоста в адресном пространстве указанного процесса пользовательского режима, который должен вмещать виртуальную машину, такого как примерный процесс 260 или 270 виртуальной машины. Диспетчер 241 запоминающего устройства хоста может обрабатывать это запоминающее устройство в качестве любого другого виртуального выделения, что означает то, что оно может подвергаться подкачке страниц, физическая страница, резервирующая его, может изменяться для целей удовлетворения выделениям смежных ячеек запоминающего устройства в другом месте в системе, физические страницы могут совместно использоваться с другим виртуальным выделением в другом процессе (которое, в свою очередь, может представлять собой другое выделение резервирования виртуальной машины либо любое другое выделение в системе). Одновременно, множество оптимизаций являются возможными, чтобы заставлять диспетчер запоминающего устройства хоста обрабатывать виртуальные выделения резервирования виртуальной машины конкретным требуемым образом. Кроме того, если стек 230 виртуализации выбирает приоритезацию производительности выше плотности, он может выполнять множество операций, поддерживаемых посредством диспетчера 241 запоминающего устройства операционной системы, таких как блокировка страниц в запоминающем устройстве, чтобы обеспечивать то, что виртуальная машина не должна подвергаться подкачке страниц для этих частей. Аналогично, большие страницы могут использоваться для того, чтобы предоставлять еще большую производительность для виртуальной машины, как подробнее описано ниже.[0047] In one aspect, a virtualization stack, such as
[0048] Данная виртуальная машина может резервировать все свои адреса ячеек гостевого физического запоминающего устройства в гостевом физическом запоминающем устройстве посредством виртуального запоминающего устройства хоста, либо может резервировать некоторые свои адреса ячеек гостевого физического запоминающего устройства в гостевом физическом запоминающем устройстве посредством виртуального запоминающего устройства хоста, а некоторые - посредством унаследованных механизмов, таких как выделения ячеек физического запоминающего устройства без подкачки страниц, выполняемые из физического запоминающего устройства хоста.[0048] A given virtual machine may reserve all of its guest physical storage cell addresses in the guest physical storage device via the host virtual storage device, or may reserve some of its guest physical storage cell addresses in the guest physical storage device via the host virtual storage device, and some through legacy mechanisms, such as non-paging physical storage cell allocations performed from the host's physical storage.
[0049] Когда новая виртуальная машина создается, стек 230 виртуализации может использовать процесс пользовательского режима для того, чтобы организовывать выделение ячеек виртуального запоминающего устройства для того, чтобы резервировать гостевое физическое запоминающее устройство. Он может представлять собой новый созданный пустой процесс, существующий процесс, вмещающий несколько виртуальных машин, либо процесс в расчет на виртуальную машину, который также содержит другие связанные с виртуальной машиной виртуальные выделения, которые не являются видимыми для самой виртуальной машины (например, структуры данных стека виртуализации). Также является возможным использовать виртуальное адресное пространство ядра для того, чтобы резервировать виртуальную машину. После того как такой процесс находится или создается, стек 230 виртуализации может выполнять частное виртуальное выделение ячеек запоминающего устройства (либо преобразование секций/файлов) в своем адресном пространстве, которое соответствует объему гостевого физического запоминающего устройства, которое должна иметь виртуальная машина. В частности, виртуальное запоминающее устройство может представлять собой частное выделение, преобразование файлов, преобразование секций с резервированием с помощью файла подкачки страниц либо любой другой тип выделения, поддерживаемого посредством диспетчера 241 запоминающего устройства хоста. Оно не должно обязательно представлять собой одно смежное выделение, хотя, как подробнее описано ниже, такое выделение может предоставлять преимущества по скорости доступа. Такое выделение, вместо этого, может представлять собой произвольное число выделений.[0049] When a new virtual machine is created, the
[0050] После того как выделения ячеек виртуального запоминающего устройства выполнены, они могут регистрироваться в компонентах, которые должны управлять физическим адресным пространством виртуальной машины, таким как примерное окружение 271 виртуальной машины, и сохранять его синхронно со страницами физического запоминающего устройства хоста, которые диспетчер 241 запоминающего устройства хоста должен выбирать для того, чтобы резервировать выделения ячеек виртуального запоминающего устройства. Эти компоненты могут представлять собой гипервизор 210 и стек 230 виртуализации, который может реализовываться как часть хост-ядра и/или драйвера. Гипервизор 210 может управлять трансляцией между диапазонами адресов ячеек гостевого физического запоминающего устройства и соответствующими диапазонами адресов ячеек физического запоминающего устройства хоста посредством использования SLAT 220. В частности, стек 230 виртуализации может обновлять SLAT 220 со страницами физического запоминающего устройства хоста, которые резервируют соответствующие страницы гостевого физического запоминающего устройства. Гипервизор 210 может обеспечивать доступность способности стека 230 виртуализации принимать перехваты, когда определенный тип доступа выполняется посредством гостевой виртуальной машины, такой как примерная виртуальная машина 271, для данного адреса ячейки гостевого физического запоминающего устройства. Например, стек 230 виртуализации может запрашивать возможность принимать перехват, когда определенный физический адрес записывается посредством гостевой виртуальной машины 271.[0050] Once allocations of virtual storage cells are made, they can be registered with components that need to manage the virtual machine's physical address space, such as an exemplary
[0051] Согласно одному аспекту, когда виртуальная машина, такая как примерная виртуальная машина 271, сначала создается, SLAT 220 может не содержать действительные записи, соответствующие такой виртуальной машине, поскольку адреса ячеек физического запоминающего устройства хоста могут не выделяться для того, чтобы резервировать адреса ячеек гостевого физического запоминающего устройства такой виртуальной машины (хотя, как проиллюстрировано ниже, в некоторых вариантах осуществления, SLAT 220 может заранее заполняться для некоторых адресов ячеек гостевого физического запоминающего устройства во время или приблизительно во время создания виртуальной машины 271). Гипервизор 210 может иметь сведения по диапазонам адресов ячеек гостевого физического запоминающего устройства, которые используются посредством виртуальной машины 27, но ни один из них не должен резервироваться посредством любого физического запоминающего устройства хоста в этот момент. Когда процесс 270 виртуальной машины начинает выполнение, он может начинать осуществлять доступ к своим страницам (гостевого) физического запоминающего устройства. По мере того, как к каждому новому адресу ячейки физического запоминающего устройства осуществляется доступ, он может формировать перехват соответствующего типа (для считывания/записи/выполнения), поскольку соответствующая SLAT-запись еще не заполняется с соответствующими адресами ячеек физического запоминающего устройства хоста. Гипервизор 210 может принимать перехват гостевого доступа и может перенаправлять его в стек 230 виртуализации. В свою очередь, стек 230 виртуализации может обращаться к структуре данных, поддерживаемой посредством стека 230 виртуализации, с тем чтобы находить диапазон адресов ячеек виртуального запоминающего устройства хоста, который соответствует запрашиваемому диапазону адресов ячеек гостевого физического запоминающего устройства (и хост-процессу, из виртуального адресного пространства которого выделено резервирование, такому как примерный процесс 270 виртуальной машины). В этот момент, стек 230 виртуализации может знать конкретный адрес ячейки виртуального запоминающего устройства хоста, который соответствует адресу ячейки гостевого физического запоминающего устройства, который формирует перехват.[0051] According to one aspect, when a virtual machine, such as exemplary
[0052] Стек 230 виртуализации затем может выдавать виртуальный отказ в диспетчер 241 запоминающего устройства хоста в контексте процесса, вмещающего диапазон виртуальных адресов, к примеру, процесс 270 виртуальной машины. Виртуальный отказ может выдаваться с соответствующим типом доступа (для считывания/записи/выполнения) исходного перехвата, который возникает, когда виртуальная машина 271 осуществляет доступ к своему физическому адресу в гостевом физическом запоминающем устройстве. Виртуальный отказ может выполнять аналогичный или идентичный путь выполнения кода с тем, которому должен следовать регулярный отказ в силу отсутствия страницы, чтобы обеспечивать действительность и доступность указанного виртуального адреса посредством хост-CPU. Одно отличие может заключаться в том, что путь выполнения кода виртуального отказа может возвращать номер физической страницы, который диспетчер 241 запоминающего устройства использует для того, чтобы обеспечивать действительность виртуального адреса. Этот номер физической страницы может представлять собой адрес ячейки физического запоминающего устройства хоста, который резервирует виртуальный адрес хоста, который, в свою очередь, резервирует адрес ячейки гостевого физического запоминающего устройства, который первоначально формирует перехват доступа в гипервизоре 210. В этот момент, стек 230 виртуализации может формировать или обновлять запись таблицы в SLAT 220, соответствующей исходному адресу ячейки гостевого физического запоминающего устройства, который формирует перехват с адресом ячейки физического запоминающего устройства хоста и типом доступа (для считывания/записи/выполнения), который использован для того, чтобы обеспечивать действительность виртуального адреса в хосте. После того как это выполняется, адрес ячейки гостевого физического запоминающего устройства может быть немедленно доступным с этим типом доступа для гостевой виртуальной машины 271. Например, параллельный виртуальный процессор в гостевой виртуальной машине 271 может немедленно осуществлять доступ к такому адресу без осуществления перехвата. Исходная обработка перехватов может быть закончена, и исходный виртуальный процессор, который формирует перехват, может повторно выполнять свою инструкцию и переходить к осуществлению доступа к запоминающему устройству теперь, когда SLAT содержит запись таблицы, которая может коррелировать запрашиваемый физический адрес гостя с соответствующим адресом ячейки физического запоминающего устройства хоста.[0052] The
[0053] Если и/или когда диспетчер 241 запоминающего устройства хоста определяет необходимость выполнять любое действие, которое может или должно изменять резервирование физического адреса хоста виртуального адреса хоста, который задан действительным через виртуальный отказ, он может выполнять очистку буфера трансляции (TLB) для этого виртуального адреса хоста. Он может уже выполнять такое действие, чтобы соответствовать действующему соглашению, которое может иметь диспетчер 241 запоминающего устройства хоста с аппаратными CPU на хосте. Стек 230 виртуализации может перехватывать такие TLB-очистки и делать недействительными соответствующие SLAT-записи любых виртуальных адресов хоста, которые очищаются, которые резервируют любые адреса ячеек гостевого физического запоминающего устройства в любых виртуальных машинах. Вызов на предмет TLB-очистки может идентифицировать диапазон очищаемых виртуальных адресов. Стек 230 виртуализации затем может выполнять поиск очищаемых виртуальных адресов хоста относительно своих структур данных, которые могут индексироваться посредством виртуального адреса хоста, чтобы находить гостевые физические диапазоны, которые могут резервироваться посредством данного виртуального адреса хоста. Если находятся любые такие диапазоны, SLAT-записи, соответствующие этим адресам ячеек гостевого физического запоминающего устройства, могут делаться недействительными. Дополнительно, диспетчер запоминающего устройства хоста может обрабатывать виртуальные выделения, которые резервируют виртуальное запоминающее устройство, по-другому при необходимости или желании оптимизировать поведение по TLB-очистке (например, чтобы уменьшать время недействительности SLAT, последующие перехваты запоминающего устройства и т.д.)[0053] If and/or when the host storage manager 241 determines the need to perform any action that may or should change the physical host address reservation of the virtual host address that is set valid via virtual failure, it may flush the translation buffer (TLB) to do so. host virtual address. It may already perform such an action to comply with the current convention that the host storage manager 241 may have with hardware CPUs on the host. The
[0054] Стек 230 виртуализации может тщательно синхронизировать обновление SLAT 220 с номером страницы физического запоминающего устройства хоста, возвращаемым из виртуального отказа (который обслуживается посредством диспетчера 241 запоминающего устройства), относительно TLB-очисток, выполняемых посредством хоста (которые выдаются посредством диспетчера 241 запоминающего устройства). Это может осуществляться для того, чтобы исключать добавление сложной синхронизации между диспетчером 241 запоминающего устройства хоста и стеком 230 виртуализации. Номер физической страницы, возвращаемый посредством виртуального отказа, может быть неактуальным к тому времени, когда он возвращается в стек 230 виртуализации. Например, виртуальные адреса могут уже делаться недействительными. Посредством перехвата вызовов на предмет TLB-очистки из диспетчера 241 запоминающего устройства хоста, стек 230 виртуализации может знать, когда возникает это состязание, и повторять попытку виртуального отказа, чтобы получать обновленный номер физической страницы.[0054] The
[0055] Когда стек 230 виртуализации признает недействительной SLAT-запись, любой последующий доступ к этому адресу ячейки гостевого физического запоминающего устройства посредством виртуальной машины 271 снова формирует перехват в гипервизор 210, который, в свою очередь, перенаправляется в стек 230 виртуализации для разрешения, как описано выше. Идентичный процесс может повторяться, когда к адресу ячейки гостевого физического запоминающего устройства осуществляется доступ для считывания сначала, и затем позднее в него выполняется запись. Запись формирует отдельный перехват, поскольку SLAT-запись может задаваться действительной только с типом доступа для "считывания". Этот перехват может перенаправляться в стек 230 виртуализации, как обычно, и виртуальный отказ с доступом "записи" может выдаваться в диспетчер 241 запоминающего устройства хоста для соответствующего виртуального адреса. Диспетчер 241 запоминающего устройства хоста может обновлять свое внутреннее состояние (типично в записи таблицы страниц (или "PTE")), чтобы указывать то, что страница физического запоминающего устройства хоста теперь является грязной. Это может осуществляться до разрешения виртуальной машине записывать в свой адрес ячейки гостевого физического запоминающего устройства, в силу этого исключая потери и/или повреждение данных. Если и/или когда диспетчер 241 запоминающего устройства хоста определяет необходимость подстраивать этот виртуальный адрес (которая должна выполнять TLB-очистку и делать недействительной соответствующую SLAT-запись в качестве результата), диспетчер 241 запоминающего устройства хоста может знать то, что страница является грязной и должна записываться на энергонезависимый машиночитаемый носитель хранения данных, к примеру, в файл подкачки страниц на накопителе на жестких дисках, до переназначения. Таким образом, вышеописанная последовательность не отличается от того, что должно происходить при регулярном частном виртуальном выделении для любого другого процесса, выполняющегося на вычислительном хост-устройстве 100.[0055] When the
[0056] В качестве одной оптимизации, диспетчер 241 запоминающего устройства хоста может выбирать выполнять проход комбинирования страниц по всему своему запоминающему устройству 120. Он может представлять собой операцию, в которой диспетчер 241 запоминающего устройства хоста находит идентичные страницы для всех процессов и комбинирует их в одну неперезаписываемую копию страницы, которую совместно используют все процессы. Если и/или когда любой из комбинированных виртуальных адресов записывается, диспетчер 241 запоминающего устройства может выполнять операцию копирования при записи, чтобы обеспечивать продолжение записи. Такая оптимизация теперь может работать прозрачно для виртуальных машин, таких как примерные виртуальные машины 261 и 271, чтобы повышать плотность виртуальных машин, выполняющихся на данном вычислительном устройстве, посредством комбинирования идентичных страниц на виртуальных машинах и за счет этого уменьшения потребления запоминающего устройства. Когда комбинирование страниц возникает, диспетчер 241 запоминающего устройства хоста может обновлять PTE, которые преобразуют затрагиваемые виртуальные адреса. В ходе этого обновления, он может выполнять TLB-очистку, поскольку адрес ячейки физического запоминающего устройства хоста может изменяться для этих виртуальных адресов с уникальной частной страницы на совместно используемую страницу. В качестве части означенного, как описано выше, стек 230 виртуализации может делать недействительными соответствующие SLAT-записи. Если и/или когда адреса ячеек гостевого физического запоминающего устройства, виртуальные адреса которых комбинированы для того, чтобы указывать на совместно используемую страницу, считываются, разрешение виртуального отказа может возвращать номер физической страницы совместно используемой страницы в ходе обработки перехватов, и SLAT 220 может обновляться, чтобы указывать на совместно используемую страницу.[0056] As one optimization, the host storage manager 241 may choose to perform a page combining pass across its
[0057] Если в какие-либо из комбинированных адресов ячеек гостевого физического запоминающего устройства выполняется запись посредством виртуальной машины, виртуальный отказ с доступом для записи может выполнять операцию копирования при записи, и новый номер частной страницы физического запоминающего устройства хоста может возвращаться и обновляться в SLAT 220. Например, стек 230 виртуализации может направлять диспетчер 241 запоминающего устройства хоста с возможностью выполнять проход комбинирования страниц. В некоторых вариантах осуществления, стек 230 виртуализации может указывать то, какая часть запоминающего устройства должна сканироваться на предмет комбинирования, либо то, какие процессы должны сканироваться. Например, стек 230 виртуализации может идентифицировать процессы, такие как примерные процессы 260 и 270 виртуальной машины, выделения виртуального запоминающего устройства хоста которых резервируют гостевое физическое запоминающее устройство соответствующих виртуальных машин, а именно, примерных виртуальных машин 261 и 271, как представляющие собой процессы, которые должны сканироваться на предмет комбинирования.[0057] If any of the combined guest physical storage cell addresses are being written by the virtual machine, the write-access virtual fault may perform a copy-on-write operation, and the new host physical storage private page number may be returned and updated in the
[0058] Даже когда SLAT 220 обновляется, чтобы обеспечивать возможность доступа для записи вследствие выполнения виртуального отказа для записи, гипервизор 210 может поддерживать инициирование перехватов записей в такие SLAT-записи, по запросу посредством стека 230 виртуализации. Это может быть полезным, поскольку стек 230 виртуализации может хотеть знать, когда возникают записи, независимо от того факта, что для диспетчера 241 запоминающего устройства хоста является действительным то, что эти записи возникают. Например, живая миграция виртуальных машин или создание снимков состояния виртуальных машин может влечь за собой мониторинг записей посредством стека 230 виртуализации. Стек 230 виртуализации по-прежнему может уведомляться, когда записи возникают, даже если состояние диспетчера запоминающего устройства хоста уже обновлено, соответственно, для записей, таких как, например, если PTE уже помечена как грязная.[0058] Even when
[0059] Диспетчер 241 запоминающего устройства хоста может иметь возможность поддерживать точную предысторию доступа для каждой виртуальной страницы хоста, резервирующей адресное пространство гостевого физического запоминающего устройства, идентично регулярным виртуальным страницам хоста, выделяемым в адресном пространстве любого другого процесса. Например, "бит для доступа" в PTE может обновляться во время виртуальных отказов, выполняемых в качестве части обработки перехватов запоминающего устройства. Когда диспетчер запоминающего устройства хоста сбрасывает бит для доступа на любой PTE, он может уже очищать TLB, чтобы исключать повреждение содержимого запоминающего устройства. Как описано выше, эта TLB-очистка может делать недействительной соответствующую SLAT-запись, которая может, в свою очередь, формировать перехват доступа, если виртуальная машина осуществляет доступ к своему адресу ячейки гостевого физического запоминающего устройства снова. В качестве части обработки перехвата, обработка виртуальных отказов в диспетчере 241 запоминающего устройства хоста может задавать бит для доступа снова, за счет этого поддерживая надлежащую предысторию доступа для страницы. Альтернативно, по причинам производительности, к примеру, чтобы исключать перехваты доступа в гипервизоре 210 в максимально возможной степени, диспетчер 241 запоминающего устройства хоста может потреблять информацию по доступу страницы непосредственно из гипервизора 210, собираемую из SLAT-записей, если поддерживается посредством базовых аппаратных средств. Диспетчер 241 запоминающего устройства хоста может взаимодействовать со стеком 230 виртуализации таким образом, чтобы транслировать информацию по доступу в SLAT 220 (которая организуется посредством адресов ячеек гостевого физического запоминающего устройства) в адреса ячеек виртуального запоминающего устройства хоста, резервирующие эти адреса ячеек гостевого физического запоминающего устройства, чтобы знать то, к каким адресам осуществлен доступ.[0059] Host storage manager 241 may be able to maintain an accurate access history for each host virtual page reserving guest physical storage address space, identical to regular host virtual pages allocated in any other process's address space. For example, the "bit to access" in the PTE may be updated during virtual failures performed as part of the processing of memory traps. When the host storage manager clears the access bit on any PTE, it may already clear the TLB to avoid corrupting the contents of the storage device. As described above, this TLB flush can invalidate the corresponding SLAT entry, which can in turn generate an access hijack if the virtual machine accesses its guest physical storage location address again. As part of the interception processing, the virtual failure handling in the host storage manager 241 may set the access bit again, thereby maintaining the proper access history for the page. Alternatively, for performance reasons, such as to avoid hijacking in
[0060] За счет наличия точной предыстории доступа для страниц, диспетчер 241 запоминающего устройства хоста может выполнять свои обычные алгоритмы интеллектуальной тренировки и подстройки рабочих наборов процесса. Это может обеспечивать возможность диспетчеру 241 запоминающего устройства хоста анализировать состояние всей системы и выполнять интеллектуальный выбор в отношении того, какие адреса следует подстраивать и/или подвергать выкачивать, на уровне страниц, на диск либо выполнять другие аналогичные операции, с тем чтобы облегчать давление в силу нехватки запоминающего устройства при необходимости, либо по другим причинам.[0060] By having an accurate access history for pages, the host storage manager 241 can perform its usual intelligent training and process working set adjustment algorithms. This may allow the host storage manager 241 to analyze the state of the entire system and make intelligent choices as to which addresses should be tampered with and/or pumped, page-level, to disk, or other similar operations in order to alleviate force pressure. lack of a storage device if necessary, or for other reasons.
[0061] В некоторых вариантах осуществления, лимиты по виртуальному и физическому запоминающему устройству могут налагаться на виртуальные машины посредством диспетчера 241 запоминающего устройства хоста идентично любому другому процессу для системы. Это может помогать системному администратору помещать в песочницу либо иным образом ограничивать или активировать виртуальные машины, такие как примерные виртуальные машины 261 и 271. Хост-система может использовать идентичные механизмы для того, чтобы добиваться этого, как и для собственных процессов. Например, в некоторых вариантах осуществления, в которых более высокая производительность требуется, виртуальная машина может иметь все свое гостевое физическое запоминающее устройство резервируемым непосредственно посредством физического запоминающего устройства хоста. Альтернативно, части могут резервироваться посредством виртуального запоминающего устройства хоста, тогда как другие части резервируются посредством физического запоминающего устройства хоста 120. В качестве еще одного другого примера, если более низкая производительность может быть приемлемой, виртуальная машина может резервироваться главным образом посредством виртуального запоминающего устройства хоста, и виртуальное запоминающее устройство хоста может быть ограничено неполным резервированием посредством физического запоминающего устройства хоста. Например, виртуальная машина, такая как примерная виртуальная машина 271, может представлять гостевое физическое запоминающее устройство с размером в 4 ГБ, которое, в свою очередь, с использованием вышеописанных процессов, может резервироваться посредством 4 ГБ виртуального запоминающего устройства хоста. Тем не менее, виртуальное запоминающее устройство хоста может ограничиваться резервированием только посредством 2 ГБ физического запоминающего устройства хоста. Это может вызывать подкачку страниц на диск или другие помехи производительности, но может представлять собой способ, для администраторов, проводить регулирование на основе уровней обслуживания или осуществлять другое управление для развертывания виртуальных машин. Аналогично, определенный объем физического запоминающего устройства может гарантироваться для виртуальной машины (при одновременном обеспечении возможности виртуальной машине резервироваться посредством виртуального запоминающего устройства хоста), поддерживаемой посредством диспетчера запоминающего устройства хоста для того, чтобы предоставлять определенный согласованный уровень производительности.[0061] In some embodiments, virtual and physical storage limits may be imposed on virtual machines by the host storage manager 241 in an identical manner to any other process for the system. This may assist the system administrator to sandbox or otherwise restrict or enable virtual machines, such as exemplary
[0062] Объем гостевого физического запоминающего устройства, представленный в окружении виртуальной машины, может динамически изменяться. Когда гостевое физическое запоминающее устройство должно добавляться, другой диапазон адресов ячеек виртуального запоминающего устройства хоста может выделяться, как описано выше. После того как стек 230 виртуализации готов обрабатывать перехваты доступа для запоминающего устройства, диапазон адресов ячеек гостевого физического запоминающего устройства может добавляться в окружение виртуальной машины. При удалении адресов ячеек гостевого физического запоминающего устройства, части диапазона виртуальных адресов хоста, резервирующего удаленные адреса ячеек гостевого физического запоминающего устройства, могут освобождаться посредством диспетчера 241 запоминающего устройства хоста (и обновляться соответствующим образом в структурах данных стека 230 виртуализации). Кроме того, или помимо этого, различные API диспетчера запоминающего устройства хоста могут вызываться в этих частях диапазона виртуальных адресов хоста для того, чтобы освобождать страницы физического запоминающего устройства хоста, без освобождения пространства виртуального адреса хоста для них. Альтернативно, в некоторых вариантах осуществления, можно вообще ничего не делать, поскольку диспетчер 241 запоминающего устройства хоста может в конечном счете подстраивать эти страницы из рабочего набора и в конечном счете записывать их на диск, к примеру, в файл подкачки страниц, поскольку на практике к ним не более не должен осуществляться доступ.[0062] The amount of guest physical storage present in the virtual machine environment may change dynamically. When a guest physical storage device is to be added, a different host virtual storage cell address range may be allocated as described above. Once the
[0063] Согласно одному аспекту, SLAT 220 может заранее заполняться некоторыми или всеми преобразованиями адресов ячеек гостевого физического запоминающего устройства в адреса ячеек физического запоминающего устройства хоста. Это позволяет сокращать число операций обработки отказов, выполняемых при инициализации виртуальной машины. Тем не менее, по мере того, как виртуальная машина работает, записи в SLAT 220 могут делаться недействительными по различным причинам, и обработка отказов, описанная выше, может использоваться для того, чтобы еще раз коррелировать адреса ячеек гостевого физического запоминающего устройства с адресами ячеек физического запоминающего устройства хоста. SLAT-записи могут заранее заполняться до начальной загрузки виртуального вычислительного окружения или во время выполнения. Дополнительно, вся SLAT 220 либо только ее части могут заранее заполняться.[0063] According to one aspect,
[0064] Другая оптимизация может заключаться в упреждающей выборке, в физическое запоминающее устройство хоста, дополнительных частей виртуального запоминающего устройства хоста, резервировании гостевого физического запоминающего устройства, которое ранее подвергнуто выкачиванию на уровне страниц таким образом, что когда наступает последующий перехват запоминающего устройства, виртуальный отказ может удовлетворяться более быстро, поскольку он может удовлетворяться без необходимости обращения к диску, чтобы считывать данные.[0064] Another optimization may be to prefetch, into the physical host storage, additional portions of the host virtual storage, reserving the guest physical storage that has previously been page-level deflated such that when a subsequent storage hijack occurs, a virtual failure can be satisfied more quickly because it can be satisfied without having to go to the disk to read the data.
[0065] Обращаясь к фиг. 4, проиллюстрирован способ 400, предоставляющий общее представление механизмов, подробно описанных выше. Способ 400 может включать в себя этапы для резервирования гостевого физического запоминающего устройства с виртуальным запоминающим устройством хоста. Способ включает в себя, из виртуальной машины при выполнении на вычислительном хост-устройстве, попытку осуществлять доступ к гостевому физическому запоминающему устройству с использованием доступа к гостевому физическому запоминающему устройству (этап 402). Например, окружение 271 виртуальной машины, показанное на фиг. 2, может осуществлять доступ к гостевому физическому запоминающему устройству, которое, для процессов, выполняющихся внутри окружения 271 виртуальной машины, выглядит в качестве фактического физического запоминающего устройства.[0065] Referring to FIG. 4, a
[0066] Способ 400 дополнительно может включать в себя определение того, что доступ к гостевому физическому запоминающему устройству обращается к адресу ячейки гостевого физического запоминающего устройства, который не имеет действительной записи в структуре данных, которая соотносит адреса ячеек гостевого физического запоминающего устройства с адресами ячеек физического запоминающего устройства хоста, (этап 404). Например, может выполняться определение в отношении того, что отсутствуют действительные записи в SLAT 220, показанной на фиг. 2.[0066] The
[0067] Как результат, способ 400 может включать в себя идентификацию адреса ячейки виртуального запоминающего устройства хоста, который соответствует адресу ячейки гостевого физического запоминающего устройства, и идентификацию адреса ячейки физического запоминающего устройства хоста, который соответствует адресу ячейки виртуального запоминающего устройства хоста (этап 406). Например, стек 230 виртуализации, показанный на фиг. 2, может идентифицировать адрес ячейки виртуального запоминающего устройства хоста, который соответствует адресу ячейки гостевого физического запоминающего устройства, и диспетчер 241 запоминающего устройства, также показанный на фиг. 2, может идентифицировать адрес ячейки физического запоминающего устройства хоста, который соответствует адресу ячейки виртуального запоминающего устройства хоста.[0067] As a result,
[0068] Способ 400 дополнительно может включать в себя обновление структуры данных, которая соотносит адреса ячеек гостевого физического запоминающего устройства с адресами ячеек физического запоминающего устройства хоста, с корреляцией адреса ячейки гостевого физического запоминающего устройства и идентифицированного адреса ячейки физического запоминающего устройства хоста (этап 408). Например, стек 230 виртуализации, показанный на фиг. 2, может получать адрес ячейки физического запоминающего устройства хоста из диспетчера 241 запоминающего устройства, также показанного на фиг. 2, и обновлять SLAT 220 (показана на фиг. 2) с корреляцией адреса ячейки гостевого физического запоминающего устройства и идентифицированного адреса ячейки физического запоминающего устройства хоста.[0068]
[0069] Способ 400 может осуществляться на практике посредством инструктирования перехвата. Перехват может перенаправляться в стек виртуализации на хосте. Это может инструктировать стеку виртуализации идентифицировать адрес ячейки виртуального запоминающего устройства хоста, который соответствует адресу ячейки гостевого физического запоминающего устройства, и выдавать отказ в диспетчер запоминающего устройства на предмет того, чтобы получать адрес ячейки физического запоминающего устройства хоста, который соответствует адресу ячейки виртуального запоминающего устройства хоста. Стек виртуализации затем может обновлять структуру данных, которая соотносит адреса ячеек гостевого физического запоминающего устройства с адресами ячеек физического запоминающего устройства хоста, с корреляцией адреса ячейки гостевого физического запоминающего устройства и идентифицированного адреса ячейки физического запоминающего устройства хоста.[0069]
[0070] Способ 400 дополнительно может включать в себя определение типа для доступа к гостевому физическому запоминающему устройству и обновления структуры данных, которая соотносит адреса ячеек гостевого физического запоминающего устройства с адресами ячеек физического запоминающего устройства хоста, с определенным типом, коррелированным с адресом ячейки гостевого физического запоминающего устройства и идентифицированным адресом ячейки физического запоминающего устройства хоста. Например, если доступ к гостевому физическому запоминающему устройству представляет собой считывание, SLAT может обновляться, чтобы указывать это.[0070] The
[0071] Способ 400 дополнительно может включать в себя выполнение действия, которое может изменять адрес ячейки физического запоминающего устройства хоста, резервирующий адрес ячейки виртуального запоминающего устройства хоста. Как результат, способ может включать в себя признание недействительности записи, коррелирующей адрес ячейки гостевого физического запоминающего устройства с адресом ячейки физического запоминающего устройства хоста в структуре данных, которая соотносит адреса ячеек гостевого физического запоминающего устройства с адресами ячеек физического запоминающего устройства хоста. Это может приводить к тому, что последующий доступ к адресу ячейки гостевого физического запоминающего устройства формирует отказ, который может использоваться для того, чтобы обновлять структуру данных, которая соотносит адреса ячеек гостевого физического запоминающего устройства с адресами ячеек физического запоминающего устройства хоста, с корректной корреляцией для виртуального запоминающего устройства хоста, резервирующего адрес ячейки гостевого физического запоминающего устройства. Например, действие может включать в себя операцию комбинирования страниц. Комбинирование страниц может использоваться для того, чтобы повышать плотность виртуальных машин на хосте.[0071] The
[0072] Способ 400 может включать в себя инициализацию гостевой виртуальной машины. В качестве части инициализации гостевой виртуальной машины, способ 400 может включать в себя заполнение заранее, по меньшей мере, структуры части данных, которая соотносит адреса ячеек гостевого физического запоминающего устройства с адресами ячеек физического запоминающего устройства хоста, некоторыми или всеми преобразованиями адресов ячеек гостевого физического запоминающего устройства в адреса ячеек физического запоминающего устройства хоста для гостевой виртуальной машины. Таким образом, например, физическое запоминающее устройство хоста может предварительно выделяться для виртуальной машины, и соответствующие корреляции могут вводиться в SLAT. Это должно приводить к необходимости меньшего количества исключений для того, чтобы инициализировать гостевую виртуальную машину.[0072]
[0073] Ссылаясь теперь на фиг. 5, проиллюстрирована примерная последовательность 500 операций, показывающая различные действия, которые могут возникать в части срока существования некоторых данных в примерном адресе ячейки гостевого физического запоминающего устройства (далее сокращенно "GPA") в 0×1000. Как проиллюстрировано на 502, SLAT-запись для GPA 0×1000 является недействительной, что означает то, что отсутствуют SLAT-записи для этого конкретного GPA. Как проиллюстрировано на 504 виртуальная машина пытается выполнять считывание в GPA 0×1000, вызывающее перехват считывания посредством виртуальной машины ((далее сокращенно "VM"). Как проиллюстрировано на 506, гипервизор перенаправляет перехват в стек виртуализации на хосте. На 508, стек виртуализации выполняет поиск виртуализации для адреса ячейки виртуального запоминающего устройства хоста (VA), соответствующего GPA 0×1000. Поиск дает в результате VA 0×8501000. На 510, виртуальный отказ формируется для доступа для считывания в VA 0×8501000. Обработка виртуальных отказов из диспетчера запоминающего устройства возвращает системный физический адрес (далее сокращенно "SPA") в 0×88000, задающий адрес в системном запоминающем устройстве, в котором физически расположены данные в GPA 0×1000. Следовательно, как проиллюстрировано на 514, SLAT обновляется таким образом, чтобы коррелировать GPA 0×1000 с SPA 0×88000 и помечать доступ к данным как "только для считывания". На 516, стек виртуализации завершает обработку перехватов считывания, и гипервизор возобновляет выполнение гостевой виртуальной машины.[0073] Referring now to FIG. 5, an
[0074] Как проиллюстрировано на 518, проходит время. На 520, виртуальная машина выполняет попытку доступа для записи в GPA 0×1000. На 522, гипервизор перенаправляет доступ для записи в стек виртуализации на хосте. На 524, стек виртуализации выполняет поиск виртуализации для VA хоста для GPA 0×1000. Как отмечено выше, он выполняется в VA 0×8501000. На 526, возникает виртуальный отказ для доступа для записи в VA 0×8501000. На 528, виртуальный отказ возвращает SPA 0388000 в физическом запоминающем устройстве. На 530, SLAT-запись для GPA 0×1000 обновляется, чтобы указывать то, что доступ к данным представляет собой "для считывания/записи". На 532, стек виртуализации завершает обработку перехватов записи. Гипервизор возобновляет выполнение гостевой виртуальной машины.[0074] As illustrated at 518, time passes. At 520, the virtual machine attempts a write access to GPA 0x1000. At 522, the hypervisor redirects write access to the virtualization stack on the host. At 524, the virtualization stack performs a virtualization search for the host VA for GPA 0x1000. As noted above, it runs in VA 0x8501000. At 526, a virtual failure occurs for write access to VA 0x8501000. At 528, virtual failure returns SPA 0388000 in physical storage. At 530, the SLAT entry for GPA 0x1000 is updated to indicate that the data access is read/write. At 532, the virtualization stack finishes processing the write captures. The hypervisor resumes running the guest virtual machine.
[0075] Как проиллюстрировано на 534, проходит некоторое время. На 536, диспетчер запоминающего устройства хоста выполняет проход комбинирования страниц для того, чтобы комбинировать все страницы с физическим запоминающим устройством хоста, которые являются функционально идентичными. На 538, диспетчер запоминающего устройства хоста находит возможные варианты комбинирования для VA 0×8501000 и другого виртуального адреса в другом процессе. На 540, хост выполняет TLB-очистку для VA 0×8501000. На 542, стек виртуализации перехватывает TLB-очистку. На 544, SLAT-запись для GPA 0×1000 является недействительной. На 546, перехват виртуальной машины выполняется для GPA 0×1000. На 548, возникает виртуальный отказ для доступа для считывания в VA 0×8501000. На 550, виртуальный отказ возвращает SPA 0×52000, который представляет собой совместно используемую страницу для N процессов из прохода комбинирования страниц на 536. На 552, SLAT-запись для GPA 0×1000 обновляется таким образом, что она соотносится с SPA 0×52000, с доступом, заданным как "только для считывания".[0075] As illustrated at 534, some time passes. At 536, the host storage manager performs a page combining pass in order to combine all pages in the host's physical storage that are functionally identical. At 538, the host storage manager finds possible combinations for VA 0x8501000 and another virtual address in another process. At 540, the host performs a TLB cleanup for VA 0x8501000. At 542, the virtualization stack intercepts the TLB cleanup. At 544, the SLAT entry for GPA 0x1000 is invalid. At 546, virtual machine hijacking is performed for GPA 0x1000. At 548, a virtual failure occurs for read access to VA 0x8501000. At 550, the virtual fault returns SPA 0x52000, which is the shared page for N processes from the page combining pass at 536. At 552, the SLAT entry for GPA 0x1000 is updated to match SPA 0x52000 , with access set to read-only.
[0076] Как проиллюстрировано на 554, проходит некоторое время. На 556, перехват записи виртуальной машины возникает для GPA 0×1000. На 558 возникает виртуальный отказ для доступа для записи в VA 0×8501000. На 560, диспетчер запоминающего устройства хоста выполняет копирование при записи для VA 0×8501000. На 562, хост выполняет TLB-очистку для VA 0×850100. Как проиллюстрировано на 564, это приводит к тому, что SLAT-запись для GPA 031000 признается недействительной. На 566, виртуальный отказ возвращает SPA 0×11000, который представляет собой частную страницу после копирования при записи. На 568, SLAT-запись для GPA 0×1000 обновляется на SPA 0×1000, с доступом, заданным как "для считывания/записи". На 570, стек виртуализации завершает обработку перехватов считывания, и гипервизор возобновляет выполнение виртуальной машины.[0076] As illustrated at 554, some time passes. At 556, a VM write hijack occurs for GPA 0x1000. At 558, a virtual failure occurs for write access to VA 0x8501000. At 560, the host storage manager performs a copy-on-write for VA 0x8501000. At 562, the host performs a TLB cleanup for VA 0x850100. As illustrated at 564, this results in the SLAT entry for GPA 031000 being invalidated. At 566, virtual failure returns SPA 0x11000, which is a private page after copy-on-write. At 568, the SLAT entry for GPA 0x1000 is updated to SPA 0x1000, with access set to "read/write". At 570, the virtualization stack finishes processing the read captures and the hypervisor resumes executing the virtual machine.
[0077] Таким образом, как проиллюстрировано выше, физическое адресное пространство виртуальной машины резервируется посредством виртуального запоминающего устройства хоста (типично выделяемого в пользовательском адресном пространстве хост-процесса), которое подвергается регулярному управлению виртуальным запоминающим устройством посредством диспетчера запоминающего устройства хоста. Виртуальное запоминающее устройство, резервирующее физическое запоминающее устройство виртуальной машины, может иметь любой тип, поддерживаемый посредством диспетчера 118 запоминающего устройства хоста (частное выделение, преобразование файлов, преобразования секций с резервированием с помощью файла подкачки страниц, выделение большой страницы и т.д.), диспетчер запоминающего устройства хоста может выполнять свои существующие операции и применять политики по виртуальному запоминающему устройству и/или применять специализированные политики со знанием того, что виртуальное запоминающее устройство резервирует физическое адресное пространство виртуальной машины при необходимости.[0077] Thus, as illustrated above, the physical address space of the virtual machine is reserved by host virtual storage (typically allocated in the user address space of the host process), which is subject to regular virtual storage management by the host storage manager. The virtual storage backing up the virtual machine's physical storage may be of any type supported by the host storage manager 118 (private allocation, file conversion, paging file-backed partition conversions, large page allocation, etc.) the host storage manager can perform its existing operations and enforce policies on the virtual storage and/or apply custom policies with the knowledge that the virtual storage will reserve the virtual machine's physical address space as needed.
[0078] Обращаясь к фиг. 6, примерная система 600, показанная здесь, содержит блочное представление механизмов, приведенных кратко на фиг. 4 и подробно приведенных на фиг. 5, как описано выше. Более конкретно, гостевое виртуальное запоминающее устройство 311, гостевое физическое запоминающее устройство 312, виртуальное запоминающее устройство хоста 321 и физическое запоминающее устройство хоста 322 проиллюстрированы в качестве прямоугольных блоков, ширина которых представляет диапазон запоминающего устройства. Для простоты иллюстрации, прямоугольные блоки имеют приблизительно равную ширину, даже если, при практической работе, объем виртуального запоминающего устройства с большой вероятностью должен превышать объем физического запоминающего устройства, резервирующего такое виртуальное запоминающее устройство.[0078] Referring to FIG. 6, the
[0079] Как подробно описано выше, когда процесс, выполняющийся внутри вычислительного окружения виртуальной машины, такого как примерное вычислительное окружение виртуальной машины 271, показанное на фиг. 2, осуществляет доступ к части виртуального запоминающего устройства, представленной посредством операционной системы, выполняющейся внутри такого вычислительного окружения виртуальной машины, таблица страниц этой операционной системы, такая как примерная таблица 283 страниц, может содержать PTE, которая может коррелировать адрес ячейки виртуального запоминающего устройства, к которому осуществляют доступ, с адресом ячейки физического запоминающего устройства, по меньшей мере, воспринимаемым посредством процессов, выполняющихся внутри вычислительного окружения виртуальной машины. Таким образом, например, если к виртуальному запоминающему устройству, представленному посредством области 611, осуществляется доступ, PTE 631, которая может представлять собой часть таблицы 283 страниц, может коррелировать эту область 611 гостевого виртуального запоминающего устройства 311 с областью 621 гостевого физического запоминающего устройства 312. Как подробно описано выше, гостевое физическое запоминающее устройство 312 может резервироваться посредством части виртуального запоминающего устройства хоста 321. Таким образом, вышеописанный стек 230 виртуализации может содержать структуру данных, которая может включать в себя запись 651, которая может коррелировать область 621 гостевого физического запоминающего устройства 312 с областью 641 виртуального запоминающего устройства хоста 321. Процессы, выполняющиеся на вычислительном хост-устройстве, включающем в себя вышеописанную таблицу 250 страниц, затем могут коррелировать область 641 виртуального запоминающего устройства хоста 321 с областью 661 физического запоминающего устройства хоста 322. Как также описано подробно выше, SLAT 220 может содержать иерархически организованный набор таблиц, которые могут обновляться с записью 691 таблицы, которая может коррелировать область 621, гостевого физического запоминающего устройства 312 с областью 661 физического запоминающего устройства хоста 322. Более конкретно, механизмы, такие как механизмы, реализованные посредством стека 230 виртуализации, могут обнаруживать корреляцию между областью 621 и областью 661 и могут обновлять или формировать запись таблицы, такую как запись 691, в SLAT 220, как проиллюстрировано посредством этапа 680, так что она включает в себя такую корреляцию. Таким образом, гостевое физическое запоминающее устройство 312 может резервироваться посредством виртуального запоминающего устройства хоста 321, при одновременном продолжении обеспечения возможности существующим механизмам, включающим в себя SLAT 220, функционировать традиционным способом. Например, последующий доступ области 611 гостевого виртуального запоминающего устройства 311 процесса, выполняющегося внутри этого вычислительного окружения виртуальной машины, может влечь за собой два поиска в таблице страниц традиционным способом: (1) поиск в таблице страниц, выполняемый в вычислительном окружении виртуальной машины посредством обращения к таблице 283 страниц, которая может содержать запись, такую как запись 631, которая может коррелировать запрашиваемую область 611 с соответствующей областью 621 в гостевом физическом запоминающем устройстве 312, и (2) поиск в таблице страниц, выполняемый на вычислительном хост-устройстве посредством обращения к SLAT 220, которая может содержать запись, такую как запись 691, которая может коррелировать область 621 в гостевом физическом запоминающем устройстве 312 с областью 661 в физическом запоминающем устройстве 322 хоста, за счет этого завершая путь к релевантным данным, сохраненным в физическом запоминающем устройстве хоста.[0079] As detailed above, when a process running within a virtual machine computing environment, such as the exemplary virtual
[0080] Как также подробно указано выше, различные таблицы страниц, такие как примерная таблица 283 страниц в вычислительном окружении виртуального запоминающего устройства, примерная таблица 250 страниц на вычислительном хост-устройстве и примерная SLAT 220, могут содержать иерархически организованные уровни таблиц таким образом, что записи на иерархически самом нижнем уровне таблиц могут идентифицировать "небольшие страницы" запоминающего устройства, при явном задании этого термина в данном документе, которые могут представлять собой наименьший диапазон адресов ячеек запоминающего устройства, которые могут отдельно и умеренно поддерживаться и управляться посредством процессов с использованием соответствующих таблиц страниц. В примерной системе 600, показанной на фиг. 6, различные записи 631, 671 и 691 таблицы страниц (PTE) могут находиться на этом самом нижнем уровне таблиц таким образом, что области 611, 621, 641 и 661 могут представлять собой небольшие страницы запоминающего устройства. Как подробно указано выше, в одной общей архитектуре микропроцессора, такие небольшие страницы запоминающего устройства, при явном задании этого термина в данном документе, могут содержать 4 КБ смежных адресов ячеек запоминающего устройства.[0080] As also detailed above, various page tables, such as an exemplary page table 283 in a virtual storage computing environment, an exemplary page table 250 on a computing host device, and an
[0081] Согласно одному аспекту, чтобы повышать скорость и эффективность доступа к запоминающему устройству из вычислительного окружения виртуальной машины, физическое запоминающее устройство которого резервируется посредством виртуального запоминающего устройства вычислительного хост-устройства, SLAT 220 может поддерживать корреляции на иерархически верхних уровнях таблиц. Другими словами, SLAT 220 может коррелировать "большие страницы" запоминающего устройства или "огромные страницы" запоминающего устройства, при явном задании этих терминов в данном документе. В одной общей архитектуре микропроцессора, большие страницы запоминающего устройства, при явном задании этого термина в данном документе, могут содержать 2 МБ смежных адресов ячеек запоминающего устройства, и огромные страницы запоминающего устройства, при явном задании этого термина в данном документе, могут содержать 1 ГБ смежных адресов ячеек запоминающего устройства. С другой стороны, как указано выше, термины "небольшая страница", "большая страница" и "огромная страница" явно задаются со ссылкой на иерархический уровень, в иерархически организованном наборе таблиц страниц, и не задаются на основе конкретного объема запоминающего устройства, поскольку такие объемы запоминающего устройства могут варьироваться между различными архитектурами микропроцессора, архитектурами операционной системы и т.п.[0081] According to one aspect, in order to improve the speed and efficiency of accessing storage from a virtual machine computing environment whose physical storage is backed up by the virtual storage of the host computing device,
[0082] Обращаясь к фиг. 7, показывается один механизм для создания записей большой страницы в SLAT 220 и за счет этого повышения скорости и эффективности доступа к запоминающему устройству из вычислительного окружения виртуальной машины, физическое запоминающее устройство которого резервируется посредством виртуального запоминающего устройства вычислительного хост-устройства. Как показано на фиг 6, в системе 700, показанной на фиг. 7, гостевое виртуальное запоминающее устройство 311, гостевое физическое запоминающее устройство 312, виртуальное запоминающее устройство хоста 321 и физическое запоминающее устройство хоста 322 проиллюстрированы в качестве прямоугольных блоков, ширина которых представляет диапазон запоминающего устройства. Дополнительно, осуществление доступа к области 611 может продолжаться способом, подробно указанным выше и показанным на фиг. 6. Тем не менее, вместо формирования записи таблицы иерархически самого нижнего уровня в SLAT 220, механизмы, описанные в данном документе, могут формировать запись таблицы более высокого уровня, такую как примерная запись таблицы 711. Как подробно указано выше, такая запись таблицы более высокого уровня может коррелировать большие страницы или огромные страницы запоминающего устройства. Соответственно, когда стек 230 виртуализации инструктирует ввод записи таблицы 711 в SLAT 220, запись таблицы 711 может коррелировать область 761 с большим размером страницы гостевого физического запоминающего устройства 312 с областью 720 с большим размером страницы физического запоминающего устройства хоста 322. Тем не менее, как подробнее описано ниже, такие области с большим размером страницы не представляют собой большие страницы с точки зрения диспетчера запоминающего устройства, выполняющегося на вычислительном хост-устройстве и использующего таблицу 250 страниц, и как результат, такие области с большим размером страницы, например, не подвергаются откачке, на уровне страниц, в качестве одной большой страницы или иным образом не обрабатываются в качестве одной неделимой большой страницы посредством диспетчера запоминающего устройства, выполняющегося на вычислительном хост-устройстве.[0082] Referring to FIG. 7, one mechanism is shown for creating large page records in
[0083] Наоборот, с тем, чтобы поддерживать преимущества эффективности, плотности и другие преимущества, предоставленные посредством механизмов, подробно описанных выше, которые обеспечивают возможность резервирования гостевого физического запоминающего устройства, такого как примерное гостевое физическое запоминающее устройство 312, посредством виртуального запоминающего устройства хоста, такого как примерное виртуальное запоминающее устройство хоста 321, таблица 250 страниц, выполняющаяся на хосте, может содержать не запись таблицы более высокого уровня, аналогичную записи 711 таблицы более высокого уровня в SLAT 220, а вместо этого может содержать просто записи таблицы более низкого уровня, такие как примерные записи 671, 731 и 732 таблицы более низкого уровня, показанные на фиг. 7. Более конкретно, конкретный набор записей таблицы более низкого уровня в таблице 250 страниц, таких как примерные записи 671, 731, 732 таблицы более низкого уровня и т.д., может идентифицировать непрерывные диапазоны физического запоминающего устройства хоста 322 таким образом, что совокупный непрерывный диапазон физического запоминающего устройства хоста 322, идентифицированный посредством всей эквивалентной последовательности записей таблицы более низкого уровня в таблице 250 страниц, охватывает диапазон запоминающего устройства, идентичный диапазону запоминающего устройства для одной записи 711 таблицы более высокого уровня в SLAT 220. Таким образом, в качестве одного примера, в архитектуре микропроцессора, в которой небольшие страницы имеют размер в 4 КБ, а большие страницы имеют размер в 2 МБ, 512 смежных записей небольшой страницы в таблице 250 страниц, в совокупности, могут идентифицировать смежные 2 МБ физического запоминающего устройства хоста 322.[0083] Conversely, in order to maintain the efficiency, density, and other benefits provided by the mechanisms detailed above, which allow guest physical storage, such as exemplary guest
[0084] Поскольку виртуальный отказ может формироваться не для всей области запоминающего устройства с большим размером страницы, только конкретные записи таблицы более низкого уровня, такие как примерные записи 671, 731 и 732 таблицы более низкого уровня, могут использоваться, тогда как оставшиеся записи таблицы более низкого уровня могут оставаться помеченными в качестве свободного запоминающего устройства. Например, приложение, выполняемое в вычислительном окружении виртуальной машины с использованием гостевого физического запоминающего устройства 312, может первоначально требовать только объема запоминающего устройства в одну небольшую страницу. В таком случае, одна запись 711 таблицы более высокого уровня может идентифицировать область запоминающего устройства с большим размером страницы, к примеру, область 720 с большим размером страницы, как используемую. Тем не менее, с точки зрения диспетчера запоминающего устройства вычислительного хост-устройства, при обращении к таблице 250 страниц, только одна из записей таблицы более низкого уровня, такая как примерная запись 671 таблицы более низкого уровня, может указываться как используемая, при этом остальные указываются как доступные. Чтобы предотвращать обработки других записей как доступных, стек 230 виртуализации может помечать оставшиеся записи таблицы более низкого уровня, такие как примерные записи 731, 732 таблицы более низкого уровня и т.д., как также используемые. Когда приложение, выполняемое в вычислительном окружении виртуальной машины, затем должно использовать дополнительные объемы запоминающего устройства с небольшим размером страницы, стек 230 виртуализации может использовать местоположение ячейки запоминающего устройства, заранее указанное как используемое, но которые фактически еще не использованы посредством приложения, выполняемого в вычислительном окружении виртуальной машины, чтобы удовлетворять дополнительным потребностям в запоминающем устройстве приложения.[0084] Because a virtual fault may not be generated for the entire area of a large page size storage device, only specific lower level table entries, such as exemplary lower level table entries 671, 731, and 732, may be used, while the remaining table entries are more low level may remain marked as free storage. For example, an application running in a virtual machine computing environment using guest
[0085] Согласно одному аспекту, отслеживание эквивалентной последовательности записей таблицы более низкого уровня в таблице 250 страниц, к примеру, вышеуказанная пометка, может координироваться посредством стека 230 виртуализации, как проиллюстрировано посредством этапа 730 на фиг. 7. В таком случае, если диспетчер запоминающего устройства, выполняющийся на хосте, вносит изменения в одну или более этих записей таблицы более низкого уровня, стек 230 виртуализации может инициировать соответствующие изменения соответствующих записей в SLAT 220, таких как запись 711 таблицы более высокого уровня.[0085] According to one aspect, keeping track of an equivalent sequence of lower level table entries in the page table 250, such as the above notation, may be coordinated by the
[0086] Последовательность записей таблицы более низкого уровня в таблице 250 страниц, которая является эквивалентной записи 711 таблицы более высокого уровня в SLAT 220, может коррелировать последовательность диапазонов виртуального запоминающего устройства хоста, такого как примерные диапазоны 641, 741 и 742, с диапазонами физического запоминающего устройства хоста, такими как примерные диапазоны 661, 721 и 722, соответственно. Следовательно, область виртуального запоминающего устройства хоста 321 с большим размером страницы, такая как примерная область 751 с большим размером страницы, соотносится с областью физического запоминающего устройства хоста 322 с большим размером страницы, такой как примерная область 720 с большим размером страницы, через последовательность записей таблицы более низкого уровня в таблице 250 страниц, а именно, через примерные записи 671, 731, 732 таблицы более низкого уровня и т.д. Стек 230 виртуализации может поддерживать такие структуры данных, как иерархически организованные таблицы, которые могут координировать местоположения ячеек виртуального запоминающего устройства хоста с местоположениями ячеек гостевого физического запоминающего устройства. Таким образом, стек виртуализации может поддерживать одну или более записей данных, таких как примерная запись 771 данных, которая может коррелировать область 751 с большим размером страницы виртуального запоминающего устройства хоста 321 с соответствующей областью 761 с большим размером страницы гостевого физического запоминающего устройства 312. Хотя запись 771 данных проиллюстрирована в качестве одной записи, стек 230 виртуализации может поддерживать вышеуказанную корреляцию в качестве одной записи, в качестве нескольких записей, к примеру, посредством отдельной корреляции подчастей области 761 с областью 751, включающей в себя подчасти, которые имеют размер небольших страниц, либо в качестве комбинации вышеозначенного. Чтобы завершать цикл, вышеуказанная запись 711 таблицы более высокого уровня в SLAT 220 затем может коррелировать область 761 с большим размером страницы, в гостевом физическом запоминающем устройстве 312 с областью 720 с большим размером страницы, в физическом запоминающем устройстве 322 хоста. С другой стороны, с точки зрения SLAT 220, имеющей только одну запись 711 таблицы более высокого уровня, области 720 и 761 с большим размером страницы представляют собой большие страницы, которые унитарно обрабатываются посредством SLAT (согласно одной записи 711 таблицы более высокого уровня), тогда как, с точки зрения диспетчера запоминающего устройства, выполняющегося на хосте, таблицы 250 страниц и, фактически, стека 230 виртуализации, такие области не являются унитарными, а наоборот, состоят из отдельно управляемых областей с небольшими страницами, идентифицированных, например, посредством записи таблицы более низкого уровня в таблице 250 страниц.[0086] A sequence of lower level table entries in page table 250, which is equivalent to higher level table entry 711 in
[0087] Доступность смежных небольших страниц запоминающего устройства в гостевом физическом запоминающем устройстве 312, эквивалентных одной или более больших или огромных страниц запоминающего устройства, при задании этих терминов в данном документе, может быть простой, поскольку гостевое физическое запоминающее устройство 312 воспринимается, посредством процессов, выполняющихся внутри соответствующего вычислительного окружения виртуальной машины, как физическое запоминающее устройство. Следовательно, нижеприведенные описания акцентируют внимание на смежности физического запоминающего устройства хоста 322. Дополнительно, поскольку гостевое физическое запоминающее устройство 312 воспринимается как физическое запоминающее устройство, разрешения на полный доступ к запоминающему устройству (к примеру, разрешения на "считывание/запись/выполнение") остаются по всему диапазону гостевого физического запоминающего устройства 312, и, соответственно, маловероятно, что возникает разрывность разрешений на доступ к запоминающему устройству между записями таблицы более низкого уровня в таблице 250 страниц.[0087] The availability of contiguous small storage pages in guest
[0088] При акцентировании внимания на таблице 250 страниц вычислительного хост-устройства, если одна или более областей физического запоминающего устройства хоста 322 с большим размером страницы остаются неиспользуемыми, согласно одному аспекту, когда виртуальный отказ, как подробно указано выше, инициируется для небольшой страницы в диапазоне запоминающего устройства, разграниченном на область с большим размером страницы, которая остается неиспользуемой, оставшиеся небольшие страницы в этой области с большим размером страницы, одна запись таблицы более высокого уровня, такая как примерная запись 711 таблицы более высокого уровня, может формироваться в SLAT 220.[0088] With focus on the page table 250 of the computing host device, if one or more areas of the
[0089] Тем не менее, поскольку большая страница 720, соответствующая записи 711 таблицы более высокого уровня, с точки зрения таблицы 250 страниц, представляет собой последовательность небольших страниц, таких как примерные небольшие страницы 661, 721, 722 и т.д., вследствие последовательности записей таблицы более низкого уровня, таких как примерные записи 671, 731, 732 таблицы более низкого уровня и т.д., механизмы управления запоминающим устройством с использованием такой таблицы 250 страниц могут обрабатывать каждую из небольших страниц отдельно, что может включать в себя подкачку таких небольших страниц на энергонезависимый носитель хранения данных, такой как накопитель на жестких дисках. В таком случае, согласно одному аспекту, запись 711 таблицы более высокого уровня, в SLAT 220, может заменяться посредством эквивалентной последовательности записей таблицы более низкого уровня. Более конкретно, записи таблицы более низкого уровня, сформированные в SLAT 220, могут быть смежными и, в совокупности, могут ссылаться на то же диапазон адресов ячеек запоминающего устройства, что и запись 711 таблицы более высокого уровня, за исключением того, что конкретные записей таблицы более низкого уровня, соответствующие страницам, которые подвергнуты откачке на уровне страниц посредством диспетчера запоминающего устройства, могут отсутствовать или иным образом не создаваться.[0089] However, since the
[0090] Согласно другим аспектам, если область физического запоминающего устройства хоста 322 с большим или огромным размером страницы является недоступной в то время, когда виртуальный отказ, как подробно указано выше, инициируется, доступная область физического запоминающего устройства хоста с большим или огромным размером страницы может конструироваться во время перехвата посредством ассемблирования соответствующего количества смежных небольших страниц. Например, область с большим размером страницы может конструироваться из смежных небольших страниц, которые доступны из "свободного списка" или другого аналогичного перечисления доступных страниц физического запоминающего устройства хоста. В качестве другого примера, если небольшие страницы, которые в данный момент используются посредством других процессов, требуются, чтобы устанавливать непрерывность, необходимую для того, чтобы ассемблировать достаточное количество небольших страниц в одну область с большим размером страницы, эти небольшие страницы могут получаться из таких других процессов, и данные, содержащиеся в них, могут передаваться в другие небольшие страницы или могут подвергаться откачке, на уровне страниц, на диск. После того как такая область с большим размером страницы конструируется, обработка виртуального отказа может продолжаться способом, подробно указанным выше, включающим в себя формирование записи таблицы более высокого уровня, такой как примерная запись 711 таблицы более высокого уровня, в SLAT 220.[0090] According to other aspects, if the large or huge page size physical storage area of the
[0091] В некоторых случаях, диспетчер запоминающего устройства, выполняющийся на вычислительном хост-устройстве, при использовании таблицы 250 страниц, может реализовывать фоновые или оппортунистические механизмы, посредством которых доступные области с большим или огромным размером страницы конструируются из достаточного количества смежных небольших страниц. До такой степени, что такие механизмы приводят к доступной области с большим размером страницы, например, когда виртуальный отказ инициируется, обработка может продолжаться способом, указанным выше. Тем не менее, до такой степени, что такие механизмы еще не завершают ассемблирование доступной области с большим размером страницы, конструирование такой области с большим размером страницы может завершаться во время перехвата с более высоким приоритетом. Например, процессу, конструирующему такую область с большим размером страницы, может отдаваться более высокий приоритет выполнения, либо он может перемещаться из фона на передний план либо может выполняться более агрессивно иным образом.[0091] In some cases, a storage manager executing on a computing host device, when using the page table 250, may implement background or opportunistic mechanisms whereby large or huge page size accessible areas are constructed from a sufficient number of contiguous small pages. To the extent that such mechanisms result in a large page size available area, for example, when a virtual fault is triggered, processing may continue in the manner indicated above. However, to the extent that such mechanisms do not yet complete assembly of the larger page size available region, the construction of such a larger page size region may complete during a higher priority capture. For example, a process constructing such a large page size region may be given a higher execution priority, or may move from the background to the foreground, or may otherwise execute more aggressively.
[0092] Альтернативно, если область физического запоминающего устройства хоста с большим размером страницы является недоступной, когда виртуальный отказ инициируется, обработка может продолжаться, как подробно указано выше, с использованием нескольких небольших страниц. Затем, когда область с большим размером страницы становится доступной, данные из нескольких небольших страниц, ранее используемых (вследствие недоступности области с большим размером страницы в то время), могут копироваться в большую страницу, и ранее используемые небольшие страницы могут впоследствии освобождаться. В таком случае, записи таблицы более низкого уровня в SLAT 220 могут заменяться одной записью таблицы более высокого уровня, такой как примерная запись 711 таблицы более высокого уровня.[0092] Alternatively, if a larger page size area of the host's physical storage is unavailable when the virtual fault is triggered, processing may continue as detailed above using multiple smaller pages. Then, when the large page size area becomes available, data from several small pages previously in use (due to the large page size area being unavailable at the time) may be copied to the large page, and the previously used small pages may subsequently be freed. In such a case, the lower level table entries in
[0093] Дополнительно, параметры, согласно которым конструируются области с большим размером страницы, будь то во время перехвата или оппортунистически, могут варьироваться в соответствии с балансом между более быстрым доступом к запоминающему устройству вследствие пропуска иерархических уровней таблиц во время SLAT-поиска и начальной задержкой в конструировании области с большим размером страницы из небольших страниц. Один такой параметр может представлять собой количество смежных небольших страниц, достаточное для того, чтобы инициировать размен или откачку, на уровне страниц, других небольших страниц, необходимых для того, чтобы завершать смежность для всей области с большим размером страницы. Например, если 512 смежных небольших страниц требуются, чтобы конструировать большую страницу, и непрерывные диапазоны из 200 небольших страниц и 311 небольших страниц существуют, при этом одна небольшая страница между ними в данный момент используется посредством другого процесса, такая небольшая страница может подвергаться откачке на уровне страниц или размениваться на другую доступную небольшую страницу таким образом, что все 512 смежных небольших страниц могут быть доступными для конструирования как одной области с большим размером страницы. В таком примере, фрагментация доступных небольших страниц может быть очень низкой. В отличие от этого, непрерывные диапазоны только в 20-30 небольших страниц, которые постоянно прерываются посредством других небольших страниц, которые в данный момент используются посредством других процессов, могут описывать диапазон небольших страниц, который имеет очень высокую фрагментацию. Хотя такой высокофрагментированный набор небольших страниц по-прежнему может размениваться, подвергаться откачке на уровне страниц или иным образом перемешиваться, чтобы формировать непрерывный диапазон небольших страниц, эквивалентных области с большим размером страницы, такое усилие может занимать существенно больше времени. Соответственно, согласно одному аспекту, может задаваться пороговое значение фрагментации, которое может разграничивать то, предпринимаются или нет усилия для того, чтобы конструировать область с большим размером страницы из диапазонов небольших страниц, имеющих более высокую или более низкую фрагментацию.[0093] Additionally, the parameters according to which larger page size regions are designed, whether during interception or opportunistically, may vary according to the balance between faster storage access due to skipping hierarchical table levels during SLAT search and initial delay in constructing an area with a large page size from small pages. One such parameter may be the number of contiguous small pages sufficient to initiate a page-level swap or rollback of other small pages needed to complete the adjacency for the entire large page size area. For example, if 512 contiguous small pages are required to construct a large page, and contiguous ranges of 200 small pages and 311 small pages exist, with one small page in between currently being used by another process, such a small page may be pumped at the pages or to be exchanged for another available small page such that all 512 contiguous small pages can be made available for construction as a single large page size area. In such an example, the fragmentation of available small pages can be very low. In contrast, continuous ranges of only 20-30 small pages that are constantly interrupted by other small pages currently being used by other processes may describe a small page range that has very high fragmentation. While such a highly fragmented set of small pages may still be exchanged, page-level pumped, or otherwise shuffled to form a contiguous range of small pages equivalent to a larger page size area, such an effort may take significantly longer. Accordingly, in one aspect, a fragmentation threshold may be set that may delimit whether or not efforts are made to construct a larger page size area from ranges of smaller pages having higher or lower fragmentation.
[0094] Согласно одному аспекту, конструирование области с большим размером страницы может использовать преимущество существующих использований небольших страниц посредством процессов, запоминающее устройство которых используется для того, чтобы резервировать гостевое физическое запоминающее устройство вычислительных окружений виртуальной машины. В качестве простого примера, если непрерывные диапазоны в 200 небольших страниц и 311 небольших страниц уже использованы посредством процесса, запоминающее устройство которого резервирует гостевое физическое запоминающее устройство 312, и только одна небольшая страница между двумя непрерывными диапазонами требуется для того, чтобы устанавливать непрерывный диапазон небольших страниц, эквивалентных большой странице, в таком случае, после того как эта небольшая страница освобождается, к примеру, посредством откачки, на уровне страниц, или размена, единственные данные, которые должны копироваться, могут представлять собой данные, соответствующие этой одной небольшой странице, при этом оставшиеся данные могут оставаться на месте, даже если соответствующие записи таблицы более низкого уровня в SLAT 220 могут делаться недействительными и заменяться одной записью таблицы более высокого уровня, охватывающей идентичный диапазон запоминающего устройства.[0094] According to one aspect, constructing a large page size region can take advantage of existing small page usages through processes whose storage is used to reserve guest physical storage of virtual machine computing environments. As a simple example, if contiguous ranges of 200 small pages and 311 small pages have already been used by a process whose storage is backed up by guest
[0095] Чтобы избегать необходимости восстанавливать области запоминающего устройства с большим размером страницы из непрерывных диапазонов небольших страниц, существующий набор смежных записей таблицы более низкого уровня в таблице 250 страниц, которые охватывают, в совокупности, эквивалентный диапазон запоминающего устройства с одной записью 711 таблицы более высокого уровня в SLAT 220, может блокироваться таким образом, что они могут избегать откачки страниц. Таким образом, например, стек 230 виртуализации может запрашивать то, что записи 671, 731, 732 таблицы более низкого уровня и т.д. блокироваться таким образом, что соответствующие диапазоны 661, 721, 722 физического запоминающего устройства хоста и т.д. могут сохранять данные, сохраненные в них, без подкачки страниц на диск. Согласно одному аспекту, решение, к примеру, посредством стека 230 виртуализации, на предмет того, чтобы запрашивать блокировку таких записей, может зависеть от различных факторов. Например, один такой фактор может представлять собой частоту использования данных, сохраненных в этих диапазонах запоминающего устройства, при этом более часто используемые данные приводящими к блокированию записей, а менее часто используемые данные приводят к разблокированию впоследствии записей. Другие факторы, такие как объем фрагментации запоминающего устройства всей системы, потребность в большей плотности вычислительных окружений виртуальной машины на вычислительном хост-устройстве и другие аналогичные факторы, могут в равной степени учитываться при определении того, следует или нет запрашивать то, что записи таблицы страниц, поддерживающие запись таблицы более высокого уровня в SLAT, должны блокироваться.[0095] To avoid the need to reconstruct large page size storage areas from contiguous ranges of small pages, an existing set of contiguous lower level table entries in page table 250 that collectively span an equivalent storage range with one higher table entry 711 level in
[0096] Обращаясь к фиг. 8, блок-схема 800 последовательности операций способа, показанная на нем, иллюстрирует вышеописанные механизмы в качестве примерной последовательности этапов. Первоначально, на этапе 810, может возникать виртуальный отказ, как подробно указано выше. Затем, на этапе 815, может выполняться определение в отношении того, обращается или нет виртуальный отказ этапа 810 к запоминающему устройству в области запоминающего устройства с большим размером страницы, при том, что к другому запоминающему устройству в этой области с большим размером страницы ранее не обращались посредством виртуального отказа. В частности, физическое запоминающее устройство хоста может разграничиваться на сегменты с большим размером страницы. Первый виртуальный отказ, обращающийся к запоминающему устройству в одной области с большим размером страницы, может приводить к положительному определению на этапе 815, за счет чего обработка может переходить к этапу 835.[0096] Referring to FIG. 8, the
[0097] На этапе 835, одна запись таблицы более высокого уровня может формироваться в SLAT, тогда как, соответственно, на этапе 840, несколько записей таблицы более низкого уровня могут использоваться в таблице страниц хоста, в которой релевантное количество нескольких записей таблицы более низкого уровня представляет собой количество, которое который охватывает диапазон запоминающего устройства, идентичный диапазону запоминающего устройства для одной записи таблицы более высокого уровня, сформированной в SLAT, а именно, диапазон запоминающего устройства, соответствующий разграниченной области с большим размером страницы запоминающего устройства, содержащего местоположение ячейки запоминающего устройства, доступ которого инициирует виртуальный отказ на этапе 810. Как указано выше, поскольку таблица страниц хоста содержит несколько записей таблицы более низкого уровня, в отличие от одной записи таблицы более высокого уровня, управление запоминающим устройством вычислительного хост-устройства может выбирать необходимость выкачивать, к примеру, посредством копирования контента на диск, одну или более областей или страниц запоминающего устройства, идентифицированных посредством таких записей таблицы более низкого уровня в таблице страниц хоста. Если такая откачка страниц возникает, как определено на этапе 845, обработка может переходить к этапу 850, и запись таблицы более высокого уровня в SLAT может заменяться несколькими записями таблицы более низкого уровня, соответствующими областям запоминающего устройства, на которые ссылаются записи таблицы более низкого уровня в таблице страниц хоста, которые не подвергнуты откачке страниц (и без учета SLAT, записями таблицы уровня, соответствующими областям запоминающего устройства, на которые ссылаются записи таблицы более низкого уровня в таблице страниц хоста, которые фактически подвергнуты откачке страниц).[0097] At
[0098] Согласно одному аспекту, если небольшие страницы из области запоминающего устройства с большим размером страницы подвергнуты откачке страниц на этапе 845, и запись таблицы более высокого уровня в SLAT признается недействительной и заменяется соответствующей последовательностью записей таблицы более низкого уровня (за исключением любых записей таблицы более низкого уровня, обращающихся к подвергнутым откачке страниц небольшим страницам), то, необязательно, обработка может переходить к этапу 855, чтобы продолжать проверять доступные области запоминающего устройства с большим размером страницы, которые становятся свободными. Как подробно указано выше, процессы управления запоминающим устройством, выполняющиеся на вычислительном хост-устройстве, например, могут оппортунистически восстанавливать области доступного запоминающего устройства с большим размером страницы. Если такие области запоминающего устройства с большим размером страницы становятся доступными, как определено на этапе 855, обработка может переходить к этапу 860, на котором записи таблицы более низкого уровня в SLAT могут заменяться одной записью таблицы более высокого уровня в SLAT, и при необходимости, данные могут копироваться из областей запоминающего устройства, на которые ссылаются предшествующие записи таблицы более низкого уровня в области запоминающего устройства, на которые теперь ссылается одна запись таблицы более высокого уровня (если две области запоминающего устройства отличаются).[0098] According to one aspect, if small pages from a large page size storage area are paged out at
[0099] Возвращаясь к этапу 815, если виртуальный отказ этапа 810 не является первым для опорного запоминающего устройства в заранее разграниченной области с большим размером страницы, обработка может переходить к этапу 820. На этапе 820, может выполняться определение в отношении того, должна или нет большая страница создаваться во время перехвата, к примеру, способом, подробно указанным выше. Более конкретно, если этапы 835 и 840 ранее выполнены для области запоминающего устройства с большим размером страницы, и SLAT теперь содержит одну запись таблицы более высокого уровня, в то время как таблица страниц содержит эквивалентные записи таблицы более низкого уровня, ссылающиеся на подчасти области запоминающего устройства, на которую ссылается одна запись таблицы более высокого уровня в SLAT, то затем последующий доступ к запоминающему устройству, направленный в любые местоположения ячеек запоминающего устройства в области запоминающего устройства, на которую ссылается одна запись таблицы более высокого уровня в SLAT, не должен инициировать виртуальный отказ, как подробно указано выше. Таким образом, если виртуальный отказ инициируется на этапе 810, и на этапе 815, определяется то, что виртуальный отказ не направляется сначала в местоположения ячеек запоминающего устройства в заранее разграниченной области с большим размером страницы запоминающего устройства, то виртуальный отказ, инициированный на этапе 810, с большой вероятностью инициирован, поскольку этапы 835 и 840 ранее выполнены для местоположений ячеек запоминающего устройства в этой области с большим размером страницы, но впоследствии, одна или более небольших страниц, которые содержат эту область запоминающего устройства с большим размером страницы, подвергнуты откачке страниц, как определено на этапе 845, и в силу этого этап 850 ранее выполнен. Таким образом, на этапе 820, может выполняться определение в отношении того, должна или нет область запоминающего устройства с большим размером страницы конструироваться во время перехвата. Если такая область с большим размером страницы должна конструироваться, то обработка может переходить к этапу 830, и соответствующее количество смежных небольших страниц может ассемблироваться, как подробно указано выше. Обработка затем может переходить к этапу 835, как указано выше. С другой стороны, если, на этапе 830, такое конструирование по запросу областей доступного запоминающего устройства с большим размером страницы не запрашивается, обработка может переходить к использованию записей таблицы более низкого уровня в таблице страниц хоста и SLAT в соответствии с механизмами, описанными подробно выше со ссылкой на фиг. 4 и 5.[0099] Returning to step 815, if the virtual failure of
[00100] Вышеприведенные описания включают в себя, в качестве первого примера, способ увеличения скорости доступа компьютерного запоминающего устройства, при этом способ содержит: обнаружение первого доступа к запоминающему устройству, из первого процесса, выполняющегося в вычислительном окружении виртуальной машины, направленном в первый диапазон запоминающего устройства; формирование, в качестве предварительного условия для выполнения первого доступа к запоминающему устройству, первой записи в иерархически организованной таблице трансляции адресов второго уровня, причем иерархически организованная таблица трансляции адресов второго уровня соотносит адреса ячеек физического запоминающего устройства хоста с адресами ячеек гостевого физического запоминающего устройства, причем первая запись находится, по меньшей мере, на один иерархический уровень выше иерархически самого нижнего уровня таблиц таким образом, что второй диапазон запоминающего устройства, идентифицированный посредством первой записи, может идентифицироваться вообще без обращения к таблицам на иерархически самом нижнем уровне таблиц, причем второй диапазон запоминающего устройства больше первого диапазона запоминающего устройства; и в ответ на формирование первой записи в иерархически организованной таблице трансляции адресов второго уровня, пометку как используемых первого множества записей в иерархически организованной таблице страниц, причем иерархически организованная таблица страниц соотносит адреса ячеек физического запоминающего устройства хоста с адресами ячеек виртуального запоминающего устройства хоста, причем первое множество записей ссылаются, в совокупности, на то же второй диапазон запоминающего устройства, что и первая запись в иерархически организованной таблице трансляции адресов второго уровня, при этом записи из первого множества записей находятся на иерархически самом нижнем уровне таблиц; при этом адреса ячеек гостевого физического запоминающего устройства воспринимаются как адреса в физическом запоминающем устройстве посредством процессов, выполняющихся внутри вычислительного окружения виртуальной машины; при этом адреса ячеек физического запоминающего устройства хоста представляют собой адреса в фактическом физическом запоминающем устройстве вычислительного хост-устройства, вмещающего вычислительное окружение виртуальной машины; при этом адреса ячеек виртуального запоминающего устройства хоста представляют собой адреса в виртуальном запоминающем устройстве, предоставленном посредством диспетчера запоминающего устройства, выполняющегося на вычислительном хост-устройстве, причем диспетчер запоминающего устройства использует иерархически организованную таблицу страниц для того, чтобы предоставлять виртуальное запоминающее устройство; и при этом гостевое физическое запоминающее устройство, идентифицированное посредством адресов ячеек гостевого физического запоминающего устройства, резервируется посредством части виртуального запоминающего устройства хоста, идентифицированной посредством части адресов ячеек виртуального запоминающего устройства хоста.[00100] The above descriptions include, as a first example, a method for increasing a computer storage device access rate, the method comprising: detecting a first storage device access, from a first process running in a virtual machine computing environment directed to a first storage range devices; forming, as a precondition for performing the first access to the storage device, a first entry in a hierarchically organized second level address translation table, wherein the hierarchically organized second level address translation table maps host physical storage cell addresses to guest physical storage cell addresses, the first the entry is located at least one hierarchical level above the hierarchically lowest table level such that the second storage range identified by the first entry can be identified without reference to the tables at the hierarchically lowest table level at all, the second storage range greater than the first storage range; and in response to generating a first entry in the second level hierarchical address translation table, marking as in use the first set of entries in the hierarchical page table, the hierarchically organized page table mapping host physical storage cell addresses to host virtual storage cell addresses, the first the plurality of entries refer, collectively, to the same second storage range as the first entry in the hierarchically organized second level address translation table, wherein the entries from the first plurality of entries are at the hierarchically lowest level of the tables; wherein the addresses of the cells of the guest physical storage device are perceived as addresses in the physical storage device by processes running within the computing environment of the virtual machine; wherein the physical storage cell addresses of the host are addresses in the actual physical storage of the host computing device accommodating the virtual machine computing environment; wherein the host virtual storage cell addresses are addresses in a virtual storage provided by a storage manager running on a computing host device, the storage manager using a hierarchically organized page table to provide the virtual storage; and wherein the guest physical storage device identified by the cell addresses of the guest physical storage device is reserved by the host virtual storage portion identified by the cell address portion of the host virtual storage device.
[00101] Второй пример представляет собой способ первого примера, дополнительно содержащий: обнаружение второго доступа к запоминающему устройству из первого процесса, выполняющегося в вычислительном окружении виртуальной машины, причем второй доступ к запоминающему устройству направлен в третий диапазон запоминающего устройства, который отличается от первого диапазона запоминающего устройства; и удовлетворение второго доступа к запоминающему устройству посредством обращения ко второму поднабору первого множества записей в иерархически организованной таблице страниц; при этом первый доступ к запоминающему устройству удовлетворяется посредством обращения к первому поднабору первого множества записей в иерархически организованной таблице страниц, причем первый поднабор содержит отличающиеся записи, в иерархически организованной таблице страниц, относительно второго поднабора.[00101] The second example is a method of the first example, further comprising: detecting a second storage access from a first process running in the virtual machine computing environment, wherein the second storage access is directed to a third storage range that is different from the first storage range. devices; and satisfying the second access to the storage device by referring to the second subset of the first set of entries in the hierarchically organized page table; wherein the first storage access is satisfied by accessing a first subset of the first set of entries in the hierarchically organized page table, the first subset containing different entries in the hierarchically organized page table relative to the second subset.
[00102] Третий пример представляет собой способ первого примера, дополнительно содержащий: обнаружение, после того, как первый доступ к запоминающему устройству завершается, того, что первый поднабор первого множества записей в иерархически организованной таблице страниц имеет данные, которые первоначально сохранены в соответствующих адресах ячеек физического запоминающего устройства хоста, затем выкачаны, на уровне страниц, в энергонезависимый носитель хранения данных; признание недействительности, в ответ на обнаружение, первой записи в иерархически организованной таблице трансляции адресов второго уровня; и формирование, вместо первой записи в иерархически организованной таблице трансляции адресов второго уровня, второго множества записей в иерархически организованной таблице трансляции адресов второго уровня, причем второе множество записей ссылаются, в совокупности, на, по меньшей мере, часть того же второго диапазона запоминающего устройства, что и первая запись, при этом записи из второго множества записей находятся на иерархически самом нижнем уровне таблиц.[00102] The third example is a method of the first example, further comprising: detecting, after the first storage access is completed, that the first subset of the first set of entries in the hierarchically organized page table has data that is initially stored in the corresponding cell addresses the host's physical storage device, then deflated, at the page level, to a non-volatile storage medium; invalidating, in response to the discovery, the first entry in the hierarchically organized second level address translation table; and forming, instead of the first entry in the hierarchically organized second level address translation table, a second set of entries in the hierarchically organized second level address translation table, wherein the second set of entries refer, in the aggregate, to at least a portion of the same second storage range, as the first record, while the records from the second set of records are at the hierarchically lowest level of the tables.
[00103] Четвертый пример представляет собой способ третьего примера, в котором второе множество записей обращаются к частям второго диапазона запоминающего устройства, к которым ранее осуществлен доступ посредством первого процесса и которые не подвергнуты откачке страниц.[00103] The fourth example is the method of the third example, in which the second set of records access portions of the second storage range previously accessed by the first process and not paged out.
[00104] Пятый пример представляет собой способ первого примера, дополнительно содержащий: ассемблирование первого множества смежных областей физического запоминающего устройства хоста с небольшим размером страницы в одну область с большим размером страницы физического запоминающего устройства хоста.[00104] The fifth example is the method of the first example, further comprising: assembling a first plurality of contiguous small page size host physical storage areas into a single large page size host physical storage area.
[00105] Шестой пример представляет собой способ пятого примера, в котором ассемблирование возникает после обнаружения первого доступа к запоминающему устройству и до формирования первой записи в иерархически организованной таблице трансляции адресов второго уровня.[00105] The sixth example is the method of the fifth example, in which the assembly occurs after the detection of the first access to the storage device and before the formation of the first entry in the hierarchically organized second level address translation table.
[00106] Седьмой пример представляет собой способ пятого примера, дополнительно содержащий: формирование второй записи в иерархически организованной таблице трансляции адресов второго уровня, причем вторая запись находится, по меньшей мере, на один иерархический уровень выше иерархически самого нижнего уровня таблиц таким образом, что третий диапазон запоминающего устройства, идентифицированный посредством второй записи, может идентифицироваться вообще без обращения к таблицам на иерархически самом нижнем уровне таблиц, причем третий диапазон запоминающего устройства ссылается на одну область с большим размером страницы физического запоминающего устройства хоста, в которую ассемблированы первое множество смежных областей физического запоминающего устройства хоста с небольшим размером страницы; и в ответ на формирование второй записи в иерархически организованной таблице трансляции адресов второго уровня, пометку как используемых второго множества записей в иерархически организованной таблице страниц, причем второе множество записей ссылаются на первое множество смежных областей физического запоминающего устройства хоста с небольшим размером страницы, которые ассемблированы в одну область с большим размером страницы физического запоминающего устройства хоста.[00106] The seventh example is a method of the fifth example, further comprising: generating a second entry in a hierarchically organized second level address translation table, the second entry being at least one hierarchical level above the hierarchically lowest level of the tables such that the third the storage range identified by the second entry can be identified without reference to tables at all at the hierarchically lowest table level, wherein the third storage range refers to a single larger page size area of the host physical storage into which a first plurality of contiguous physical storage areas are assembled. host devices with a small page size; and in response to generating a second entry in the second level hierarchical address translation table, marking as in use a second set of entries in the hierarchically organized page table, the second set of entries referencing a first set of contiguous small page size host physical storage areas that are assembled into one area with a large host physical storage page size.
[00107] Восьмой пример представляет собой способ седьмого примера, дополнительно содержащий: формирование второй записи в иерархически организованной таблице трансляции адресов второго уровня, причем вторая запись находится, по меньшей мере, на один иерархический уровень выше иерархически самого нижнего уровня таблиц таким образом, что третий диапазон запоминающего устройства, идентифицированный посредством второй записи, может идентифицироваться вообще без обращения к таблицам на иерархически самом нижнем уровне таблиц, причем третий диапазон запоминающего устройства ссылается к одной области с большим размером страницы физического запоминающего устройства хоста, в которую ассемблированы первое множество смежных областей физического запоминающего устройства хоста с небольшим размером страницы; и в ответ на формирование второй записи в иерархически организованной таблице трансляции адресов второго уровня, пометку как используемых второго множества записей в иерархически организованной таблице страниц, причем второе множество записей ссылаются на первое множество смежных областей физического запоминающего устройства хоста с небольшим размером страницы, которые ассемблированы в одну область с большим размером страницы физического запоминающего устройства хоста.[00107] The eighth example is a method of the seventh example, further comprising: generating a second entry in a hierarchically organized second level address translation table, the second entry being at least one hierarchical level above the hierarchically lowest level of the tables such that the third the storage range identified by the second entry can be identified without any reference to tables at the hierarchically lowest level of tables, wherein the third storage range refers to a single larger page size area of the host physical storage into which a first plurality of contiguous physical storage areas are assembled. host devices with a small page size; and in response to generating a second entry in the second level hierarchical address translation table, marking as in use a second set of entries in the hierarchically organized page table, the second set of entries referencing a first set of contiguous small page size host physical storage areas that are assembled into one area with a large host physical storage page size.
[00108] Девятый пример представляет собой способ седьмого примера, дополнительно содержащий: копирование данных из второго набора одной или более областей физического запоминающего устройства хоста с небольшим размером страницы, по меньшей мере, в часть первого множества смежных областей с небольшим размером страницы; и признание недействительности второго множества записей в иерархически организованной таблице трансляции адресов второго уровня, причем второе множество записей содержат: как (1) первый поднабор записей, которые ссылаются на второй набор одной или более областей физического запоминающего устройства хоста с небольшим размером страницы, так и (2) второй поднабор записей, которые ссылаются на, по меньшей мере, часть первого множества смежных областей физического запоминающего устройства хоста с небольшим размером страницы, при этом записи из второго множества записей находятся на иерархически самом нижнем уровне таблиц; при этом сформированная вторая запись в иерархически организованной таблице трансляции адресов второго уровня используется вместо второго множества записей, которые признаются недействительными.[00108] The ninth example is the method of the seventh example, further comprising: copying data from a second set of one or more small page size host physical storage areas to at least a portion of the first plurality of contiguous small page size areas; and invalidating a second set of entries in a hierarchically organized second level address translation table, the second set of entries comprising: both (1) a first subset of entries that refer to a second set of one or more small page size host physical storage areas, and ( 2) a second subset of entries that reference at least a portion of the first set of contiguous host physical storage areas with a small page size, the entries from the second set of entries being at the hierarchically lowest table level; wherein the generated second entry in the hierarchically organized second level address translation table is used in place of the second set of entries that are invalidated.
[00109] Десятый пример представляет собой способ пятого примера, в котором ассемблирование первого множества смежных областей физического запоминающего устройства хоста с небольшим размером страницы содержит копирование данных из части первого множества смежных областей с небольшим размером страницы в другие области физического запоминающего устройства хоста с небольшим размером страницы, которые отличаются от первого множества смежных областей с небольшим размером страницы.[00109] The tenth example is a method of the fifth example, wherein assembling the first plurality of contiguous small page size host physical storage areas comprises copying data from a portion of the first plurality of contiguous small page size areas to other small page size host physical storage areas , which are different from the first set of contiguous areas with a small page size.
[00110] Одиннадцатый пример представляет собой способ десятого примера, в котором копирование данных из части первого множества смежных областей с небольшим размером страницы в другие области с небольшим размером страницы выполняется только в том случае, если фрагментация первого множества смежных областей с небольшим размером страницы ниже порогового значения фрагментации.[00110] The eleventh example is a method of the tenth example, in which copying data from a part of the first plurality of contiguous areas with a small page size to other areas with a small page size is performed only if the fragmentation of the first plurality of contiguous areas with a small page size is below a threshold fragmentation values.
[00111] Двенадцатый пример представляет собой способ первого примера, дополнительно содержащий: предотвращение подкачки страниц второго диапазона запоминающего устройства.[00111] The twelfth example is the method of the first example, further comprising: preventing paging of the second storage range.
[00112] Тринадцатый пример представляет собой способ двенадцатого примера, в котором предотвращение подкачки страниц второго диапазона запоминающего устройства выполняется только в том случае, если к одной или более частей второго диапазона запоминающего устройства осуществляется доступ чаще порогового значения частоты доступа.[00112] The thirteenth example is the method of the twelfth example, wherein paging prevention of the second storage range is performed only if one or more portions of the second storage range is accessed more frequently than an access frequency threshold.
[00113] Четырнадцатый пример представляет собой способ двенадцатого примера, дополнительно содержащий удаление предотвращения подкачки страниц второго диапазона запоминающего устройства, если к одной или более частей второго диапазона запоминающего устройства осуществляется доступ реже порогового значения частоты доступа.[00113] The fourteenth example is the method of the twelfth example, further comprising removing paging prevention of the second storage range if one or more portions of the second storage range are accessed less than an access frequency threshold.
[00114] Пятнадцатый пример представляет собой способ первого примера, в котором второй диапазон запоминающего устройства имеет размер в 2 МБ.[00114] The fifteenth example is the method of the first example, in which the second storage range has a size of 2 MB.
[00115] Шестнадцатый пример представляет собой вычислительное устройство, содержащее: один или более центральных процессоров; оперативное запоминающее устройство (RAM); и один или более машиночитаемых носителей, содержащих: первый набор машиноисполняемых инструкций, которые, при выполнении посредством вычислительного устройства, инструктируют вычислительному устройству предоставлять диспетчер запоминающего устройства, обращающийся к иерархически организованной таблице страниц для того, чтобы транслировать адреса ячеек виртуального запоминающего устройства хоста в адреса ячеек физического запоминающего устройства хоста, которые идентифицируют местоположения в RAM; второй набор машиноисполняемых инструкций, которые, при выполнении посредством вычислительного устройства, инструктируют вычислительному устройству предоставлять вычислительное окружение виртуальной машины, при этом процессы, выполняющиеся внутри вычислительного окружения виртуальной машины, воспринимают адреса ячеек гостевого физического запоминающего устройства в качестве адресов для физического запоминающего устройства, и при этом дополнительное гостевое физическое запоминающее устройство, идентифицированное посредством адресов ячеек гостевого физического запоминающего устройства, резервируется посредством части виртуального запоминающего устройства хоста, идентифицированной посредством части адресов ячеек виртуального запоминающего устройства хоста; и третий набор машиноисполняемых инструкций, которые, при выполнении посредством вычислительного устройства, инструктируют вычислительному устройству: обнаруживать доступ к первому запоминающему устройству, из первого процесса, выполняющегося в вычислительном окружении виртуальной машины, направленном в первый диапазон запоминающего устройства; формировать, в качестве предварительного условия для выполнения первого доступа к запоминающему устройству, первую запись в иерархически организованной таблице трансляции адресов второго уровня, причем иерархически организованная таблица трансляции адресов второго уровня соотносит адреса ячеек физического запоминающего устройства хоста с адресами ячеек гостевого физического запоминающего устройства, причем первая запись находится, по меньшей мере, на один иерархический уровень выше иерархически самого нижнего уровня таблиц таким образом, что второй диапазон запоминающего устройства, идентифицированный посредством первой записи, может идентифицироваться вообще без обращения к таблицам на иерархически самом нижнем уровне таблиц, причем второй диапазон запоминающего устройства больше первого диапазона запоминающего устройства; и в ответ на формирование первой записи в иерархически организованной таблице трансляции адресов второго уровня, помечать как используемые первое множество записей в иерархически организованной таблице страниц, причем первое множество записей ссылаются, в совокупности, на тот же второй диапазон запоминающего устройства, что и первая запись в иерархически организованной таблице трансляции адресов второго уровня, при этом записи из первого множества записей находятся на иерархически самом нижнем уровне таблиц.[00115] The sixteenth example is a computing device comprising: one or more central processing units; random access memory (RAM); and one or more computer-readable media comprising: a first set of computer-executable instructions that, when executed by a computing device, instructs the computing device to provide a storage manager that accesses a hierarchically organized page table in order to translate host virtual storage cell addresses into cell addresses the physical storage device of the host, which identify locations in RAM; a second set of machine-executable instructions that, when executed by the computing device, instructs the computing device to provide a virtual machine computing environment, wherein processes running within the virtual machine computing environment treat the guest physical storage cell addresses as addresses for the physical storage device, and when therein, the additional guest physical storage identified by the guest physical storage cell addresses is reserved by the host virtual storage portion identified by the host virtual storage cell address portion; and a third set of computer-executable instructions that, when executed by the computing device, cause the computing device to: detect access to the first storage device from a first process running in the virtual machine computing environment directed to the first storage device range; to form, as a precondition for performing the first access to the storage device, the first entry in the hierarchically organized second level address translation table, and the hierarchically organized second level address translation table correlates the addresses of cells of the host physical storage device with the addresses of cells of the guest physical storage device, and the first the entry is located at least one hierarchical level above the hierarchically lowest table level such that the second storage range identified by the first entry can be identified without reference to the tables at the hierarchically lowest table level at all, the second storage range greater than the first storage range; and in response to generating a first entry in the second-level hierarchically organized address translation table, marking as in use a first set of entries in the hierarchically organized page table, wherein the first set of entries refer, collectively, to the same second storage range as the first entry in a hierarchically organized second-level address translation table, wherein the entries from the first set of entries are at the hierarchically lowest level of the tables.
[00116] Семнадцатый пример представляет собой вычислительное устройство шестнадцатого примера, в котором третий набор машиноисполняемых инструкций содержит дополнительные машиноисполняемые инструкции, которые, при исполнении посредством вычислительного устройства, инструктируют вычислительному устройству: обнаруживать, после того, как первый доступ к запоминающему устройству завершается, то, что первый поднабор первого множества записей в иерархически организованной таблице страниц имеет данные, которые первоначально сохранены в соответствующих адресах ячеек физического запоминающего устройства хоста, затем выкачаны, на уровне страниц, в энергонезависимый носитель хранения данных; делать недействительной, в ответ на обнаружение, первую запись в иерархически организованной таблице трансляции адресов второго уровня; и формировать, вместо первой записи в иерархически организованной таблице трансляции адресов второго уровня, второе множество записей в иерархически организованной таблице трансляции адресов второго уровня, причем второе множество записей обращаются, в совокупности, по меньшей мере, к части второго диапазона запоминающего устройства, идентичного диапазону запоминающего устройства для первой записи, при этом записи из второго множества записей находятся на иерархически самом нижнем уровне таблиц.[00116] The seventeenth example is the computing device of the sixteenth example, in which the third set of computer-executable instructions contains additional computer-executable instructions that, when executed by the computing device, instruct the computing device: to detect, after the first access to the storage device is completed, then, that a first subset of the first plurality of entries in the hierarchically organized page table has data that is initially stored in respective host physical storage cell addresses, then siphoned off, at the page level, to a non-volatile storage medium; invalidate, in response to the discovery, the first entry in the hierarchically organized second level address translation table; and to form, instead of the first entry in the hierarchically organized second level address translation table, a second set of entries in the hierarchically organized second level address translation table, wherein the second set of entries refer, in the aggregate, to at least a portion of the second storage range identical to the storage range devices for the first record, while records from the second set of records are at the hierarchically lowest level of tables.
[00117] Восемнадцатый пример представляет собой вычислительное устройство шестнадцатого примера, в котором третий набор машиноисполняемых инструкций содержит дополнительные машиноисполняемые инструкции, которые, при исполнении посредством вычислительного устройства, инструктируют вычислительному устройству: ассемблировать первое множество смежных областей физического запоминающего устройства хоста с небольшим размером страницы в одну область с большим размером страницы физического запоминающего устройства хоста; при этом ассемблирование возникает после обнаружения первого доступа к запоминающему устройству и до формирования первой записи в иерархически организованной таблице трансляции адресов второго уровня.[00117] The eighteenth example is the computing device of the sixteenth example, wherein the third set of computer-executable instructions comprises additional computer-executable instructions that, when executed by the computing device, instruct the computing device to: assemble a first plurality of contiguous host physical storage areas with a small page size into one an area with a large page size of the physical storage device of the host; in this case, assembly occurs after the first access to the storage device is detected and before the formation of the first entry in the hierarchically organized second-level address translation table.
[00118] Девятнадцатый пример представляет собой вычислительное устройство шестнадцатого примера, в котором третий набор машиноисполняемых инструкций содержит дополнительные машиноисполняемые инструкции, которые, при исполнении посредством вычислительного устройства, инструктируют вычислительному устройству: предотвращать подкачку страниц второго диапазона запоминающего устройства.[00118] The nineteenth example is the computing device of the sixteenth example, in which the third set of computer-executable instructions contains additional computer-executable instructions that, when executed by the computing device, instruct the computing device to: prevent paging of the second storage range.
[00119] Двадцатый пример представляет собой один или более машиночитаемых носителей хранения данных, содержащих машиноисполняемые инструкции, которые при выполнении инструктируют вычислительному устройству: обнаруживать доступ к первому запоминающему устройству, из первого процесса, выполняющегося в вычислительном окружении виртуальной машины, направленном в первый диапазон запоминающего устройства; формировать, в качестве предварительного условия для выполнения первого доступа к запоминающему устройству, первую запись в иерархически организованной таблице трансляции адресов второго уровня, причем иерархически организованная таблица трансляции адресов второго уровня соотносит адреса ячеек физического запоминающего устройства хоста с адресами ячеек гостевого физического запоминающего устройства, причем первая запись находится, по меньшей мере, на один иерархический уровень выше иерархически самого нижнего уровня таблиц таким образом, что второй диапазон запоминающего устройства, идентифицированный посредством первой записи, может идентифицироваться вообще без обращения к таблицам на иерархически самом нижнем уровне таблиц, причем второй диапазон запоминающего устройства больше первого диапазона запоминающего устройства; и в ответ на формирование первой записи в иерархически организованной таблице трансляции адресов второго уровня, помечать как используемые первое множество записей в иерархически организованной таблице страниц, причем иерархически организованная таблица страниц соотносит адреса ячеек физического запоминающего устройства хоста с адресами ячеек виртуального запоминающего устройства хоста, причем первое множество записей ссылаются, в совокупности, на тот же второй диапазон запоминающего устройства, что и первая запись в иерархически организованной таблице трансляции адресов второго уровня, при этом записи из первого множества записей находятся на иерархически самом нижнем уровне таблиц; при этом адреса ячеек гостевого физического запоминающего устройства воспринимаются как адреса в физическом запоминающем устройстве посредством процессов, выполняющихся внутри вычислительного окружения виртуальной машины; при этом адреса ячеек физического запоминающего устройства хоста представляют собой адреса в фактическом физическом запоминающем устройстве вычислительного хост-устройства, вмещающего вычислительное окружение виртуальной машины; при этом адреса ячеек виртуального запоминающего устройства хоста представляют собой адреса в виртуальном запоминающем устройстве, предоставленном посредством диспетчера запоминающего устройства, выполняющегося на вычислительном хост-устройстве, причем диспетчер запоминающего устройства использует иерархически организованную таблицу страниц для того, чтобы предоставлять виртуальное запоминающее устройство; и при этом гостевое физическое запоминающее устройство, идентифицированное посредством адресов ячеек гостевого физического запоминающего устройства, резервируется посредством части виртуального запоминающего устройства хоста, идентифицированной посредством части адресов ячеек виртуального запоминающего устройства хоста.[00119] The twentieth example is one or more computer-readable storage media containing computer-executable instructions that, when executed, instruct the computing device to: detect access to a first storage device, from a first process running in a virtual machine computing environment directed to a first storage device range ; to form, as a precondition for performing the first access to the storage device, the first entry in the hierarchically organized second level address translation table, and the hierarchically organized second level address translation table correlates the addresses of cells of the host physical storage device with the addresses of cells of the guest physical storage device, and the first the entry is located at least one hierarchical level above the hierarchically lowest table level such that the second storage range identified by the first entry can be identified without reference to the tables at the hierarchically lowest table level at all, the second storage range greater than the first storage range; and, in response to generating a first entry in the second-level hierarchical address translation table, marking as in use the first set of entries in the hierarchical page table, the hierarchical page table mapping host physical storage cell addresses to host virtual storage cell addresses, the first the plurality of entries refer, collectively, to the same second storage range as the first entry in the hierarchically organized second level address translation table, wherein the entries from the first plurality of entries are at the hierarchically lowest table level; wherein the addresses of the cells of the guest physical storage device are perceived as addresses in the physical storage device by processes running within the computing environment of the virtual machine; wherein the physical storage cell addresses of the host are addresses in the actual physical storage of the host computing device accommodating the virtual machine computing environment; wherein the host virtual storage cell addresses are addresses in a virtual storage provided by a storage manager running on a computing host device, the storage manager using a hierarchically organized page table to provide the virtual storage; and wherein the guest physical storage identified by the guest physical storage cell addresses is reserved by the host virtual storage portion identified by the host virtual storage cell address portion.
[00120] Как можно видеть из вышеуказанных описаний, описываются механизмы, посредством которых может быть ускорен доступ к запоминающему устройству через SLAT. Ввиду множества возможных варьирований изобретения, описанного в данном документе, мы заявляем в формуле изобретения, в качестве нашего изобретения, все такие варианты осуществления, которые могут находиться в пределах объема прилагаемой формулы изобретения и ее эквивалентов.[00120] As can be seen from the above descriptions, mechanisms are described by which access to a storage device via SLAT can be accelerated. In view of the many possible variations of the invention described herein, we claim in the claims, as our invention, all such embodiments as may fall within the scope of the appended claims and their equivalents.
Claims (60)
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US16/198,620 | 2018-11-21 | ||
| US16/423,137 | 2019-05-27 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| RU2780969C1 true RU2780969C1 (en) | 2022-10-04 |
Family
ID=
Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20070168643A1 (en) * | 2006-01-17 | 2007-07-19 | Hummel Mark D | DMA Address Translation in an IOMMU |
| US20120110236A1 (en) * | 2010-10-29 | 2012-05-03 | Vmware, Inc. | System and Method to Prioritize Large Memory Page Allocation in Virtualized Systems |
| RU2550558C2 (en) * | 2012-06-15 | 2015-05-10 | Интернэшнл Бизнес Машинз Корпорейшн | Comparing and replacing dynamic address translation table entry |
| US20150363326A1 (en) * | 2014-06-11 | 2015-12-17 | Vmware, Inc. | Identification of low-activity large memory pages |
| RU2571366C2 (en) * | 2009-03-26 | 2015-12-20 | МАЙКРОСОФТ ТЕКНОЛОДЖИ ЛАЙСЕНСИНГ, ЭлЭлСи | Virtual non-uniform memory access architecture for virtual machines |
Patent Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20070168643A1 (en) * | 2006-01-17 | 2007-07-19 | Hummel Mark D | DMA Address Translation in an IOMMU |
| RU2571366C2 (en) * | 2009-03-26 | 2015-12-20 | МАЙКРОСОФТ ТЕКНОЛОДЖИ ЛАЙСЕНСИНГ, ЭлЭлСи | Virtual non-uniform memory access architecture for virtual machines |
| US20120110236A1 (en) * | 2010-10-29 | 2012-05-03 | Vmware, Inc. | System and Method to Prioritize Large Memory Page Allocation in Virtualized Systems |
| RU2550558C2 (en) * | 2012-06-15 | 2015-05-10 | Интернэшнл Бизнес Машинз Корпорейшн | Comparing and replacing dynamic address translation table entry |
| US20150363326A1 (en) * | 2014-06-11 | 2015-12-17 | Vmware, Inc. | Identification of low-activity large memory pages |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US11157306B2 (en) | Faster access of virtual machine memory backed by a host computing device's virtual memory | |
| US8261267B2 (en) | Virtual machine monitor having mapping data generator for mapping virtual page of the virtual memory to a physical memory | |
| JP6050262B2 (en) | Virtual disk storage technology | |
| US10365938B2 (en) | Systems and methods for managing data input/output operations in a virtual computing environment | |
| US9612966B2 (en) | Systems, methods and apparatus for a virtual machine cache | |
| US10528476B2 (en) | Embedded page size hint for page fault resolution | |
| US20160299712A1 (en) | Virtual Machines Backed by Host Virtual Memory | |
| US12326809B2 (en) | Dynamically allocatable physically addressed metadata storage | |
| RU2780969C1 (en) | Faster access of the memory apparatus of a virtual machine reserved by a virtual memory apparatus of a computing host apparatus | |
| US11762573B2 (en) | Preserving large pages of memory across live migrations of workloads | |
| HK40050309A (en) | Faster access of virtual machine memory backed by a host computing device’s virtual memory |