OpenVMS x86-64 V9.2 and Alpha V8.4-2L1 CPU profiles


Topic author
mgdaniel
Valued Contributor
Posts: 62
Joined: Mon Feb 28, 2022 5:16 pm
Reputation: 0
Location: Adelaide, South Australia
Status: Offline
Contact:

OpenVMS x86-64 V9.2 and Alpha V8.4-2L1 CPU profiles

Post by mgdaniel » Thu Apr 27, 2023 5:57 pm

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.

User avatar

volkerhalle
Master
Posts: 196
Joined: Fri Aug 14, 2020 11:31 am
Reputation: 0
Status: Offline

Re: OpenVMS x86-64 V9.2 and Alpha V8.4-2L1 CPU profiles

Post by volkerhalle » Sun Apr 30, 2023 3:07 am

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.


Topic author
mgdaniel
Valued Contributor
Posts: 62
Joined: Mon Feb 28, 2022 5:16 pm
Reputation: 0
Location: Adelaide, South Australia
Status: Offline
Contact:

Re: OpenVMS x86-64 V9.2 and Alpha V8.4-2L1 CPU profiles

Post by mgdaniel » Sun Apr 30, 2023 4:15 am

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.


Topic author
mgdaniel
Valued Contributor
Posts: 62
Joined: Mon Feb 28, 2022 5:16 pm
Reputation: 0
Location: Adelaide, South Australia
Status: Offline
Contact:

Re: OpenVMS x86-64 V9.2 and Alpha V8.4-2L1 CPU profiles

Post by mgdaniel » Mon May 01, 2023 7:19 pm

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.


Topic author
mgdaniel
Valued Contributor
Posts: 62
Joined: Mon Feb 28, 2022 5:16 pm
Reputation: 0
Location: Adelaide, South Australia
Status: Offline
Contact:

Re: OpenVMS x86-64 V9.2 and Alpha V8.4-2L1 CPU profiles

Post by mgdaniel » Wed May 31, 2023 5:25 pm

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


cgrant
VSI Expert
Contributor
Posts: 18
Joined: Mon Aug 09, 2021 9:01 am
Reputation: 0
Status: Offline

Re: OpenVMS x86-64 V9.2 and Alpha V8.4-2L1 CPU profiles

Post by cgrant » Thu Jun 01, 2023 6:54 am

Interesting data. Once 9.2-1 ships in a few weeks we will starting looking into it.

Clair


Topic author
mgdaniel
Valued Contributor
Posts: 62
Joined: Mon Feb 28, 2022 5:16 pm
Reputation: 0
Location: Adelaide, South Australia
Status: Offline
Contact:

Re: OpenVMS x86-64 V9.2 and Alpha V8.4-2L1 CPU profiles

Post by mgdaniel » Thu Jun 29, 2023 1:14 am

Probably unsurprisingly the VMS V9.2-1 measurements show an almost identical profile.

https://wasd.vsm.com.au/info-WASD/2023/0087


cgrant
VSI Expert
Contributor
Posts: 18
Joined: Mon Aug 09, 2021 9:01 am
Reputation: 0
Status: Offline

Re: OpenVMS x86-64 V9.2 and Alpha V8.4-2L1 CPU profiles

Post by cgrant » Mon Jul 03, 2023 6:43 am

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


Topic author
mgdaniel
Valued Contributor
Posts: 62
Joined: Mon Feb 28, 2022 5:16 pm
Reputation: 0
Location: Adelaide, South Australia
Status: Offline
Contact:

Re: OpenVMS x86-64 V9.2 and Alpha V8.4-2L1 CPU profiles

Post by mgdaniel » Mon Jul 03, 2023 9:28 am

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.

User avatar

volkerhalle
Master
Posts: 196
Joined: Fri Aug 14, 2020 11:31 am
Reputation: 0
Status: Offline

Re: OpenVMS x86-64 V9.2 and Alpha V8.4-2L1 CPU profiles

Post by volkerhalle » Wed Jul 05, 2023 4:57 am

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.


cgrant
VSI Expert
Contributor
Posts: 18
Joined: Mon Aug 09, 2021 9:01 am
Reputation: 0
Status: Offline

Re: OpenVMS x86-64 V9.2 and Alpha V8.4-2L1 CPU profiles

Post by cgrant » Wed Jul 05, 2023 6:08 am

Thanks,

I've read all the posts and followed all of the links.

Clair

Post Reply