Using Advanced Revelation and Revelation G2B with VM/386
Published By | Date | Version | Knowledge Level | Keywords |
---|---|---|---|---|
Revelation Technologies | 02 JUN 1991 | 2.1X | INTERMEDIATE | VM/386, CONFIGURATION, MULTI-USER, REVG, RAM, CONFIGURE |
VM/386 Multi-User (VM/386) lets you connect PCs or dumb terminals (nodes) to a central PC (the host) and share data from multi-user applications such as Advanced Revelation. VM/386 also enables you to simultaneously run more than one single-user application.
Each node requires a portion of the RAM on the host machine. The portion of RAM that is dedicated to a particular node is known as a Virtual Machine (VM). Each VM can be rebooted without affecting any other VM. In addition, you can assign peripheral devices (printers, monitors, etc.) to a VM, either exclusively or as devices shared with other VMs.
VM/386 System Requirements
To run VM/386 on a 640K host with one 640K node, the host machine must, at a minimum, be an 80386-based PC or an 80286 upgraded with an INTEL Inboard 386/AT. The host must have at least 3MB of RAM for this base configuration and additional RAM for each additional VM or node.
Use the table below to approximate the memory requirements of your system.
Device | Minimum RAM in Host |
---|---|
Host with EGA or VGA display running VM/386 Multi-User, configured for one 640K Virtual Machine(VM) | 1600K |
Each spooled printer | 128K |
Each text-only terminal with 640K RAM | 680K |
Each EGA graphics terminal with 640K RAM | 676K |
Note: For more information on hardware requirements, see the VM/386 documentation.
Setting up a VM/386 System
Install VM/386 according to the instructions in the VM/386 documentation. Be sure to install all hardware first, or you will have to reboot your system using the VM/386 distribution disk to make the appropriate updates to the startup file VMINTS.
Bumping Your System
If your users will share files, you must bump your copy of Revelation or Advanced Revelation using a LAN Pack, and all users must access the same bumped AREV.EXE or REV.EXE file. When you bump your system, you are asked to specify a network driver. For both Advanced Revelation and Revelation G systems, select the generic DOS 3.1+ NETWORK driver.
Ensure that your bumped system is locking records by editing the same record in a shared file from two different VMs or nodes. A locking message should appear when the second VM or node attempts to access the record.
Note: For more information on testing locking on bumped systems, see the LAN Pack documentation.
Setting Unique Workstation IDs
During some processes, Advanced Revelation stores data in a temporary file. The file name for this file is based, in part, on the ID of the workstation executing the process. If two or more workstations have the same workstation ID, and if they simultaneously execute processes that create temporary files, the workstations will overwrite one another's temporary files.
To ensure that all workstations on your system have unique workstation IDs:
- Log into Advanced Revelation from each workstation on your system.
- Execute the WHO command from TCL.
- Check the Station ID prompt in the WHO window.
If not all workstations have a unique workstation ID, use the SETNAME utility to manually assign workstation IDs. SETNAME writes up to 15 characters to the area of memory that Revelation reads to assign a unique workstation ID.
Note: The SETNAME utility is available on the Technical Support Bulletin board as well as the Revelation Forum on CompuServe (!GO REVELATION). The file is called SETNAME.
Run SETNAME from within each VM before logging into Advanced Revelation. At the DOS prompt, enter:
A:\SETNAME MY_ID
where A:\ is the drive and path to the SETNAME.EXE file and MY_ID is an alphanumeric string of up to 15 characters.
Consider placing this command in each user's AUTOEXEC.VM file so that each VM boots Revelation with the user name as the workstation ID. The workstation ID remains in effect until the virtual machine is rebooted.
Specifying Memory Configuration
Advanced Revelation for DOS requires 640K base memory, and Revelation G requires 512K. In addition to the base memory, VM/386 allows you to allocate up to 4096K of expanded memory to a VM. Advanced Revelation version 1.15 and above recognizes this expanded memory, but Revelation G and Advanced Revelation prior to version 1.15 do not.
To allocate expanded memory to VMs:
- Access the VM/386 Manager window.
- Press [Ctrl-Enter] to access the Create Virtual Machine window.
- [Tab] to the Memory Allocation window.
VM/386 requires that you load the default expanded memory driver, VMEMM.SYS. Assuming that VMEMM.SYS is in the subdirectory C:\VM386, include the following statement in the CONFIG.VM file:
DEVICE = C:\VM386\VMEMM.SYS
Locking in Revelation G
If your users are sharing Revelation G files using VM/386, you should use LINK files, because only LINK files allow you to lock records. If you want to share data in ROS files, you must run the VM/386 program VMLOCK for each ROS file that is being shared. On the host machine, execute the following command:
C:\VM386\VMLOCK C:\ROSx.*
where C:\VM386\VMLOCK is the drive and path to the VMLOCK.EXE file and C:\ROSx.* is the drive and path to the ROS file being shared.
Warning! If you attempt to share data in ROS files without running VMLOCK, you risk corrupting your data.
Force LOCAL drives to REMOTE status
In order to get locking under VM386 the AREV.EXE (or REV.EXE) must be executed from a remote disk drive.
Use the VMSHARE command from within each Virtual Machine before loading Revelation G or Advanced Revelation in a multiuser environment. Consider placing this command in AUTOEXEC.VM file so that it will run automatically when you boot a VM:
C:\VM386\VMSHARE ON
Operating in Terminal Emulation Mode
When using the TCL command TERMINAL to operate a PC in terminal emulation mode, be sure to set both QUEUE and PRIORITY to 1 when the VM boots.
Error Checking and Interrupt Handling
IOPL3 should also be set to "NO" to provide additional error checking and improved interrupt handling. The default, "YES" lets the VM run faster but may increase the chances of hanging the system if a program crashes or enters a nonterminating loop. Use IOPL3 = "NO" during program development and testing.
Speed/Efficiency Considerations
Accepting VM/386's default values for most of the Advanced Options will provide acceptable performance when running Advanced Revelation or Revelation G2B.
The number of VMs is the main factor that determines performance. There are however, two other factors that can significantly affect performance. These are:
- Timeslice control
- Interrupt servicing priority
Timeslice Control
Each VM has its own timeslice, or share of the processor's time. When you increase the timeslice for a VM, you improve that VM's performance. However, remember that gains made here will affect performance of other VMs. The SRM (system resource manager) may override any changes you may make to a VM. Timeslice range is 1 - 255 milliseconds.
For most Advanced Revelation and Revelation G2B applications, allowing VM/386 SRM (system resource manager) to dynamically allocate processor time to VMs and NODES provides the best performance.
Interrupt Servicing Priority
DOS programs assume that they have complete control over the computers processor. Because the operating system doesn't allow the program to share resources (like processor time), no other process can run until the current program finishes.
Programs written for multi-tasking operating systems allow processor control to be shared between programs. VM/386 allows single tasking DOS programs to share the same processor. Depending on how the programs are used, you will configure VM/386 differently.
Computation Intensive Tasks
You may encounter situations where a VM or NODE is doing constructive work but is not accessing the hard disk or otherwise receiving interrupt requests. For example, a program that is performing computation intensive tasks may not cause external interrupts to be issued while the program is executing. If the VM times out, program operation is suspended. To avoid this, set the SRM Burst to a high value.
Keyboard Intensive Tasks
For keyboard intensive tasks:
- Set SRM BURST value to 1 to 2 seconds.
- Set QUEUE to 2.
If these settings do not yield acceptable performance, try using the modified version of $INPUT.CHAR described below. Also see the VM/386 documentation on VMPERF command and KEYB=variable to set the keyboard boost value.
Modified $INPUT.CHAR
If the keyboard response does not improve by changing SRM BURST and QUEUE, you can install a modified version of $INPUT.CHAR and the support routine $WAIT.FOR.EVENT.VM386. These programs force a VM to give up its timeslice while waiting for the next keystroke. This has the effect of providing nearly instantaneous response to keyboard I/O.
Note: The modified $INPUT.CHAR calls $WAIT.FOR.EVENT.VM386, which issues the halt (HLT) instruction and causes the suspension of the rest of the VM's timeslice. See page 244 of the VM/386 documentation for more information regarding the HLT instruction.
Both programs are available on the Technical Support Bulletin Board as well as the Revelation Technologies Forum on CompuServe:
- The VM386 version of $INPUT.CHAR is in the file INP_CHAR.VM.
- The VM386 version of $WAIT.FOR.EVENT is in the file WAIT.VM.
To set up your system to use the modified $INPUT.CHAR:
- Download VM386.ZIP.
- Unzip VM386.ZIP to get INP_CHAR.VM and WAIT.VM.
- Log onto Advanced Revelation.
- Make backups of the original versions of $INPUT.CHAR and $INDEX.CONTROL, in case you want to return to your old system. At TCL, enter:
COPY VERBS $INPUT.CHAR TO:(CONFIGURE $INPUT.CHAR.OLD COPY VERBS $INDEX.CONTROL TO:(CONFIGURE $INDEX.CONTROL.OLD
- Copy INP_CHAR.VM and WAIT.VM into Advanced Revelation. Still at TCL, enter:
COPY DOS INP_CHAR.VM TO:(VERBS $INPUT.CHAR (O) COPY DOS WAIT.VM TO:(VERBS $WAIT.FOR.EVENT (O)
- Copy $INDEX.CONTROL from the CONFIGURE file to the VERBS file. At TCL, enter:
COPY CONFIGURE $INDEX.CONTROL.PCMOS TO:(VERBS $INDEX.CONTROL (O)
Note: You must log out of Advanced Revelation and reboot the virtual machine
before the changes become active.
Sample VM/386 Option Configurations
The following options can all be set for each virtual machine either as default profile information loaded when the VM boots or by using the VMPERF command.
Host
QUEUE = 2 (default, current foreground QUEUE on host = 2) PRIORITY = 128 (default) TIMESLICE = 6 (default) SRM BURST = 9 SRM SWAPOUT = 0 (default) TIMER REAL = NO (default) IOPL3 = NO (default YES, for additional error checking NO)
NODE1
Same as HOST.
Computation Intensive VM (HOST or NODE)
Same as HOST except:
SRM BURST = high value (450)
Keyboard Intensive VM
Same as HOST except:
SRM BURST = low value (1 or 2) QUEUE = 2
Keyboard boost can be used in addition to the options above to fine tune your keyboard response. Use the VMPERF command from the DOS prompt to change the keyboard or mouse boost. For example:
VMPERF KEYB=(14,1)
To turn off keyboard boost use:
VMPERF KEYB=(0,0)
Note: You should use keyboard boost only on VMs that experience poor response. See the VM/386 documentation for additional information.
Serial Communications VM
If you are running a communications program continually on the host, set the performance options in the VM/386 COMM profile (the profile for a virtual machine that is running communications). If you are running a communications program on a node, set serial communications performance options using the VM/386 command VMPERF in a batch file, instead.
QUEUE = 1 PRIORITY = 1 TIMESLICE = 30 - 40 (or adjust as necessary) COM Port# (Link COM port exclusively) IOPL3 = NO