rcornwell / sims

Burroughs B5500, ICL1900, SEL32, IBM 360/370, IBM 7000 and DEC PDP10 KA10/KI10/KL10/KS10, PDP6 simulators for SimH
http://sky-visions.com
95 stars 20 forks source link

KA10: ITS idling #145

Closed larsbrinkhoff closed 5 years ago

larsbrinkhoff commented 5 years ago

The typical ITS configuration runs at 100% host CPU utilization. How do I fix this? How do I know which devices are not idling properly?

rcornwell commented 5 years ago

I suspect this is either IMP or CH10 device. Since it idles just fine on Tops10. Both use a SOSJ/AOAJ in a register to a register as a Null process.

rcornwell commented 5 years ago

I did some testing, I disabled TK, MTY, DPY, TEN11 and AUXCPU, ITS Idles at about 5% CPU. Enabling any of these devices causes the CPU to stay at 100%.

larsbrinkhoff commented 5 years ago

Thanks. I added in UNIT_IDLE to TK and MTY, and they now behave better. Tested with ITS 724. It has the same 17/ AOJA 17 idle loop.

rcornwell commented 5 years ago

What about TEN11 and AUXCPU. There is not much we can do about DPY since that just has a bunch of work to do.

rcornwell commented 5 years ago

I can add IDLE flag to those devices and push them out later today if you want.

larsbrinkhoff commented 5 years ago

TEN11 and AUXCPY already have UNIT_IDLE, but it doesn't help.

larsbrinkhoff commented 5 years ago

You can merge this or use the commit for reference.

rcornwell commented 5 years ago

I can wait until you fix the TEN11 and AUXCPU. I think doing the merge will close the issue.

larsbrinkhoff commented 5 years ago

Ok.

larsbrinkhoff commented 5 years ago

I think I fixed it. Tested with ITS 724.

I added UNIT_IDLE where missing, and used sim_clock_coscheule instead of sim_activate. (I don't know what the difference between the two are, just that the former is magically better for idling.)

rcornwell commented 5 years ago

sim_clock_coschedule does some magic to allow the device to go to sleep until some events occur. I did not want to touch the files to change over to that without you trying first. Just add everything to the commit and I will pull it in when I get home.

larsbrinkhoff commented 5 years ago

Thanks.

I have added everything.

I tried to change DPY do coschedule, but it seems it broke the display.

rcornwell commented 5 years ago

I don't think there is much we can do with DPY. If people want to allow ITS to IDLE, they should not enable that device.

larsbrinkhoff commented 5 years ago

With coschedule, DPY idles well. But the display doesn't work right, so it's not a solution.

I think we're done here for now. All other ITS devices can do idling now.