Changes between Version 1 and Version 2 of Ticket #67, comment 2


Ignore:
Timestamp:
Dec 15, 2016, 9:46:52 AM (7 years ago)
Author:
Valery V. Sedletski
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • Ticket #67, comment 2

    v1 v2  
    1 There is an idea to implement swapping of VM memory to a file, or to memory above 4 GB, via the PAE ramdisk driver from QSINIT loader or PSE36 mode related new KEE's in OS/4 kernel. (The latter case should be an order of magnitude quicker). Also, with QSINIT, the missing part is an API for drivers (an IDC call is required for that. But only ioctl API for ring3 apps exists atm). The best would be creating a layer/library for transparently-accessing these two backends. The necessary modifications to VBox code seems to be the paging (nested paging) related parts of VBox runtime (ring0 part). So, the vboxdrv.sys/VMMR0 needs to manage (shadow) page tables on its own, so that, any access to memory above 4 GB limit causes swapping of PAE/PSE36 memory to a buffer below 4 GB. And swapping the unneeded pages out. So, is is required to allocate some pool in lower 4 GB for each VM. Then pages in this pool are swapped each time with the pool above 4 GB, which is assigned to the same VM. So, we need also some management for these two pools.
     1There is an idea to implement swapping of VM memory to a file, or to memory above 4 GB, via the PAE ramdisk driver from QSINIT loader or PSE36 mode related new KEE's in OS/4 kernel. (The latter case should be an order of magnitude quicker). Also, with QSINIT, the missing part is an API for drivers (an IDC call is required for that. But only ioctl API for ring3 apps exists atm). The best would be creating a layer/library for transparently-accessing these two backends. The necessary modifications to VBox code seems to be the paging (nested paging) related parts of VBox runtime (ring0 part). So, the vboxdrv.sys/VMMR0 needs to manage (shadow) page tables on its own, so that, any access to memory above 4 GB limit causes swapping of PAE/PSE36 memory to a buffer below 4 GB. And swapping the unneeded pages out. So, it is required to allocate some pool in lower 4 GB for each VM. Then pages in this pool are swapped each time with the pool above 4 GB, which is assigned to the same VM. So, we need also some management for these two pools.
    22
    33PS: Also, I think, we'll need a configuration option (a checkbox) for each VM. So, if it is checked, than the memory above 4 GB is used. Also, we need a slider control, which specifies a percent of memory, allocated below 4 GB.