Testing Question, interface lags

Discussion of computer chess matches and engine tournaments.

Moderators: hgm, Rebel, chrisw

dchoman
Posts: 171
Joined: Wed Dec 28, 2011 8:44 pm
Location: United States

Testing Question, interface lags

Post by dchoman »

Hi,

I have a question for regular testers under windows. I have recently tried more testing under windows, and I've found that EXchess gets flagged more often than I imaged in fast games (blitz).

My normal development environment for EXchess is linux, and under linux, I never have a time flag issue... EXchess plays thousands of fast games at 0:06 + 0.1 per move (or sometimes even faster) without any problems, but under windows I sometimes even have problems with time controls in the minute range.

I recently added some timing code to EXchess to measure the lag (how much time EXchess thinks it uses vs. how much time is reported back by the GUI). Typical difference under linux is somewhere between 0 and 5 centi-seconds per move, with 0 being the most common. Under Windows, the difference is larger, up to 10-20 centi-seconds per move on average in some games. Because EXchess is very aggressive in its time usage, this lag causes EXchess to flag more often than I like in blitz style games.

So a couple questions to testers:

(1) Is there anything special you do in your configuration in Windows to help minimize lag or account for it? I am not very familiar with modern windows, so it is possible I have something running I should not.

(2) ChessGUI has the possibility of an overstep time to allow engines. Do you typically use this? If so, what is a typical setting? I have made a lot of progress in measuring and trying to account for the lag during play, but EXchess is still sometimes flagging on the last move before time control. A small overstep margin would prevent this, but I am uncertain if people actually use that.

Thanks!

- Dan
User avatar
Graham Banks
Posts: 41455
Joined: Sun Feb 26, 2006 10:52 am
Location: Auckland, NZ

Re: Testing Question, interface lags

Post by Graham Banks »

dchoman wrote:ChessGUI has the possibility of an overstep time to allow engines. Do you typically use this? If so, what is a typical setting? I have made a lot of progress in measuring and trying to account for the lag during play, but EXchess is still sometimes flagging on the last move before time control. A small overstep margin would prevent this, but I am uncertain if people actually use that.
I use 5000 milliseconds and I'm pretty sure that Martin does for TCEC as well.
gbanksnz at gmail.com
Modern Times
Posts: 3550
Joined: Thu Jun 07, 2012 11:02 pm

Re: Testing Question, interface lags

Post by Modern Times »

Some GUIs seem to handle this situation better than others. What GUI are you using in Linux ? Is it command line like cutechess ?
User avatar
lucasart
Posts: 3232
Joined: Mon May 31, 2010 1:29 pm
Full name: lucasart

Re: Testing Question, interface lags

Post by lucasart »

dchoman wrote:Hi,

I have a question for regular testers under windows. I have recently tried more testing under windows, and I've found that EXchess gets flagged more often than I imaged in fast games (blitz).

My normal development environment for EXchess is linux, and under linux, I never have a time flag issue... EXchess plays thousands of fast games at 0:06 + 0.1 per move (or sometimes even faster) without any problems, but under windows I sometimes even have problems with time controls in the minute range.

I recently added some timing code to EXchess to measure the lag (how much time EXchess thinks it uses vs. how much time is reported back by the GUI). Typical difference under linux is somewhere between 0 and 5 centi-seconds per move, with 0 being the most common. Under Windows, the difference is larger, up to 10-20 centi-seconds per move on average in some games. Because EXchess is very aggressive in its time usage, this lag causes EXchess to flag more often than I like in blitz style games.

So a couple questions to testers:

(1) Is there anything special you do in your configuration in Windows to help minimize lag or account for it? I am not very familiar with modern windows, so it is possible I have something running I should not.

(2) ChessGUI has the possibility of an overstep time to allow engines. Do you typically use this? If so, what is a typical setting? I have made a lot of progress in measuring and trying to account for the lag during play, but EXchess is still sometimes flagging on the last move before time control. A small overstep margin would prevent this, but I am uncertain if people actually use that.

