hgm wrote:Processes running on the same HT of a physical core will never block each other, they would just slow each other down (by 30% or so). As the task of passing on the message is hardly an effort, doing it at 0.7x nominal speed will only cause micro-second delay. The only thing what hurts is if the OS decides to not run the GUI (or timeseal) at all for the 10msec (say) that it takes the processes currently occupying the hyper threads to finish their time slice. If the latter have lower priority, they will be kicked off the virtual core instantly when a process of higher priority wakes up from its blocking I/O call.
Yes, but it's not just the communication work which is affected and the slowdown factor is closer to 50%. The maintenance process is going to soak CPU time from the chess program search, too.
One approach is to disable hyperthreading in the machine before the O/S is booted. But this doesn't work all machines and in fact causes Linux to crash on my old Pentium 4 box.
Internally, Symbolic measures all time values, both epochs and intervals, with microsecond resolution. Because the program can efficiently and accurately check the elapsed time at each search node, it can "stop on a dime" and so handles the worst case time delay with reporting the move.
Perhaps the centisecond resolution of Xboard (and whatever UCI uses) which was sufficient for the Old Days needs to be adjusted for the New Days. I would suggest millisecond resolution or even microsecond resolution; even better might be supplying a floating point value seconds count with at least six digits of significance.