[Simh] VMS on SIMH/VAX on FreeBSD 9.0 (Lennert Van Alboom)

Lennert Van Alboom lennert at vanalboom.org
Thu May 24 13:44:08 EDT 2012


On Thu, May 24, 2012 at 12:33:11PM -0400, Bob Supnik wrote:
>In sim_timer.c, locate this routine (there are several versions, look 
>for the last one, which is for UNIX systems):
>
>uint32 sim_os_ms_sleep_init (void)
>{
>uint32 i, t1, t2, tot, tim;
>
>for (i = 0, tot = 0; i < sleep1Samples; i++) {
>    t1 = sim_os_msec ();
>    sim_os_ms_sleep (1);
>    t2 = sim_os_msec ();
>    tot += (t2 - t1);
>    }
>tim = (tot + (sleep1Samples - 1)) / sleep1Samples;
>if (tim > SIM_IDLE_MAX)
>    tim = 0;
>return tim;
>}
>
>If you are running with gdb, place a breakpoint on the line
>
>if (tim > SIM_IDLE_MAX)
>
>and see what the value of 'tim' is. Otherwise, insert the following 
>before the if statement:
>
>printf ("Calculated minimum sleep time = %d\r\n", tim);
>
>and see what gets printed out.

We seem to have a winner:
      
     Calculated minimum sleep time = 20


After a tip from zoran at #vms, I checked the FreeBSD host clock settings:

     [alver at bsd ~]$ sysctl kern.clockrate
     kern.clockrate: { hz = 100, tick = 10000, profhz = 8128, stathz = 127 }


This was a tad too slow - 100 ticks per second. I changed it to 1000 ticks per
second in /boot/loader.conf:

     kern.hz="1000"


After rebooting, the clockrate was adjusted to this:

     [alver at bsd ~]$ sysctl kern.clockrate
     kern.clockrate: { hz = 1000, tick = 1000, profhz = 8128, stathz = 127 }


And lo, behold: 

     Calculated minimum sleep time = 2

     VAX simulator V3.9-0
     sim> SHOW CPU
     CPU, idle=VMS, idle enabled, stability wait = 20s, 64MB, HALT to console


So it's working as expected now.


Thanks everyone for the assistance! Now back to clustering VAXen over an
openvpn L2 link... :-)


Lennert



More information about the Simh mailing list