Calculating VUP values

From: Brian Wheeler <bdwheele_at_indiana.edu>
Date: Tue Apr 23 08:37:19 2002

On Tue, 2002-04-23 at 03:21, Huw Davies wrote:
> I'm sure a few days ago I saw a piece of DCL fly by in a classiccmp mail
> message that was supposed to calculate the VUP rating of a VMS system.
>
> At the time I didn't think I'd need it so didn't archive it, of course, now
> I WANT it! Basically I'd like to get the VUP rating for my simulated
> VAXserver 3900 thanks to simh (http://simh.trailing-edge.com).
>
> Huw Davies | e-mail: Huw.Davies_at_kerberos.davies.net.au
> | "If God had wanted soccer played in the
> | air, the sky would be painted green"

I might have been the one that posted it. I snagged it from google, so
I don't know how accurate it is. On my pentium 3/1.7GHz I get 4.0 vups
under simh.

$! CALCULATE_VUPS:
$!
$ set noon
$ orig_privs = f$setprv("ALTPRI")
$ process_priority = f$getjpi(0,"PRIB")
$ cpu_multiplier = 10 ! VAX = 10 - Alpha/AXP = 40
$ cpu_round_add = 1 ! VAX = 1 - Alpha/AXP = 9
$ cpu_round_divide = cpu_round_add + 1
$ init_counter = cpu_multiplier * 525
$ init_loop_maximum = 205
$ start_cputime = f$getjpi(0,"CPUTIM")
$ loop_index = 0
$ 10$:
$ loop_index = loop_index + 1
$ if loop_index .ne. init_loop_maximum then goto 10$
$ end_cputime = f$getjpi(0,"CPUTIM")
$ init_vups = ((init_counter / (end_cputime - start_cputime) + -
                   cpu_round_add) / cpu_round_divide) * cpu_round_divide
$ loop_maximum = (init_vups * init_loop_maximum) / 10
$ base_counter = (init_counter * init_vups) / 10
$ vups = 0
$ times_through_loop = 0
$ 20$:
$ start_cputime = f$getjpi(0,"CPUTIM")
$ loop_index = 0
$ 30$:
$ loop_index = loop_index + 1
$ if loop_index .ne. loop_maximum then goto 30$
$ end_cputime = f$getjpi(0,"CPUTIM")
$ new_vups = ((base_counter / (end_cputime - start_cputime) + -
                  cpu_round_add) / cpu_round_divide) * cpu_round_divide
$ if new_vups .eq. vups then goto 40$
$ vups = new_vups
$ times_through_loop = times_through_loop + 1
$ if times_through_loop .le. 5 then goto 20$
$ 40$:
$ new_privs = f$setprv(orig_privs)
$ set message /nofacility/noidentification/noseverity/notext
$ ASSIGN/SYSTEM/EXEC 'vups' MACHINE_VUPS_RATING
$ set message /facility/identification/severity/text
$ write sys$output "Approximate System VUPs Rating : ", -
                   vups / 10,".", vups - ((vups / 10) * 10)
$ exit


Brian
Received on Tue Apr 23 2002 - 08:37:19 BST

This archive was generated by hypermail 2.3.0 : Fri Oct 10 2014 - 23:34:33 BST