VAX MP A multiprocessor VAX simulator OpenVMS user manual Sergey Oboguev oboguev@yahoo.
Legal notice A VAX MP is a derived work developed initially by Sergey Oboguev, based on SIMH project by Robert Supnik. As such it is covered by legal terms consisting of two parts, one covering the original SIMH codebase, and the other part covering changes to SIMH for VAX MP.
Legal information notice B PLEASE DO READ CAREFULLY VAX MP is a simulator that provides virtual multiprocessor capability and allows execution of VAX/VMS (OpenVMS VAX) operating system in symmetric multiprocessor (SMP) mode. OpenVMS VAX is a legacy operating system and, according to the present writer’s best knowledge, all VAX-related products had been classified by Hewlett-Packard as obsolete as of April 2011, and regular sales of these products had been discontinued by HP at that time.
One may hope HP might eventually clarify the situation and either release OpenVMS VAX SMP licenses for hobbyist use, for VAX legacy systems too, just as it was done for Alpha, or simply state that hobbyist SMP use does not require a license separate from the base license. In the meanwhile it might be possible to acquire VMS SMP extension licenses from resellers (either on eBay or otherwise findable online or any other way) for multiprocessor VAX systems comparable in capacity to MicroVAX 3900 or higher.
Introduction Introduction VAX MP is a variant of popular SIMH simulator that extends original SIMH to simulate multiprocessor VAX system. It allows execution of OpenVMS operating system in symmetric multiprocessor (SMP) mode on host computers that have multiple processors, such as modern multicore and hyperthreaded PCs. VAX MP allows user to run virtual VAX systems configured with up to 32 virtual VAX processors, limited by the number of logical CPUs on the host system.
Introduction at boot time as uniprocessor. After successful bootstrap, VSMP load command is executed (this can be done either manually from DCL prompt or from SYSTARTUP_VMS.COM). Once VSMP is loaded, it reconfigures the system to multiprocessor by creating additional CPU descriptors inside VMS kernel and exposing VAX MP multiprocessing capability to VMS. After this point, system can be operated in regular way just as any VMS multiprocessor.
Introduction high-performance designs that can reorder memory access and affect the order in which memory changes performed by one processor become visible on another. These differences do not matter as long as VAX code uses proper synchronization, such as spinlocks or interlocked instructions to communicate between parallel branches of the code, since VAX MP will issue appropriate memory barriers once VAX interlocked instruction is executed.
Introduction provides override option NOPATCH (described further in this manual) to disable loading of specific patches by their ID, but disabling patches is strongly discouraged – patches are there for a reason and disabling patches may result in unreliable system prone to crashes and/or data corruption or underperformant system. VAX MP was designed and implemented with provisions to adapt semi-automatically across different versions of OpenVMS.
Introduction VAX MP (VSMP) is compatible with these VMS service patches and can successfully execute OpenVMS 7.3 system with those service patches applied. 1 VAX MP will also execute in uniprocessor mode any operating system that supports MicroVAX 3900 or VAXserver 3900 machines, including all versions of VMS (VAX/VMS, OpenVMS), Ultrix, NetBSD or OpenBSD that support MicroVAX 3900 or VAXserver 3900.
Introduction can and likely will enter into a livelock approximately the same way as in the case of single instance, with the same consequences. Do not overcommit your system by configuring more virtual CPUs in all VAX MP concurrently running instances combined than the number of host logical CPUs available (counting host hyperthreaded units). Doing do will cause your host system to lock up and will require hardware reset of the host machine.
Introduction accommodate NUMA factors. Any significant NUMA factors would cause inefficient process-to-resource allocation within the guest operating system and, most importantly, jeopardize guest operating system stability; for this reason host systems with significant NUMA factors are not currently supported. 1 However it might be possible to run VAX MP on high-NUMA system as long as VAX MP is allocated to a partition with low intra-region NUMA factor.
Introduction VAX MP uses host network cards by putting them in promiscuous mode and capturing all the traffic on the wire, regardless of MAC destination address in the Ethernet packet. If there is a heavy traffic on the wire, processing all the packets (including packets not actually destined to this host or VAX MP instance running on it) can cause overhead. In this case it is recommended to connect VAX MP host to the network via a switch that filters out irrelevant traffic.
Introduction To address described limitation and enable packet interchange and hence network connection between the host and VAX MP (or between VAX MP instance and other virtual machines running on the local host) one can optionally configure virtual Ethernet interface on the host, such as TAP and VDE devices on Linux and OS X or Microsoft Loopback Adaptor on Windows 1.
Introduction adapter’s settings), but only for communication between VAX and remote nodes. If your system uses TOE adapter and you want VAX instance to be able to communicate with the host machine, you will need either: • Use dual-homed set-up. • Or install additional adapter in host machine, such as perhaps USB adapter, that does not use TOE, and bind XQ to this adapter. • Or choose to disable TOE mode on the adapter.
Microsoft Windows™ Host software requirements (Windows) VAX MP requires Windows XP SP3 or higher version of Windows, either 32-bit or 64-bit edition. Under 64-bit editions of Windows VAX MP can be built and/or run either as 32-bit or 64-bit application. Extensive testing of VAX MP had been performed only on Windows 7 and Windows XP. In addition limited testing of 32-bit processor VAX MP configuration had also been performed on Windows Server 2008 R2.
Microsoft Windows™ (Single-interface setup) Most usual configuration under Windows is single-interface set-up as pictured below: In this set-up VAX instance binds virtual DELQA or DEQNA (XQ) via pcap to NIC and uses this binding to send and receive Ethernet packets both to/from remote nodes and to/from the host machine. Some newer NICs can implement TOE (TCP off-load-engine) processing.
Microsoft Windows™ To create single-interface set-up, edit your VAX MP startup script to attach host interface to VAX MP virtual network adaptors as needed, for example: set xq set xq set xq attach enabled mac=08-00-2b-aa-bb-c1 type=delqa xq Marvell Yukon You can also refer to host network adapters in the attach command by their UUID-based names, i.e. in format \Device\NPF_{UUID}.
Microsoft Windows™ Windows network kernel will also propagate packets sent by VAX MP to the host network stack and vice versa. If there are multiple instances of VAX MP or other SIMH simulators or other virtual machines running on the host and bound to NIC, pcap will also provide an interchange of packets between them. If you are using a firewall, remember to configure the firewall so it allows required connections to/from addresses of the added VAX instance or instances.
Microsoft Windows™ Depending on exact value of network addresses you actually decide to use it may be necessary to additionally specify options /NETWORK_MASK=x.y.z.w and /BROADCAST_MASK=m.m.m.m. (Dual-homed setup) It is also possible to set-up dual-homed VAX MP network configuration under Windows, whereby a separate connection is used between VAX instance and host computer alongside with second connection between VAX instance and remote computers.
Microsoft Windows™ You can also refer to host network adapters in the attach command by their UUID-based names, i.e. in format \Device\NPF_{UUID}. Only Ethernet NICs and virtual Ethernet adapters such as Microsoft Loopback Adapter can be attached to XQ or XQB for mapping virtual DEQNA or DELQA adapter. Host WiFi interfaces might superficially look similar to Ethernet interfaces but they are actually not Ethernet and cannot be used for VAX MP or SIMH Ethernet networking.
Microsoft Windows™ Thus even though host OS and VAX MP share the network card, they will be both sending and receiving Ethernet packets to/from the wire as two different machines. Using TCP/IP Services for OpenVMS, adapters in the above example will be bound IP addresses the following way, for XQA and XQB correspondingly: $ TCPIP SET INTERFACE QE0 /HOST=192.168.1.200 $ TCPIP SET CONFIGURATION INTERFACE QE0 /HOST=192.168.1.200 $ TCPIP SET INTERFACE QE1 /HOST=192.168.3.
Linux Host software requirements (Linux) VAX MP requires Linux kernel version 2.6.38 or later. You can check the version of your system’s kernel using command uname -r. VAX MP also requires version of GLIBC with NPTL threads. We recommend using GLIBC version 2.13 or later. The way to check the version of GLIBC currently installed on the system depends on a flavor your Linux distribution. One common way is to execute command ldd --version.
Linux Like other recent versions of SIMH, VAX MP also supports TAP and VDE interfaces. VDE option requires VDE libraries installed. For more information on building SIMH images with VDE refer to appropriate general SIMH documentation (file 0readme_ethernet.txt). 1 In order to access network interfaces VAX MP needs Linux capabilities (privileges) CAP_NET_RAW and CAP_NET_ADMIN.
Linux Then take a note of your interface and route properties in case you may want to roll back the bridging without rebooting the system: 1 ifconfig >old-ifconfig.txt route –n >old-route.txt Make script file linux-tap.sh executable chmod a+x linux-tap.
Linux If you intend to use multiple Linux accounts to run VAX MP, you will need multiple tap interfaces with different security settings. If you intend to run multiple instances of VAX MP and/or other SIMH simulators within the same account, you will also need to create multiple tap interfaces owned by that account. Note that linux-tap.sh create command assumes the bridge does not exist yet.
Linux Using TCP/IP Services for OpenVMS, XQA adapter in the above example will be bound IP address the following way: $ TCPIP SET INTERFACE QE0 /HOST=192.168.21.200 $ TCPIP SET CONFIGURATION INTERFACE QE0 /HOST=192.168.21.200 Depending on exact value of network addresses being used and network topology it may be necessary to additionally specify options /NETWORK_MASK=x.y.z.w and /BROADCAST_MASK=m.m.m.m.
OS X Host software requirements (OS X) VAX MP had been tested on OS X 10.7.4 (both server and workstation editions) on a range of computers including quad-core i7 Mac Mini Server (configured up to 8 VAX CPUs), quad-core i7 MacBook Pro (configured up to 8 VAX CPUs) and older CoreDuo based MacBook (configured to 2 VAX CPUs) and is expected to run on other Mac multiprocessor models as well. VAX MP may also run on slightly earlier versions of OS X than 10.7.4, but this had not been tested.
OS X Running a connection from VAX MP to remote hosts via NIC is possible with non-root account, however use of TAP connection from VAX MP to local host or other virtual machines running on the local host requires running VAX MP as root (via sudo). Therefore if you intend to be able to make virtual network connection between VAX MP and local host, as you likely will, you would have to run VAX MP as root (via sudo) anyway.
$ ls –l /dev/bpf* crw-rw---- 1 root crw-rw---- 1 root crw-rw---- 1 root crw-rw---- 1 root pcaprw pcaprw pcaprw pcaprw 23, 23, 23, 23, 0 1 2 3 OS X Jul 10 09:37 /dev/bpf0 Jul 9 21:37 /dev/bpf1 Jul 9 21:37 /dev/bpf2 Jul 9 21:37 /dev/bpf3 Then follow instructions in tcpdump.org documents at links mentioned above to set up chmod_bpf for automatic execution each time the system restarts.
OS X and follow the installer’s screens. After installing tuntaposx, optionally execute command kextstat to display a list of all loaded kernel extensions and make sure that tap and tun extensions had been successfully loaded. After installing tap interface, add the following lines to your VAX MP startup script: set xqb enabled set xqb mac=08-00-2b-aa-bb-c2 set xqb type=delqa attach xqb tap:tun0 ! ifconfig tap0 192.168.21.3 up Note the space in the last line after “!”.
Quick VAX MP Installation Guide Quick VAX MP Installation Guide First make sure you have VAX MP installed and have met requirements described above in section “Host software requirements” appropriate for your host operating system. The easiest way to install VAX MP is by downloading pre-built executable image for your host OS. If you want to build VAX MP yourself, refer to Addendum A of this document (“Building VAX MP”).
Quick VAX MP Installation Guide Step 1. Perform new OpenVMS installation and create system disk. Initial installation of OpenVMS under VAX MP is identical to installation under regular uniprocessor SIMH VAX. It is beyond the scope of this document to describe how to perform such installation.
Quick VAX MP Installation Guide If you are building under OpenVMS version other than 7.3, we strongly urge you to take a backup of your system disk and data disks before proceeding to the next step. Step 4. Set SYSGEN parameters. Set SYSGEN parameters on your system as required for multiprocessor operations under VAX MP. $ SET DEFAULT SYS$SYSTEM $ RUN SYSGEN SYSGEN> USE CURRENT SYSGEN> WRITE UNI-SAFE.
Quick VAX MP Installation Guide If asynchronous IO is not enabled, VAX MP will be executing host IO requests in the context of VCPU threads, possibly causing a spinlock or mutex held by VCPU for a long time while synchronous host IO operation is in progress and VCPU thread is blocked waiting for this operation to complete. This may bring other VCPUs to a stall, should they need the resource protected by this spinlock or mutex.
set asynch cpu multi 6 set cpu 512m Quick VAX MP Installation Guide ; offload disk, tape and network IO to threads ; configure VAX with six virtual CPUs ; configure RAM = 512 MB dep host_turbo 120 ; host cpu max freq / min freq ratio (decimal percentage) load -r \myvax\ka655x.bin attach NVR \myvax\ka655.
Quick VAX MP Installation Guide Eth: opened OS device \Device\NPF_{BAA69382-B5FE-43B9-931D-816AA152F991} Eth: opened OS device \Device\NPF_{FA7E7B05-AB9C-4A07-AF9D-2ADC15C9F35D} KA655X-B V5.3, VMB 2.7 Performing normal system tests. 40..39..38..37..36..35..34..33..32..31..30..29..28..27..26..25.. 24..23..22..21..20..19..18..17..16..15..14..13..12..11..10..09.. 08..07..06..05..04..03.. Tests completed. >>>B (BOOT/R5:80 DUA0 2.. -DUA0 1..0.. %SYSBOOT-I-SYSBOOT Mapping the SYSDUMP.
Let’s load VSMP: Quick VAX MP Installation Guide $ @SYS$SYSROOT:[VSMP]VSMP$LOAD %VSMP-I-CALIBRATING, Calibrating OpenVMS timing loops... %VSMP-I-CALIBRATED, Calibration completed at 25 samples %VSMP-I-LOADED, VSMP resident image was loaded into the kernel and activated $ $ SHOW CPU MYVAX, a VAXserver 3900 Series Multiprocessing is ENABLED. Full checking synchronization image loaded.
Quick VAX MP Installation Guide Now you can place load on the system by starting parallel processes and observe system status: $ SHOW SYSTEM OpenVMS V7.3 on node MYVAX 23-APR-2012 20:54:37.41 Uptime 0 00:08:36 Pid Process Name State Pri I/O CPU Page flts Pages 00000201 SWAPPER HIB 16 0 0 00:00:00.61 0 0 00000205 CONFIGURE HIB 8 5 0 00:00:00.20 111 197 00000206 LANACP HIB 13 54 0 00:00:00.71 343 918 00000208 IPCACP HIB 10 6 0 00:00:00.17 96 197 00000209 ERRFMT HIB 9 21 0 00:00:00.
Quick VAX MP Installation Guide $ MONITOR/INT=1 SYSTEM Node: MYVAX Statistic: CURRENT CPU MEMORY I/O OpenVMS Monitor Utility SYSTEM STATISTICS + CPU Busy (600) -+ |▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒| 0 |--------------------------| 600 |▒▒▒ | +--------------------------+ Cur Top: CPU_HOG_5 (92) 23-APR-2012 20:56:15 Process States LEF: 2 LEFO: HIB: 13 HIBO: COM: 2 COMO: PFW: 0 Other: MWAIT: 0 Total: 23 0 0 0 6 + Page Fault Rate (5) -+ || | 0 |--------------------------| 500 | | +--------------------------+
Quick VAX MP Installation Guide Step 7. Invoke VSMP in SYSTARTUP_VMS.COM. Once you are satisfied with stability of your VAX MP setup, you can incorporate commands to automatically enable multiprocessing into your SYSTARTUP_VMS.COM file. You will need to include two commands: $ @SYS$SYSROOT:[VSMP]VSMP$LOAD $ IF F$GETSYI("AVAILCPU_CNT") .GT.
VSMP Reference VSMP commands description and reference VAX MP OpenVMS multiprocessing is enabled and controlled primarily by VSMP tool. In most cases VSMP need not be and is not invoked by OpenVMS system administator directly. Rather, all that system administrator needs to do is to invoke command file VSMP$LOAD.COM either from SYSTARTUP_VMS.
VSMP Reference tendency of SIMH idea of system time (such as OpenVMS system time, when OpenVMS is executed on SIMH) to fall behind wall clock time. This “falling behind” happens because of a number of technical and semi-technical reasons: host timer events are fired later then requested; it takes time for the hibernating thread to resume and start tracking time; accumulating errors in rounding time data obtained from the host, SIMH timing mechanisms dependence on VCPU calibration (i.e.
VSMP QUERY VSMP Reference VSMP QUERY command displays information about VAX MP configuration. It can be executed at any time, either before or after VSMP LOAD. For example: $ VSMP :== $SYS$SYSROOT:[VSMP]VSMP $ VSMP QUERY VSMP tool version: 1.0 SIMH VAX MP simulator API version: 1 Number of virtual processors configured: 6 Processor IDs mask: 0000003F Advised host SMT slow-down factor: 1.
VSMP LOAD VSMP Reference VSMP LOAD loads VSMP kernel-resident module into OpenVMS kernel and sets up the system ready for multiprocessing. In particular it creates descriptors for additional virtual processors in the OpenVMS system and exposes VAX MP multiprocessing capability to OpenVMS. Once VSMP LOAD is executed, created virtual processors are ready to be started with OpenVMS DCL command START /CPU.
VSMP Reference IDLE sets whether VCPU threads should hibernate at host OS level when VMS is executing idle loop. IDLE=ON enables hibernation. IDLE=OFF disables hibernation and causes threads to spin in OpenVMS idle loop without attempting to hibernate. IDLE=NEVER disables hibernation and instructs VSMP even not to hook into OpenVMS idle loop. If IDLE setting is specified as ON or OFF for VSMP LOAD command, its value can be later dynamically changed with VSMP SET command.
VSMP Reference VSMP dynamic patches inhibitable with NOPATCH option XDELTA This patch is required when using XDelta debugger. XDelta by itself is not aware of multiprocessing capabilities of VAX 3900 and does not know how to store XDelta per-CPU context on this machine. This patch provides XDelta with such knowledge. Without this patch XDelta cannot be properly operated when VAX MP system has more than one processor in active set.
VSMP Reference XQDRIVER’s default of 5 seconds to the value specified by VSMP option XQTIMEOUT (default is 255). If this patch is not applied, and simulator thread operating DEQNA is preempted for more than few seconds, OpenVMS will falsely detect timeout on the controller and shut it down. It is not advisable to operate DEQNA or DELQA without this patch enabled.
VSMP SET VSMP Reference VSMP SET command changes the values of VSMP dynamic settings from their initial values established by VSMP LOAD or previous VSMP SET command.
VSMP SHOW VSMP Reference VSMP SHOW displays current values of VSMP dynamic settings.
VSMP SET AFFINITY VSMP Reference VSMP SET AFFINITY changes affinity of specified device or devices to either all CPUs on the system or only to primary processor. This command is intended for use by VAX MP developers only. Change of device affinity requires thorough understanding of particular device driver internals.
VSMP SHOW AFFINITY VSMP Reference VSMP SHOW AFFINITY displays affnity of specified device or devices to particular CPUs in the system.
Interprocessor Synchronization Window Interprocessor synchronization window Interprocessor synchronization window is experimental feature of VAX MP. While it is believed to be stable, it has not been tested yet for VAX MP initial release as thoroughly as running VAX MP with synchronization window turned off.
Interprocessor Synchronization Window Use of synchronization window allows TIME_CONTROL to be relaxed from 6 to 2. Full relaxation of TIME_CONTROL to 0 is not supported yet by current release of VAX MP. Relaxation of TIME_CONTROL from 6 to 2 allows OpenVMS to generate bugchecks and restart the system in case one (or some) of the processors lock up while holding a spinlock or stop responding to interprocessor interrupt requests within reasonable amount of time.
Interprocessor Synchronization Window code from failing altogether (although in some cases it may), but it will reduce probability of its failure to a level comparable with real hardware VAXen or less.
Interprocessor Synchronization Window is possible for the ubiquitous case of Intel x86/x64 host processors. o VSMP LOAD command option SYNCW that can be any combination of SYS and ILK: ILK, SYS, (SYS, ILK) also expressible as ALL, and NONE. o OpenVMS SYSGEN parameter TIME_CONTROL. Before VSMP tool starts multiprocessing, it performs a check that combination of configuration parameters being used is valid and will refuse any incoherent combination with appropriate diagnostic message.
Interprocessor Synchronization Window Valid combinations of these parameters are: INTERLOCK = PORTABLE SYNCW = NONE, TIME_CONTROL = 6 This is the default setting. Synchronization window is not used. This setting provides the best scalability in portable mode. It is safe with base OpenVMS, but may potentially cause OpenVMS to crash under some code sequences that do not exist in base OpenVMS but might exist in layered or third-party privileged products.
Interprocessor Synchronization Window While native mode is expected to offer performance and scalability benefits for workloads generating high rate of BBSSI and BBCCI instructions, the use of native mode may destabilize some user-mode application and third-party privileged components compared to the use of portable interlock mode.
• Interprocessor Synchronization Window Non-preemptable code trying to lock interlocked queue header with BBSSI instruction while executing at IPL >= 3 must use BBSSI retry count yielding total number of instructions in retry loop not less than 3 * min(900000, LOCKRETRY). If retry loop drops IPL below 3 in the interim, retry count should be restarted.
VAX MP SIMH console extensions VAX MP SIMH console command set changes and extensions VAX MP introduces a number of extensions and changes to SIMH console command set. CPU MULTIPROCESSOR Command CPU MULTI{PROCESSOR} creates virtual processors in SIMH. For example the following console commands create 6 virtual processors on the system, i.e.
VAX MP SIMH console extensions Some of devices or their registers are system-wide (such as for example RQ or TS devices), and listings appearing in the context of different current CPUs will refer to the same global, systemwide instance of the device, whereas other devices (such as TLB or CLK) will be per-CPU and any references to such devices mean a reference to device per-CPU instance.
VAX MP SIMH console extensions Desired recording method is selected by user via VAX MP SIMH console command, for example SET CPU HISTORY=200/SYNC selects recording of globally sequenced history, while SET CPU HISTORY=200/UNSYNC selects recording of locally sequenced per-CPU histories that are not synchronized across the processors. Default is SYNC. Command SHOW CPU HISTORY by default displays recorded history for current default processor, i.e. one selected by command CPU ID.
VAX MP SIMH console extensions memory script with the following content (assuming, by the way of example, that processors 3 and 4 triggered breakpoints and console’s previous default context was CPU0): CPU ID 3 … breakpoint action commands triggered by CPU3 … CPU ID 4 … breakpoint action commands triggered by CPU4 … CPU ID 0 Console thread then executes this script.
VAX MP SIMH console extensions desirable to keep simulator’s paging rate to a minimum. Note that this is not required for correctness of operation, but only for better scalability and performance. VAX MP provides user-controllable mechanisms intended to reduce paging. These mechanisms are specific to host operating system.
VAX MP SIMH console extensions On OS X setting either of WS_MIN, WS_MAX or WS_LOCK to non-zero value causes VAX core memory block to be pre-paged when VAX VCPUs execution starts or resumes, but no memory locking or system-level alterations to working set size are performed. If VAX MP is unable to perform extending working set or locking code and data in memory, it will display warning message at first BOOT CPU command, or first RUN, CONTINUE, GO and STEP command.
PERF VAX MP SIMH console extensions VAX MP adds console command to monitor VAX MP performance counters. This information is valuable for tuning VAX MP and is intended mostly for VAX MP developers. Format of the command and its options is: PERF [ON / OFF / SHOW / RESET] [counter-id] ON enables specified counter or counters. OFF disables it. RESET resets accumulated counter data. SHOW displays accumulated values. PERF with no arguments is equivalent to PERF SHOW.
Miscellaneous Notes Miscellaneous notes Do not set SYSGEN MULTIPROCESSING = 4 Do not set SYSGEN parameter MULTIPROCESSING to 4. OpenVMS VAX 7.3 and possibly some earlier versions have a known problem manifesting itself when the system is booted with MULTIPROCESSING set to 4. The problem is unrelated to VAX MP and manifests itself even on a regular uniprocessor SIMH.
Miscellaneous Notes These issues do not apply to VAX MP executing under a hypervisor running directly on top of hardware, rather than on top of host operating system. Nevertheless it is possible to run VAX MP under a hypervisor executed on top of host operating system. Some hypervisors may report incorrect host processor topology to guest operating system and misrepresent hyperthreaded/SMT units as separate cores. For example VMware 7.
Miscellaneous Notes One firmware console function that is sometimes needed during system operation is the access to VAX SIRR register (software interrupt request register) that is used to request VMS to cancel mount verification on a device or trigger XDELTA debugger.
Miscellaneous Notes see additional processors added to the system and will under-collect performance data, at best, or may even crash. 1 On a 32-processor system MONITOR utility collects and displays load information only for first 31 processors. While 32nd processor is there and is performing system workload, MONITOR will not see it and will not collect load information for it.
Miscellaneous Notes driver has hard maximum limit of 30 seconds hardcoded. RECNXINTERVAL can be set to any practical value. These guidelines apply regardless of whether any simulator-based cluster node is running in multiprocessor or uniprocessor mode. Volume shadowing We strongly caution against the use of host-based volume shadowing in OpenVMS 7.2 and 7.3. Shadowing code has severe bugs that were introduced in OpenVMS VAX 7.2 and are present in 7.
Miscellaneous Notes drive. In other words, OpenVMS and VMS applications assume full write-through semantics of all disk writes and rely on this semantics for data integrity. SIMH by default uses write-back disk caching semantics, in order to improve virtual disk IO performance. This means that if host system crashes or loses power, guest OS data and applications data can be left corrupted.
Miscellaneous Notes IO bound application cannot be expected to scale, since they will be largely limited by the bandwidth of disk IO subsystem and by serialization on the IO device, including serialization within the device itself and serialization by system locks associated with the device (device spinlock and fork queue lock) held during IO request processing and also by OpenVMS processing of interrupts and kernel-mode IO postprocessing that happens on the primary processor only.
Time Machine (OS X) Miscellaneous Notes We recommend disabling Time Machine automatic copying of VAX MP disk image files. If Time Machine starts copying these files while VAX MP is running, this can cause slowdown of VAX MP or cause it to freeze for a long time while the file is being copied. Refer to “Time Machine” section in article http://labs.hoffmanlabs.com/node/922 for references on how to disable copying of disk image files by Time Machine.
Miscellaneous Notes In certain cases CPUSPINWAIT bugcheck can be triggered because the value of SMP timeout is set too high. If processor calibrates as fast too, computed counter of maximum spin-wait loop iterations can overflow. Counter of maximum spin-wait loop iterations is computed as EXE$GL_TENUSEC * EXE$GL_UBDELAY * timeout in 10-usec units Counter is 32-bit signed integer, i.e. the product of three parameters in the formula must not exceed 0x7FFFFFFF.
Miscellaneous Notes • Interlocked queue header is genuinely corrupt, for example was overwritten by memory access to incorrect address. No immediate fix is possible. Reason for memory corruption need to be investigated and resolved. • Interlocked queue operation retry loop uses fixed hardwired retry count, such as 900,000, and queue interlock holder takes abnormally long time to release it.
Miscellaneous Notes temporarily serialize the system until the fault is resolved. It is not critically important to avoid the faults, but it is desirable from the performance standpoint. VAX MP therefore tries to lock all of its code and data in memory, including code and data of the simulator itself, code and data of all loaded runtime libraries, thread stacks etc. VAX MP uses Linux system call mlockall(MCL_CURRENT) to perform such locking.
TIME_CONTROL Miscellaneous Notes SYSGEN parameter TIME_CONTROL should be set to 6 when running VAX MP with synchronization window disabled. With synchronization window enabled, it can be set either to 6 or 2. See section “Interprocessor synchronization window” in the present document for valid sets of parameter values. VSMP will refuse to load if incoherent parameter set is used.
Miscellaneous Notes disabling thread priority control and eliminating its overhead outweighs the loss of throughput due to smaller number of processors, i.e. if dedicated host system has large number of LCPUs and VAX instance executes a workload with very high rate of interlocked instructions. To disable VAX MP VCPU threads priority control, add the following command to VAX MP startup script: DEPOSIT HOST_DEDIDCATED 1 TS vs.
Miscellaneous Notes If the failure happens nevertheless, data items can be expected to be updated on the next screen refresh cycle. (Probability of two or more failures in a row is exceedingly low.) Thus the impact of the problem is that for a second or few seconds, depending on selected screen update frequency, one or few data items can be displayed as question marks rather than valid values.
Validation Tests Validation tests (stress tests) VAX MP source distribution provides a number of stress tests to verify the validity and integrity of VAX MP multiprocessor operations. Supplied stress tests create parallel processes that perform various activities stressing the system and verifying continued integrity of its operations while under stress conditions.
The following stress tests are provided: CPU_HOG Validation Tests Creates compute-bound processes that execute tight infinite loop. To start the test, run command file @[.CPU_HOG] LAUNCH CC Creates subprocesses that repeatedly compile “Hello World” C program, execute it and purge files in the subprocess private directory. To start the test, run command file @[.
Validation Tests naming creating processes. This option allows multiple instances of FILE stress test to be ran in parallel (typically from parallel stress login sessions) on multiple disk drives and/or controllers, such as DUA0, DUB0, DUC0 or VAXA$DUA0 and VAXB$DUA0. To run the test on multiple drives, replicate [STRESS.FILE] directory to each of the drives, log in at multiple terminals (or create batch jobs), and execute LAUNCH.COM off corresponding locations.
Validation Tests via FTP to VAX system and back utilizing multiple simultaneous connections, and comparing the resultant copies of the files with the originals. More thorough test involves running FILE QIO stress test over the VAXcluster, to remote disks.
Building VAX MP Addendum A Building VAX MP Building VAX MP on Windows Download and install the latest version of WninPCAP (verson 4.0 or older is required). Restart Windows to activate WinPCAP. Download WinPCAP Development Pack and unzip it alongside VAX MP project so file tree structure looks like this: {ROOTDIR}\simh-vax-mp\scp.h {ROOTDIR}\windows-build\winpcap\WpdPack\Include {ROOTDIR}\windows-build\winpcap\WpdPack\Lib Use MSDEV 2008 Professional or higher to open project file VAX_MP\VAX_MP.sln.
dos2unix d2u.sh chmod a+x d2u.sh ./d2u.sh Building VAX MP Newer versions of GCC version support compilation option -Wno-unused-but-setvariable. This option suppresses some false warning messages emitted by GCC when building VAX MP. This option is present in GCC 4.6.3 onward but absent in GCC 4.4/4.5. When compiled with versions of GCC that do not have this option, build process will not produce false warning messages.
Building VAX MP Cross-building x86 version of VAX MP with no network support on x64 Linux systems is possible, but requires installation of 32-bit version of glibc, with appropriate development header files (package libcx-dev or glibc-devel, depending on your edition of Linux). For simplicity, we suggest to build 32-bit version of VAX MP under 32-bit Linux and then copy produced executable file to 64-bit Linux system. Building VAX MP on OS X XCode comes with GCC-LLVM compiler.
Building VAX MP nonet selects no network support shr selects network support using dynamically linked libpcap library; note that statically linked libpcap (“net” option) is not available on OS X tap selects support for TAP/TUN virtual network devices vde selects support for VDE virtual network devices (VDE package must be installed both on build and target machines) 83