Closed larsbrinkhoff closed 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.
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%.
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.
What about TEN11 and AUXCPU. There is not much we can do about DPY since that just has a bunch of work to do.
I can add IDLE flag to those devices and push them out later today if you want.
TEN11 and AUXCPY already have UNIT_IDLE, but it doesn't help.
You can merge this or use the commit for reference.
I can wait until you fix the TEN11 and AUXCPU. I think doing the merge will close the issue.
Ok.
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.)
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.
Thanks.
I have added everything.
I tried to change DPY do coschedule, but it seems it broke the display.
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.
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.
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?