Thanks!

- Dan
Depends on the UI you are using. Clearly, when you are doing parrallel testing at hyper fast tc like 6"+0.1", you should forget the GUI. Use cutechess-cli of LittleBlitzer instead.

The problem with Windows, is that time measurement typically uses the Windows API GetTickCount(). IIRC, this API is utter crap, and has a time resolution os 16 msec. This may sound very acceptable to the usual tester (long TC), but engine developpers need to use ultra fast tc, at which 16msec lag is simply unacceptable.

There must be a way to code around GetTickCount(). Perhaps recent versions of Windows have a better API. It's all about the UI: does your UI use GetTickCount() ?

Also, Windows is notoriously slower, and not as reliable as Linux, under heavy system load, for a million of reasons. Why do you want to use Windows for testing ? You can always go for a dual boot solution and have both Linux and Windows, if you need Windows for certain things (for which Wine is not good enough).
Theory and practice sometimes clash. And when that happens, theory loses. Every single time.
dchoman
Posts: 171
Joined: Wed Dec 28, 2011 8:44 pm
Location: United States

Re: Testing Question, interface lags

Post by dchoman »

Of course, linux is my development environment for the reasons you mention. 99% of my games are played there. But it can be useful to test under a variety of conditions and environment.

- Dan
dchoman
Posts: 171
Joined: Wed Dec 28, 2011 8:44 pm
Location: United States

Re: Testing Question, interface lags

Post by dchoman »

Modern Times wrote:Some GUIs seem to handle this situation better than others. What GUI are you using in Linux ? Is it command line like cutechess ?
Mostly cutechess on the command line, but also xboard. The tiny lags I mentioned in linux were measured under xboard, and I assume cutechess would be even less.

- Dan
kranium
Posts: 2129
Joined: Thu May 29, 2008 10:43 am

Re: Testing Question, interface lags

Post by kranium »

lucasart wrote:
The problem with Windows, is that time measurement typically uses the Windows API GetTickCount(). IIRC, this API is utter crap, and has a time resolution os 16 msec. This may sound very acceptable to the usual tester (long TC), but engine developpers need to use ultra fast tc, at which 16msec lag is simply unacceptable.

There must be a way to code around GetTickCount(). Perhaps recent versions of Windows have a better API. It's all about the UI: does your UI use GetTickCount() ?

Also, Windows is notoriously slower, and not as reliable as Linux, under heavy system load, for a million of reasons. Why do you want to use Windows for testing ? You can always go for a dual boot solution and have both Linux and Windows, if you need Windows for certain things (for which Wine is not good enough).
Hi Lucas-

In Robbolito 0.085g3 we used 'winmm.lib', this was a big improvement

here's info i posted about it on open-chess.org a few years ago:

http://www.open-chess.org/viewtopic.php ... 915#p14915

Norm
dchoman
Posts: 171
Joined: Wed Dec 28, 2011 8:44 pm
Location: United States

Re: Testing Question, interface lags

Post by dchoman »

Graham Banks wrote:
dchoman wrote:ChessGUI has the possibility of an overstep time to allow engines. Do you typically use this? If so, what is a typical setting? I have made a lot of progress in measuring and trying to account for the lag during play, but EXchess is still sometimes flagging on the last move before time control. A small overstep margin would prevent this, but I am uncertain if people actually use that.
I use 5000 milliseconds and I'm pretty sure that Martin does for TCEC as well.
Thanks, Graham! That should be plenty, and if that is typically what people use, then I don't have a problem at all. I still want to account for the lag during play for blitz games (< a few minutes per game) to be sure available time is being allocated reasonably, and my development version of EXchess now does that. But I was struggling with the final few moves before TC in fixed TC games (XX moves in YY minutes), and a reasonable overstep in the GUI solves that for me.