On 5/19/22 4:40 PM, Jake Hamby wrote:
> On Thursday, May 19, 2022 at 10:50:44 AM UTC-7, Bill Gunshannon wrote:
>> On 5/15/22 19:46, Arne Vajhøj wrote:
>>> I would try and sell VMS as being lean. Linux is getting fat.
>> Might work. Until the first time you have to run a benchmark.
> That's a mean thing to say, but it's a big open question (at least
> for me, since I don't have access to the x86 version): how well does VMS
> actually perform on modern x86-64 hardware?
It's going to remain an open question for some time. As far as I know,
none of the cross compilers has optimizations turned on, which means
there is no optimized code in the OS or libraries shipped with the OS,
much less in anything you build yourself.
Once the optimizations are available, you'll run into the inherently
slow file I/O and network I/O that have been discussed many times here.
The current roadmap does not include either of the new filesystems that
have been planned and set aside, nor the networking overhaul (VCI 2.0).
One can hope these will come back one day once the port to x86 is done.
I would not expect VMS to be competitive in raw speed with other OSs on
the same hardware anytime soon, but it really just needs to be a bit
faster on virtual x86 than it was on the last generation of Integrity
hardware for it to be a big step forward. Reducing cost and risk are
going to be a lot more important to most people in the near term than
increasing speed.
> I've ported some simple IPC benchmarks from Linux to
> find out for myself how well it performs on vintage hardware:
>
>
https://github.com/jhamby/vms-ipc_benchmark/
>
> For comparison, running "pipe" and "tcp" with 8K message size, I can
> easily get 6,500 MB/s, or 835,000 msg/s on an Intel Xeon W-1290P CPU @
> 3.70GHz (turbo to 5.2 GHz) running Ubuntu 22.04 (kernel 5.15.0).
>
> On a dual 1.6 GHz / 3MB ("Fanwood") HP rx2620, the best I can get is
> around 160MB/s, or 1/40 of the speed of the new PC. On my 667 MHz EV67
> XP1000, I get about 65MB/s, or 1%. That hardware is from 2005 and 2002,
> respectively. The Alpha hits a limit of around 20,000 msg/s that's a
> bottleneck as I shrink the packet size to 4K and below, while the
> Itanium handles smaller writes without much issue.
> You'll also notice if you check the source code that I'm linking in
> the vms_crtl_init.c and vms_crtl_values.c from the VSI Python 3.10 port,
> which set the behavior of pipe() to be as UNIX-like as possible. Without
> that, the speed would be hovering around 14MB/s on the Itanium.
> Completely unacceptable.
pipe() on VMS is based on mailboxes, an ancient virtual device
technology that is convenient to use and quite effective for passing
small messages around between processes. But it's slow, and it's a
record-oriented device, which doesn't always play nice in a
stream-oriented world (though stream-oriented behavior is emulated to
some extent). For a faster pipe implementation see dmpipe, which uses
global sections:
https://sourceforge.net/p/vms-ports/dmpipe
Unfortunately this involves wrapping pretty much every function in the
CRTL that touches a file descriptor -- the fix should really be inside
the CRTL, but, alas, that also is not on the roadmap.