soyMAIL 2.1.0 requires JavaScript
soyMAIL @ wasd.vsm.com.au
       info-WASD Mailing List 2021 

Mon 18:32:43 Message "2021 / 0091" opened.  MIME.  13 kbytes.    JavaScript

Subject:[Info-WASD] Commodity x86-64 (and WASD v12.0)0091 / 0000
From:Mark.Daniel@wasd.vsm.com.au
Reply-to:info-wasd@vsm.com.au
Date:Sun, 19 Dec 2021 11:08:25 +1030  [19-DEC-2021 11:08]
To:info-WASD@vsm.com.au

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).

  ¤¤¤       
  ¤¤¤