For quite some time, we have noticed that our software gets flaky when
running on a Hyperthreaded machine. Not having the time to
troubleshoot until recently, we've always just turned off
Hyperthreading and gotten on with life. However this is becoming
more of a nuisance.
The software continuously outputs and reads in data at 10KHz using the
PCI-6036E. The behavior manifests itself when using both
Traditonal NI-DAQ as well as NI-DAQmx (it was one of the issues I had
hoped would go away after switching to mx). I finally got an HT
capable machine to install my tools on (Visual C++ on a P4 2.8GHz) and
I got a reliable way to reproduce the issue: wiggle the mouse! If
I don't touch the mouse when starting the process, it will run
indefinitely. As soon as I give the mouse a good wiggle,
BOOM! -200019. This issue completely disappears if I
disable Hyperthreading.
I figured there was something I was doing wrong in my code (which is
fairly heavily threaded, and thus prone to errors on a "multiprocessor
like" system). Well, imagine my surprise when today I fired up
the test panel in NI-MAX, started an output task at 10KHz (I don't even
need to start an input acquisition), wiggle the mouse and BOOM!
-200019. Well, this made me feel better as a programmer but not
as a maker of reliable software. The problem goes away if I
output at 5KHz, but that is way too low for our app. We could get
away with 8KHz, but it still happens then (though it's harder to
reproduce). I have tried manually manipulating the buffers in
endless combinations, but it never does any good.
Is there any way I can get this to run on a HyperThreaded system?
I really hate having to tell our customers to turn off the HT in their
system, and I don't think I should have to.
Thanks for any guidance,
John
P.S. This behavior is identical on HP computers, Dells and homebrew
systems. So it is not PC specific, the common denominator is
always HT.