Page 2 of 3
OpenVMS x86-64 V9.2 and Alpha V8.4-2L1 CPU profiles
Posted: Thu Apr 27, 2023 5:57 pm
by mgdaniel
This originated from a post to the info-WASD mailing list noting the very significant more
KERNEL mode used by x86-64 VMS V9.2
https://wasd.vsm.com.au/info-WASD/2023/0077
This also kicked-off a discussion on c.o.v.
https://groups.google.com/g/comp.os.vms/c/Eu2eP4Yid7Y
In that post I observe a very
significant increase in KERNEL mode usage on X86 V9.2 compared to my Alpha V8.4 and basically ask why?
(my uninformed conjecture was memory KESU access via emulation, probably at least that)
Is there someone or somewhere that can explain why the KERNEL mode is the standout in this simple baseline test?
For those who will not read the full test of the above post I'd like to emphasise the
ZAP crawl was the most equitable (and easy for me to setup).
ZAP is also used for this KERNEL mode exercise because it results in a
"crawl" of similar portions of underlying files and executables (scripts)
across multiple independent systems and so represents similar profiles of
NETWORK, SYSTEM SERVICE, APPLICATION ACTIVATION AND OTHER ASPECTS of system
behaviour.
Re: OpenVMS x86-64 V9.2 and Alpha V8.4-2L1 CPU profiles
Posted: Sun Apr 30, 2023 3:07 am
by volkerhalle
Another very basic example showing the (current) effect of KERNEL mode usage:
Code: Select all
$! LOOP_GETSYI.COM
$!
$ i=0
$ start=F$GETJPI("","CPUTIM")
$loop:
$ x= F$GETSYI("BOOTTIME")
$ i=i+1
$ IF i .LT. 10000 THEN $ GOTO loop
$ end = F$GETJPI("","CPUTIM")
$ WRITE SYS$OUTPUT "CPUTIM ticks: ",end-start
AXPVMS $ @loop_getsyi ! emulated Alpha
CPUTIM ticks: 223
I64VMS $ @loop_getsyi ! rx2600 (1.30GHz/3.0MB)
CPUTIM ticks: 81
X86VMS $ $ @loop_getsyi.com
CPUTIM ticks: 51
This x86-64 OpenVMS system is about 2 times faster than the rx2600 - if measured by true user mode PRIME_SIEVE execution (see previous post), but only 1.6 times faster in a DCL loop invoking some simple (kernel mode) system service.
Maybe we should postpone performance discussions until the OpenVMS x86-64 operating system would be built using the native mode compilers...
Volker.
Re: OpenVMS x86-64 V9.2 and Alpha V8.4-2L1 CPU profiles
Posted: Sun Apr 30, 2023 4:15 am
by mgdaniel
My own info-WASD posting (
https://wasd.vsm.com.au/info-WASD/2023/0077) concluded:
Something to keep our eyes on as X86 VMS develops over time.
I would also highly recommend the Camiel Vanderhoeven presentation on the complexities of the various VMS ports
https://www.youtube.com/watch?v=U8kcfvJ1Iec, especially to X86. It's been a few years since I last watched it, and is an excellent introduction to not only the technical aspects but also the design process and persons/personalities involved.
Re: OpenVMS x86-64 V9.2 and Alpha V8.4-2L1 CPU profiles
Posted: Mon May 01, 2023 7:19 pm
by mgdaniel
Well, supplied quite a few data using the SDA PCs and yet to see some analysis suggesting where the current (early days for V9.2 as everyone is stating) processing time is being invested.
mgdaniel wrote: ↑Fri Apr 28, 2023 7:26 pm
Code: Select all
PC IPL Pid Count Routine Module
----------------- --- -------- ------------ -------------------------------- ------
FFFF8300.05F7BAD0 0 0000069A 3547 SYSTEM_PRIMITIVES_6_MIN+80049AD0 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05FED7D6 8 000006AB 3507 EXE$RANDOM_HARVEST_DIRECT_C+0067 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F77062 8 0000069A 1806 SWIS$GET_CURRENT_HWPCB_C+00652 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F7713D 21 000006A3 763 SWIS$GET_CURRENT_HWPCB_C+0072D SYSTEM_PRIMITIVES_6_MIN
FFFF8300.0628E75B 8 0000069A 674 PROCESS_MANAGEMENT+8000325B PROCESS_MANAGEMENT
FFFFFFFF.89C053DE 8 0000069E 573 SYS$PUBLIC_VECTORS+093DE SYS$PUBLIC_VECTORS
FFFF8300.05F6A75D 0 00000693 480 SYSTEM_PRIMITIVES_6_MIN+8003875D SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F76036 8 000006AB 420 SYSTEM_PRIMITIVES_6_MIN+80044036 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F6A61E 0 0000069A 356 SYSTEM_PRIMITIVES_6_MIN+8003861E SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F6A42C 0 00000642 335 SYSTEM_PRIMITIVES_6_MIN+8003842C SYSTEM_PRIMITIVES_6_MIN
FFFFFFFF.89CB30D0 8 000006AB 304 SYSTEM_PRIMITIVES_6_MIN+9E4D0 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05E579E0 8 0000069D 231 EXE$TIMEDWAIT_SETUP_C+00090 SYS$PLATFORM_SUPPORT
FFFF8300.05F6A4DF 0 00000693 225 SYSTEM_PRIMITIVES_6_MIN+800384DF SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F7C0BA 0 000006AA 224 SYSTEM_PRIMITIVES_6_MIN+8004A0BA SYSTEM_PRIMITIVES_6_MIN
FFFFFFFF.89C51360 0 00000693 219 LIB$ALPHA_REG_VECTOR_BASE SYS$BASE_IMAGE
FFFF8300.05F7C0B7 0 00000695 184 SYSTEM_PRIMITIVES_6_MIN+8004A0B7 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05E02670 0 0000069E 182 SYS$BASE_IMAGE+80000570 SYS$BASE_IMAGE
FFFF8300.05F6A7A3 0 0000069A 182 SYSTEM_PRIMITIVES_6_MIN+800387A3 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F74F00 0 00000694 167 SWIS$INSERT_RING_BUFFER_C+00250 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05E5790A 8 00000695 146 EXE$TIMEDWAIT_COMPLETE_C+0003A SYS$PLATFORM_SUPPORT
FFFF8300.05F696B0 0 00000645 138 SYSTEM_PRIMITIVES_6_MIN+800376B0 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F7C460 0 0000069E 135 SYSTEM_PRIMITIVES_6_MIN+8004A460 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F6A8C0 0 00000677 135 SYSTEM_PRIMITIVES_6_MIN+800388C0 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F7C197 0 0000069E 130 SYSTEM_PRIMITIVES_6_MIN+8004A197 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F7C0A8 0 00000693 127 SYSTEM_PRIMITIVES_6_MIN+8004A0A8 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F6A425 0 00000645 126 SYSTEM_PRIMITIVES_6_MIN+80038425 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F6A7F0 0 00000693 124 SYSTEM_PRIMITIVES_6_MIN+800387F0 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F6A20D 0 00000694 115 SYSTEM_PRIMITIVES_6_MIN+8003820D SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F69F1F 0 00000697 108 SYSTEM_PRIMITIVES_6_MIN+80037F1F SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F69961 0 0000069A 106 SYSTEM_PRIMITIVES_6_MIN+80037961 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F775F4 2 00000677 98 SWIS$GET_CURRENT_HWPCB_C+00BE4 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F6A756 0 0000066B 91 SYSTEM_PRIMITIVES_6_MIN+80038756 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F6A357 0 00000645 87 SYSTEM_PRIMITIVES_6_MIN+80038357 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F697D7 0 00000645 87 SYSTEM_PRIMITIVES_6_MIN+800377D7 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F6A3E1 0 000006AA 85 SYSTEM_PRIMITIVES_6_MIN+800383E1 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F69A90 0 0000069E 85 SYSTEM_PRIMITIVES_6_MIN+80037A90 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F7C113 0 00000677 84 SYSTEM_PRIMITIVES_6_MIN+8004A113 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05FFE3C8 0 000006A9 79 AMAC$EMUL_CMPC5_C+00B38 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F697DB 0 0000069A 79 SYSTEM_PRIMITIVES_6_MIN+800377DB SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F696B1 0 000006AB 77 SYSTEM_PRIMITIVES_6_MIN+800376B1 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F6A4D8 0 000006AB 74 SYSTEM_PRIMITIVES_6_MIN+800384D8 SYSTEM_PRIMITIVES_6_MIN
Press RETURN for more.
PC IPL Pid Count Routine Module
----------------- --- -------- ------------ -------------------------------- ------
FFFF8300.05F6A617 0 000006A9 74 SYSTEM_PRIMITIVES_6_MIN+80038617 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F69930 0 000006A9 74 SYSTEM_PRIMITIVES_6_MIN+80037930 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F6A2CD 0 0000069A 74 SYSTEM_PRIMITIVES_6_MIN+800382CD SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F6A264 0 00000695 72 SYSTEM_PRIMITIVES_6_MIN+80038264 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F6A410 0 000006AB 70 SYSTEM_PRIMITIVES_6_MIN+80038410 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F6A1D1 8 00000645 68 SYSTEM_PRIMITIVES_6_MIN+800381D1 SYSTEM_PRIMITIVES_6_MIN
FFFFFFFF.89C053C0 0 00000693 66 SYS$PUBLIC_VECTORS+093C0 SYS$PUBLIC_VECTORS
FFFF8300.05F6992C 0 000006AB 65 SYSTEM_PRIMITIVES_6_MIN+8003792C SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F69DE1 0 00000694 65 SYSTEM_PRIMITIVES_6_MIN+80037DE1 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F69A8C 0 00000677 64 SYSTEM_PRIMITIVES_6_MIN+80037A8C SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F69F1B 0 0000066B 64 SYSTEM_PRIMITIVES_6_MIN+80037F1B SYSTEM_PRIMITIVES_6_MIN
FFFF8300.0605B3D0 0 00000644 64 SMP_STD$ACQUIRE_C SYSTEM_SYNCHRONIZATION_MIN
FFFF8300.05F6A4C3 0 00000699 62 SYSTEM_PRIMITIVES_6_MIN+800384C3 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F69E74 0 000006A9 61 SYSTEM_PRIMITIVES_6_MIN+80037E74 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.0607E350 8 000006AB 58 SMP_STD$RELEASE_C SYSTEM_SYNCHRONIZATION_MIN
FFFF8300.05F6A39F 0 000006A9 58 SYSTEM_PRIMITIVES_6_MIN+8003839F SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F7BAE3 0 000006AB 57 SYSTEM_PRIMITIVES_6_MIN+80049AE3 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F6A315 0 00000699 57 SYSTEM_PRIMITIVES_6_MIN+80038315 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F6C94A 8 0000069E 55 SYSTEM_PRIMITIVES_6_MIN+8003A94A SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05E0236B 0 00000677 55 SYS$BASE_IMAGE+8000026B SYS$BASE_IMAGE
FFFF8300.05F6A5E8 0 00000693 54 SYSTEM_PRIMITIVES_6_MIN+800385E8 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F69E52 8 00000645 53 SYSTEM_PRIMITIVES_6_MIN+80037E52 SYSTEM_PRIMITIVES_6_MIN
FFFFFFFF.89C04000 0 000006A9 52 SYS$PUBLIC_VECTORS+08000 SYS$PUBLIC_VECTORS
FFFF8300.05F69801 0 00000695 52 SYSTEM_PRIMITIVES_6_MIN+80037801 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F6A39D 0 0000069E 50 SYSTEM_PRIMITIVES_6_MIN+8003839D SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F57113 0 00000645 49 SYSTEM_PRIMITIVES_6_MIN+80025113 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.0605B520 0 0000069E 48 SMP$ACQUIRE_C+00050 SYSTEM_SYNCHRONIZATION_MIN
FFFF8300.05F69866 0 0000066B 48 SYSTEM_PRIMITIVES_6_MIN+80037866 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F6A313 0 00000644 48 SYSTEM_PRIMITIVES_6_MIN+80038313 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F7C0AE 0 000006A9 47 SYSTEM_PRIMITIVES_6_MIN+8004A0AE SYSTEM_PRIMITIVES_6_MIN
FFFF8300.06085ED0 0 00000694 47 SMP$VALIDATE_HW_CONFIGURATION_C+ SYSTEM_SYNCHRONIZATION_MIN
FFFF8300.05F6A602 0 00000697 46 SYSTEM_PRIMITIVES_6_MIN+80038602 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05E02353 0 000006AB 45 SYS$BASE_IMAGE+80000253 SYS$BASE_IMAGE
FFFF8300.05F7C0AA 0 00000699 45 SYSTEM_PRIMITIVES_6_MIN+8004A0AA SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F6A626 0 00000645 45 SYSTEM_PRIMITIVES_6_MIN+80038626 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F6A4A9 0 00000694 44 SYSTEM_PRIMITIVES_6_MIN+800384A9 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F69E37 0 00000642 44 SYSTEM_PRIMITIVES_6_MIN+80037E37 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F696FB 0 00000697 43 SYSTEM_PRIMITIVES_6_MIN+800376FB SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F69A21 0 00000694 43 SYSTEM_PRIMITIVES_6_MIN+80037A21 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F6A3AA 8 00000677 43 SYSTEM_PRIMITIVES_6_MIN+800383AA SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F6A605 0 00000645 43 SYSTEM_PRIMITIVES_6_MIN+80038605 SYSTEM_PRIMITIVES_6_MIN
Press RETURN for more.
PC IPL Pid Count Routine Module
----------------- --- -------- ------------ -------------------------------- ------
FFFF8300.0607E5BC 8 0000069E 42 SMP$RELEASE_C+0015C SYSTEM_SYNCHRONIZATION_MIN
FFFF8300.05F6A4E7 0 00000644 42 SYSTEM_PRIMITIVES_6_MIN+800384E7 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.0628E63C 8 0000053D 42 PROCESS_MANAGEMENT+8000313C PROCESS_MANAGEMENT
FFFF8300.05F699B7 0 000006AB 41 SYSTEM_PRIMITIVES_6_MIN+800379B7 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F69980 0 00000695 41 SYSTEM_PRIMITIVES_6_MIN+80037980 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F69711 0 00000695 41 SYSTEM_PRIMITIVES_6_MIN+80037711 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F7766C 0 00000677 41 SWIS$GET_CURRENT_HWPCB_C+00C5C SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F99A3E 11 0000053D 41 EXE$ALLOCATE_C+0010E SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F6A727 0 0000066B 40 SYSTEM_PRIMITIVES_6_MIN+80038727 SYSTEM_PRIMITIVES_6_MIN
FFFFFFFF.89C0BF9E 0 00000644 40 SYS$PUBLIC_VECTORS+0FF9E SYS$PUBLIC_VECTORS
FFFF8300.05F7C0AC 0 000006A9 39 SYSTEM_PRIMITIVES_6_MIN+8004A0AC SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F699C6 0 0000069E 39 SYSTEM_PRIMITIVES_6_MIN+800379C6 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F699E1 0 00000695 39 SYSTEM_PRIMITIVES_6_MIN+800379E1 SYSTEM_PRIMITIVES_6_MIN
FFFFFFFF.89C24E90 0 00000699 38 SMP_STD$ACQUIRE SYS$BASE_IMAGE
FFFF8300.05F6974E 0 00000699 38 SYSTEM_PRIMITIVES_6_MIN+8003774E SYSTEM_PRIMITIVES_6_MIN
FFFF8300.062FC01F 0 00000694 38 PROCESS_MANAGEMENT+80070B1F PROCESS_MANAGEMENT
FFFF8300.05F6A323 0 00000694 38 SYSTEM_PRIMITIVES_6_MIN+80038323 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F6A223 0 000006AA 37 SYSTEM_PRIMITIVES_6_MIN+80038223 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F6976C 0 000006A9 37 SYSTEM_PRIMITIVES_6_MIN+8003776C SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F6A741 0 0000069E 37 SYSTEM_PRIMITIVES_6_MIN+80038741 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F6A413 0 000006AB 36 SYSTEM_PRIMITIVES_6_MIN+80038413 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05E02678 0 000006A9 36 SYS$BASE_IMAGE+80000578 SYS$BASE_IMAGE
FFFF8300.05F6A451 0 00000694 36 SYSTEM_PRIMITIVES_6_MIN+80038451 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F6A123 0 000006AA 35 SYSTEM_PRIMITIVES_6_MIN+80038123 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F69A95 0 00000697 35 SYSTEM_PRIMITIVES_6_MIN+80037A95 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F69730 0 00000695 35 SYSTEM_PRIMITIVES_6_MIN+80037730 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F69F24 0 00000642 35 SYSTEM_PRIMITIVES_6_MIN+80037F24 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F6A3CA 0 000006A9 33 SYSTEM_PRIMITIVES_6_MIN+800383CA SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F6A159 0 00000694 33 SYSTEM_PRIMITIVES_6_MIN+80038159 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F6A4C6 0 0000066B 33 SYSTEM_PRIMITIVES_6_MIN+800384C6 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F698C1 0 00000645 33 SYSTEM_PRIMITIVES_6_MIN+800378C1 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F69935 0 00000644 33 SYSTEM_PRIMITIVES_6_MIN+80037935 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F6A3AD 0 000006AB 32 SYSTEM_PRIMITIVES_6_MIN+800383AD SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F6A744 8 0000069E 32 SYSTEM_PRIMITIVES_6_MIN+80038744 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F75F60 0 00000693 32 SYSTEM_PRIMITIVES_6_MIN+80043F60 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F7C461 0 00000697 31 SYSTEM_PRIMITIVES_6_MIN+8004A461 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F6A1DF 0 000006AB 30 SYSTEM_PRIMITIVES_6_MIN+800381DF SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F6A7F1 0 000006A9 30 SYSTEM_PRIMITIVES_6_MIN+800387F1 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F6A289 0 0000069E 30 SYSTEM_PRIMITIVES_6_MIN+80038289 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F6A4DC 0 00000699 30 SYSTEM_PRIMITIVES_6_MIN+800384DC SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F6A28B 0 00000694 30 SYSTEM_PRIMITIVES_6_MIN+8003828B SYSTEM_PRIMITIVES_6_MIN
Press RETURN for more.
PC IPL Pid Count Routine Module
----------------- --- -------- ------------ -------------------------------- ------
FFFF8300.05F6A31C 0 00000693 30 SYSTEM_PRIMITIVES_6_MIN+8003831C SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F7C594 0 00000677 30 SYSTEM_PRIMITIVES_6_MIN+8004A594 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F69E96 0 000006A9 29 SYSTEM_PRIMITIVES_6_MIN+80037E96 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F7667D 8 0000069E 29 SWIS$SET_CURRENT_KT_ID_C+0012D SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F6A3A6 8 00000677 29 SYSTEM_PRIMITIVES_6_MIN+800383A6 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F69E46 8 0000066B 29 SYSTEM_PRIMITIVES_6_MIN+80037E46 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F7C4CC 0 0000069A 28 SYSTEM_PRIMITIVES_6_MIN+8004A4CC SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F698A7 0 00000697 28 SYSTEM_PRIMITIVES_6_MIN+800378A7 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F76F75 8 00000642 28 SWIS$GET_CURRENT_HWPCB_C+00565 SYSTEM_PRIMITIVES_6_MIN
FFFFFFFF.89C27710 8 0000053D 28 SMP_STD$RELEASE SYS$BASE_IMAGE
FFFF8300.05F699E5 0 000006AB 27 SYSTEM_PRIMITIVES_6_MIN+800379E5 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.0636F480 0 00000695 27 PROCESS_MANAGEMENT+800E3F80 PROCESS_MANAGEMENT
FFFFFFFF.89C053E0 8 0000066B 27 SYS$PUBLIC_VECTORS+093E0 SYS$PUBLIC_VECTORS
FFFF8300.05F6A125 0 0000066B 27 SYSTEM_PRIMITIVES_6_MIN+80038125 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F6A61B 0 00000644 27 SYSTEM_PRIMITIVES_6_MIN+8003861B SYSTEM_PRIMITIVES_6_MIN
FFFFFFFF.89C053C1 0 000006AB 26 SYS$PUBLIC_VECTORS+093C1 SYS$PUBLIC_VECTORS
FFFF8300.05F714C0 8 000006A9 26 SYSTEM_PRIMITIVES_6_MIN+8003F4C0 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05E022E0 0 0000053D 26 SYS$BASE_IMAGE+800001E0 SYS$BASE_IMAGE
FFFF8300.05E023A5 0 000006A9 25 SYS$BASE_IMAGE+800002A5 SYS$BASE_IMAGE
FFFF8300.05F6A18F 0 00000694 25 SYSTEM_PRIMITIVES_6_MIN+8003818F SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F69A07 0 00000677 25 SYSTEM_PRIMITIVES_6_MIN+80037A07 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F6A8C1 0 00000645 25 SYSTEM_PRIMITIVES_6_MIN+800388C1 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F69E00 8 00000642 25 SYSTEM_PRIMITIVES_6_MIN+80037E00 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F765F0 0 0000069E 24 SWIS$SET_CURRENT_KT_ID_C+000A0 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F69881 0 00000695 24 SYSTEM_PRIMITIVES_6_MIN+80037881 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F570D0 0 0000066B 24 SYSTEM_PRIMITIVES_6_MIN+800250D0 SYSTEM_PRIMITIVES_6_MIN
FFFFFFFF.89C05780 0 000006A9 23 SYS$PUBLIC_VECTORS+09780 SYS$PUBLIC_VECTORS
FFFF8300.068941C5 2 0000069A 23 SYS$VM+8009A9C5 SYS$VM
FFFF8300.05F7C5A2 0 00000694 23 SYSTEM_PRIMITIVES_6_MIN+8004A5A2 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F6A340 0 00000677 23 SYSTEM_PRIMITIVES_6_MIN+80038340 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05E0236F 0 00000677 23 SYS$BASE_IMAGE+8000026F SYS$BASE_IMAGE
FFFF8300.05F75CC0 8 00000645 23 SYSTEM_PRIMITIVES_6_MIN+80043CC0 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F6A75A 0 00000697 22 SYSTEM_PRIMITIVES_6_MIN+8003875A SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F6A1ED 0 00000694 22 SYSTEM_PRIMITIVES_6_MIN+800381ED SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F76580 8 00000646 22 SWIS$SET_CURRENT_KT_ID_C+00030 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F6A135 0 00000645 22 SYSTEM_PRIMITIVES_6_MIN+80038135 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F69752 0 00000644 22 SYSTEM_PRIMITIVES_6_MIN+80037752 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05E0234F 0 0000053D 22 SYS$BASE_IMAGE+8000024F SYS$BASE_IMAGE
FFFF8300.05F6A174 0 000006AB 21 SYSTEM_PRIMITIVES_6_MIN+80038174 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F6A127 0 000006AB 21 SYSTEM_PRIMITIVES_6_MIN+80038127 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F6A3B4 0 000006AA 21 SYSTEM_PRIMITIVES_6_MIN+800383B4 SYSTEM_PRIMITIVES_6_MIN
Press RETURN for more.
Software Interrupt seems to be right up there:
Code: Select all
FFFF8300.05F77062 8 0000069A 1806 SWIS$GET_CURRENT_HWPCB_C+00652 SYSTEM_PRIMITIVES_6_MIN
FFFF8300.05F7713D 21 000006A3 763 SWIS$GET_CURRENT_HWPCB_C+0072D SYSTEM_PRIMITIVES_6_MIN
As is a hopefully low overhead:
Code: Select all
FFFF8300.05FED7D6 8 000006AB 3507 EXE$RANDOM_HARVEST_DIRECT_C+0067 SYSTEM_PRIMITIVES_6_MIN
And an equally prominent:
Code: Select all
FFFF8300.05F7BAD0 0 0000069A 3547 SYSTEM_PRIMITIVES_6_MIN+80049AD0 SYSTEM_PRIMITIVES_6_MIN
Any insights much appreciated.
Re: OpenVMS x86-64 V9.2 and Alpha V8.4-2L1 CPU profiles
Posted: Wed May 31, 2023 5:25 pm
by mgdaniel
Comment by John Reagan on c.o.v. (thanks for stirring the embers Simon)
I briefly skimmed the data (there is a lot of it). And I'm not an expert in this
area of the system.
Compiler optimizers rarely eliminate call frames (other than doing inline
expansion but that doesn't make the work go away). Call/return overhead
on x86 is very fast (think like JSB/RET on VAX or JSR/RET on Alpha).
Other than the shuffling of PTEs that everybody is focusing on, I'll point out
that x86 does not provide a hardware 'probe' instruction. If you want to use
'probe' to confirm access to any address, the OS (any OS, not just OpenVMS)
has to crawl around in the page tables to find the final PTE to check the access
flags. With 4K pages, those PTEs can be 4 or even 5 level deep.
We are very much aware that 'probe' can be pain and deep page table entries.
Using large hardware page sizes can reduce the depth of the page table structures
but might require code inspection. Reducing or eliminating probes can help as well.
The old theory was to probe always to avoid an exception rarely. For x86 perhaps
it might be better to skip probes but be ready to handle the rare exceptions?
An optimizer might "tighten" up the probe code but at the end of the day, there are
lots of pointers to follow and protection masks to extract and compare.
Another addition to the system (and related to that exe$random_harvest_direct seen
on some of the stack frames) is harvesting entropy at some interval.
https://groups.google.com/g/comp.os.vms ... 2V4praAQAJ
Re: OpenVMS x86-64 V9.2 and Alpha V8.4-2L1 CPU profiles
Posted: Thu Jun 01, 2023 6:54 am
by cgrant
Interesting data. Once 9.2-1 ships in a few weeks we will starting looking into it.
Clair
Re: OpenVMS x86-64 V9.2 and Alpha V8.4-2L1 CPU profiles
Posted: Thu Jun 29, 2023 1:14 am
by mgdaniel
Probably unsurprisingly the VMS V9.2-1 measurements show an almost identical profile.
https://wasd.vsm.com.au/info-WASD/2023/0087
Re: OpenVMS x86-64 V9.2 and Alpha V8.4-2L1 CPU profiles
Posted: Mon Jul 03, 2023 6:43 am
by cgrant
I tried a number of tests attempting to reproduce your high kernel mode numbers - no luck. Can you give me an idea of what your system is doing when the 70% kernel mode occurs?
Thanks,
Clair
Re: OpenVMS x86-64 V9.2 and Alpha V8.4-2L1 CPU profiles
Posted: Mon Jul 03, 2023 9:28 am
by mgdaniel
Hello Clair.
Thank you for your continued interest.
As mentioned in the introductory entry for this thread, it is described in a post to the info-WASD mailing list
https://wasd.vsm.com.au/info-WASD/2023/0077 the observation was quite incidental to a standard test and exercise process for the WASD HTTP server package.
Just to repeat the idea behind the observation, OWASP ZAP (
https://www.zaproxy.org) runs on a separate system spidering (and then exercising penetration attempts on) the WASD web tree on the target system, attempting to break the server and/or associated web applications (
https://wasd.vsm.com.au/wasd_root/wasdo ... itetesting).
ZAP is also used for this KERNEL mode exercise because it results in a "crawl" of similar portions of underlying files and executables (scripts) across multiple independent systems and so represents similar profiles of
NETWORK, SYSTEM SERVICE, APPLICATION ACTIVATION AND OTHER ASPECTS of system behaviour.
So, because it exercises a spectrum of "
similar profiles of NETWORK, SYSTEM SERVICE, APPLICATION ACTIVATION AND OTHER ASPECTS of system behaviour." can be
easily used to perform a comparison of complex system behaviours across disparate architectures.
The original article (
https://wasd.vsm.com.au/info-WASD/2023/0077) compares X86 and Alpha CPU mode profiles, and with additional information in the original thread accounts for kernel activities
$ ana/sys
SDA> read/exec
SDA> pcs load
SDA> pcs start trace
...
within that profile exercise (
viewtopic.php?f=21&t=8654&sid=aeae98528 ... 205#p18450).
The more recent info-WASD posting (
https://wasd.vsm.com.au/info-WASD/2023/0087) confirms an almost identical KERNEL profile under V9.2-1 and invites further investigation.
Thanks again for your continued interest.
Re: OpenVMS x86-64 V9.2 and Alpha V8.4-2L1 CPU profiles
Posted: Wed Jul 05, 2023 4:57 am
by volkerhalle
Clair,
before diving into complex performance testing tools, it might be easier to start with some of the other examples posted before in this topic:
- PRIME_SIEVE tool to measure integer CPU user mode performance
- @LOOP_GETSYI to test a simple system service call in a loop (and compare KERNEL mode percentage between Alpha/I64/x86-64)
- some of the available *VUPS*.COM procedures, which also show significant more KERNEL mode being used on x86-64
Volker.
Re: OpenVMS x86-64 V9.2 and Alpha V8.4-2L1 CPU profiles
Posted: Wed Jul 05, 2023 6:08 am
by cgrant
Thanks,
I've read all the posts and followed all of the links.
Clair