Enclosed is a patch that fixes swapping with ULE. ULE has never properly
set p_swtime and td_slptime which are used by the swapout/swapin code to
select the appropriate thread to swap.
I have not looked at in the depth required, but 2 points that I was unable
to check to my satisfaction before I got called away for work....
1/ the source of the ticks is a monotonically increasing count that never
goes backwards or changes?
ticks is incremented each time hardclock() is called. That's it.
2/ nothing that used to be accounted in seconds becomes accounted for in
I scale back to seconds where it is required. Really I think ticks would
be the better metric in vm_glue.c but didn't want to make any drastic
ticks is 2^31 on x86 and at HZ=1000 is wraps within a reasonable
short uptime. You have to make sure that your code handles that
correctly or you run into lots of strange effects which are almost
impossible to reproduce. In TCP we've got bitten by that.
Thanks Andre, this is a good point. For the td_slptime I don't think it's
of practical concern. However, for swtime I think I will convert it then
to seconds from boot.