Some preliminary performance details with WASD and X86 VMS V9.1-A. TL;DR - using an affordable i7 eBay buy plus Win 10 plus VirtualBox plus V9.1-A, WASD using TCP/IP Services X6.0 can maintain a 500Mbps stream to cURL running on the same system, and 350Mbps via cURL running on a Mac over a 1Gbps switch to the i7+Win10+VirtualBox+V9.1-A. Not bad for AUD$300! This email should also be accessible via https://wasd.vsm.com.au/info-WASD/2021/0091 X86 PLATFORM ------------ The X86 platform was an inexpensive, pre-owned, eBay purchase: |Dell Optiplex 9020 SFF i7-4770 QC 3.4Ghz 16GB Ram 128Gb SSD Windows 10 Pro |AU $299.00 This is a sweet little machine, very quiet and power conservative; Win 10 running VirtualBox with a quiescent VMS system ~20W (as measured with a power meter at the mains). With a single @VUPS.COM executing this moves to ~45W. With three concurrent @VUPS.COM (1 per VMS CPU) it is ~65W. The 128Gb SSD came with a fresh Windows 10. To that has been added a 250Gb SSD to contain the VMS (virtual) disks (on-hand but currently ~AUD$90 on eBay), and a 1TB HGST 5400rpm for "backup" of virtual disks and eventually VMS BACKUP virtual drives (on-hand but currently ~AUD$70 on eBay). Windows 10 /settings/about reports: |Processor Intel(R) Core(TM) i7-4790 CPU @ 3.60GHz 3.60 GHz |Installed RAM 16.0 GB |System type 64-bit operating system, x64-based processor |Edition Windows 10 Pro |Version 21H2 VirtualBox: Version 6.1.30 r148432 (Qt5.6.2) WHY NOT LINUX? -------------- Must be getting lazy. Win 10 came pre-installed. A native Mac Windows Remote Desktop means there can be a Win 10 desktop on my workhorse Mac (and the X86 box can be outside in the storage shed alongside the existing PWS). While I can't favourably compare the Win 10 desktop to my Mac desktop, at least 10 no longer has all the window decoration clutter earlier versions seemed so proud of. I'd expect the underlying VirtualBox virtualisation code would be much the same regardless of the host OS. I might be tempted to compare a Hyper-V instance of VMS when supported. VMS PERFORMANCE --------------- |X86VMS$ @vups.com |innotek GmbH VirtualBox with 3 CPU and 4492MB running VMS V9.1-A |Approximate System VUPs Rating : 244.9 ( min: 244.4 max: 245.4 ) |X86VMS$ MONITOR MODES |Combined for 3 CPUs 0 75 150 225 300 | + - - - - + - - - - + - - - - + - - - - + | Interrupt State | | MP Synchronization | | Kernel Mode 29 |*** | Executive Mode 21 |** | Supervisor Mode 50 |****** | User Mode | | Compatibility Mode | | Idle Time 200 |************************** With 3 x VUPS.COM this drops to ~240 each. |X86VMS$ MONITOR MODES |Combined for 3 CPUs 0 75 150 225 300 | + - - - - + - - - - + - - - - + - - - - + | Interrupt State | | MP Synchronization 4 | | Kernel Mode 87 |*********** | Executive Mode 61 |******** | Supervisor Mode 147 |******************* | User Mode | | Compatibility Mode | | Idle Time | By way of comparison: |Digital Personal WorkStation with 1 CPU and 1536MB running VMS V8.4-2L1 |Approximate System VUPs Rating : 161.3 ( min: 161.2 max: 161.4 ) |AlphaServer DS20 500 MHz with 2 CPU and 1536MB running VMS V8.4-2L2 |Approximate System VUPs Rating : 254.8 ( min: 254.8 max: 254.8 ) |HP rx2660 (1.40GHz/6.0MB) with 4 CPU and 14335MB running VMS V8.4-2L1 |INFO: Preventing endless loop (10$) on fast CPUs |Approximate System VUPs Rating : 499.6 ( min: 497.8 max: 501.4 ) TCP/IP PERFORMANCE ------------------ |X86VMS$ TCPIP SHOW VERSION |VSI TCP/IP Services for OpenVMS x86_64 Version X6.0 |on an innotek GmbH VirtualBox running OpenVMS V9.1-A Using recently released X86 cURL (it says IA64 but obviously from where it was cross-compiled). Note this is a fairly complete cURL, even supporting HTTP/2. |X86VMS$ curl -V |curl 7.65.0 (OpenVMS IA64) libcurl/7.65.0 OpenSSL/1.1.1g zlib/1.2.8 libssh2/1.9.0_DEV nghttp2/1.40.90 |Release-Date: Nov 26 2021 |Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp scp sftp smb smbs smtp smtps telnet tftp |Features: HTTP2 HTTPS-proxy IPv6 libz NTLM SSL TLS-SRP UnixSockets 1) First test; ----------- using the WASD streaming URI https://wasd.vsm.com.au/wasd_root/wasdoc/features/features013.html#streamfacility which generates and transmits a continuous stream of octets as efficiently as possible, in this case over the cleartext port (no crypto) and without actually putting the stream to the wire (apps on the same system), it maintains a 500Mbps transfer rate: |X86VMS$ curl -ko nl: http://192.168.1.86/stream/octet:2400000/ | % Total % Received % Xferd Average Speed Time Time Time Current | Dload Upload Total Spent Left Speed |100 2343M 0 2343M 0 0 52.2M 0 --:--:-- 0:00:44 --:--:-- 50.6M |X86VMS$ HTTPDMON 8< snip 8< | Time: 18 13:46:30 Status: 200 Rx: 97 Tx: 2,457,600,304 Dur: 44.85s | Service: http://x86vms.lan:80 (WASD1:80) HTTP/1.1 (54.8MB/s) | Host: x86vms (192.168.1.86) | Request: GET /stream/octet:2400000/ 8< snip 8< Obviously, with cURL running on the same system, some of the overall CPU modes are for it. |X86VMS$ MONITOR MODES |Combined for 3 CPUs 0 75 150 225 300 | + - - - - + - - - - + - - - - + - - - - + | Interrupt State 38 |***** | MP Synchronization | | Kernel Mode 32 |**** | Executive Mode | | Supervisor Mode | | User Mode 87 |*********** | Compatibility Mode | | Idle Time 144 |******************* 2) Second test; ------------ using the same streaming URI access from cURL running on a Mac over a 1Gbps switched connection to the X86 platform. Manages to maintain 250Mbps transfer rate: |macpro:~ mark$ curl -V |curl 7.74.0 (x86_64-apple-darwin18.7.0) libcurl/7.74.0 (SecureTransport) OpenSSL/1.1.1i zlib/1.2.11 brotli/1.0.9 zstd/1.4.8 libidn2/2.3.0 libssh2/1.9.0 nghttp2/1.42.0 librtmp/2.3 |Release-Date: 2020-12-09 8< snip 8< |macpro:~ mark$ curl -ko /dev/null http://192.168.1.86/stream/octet:2400000/ | % Total % Received % Xferd Average Speed Time Time Time Current | Dload Upload Total Spent Left Speed |100 2343M 0 2343M 0 0 25.1M 0 --:--:-- 0:01:33 --:--:-- 25.5M |X86VMS$ HTTPDMON 8< snip 8< | Time: 18 14:16:19 Status: 200 Rx: 97 Tx: 2,457,600,304 Dur: 00:01:32 | Service: http://x86vms.lan:80 (WASD2:80) HTTP/1.1 (26.4MB/s) | Host: gort.lan (192.168.1.2) | Request: GET /stream/octet:2400000/ 8< snip 8< |X86VMS$ MONITOR MODES |Combined for 3 CPUs 0 75 150 225 300 | + - - - - + - - - - + - - - - + - - - - + | Interrupt State 78 |********** | MP Synchronization | | Kernel Mode 3 | | Executive Mode | | Supervisor Mode | | User Mode 24 |*** | Compatibility Mode | | Idle Time 196 |************************** 3) Third test; ----------- using cURL on the same system (so not transmitting on the wire) the RX2600 running Multinet (apples and oranges I know). Do not have access to a high-end system running TCP/IP Services. |$ curl -ko nl: http://*.*.*.*/stream/octet:2048000/ | % Total % Received % Xferd Average Speed Time Time Time Current | Dload Upload Total Spent Left Speed |100 2000M 0 2000M 0 0 39.2M 0 --:--:-- 0:00:51 --:--:-- 38.3M |$ HTTPDMON 8< snip 8< | Time: 18 14:45:37 Status: 200 Rx: 104 Tx: 2,097,152,337 Dur: 51.01s | Service: http://wasd.vsm.com.au:80 HTTP/1.1 (41.1MB/s) | Host: wasd.vsm.com.au (119.252.17.13) | Request: GET /stream/octet:2048000/ 8< snip 8< |$ MONITOR MODES |Combined for 4 CPUs 0 100 200 300 400 | + - - - - + - - - - + - - - - + - - - - + | Interrupt State 121 |************ | MP Synchronization 9 | | Kernel Mode 15 |* | Executive Mode 1 | | Supervisor Mode | | User Mode 31 |*** | Not Available | | Idle Time 223 |********************** 4) Real World; ----------- transfer an on-disk file (1.36GB) |X86VMS$ dir dka100:[000000]colossus.mp4 | |Directory DKA100:[000000] | |colossus.mp4;1 2863690 6-DEC-2021 07:40:30.11 | |Total of 1 file, 2863690 blocks. first via cURL running on the same (VMS) system: |X86VMS$ curl -ko nl: http://192.168.1.86/dka100/colossus.mp4 | % Total % Received % Xferd Average Speed Time Time Time Current | Dload Upload Total Spent Left Speed |100 1398M 100 1398M 0 0 52.2M 0 0:00:26 0:00:26 --:--:-- 52.7M |X86VMS$ HTTPDMON 8< snip 8< | Time: 19 03:37:51 Status: 200 Rx: 95 Tx: 1,466,209,043 Dur: 26.78s | Service: http://x86vms.lan:80 (WASD1:80) HTTP/1.1 (54.8MB/s) | Host: x86vms (192.168.1.86) | Request: GET /dka100/colossus.mp4 8< snip 8< |X86VMS$ MONITOR MODES |Combined for 3 CPUs 0 75 150 225 300 | + - - - - + - - - - + - - - - + - - - - + | Interrupt State 39 |***** | MP Synchronization | | Kernel Mode 36 |**** | Executive Mode | | Supervisor Mode | | User Mode 47 |****** | Compatibility Mode | | Idle Time 177 |*********************** 5) Real World; ----------- transfer the same on-disk file (1.36GB) over the wire. |macpro:~ mark$ curl -ko /dev/null http://192.168.1.86/dka100/colossus.mp4 | % Total % Received % Xferd Average Speed Time Time Time Current | Dload Upload Total Spent Left Speed |100 1398M 100 1398M 0 0 33.8M 0 0:00:41 0:00:41 --:--:-- 35.0M |X86VMS$ HTTPDMON 8< snip 8< | Time: 19 03:45:10 Status: 200 Rx: 95 Tx: 1,466,209,043 Dur: 41.28s | Service: http://x86vms.lan:80 (WASD2:80) HTTP/1.1 (35.5MB/s) | Host: gort.lan (192.168.1.2) | Request: GET /dka100/colossus.mp4 8< snip 8< |X86VMS$ MONITOR MODES |Combined for 3 CPUs 0 75 150 225 300 | + - - - - + - - - - + - - - - + - - - - + | Interrupt State 110 |************** | MP Synchronization | | Kernel Mode 25 |*** | Executive Mode | | Supervisor Mode | | User Mode | | Compatibility Mode | | Idle Time 164 |********************* Note that this maintains a higher transfer rate (35.5MB/s) than the comparable /stream/octet:2400000/ rate (26.4MB/s) with correspondingly less USER mode (0% vs 24%). Files are read via $QIO from disk in whole multiple blocks and written out via $QIO in multiple MSS-sized datagrams. Quite efficient it seems. CONCLUSIONS ----------- The objective was to evaluate a commodity X86 platform for virtualised VMS and WASD development. Obviously you might not put a production application on such a platform for multiple reasons but seems quite suitable as a development environment. The TCP/IP Service X6.0 out-of-the-box along with out-of-the-box WASD can generate up to 500Mbps stream between applications and up to 350Mbps stream between systems. More than adequate for common activities, certainly development. And eminently affordable. Looking forward to native compilers and moving WASD development to X86. Looking forward to saving the 3.5kwh/day (@AUD$0.38/kwh) consumed by the PWS (for the last twenty years).