Changes between Version 121 and Version 122 of VboxApps


Ignore:
Timestamp:
Apr 6, 2022, 2:37:47 PM (2 years ago)
Author:
DavidA
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • VboxApps

    v121 v122  
    2222VM apps have the following limitations:
    2323
    24  * Commercial operating systems like Windows and Mac OS X
    25   have a per-user license, so in general you can't use them
    26   (or other pay-per-user software such as Matlab) in the VM image.
     24 * Only a fraction of volunteer computers have VirtualBox installed.
    2725 * !VirtualBox runs only on Intel-compatible processors.
    2826  If you want to support other processors (such as ARM, SPARC, etc.),
     
    3028 * Currently you can't run GPU applications in !VirtualBox VMs.
    3129
    32 === 32/64 bit issues ===
    33 
    34 A VM image is called 32- or 64-bit depending on the operating system it contains.
    35 The BOINC host population includes 32-bit and 64-bit hosts.
    36 64-bit hosts can run 32-bit VMs, but not conversely.
    37 You can choose to provide 32- or 64-bit VM images, or both.
    38 
    39 Possible reasons for using 64-bit VM images:
    40  * The 64-bit version of your app runs significantly faster than the 32-bit version.
    41  * Your app uses more than 3 GB of virtual address space.
    42 
    43 If you provide only 32-bit VM images,
    44 you must still create separate 32- and 64-bit app versions,
    45 using the same VM image but different '''vboxwrapper''' executables.
    46 '''vboxwrapper''', supplied by BOINC, interfaces between the BOINC client and the !VirtualBox system;
    47 it's a C++ program and has different executables
    48 for each platform, include 32- and 64-bit; these are available below.
    49 The 32-bit vboxwrapper will generally not work on a 64-bit machine.
     30VM apps use a program called "vboxwrapper" that connects
     31the BOINC client to VirtualBox.
    5032
    5133=== Packaging options ===
    5234
    5335There are two ways to package VM apps.
    54 NOTE: in the following, we use '''application''' and '''application version'''
    55 with their [AppVersion BOINC-specific meanings];
    56 we'll use '''executable''' to refer to the program that runs within the VM.
     36NOTE: in the following, '''application''' and '''application version'''
     37have [AppVersion BOINC-specific meanings];
     38'''executable''' refers to the program that runs within the VM.
    5739
    5840 * '''Single-purpose app''':  Include the executable with the application version.
     
    6749You must [AppVersionNew create app versions] for each platform you want to support;
    6850the app versions differ in which '''vboxwrapper''' executable they use.
    69 If you use both 32- and 64-bit VMs,
    70 the versions will also differ in the VM image and the application executable.
    7151
    7252You must associate a [AppPlan plan class] with each app version,
    73 such as "vbox32" (for 32-bit machines) or "vbox64" (for 64-bit machines).
    74 To enable multiple cores use the plan classes "vbox32_mt" and "vbox64_mt".
    75 By default it will cause the server to assign 2 threads (virtual cores) per VM task.
     53such as "vbox64" (for 64-bit machines).
     54To enable multiple cores use "vbox64_mt".
     55By default this will assign 2 threads (virtual cores) per VM task.
    7656
    7757For single-purpose apps, an app version includes the following files:
    7858
    79  * The VM image, in !VirtualBox format.
     59 * The VM image, in !VirtualBox format.  See "Multiattach mode" below.  If you don't use this mode, the image:
    8060  * Must have logical name "vm_image.vdi".
    8161  * Must have the '''copy_file''' attribute.
     
    9878This reduces network traffic and client disk usage.
    9979
    100 === Multiattach mode disk images ===
    101 
    102 {{{
    103 #!comment
    104 The vboxwrapper version number needs to be added once the new version is available.
    105 }}}
    106 As of version xxxxx '''vboxwrapper''' can deal with multiattach-mode/differencing disk images as described in the ​[https://www.virtualbox.org/manual/ch05.html#diffimages VirtualBox manual]. This avoids the need to copy a huge "vm_image.vdi" file to the worker slot each time a fresh WU starts. Instead the vdi image remains in the project directory, is opened read-only and used for all WUs referring to it. !VirtualBox transparently ensures that all disk '''writes''' go to a separate vdi file within the slot directory of a WU. That "differencing image" is usually much smaller than the parent vdi image.
    107 
    108 To enable this mode add '''<multiattach_vdi_file>filename_version.vdi</multiattach_vdi_file>''' to vbox_job.xml with filename_version.vdi being the name of the parent vdi image in the project directory.
     80=== Multiattach mode ===
     81
     82As of version 26204, '''vboxwrapper''' can deal with multiattach-mode/differencing disk images as described in the ​[https://www.virtualbox.org/manual/ch05.html#diffimages VirtualBox manual].
     83This avoids the need to copy a large "vm_image.vdi" file to the worker slot each time a task starts.
     84Instead the vdi image remains in the project directory, is opened read-only and used for all tasks referring to it.
     85!VirtualBox transparently ensures that all disk '''writes''' go to a separate vdi file within the slot directory of a task.
     86That "differencing image" is usually much smaller than the parent vdi image.
     87
     88To enable this mode add '''<multiattach_vdi_file>filename_version.vdi</multiattach_vdi_file>''' to vbox_job.xml
     89with filename_version.vdi being the name of the parent vdi image in the project directory.
    10990Compared to the setup above the app version needs to be configured slightly different:
    11091
     
    11394  * The copy_file attribute should '''not''' be set to avoid copying the vdi file to the slot directory.
    11495  * Should have the sticky attribute set.
    115  * During contextualization/creation of the vdi image this mode must not be used
     96 * During contextualization/creation of the vdi image, multi-attach mode must not be used.
    11697
    11798=== The Vbox job description file ===
     
    140121   [ <job_duration>X</job_duration> ]
    141122   [ <minimum_checkpoint_interval>N</minimum_checkpoint_interval> ]
     123   [ <multiattach_vdi_file>filename_version.vdi</multiattach_vdi_file> ]
    142124   [ <network_bridged_mode/> ]
    143125   [ <pf_guest_port>N</pf_guest_port> ]
     
    151133   [ <vm_disk_controller_model>LSILogic|LSILogicSAS|BusLogic|IntelAHCI|PIIX3|PIIX4|ICH6|I82078</vm_disk_controller_model> ]
    152134   [ <vm_disk_controller_type>ide|sata|scsi|floppy|sas</vm_disk_controller_type> ]
    153    [ <multiattach_vdi_file>filename_version.vdi</multiattach_vdi_file> ]
    154135   [ <vm_graphics_controller_type>VBoxSVGA|VBoxVGA|VMSVGA</vm_graphics_controller_type> ]
    155136   [ <vram_size_mb>N</vram_size_mb> ]
     
    211192 '''minimum_checkpoint_interval''':: Minimum number of seconds before a checkpoint/snapshot can be created.
    212193  Defaults to 10 minutes. (v26086+)
     194 '''multiattach_vdi_file''':: Enables multiattach-mode/differencing vdi images to be used.
     195   The filename given here becomes the parent image. It is expected to be in the projects directory.
     196   The filename should have a version number to avoid conflicts when an app version gets updated.
    213197 '''network_bridged_mode''':: If '''enable_network''' is set, use bridged mode; default is NAT mode.
    214198 '''pf_guest_port''':: Enable port forwarding to port N within the VM.
     
    228212 '''vm_disk_controller_model''':: Which disk controller model to emulate. As of version xxxx vboxwrapper uses <vm_disk_controller_model>IntelAHCI</vm_disk_controller_model> together with <vm_disk_controller_type>sata</vm_disk_controller_type> as default setting.
    229213 '''vm_disk_controller_type''':: Which disk controller type to emulate. As of version xxxx vboxwrapper uses <vm_disk_controller_model>IntelAHCI</vm_disk_controller_model> together with <vm_disk_controller_type>sata</vm_disk_controller_type> as default setting.
    230  '''multiattach_vdi_file''':: Enables multiattach-mode/differencing vdi images to be used.
    231    The filename given here becomes the parent image. It is expected to be in the projects directory.
    232    The filename should have a version number to avoid conflicts when an app version gets updated.
    233214 '''vm_graphics_controller_type''':: Which graphics controller type to emulate. For details see [https://www.virtualbox.org/manual/ch03.html#settings-display VirtualBox manual]. Vboxwrapper as of version xxxx uses VBoxVGA as default.
    234215 '''vram_size_mb''':: The amount of video memory allocated by the virtual graphics controller, in megabytes. VirtualBox allows it to be between 8 and 128 MB. For Linux VMs using VBoxVGA 16 MB is the recommended minimum. This value is used by default.
     
    366347x64: [http://boinc.berkeley.edu/dl/vboxwrapper_26198_x86_64-pc-linux-gnu.zip vboxwrapper_26198_x86_64-pc-linux-gnu.zip]
    367348
    368 x86: [http://boinc.berkeley.edu/dl/vboxwrapper_26178_i686-pc-linux-gnu.zip vboxwrapper_26178_i686-pc-linux-gnu.zip]
    369 
    370 == Premade vboxmonitor executables ==
    371 
    372 Linux:
    373 
    374 x86: [http://boinc.berkeley.edu/dl/vboxmonitor_26086_i686-pc-linux-gnu.zip vboxmonitor_26086_i686-pc-linux-gnu.zip]
    375 
    376 x64: [http://boinc.berkeley.edu/dl/vboxmonitor_26086_x86_64-pc-linux-gnu.zip vboxmonitor_26086_x86_64-pc-linux-gnu.zip]
    377 
    378349== Premade Linux VM Images ==
    379350
     
    381352They contain Debian 4.0, without GCC or any build tools installed.
    382353They contain the example startup script.
    383 
    384 x86: [http://boinc.berkeley.edu/dl/vmimage_x86.zip vmimage_x86.zip]
    385354
    386355x64: [http://boinc.berkeley.edu/dl/vmimage_x64.zip vmimage_x64.zip]