-
Notifications
You must be signed in to change notification settings - Fork 17
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Driver gets stuck when it receives bad frames #18
Comments
Is the frameCallback function actually being called for the bad frames? If so we could change the behavior to at least stop acquisition when the correct number of frames, good or bad, have been received. |
Yes, it is for most of the time, although I found some instances where it is not even being called. The rate of bad frames correlate with the CPU usage by another IOC, so I guess the prosilica thread might be getting starved of CPU time and can't keep up with the data rate? The machine has 12 cores, one IOC is consuming ~350% and the prosilica IOC is consuming ~100%, so I wouldn't expect it to be an issue. I will try pinning the IOC to a set of CPUs and see if that helps. I tried setting |
If one thread in the prosillica IOC is using all or most of that 100%, that might be the problem. Having idle cores won't help in that case, if one thread is maxing out a core. |
|
Have you applied the system changes discussed in this tech-talk thread? http://www.aps.anl.gov/epics/tech-talk/2013/msg00787.php It involves increasing net.core.rmem_default and net.core.rmem_max. |
That did the trick! No bad frames anymore. Thanks! Although if the driver does perchance receive one when in Single or Multiple mode it will still get stuck :) |
Note that the link to the Point Grey Knowledge Base article in my old tech-talk thread no longer works. However, this link does work: |
We just re-discovered this issue with cameras at NSLS-II. It is not clear how to fix it, as Bruno said above. Questions:
|
When in Single or Multiple mode, the driver sets
framesRemaining
to1
ornumImages
, respectively. However, when it receives a bad frame, it won't decrementframesRemaining
nor reissue new triggers, which will leave the driver stuck in theAcquire
state.Although ideally the driver shouldn't be receiving bad frames, I think it shouldn't get stuck when it does. However, I don't know how to properly address that. Should it fail and return an error? Should it reissue the acquisition for the frames that came in bad? What about hardware triggers?
The text was updated successfully, but these errors were encountered: