Hi again, here's my latest issue in TestStand. I am running the parallel model with 18 sockets - if the sockets trigger at the same time and execute their respective main sequence, I am seeing significantly slower execution time on some sockets than others.
Project recap: TestStand 2020 (64-bit), using LabVIEW 2020 (64-bit runtime). LabVIEW code is compiled as PPLs. Main sequence calls some subsequences in a separate, common sequence file.
Note I have posted previous issues where TestStand was locking up - we seem to have worked around that issue and it is not the issue here with the slow sockets.
I loaded up my test reports with debug to report the times of steps within the main sequence. Below shows an example of two sockets (out of the 18) executing at the same time, one fast one slow. Note Step1 and Step2 in the main sequence are subsequence calls.
- Cleanup section end: 14:02:23.897
- Step1 Precondition: 14:02:24.550
- Step1 Setup section start: 14:02:24.704
- Step1 Cleanup section end: 14:02:24.706
- Step1 Post Expression: 14:02:24.706
- Step2 Precondition: 14:02:24.881
- Step2 Setup section start: 14:02:24.979
- Cleanup section end: 14:02:24.706
- Step1 Precondition: 14:02:26.540
- Step1 Setup section start: 14:02:27.196
- Step1 Cleanup section end: 14:02:27.275
- Step1 Post Expression: 14:02:27.275
- Step2 Precondition: 14:02:28.167
- Step2 Setup section start: 14:02:29.124
What this shows is that socket 16 is taking a longer time to perform every stage of its execution thank socket 12, even just transitioning from precondition to the setup section of a step. My general observation is that the more sockets that are running, the slower some are getting.
I have also reviewed NI's Improving TestStand System Performance document, nothing in there helps.
Does anyone have any idea why this would happen and how to resolve it?
Potential slowdown due to CPU thread limit and actual threads requested.
Are you confident that the LabVIEW code is optimized for 18-parallel executions with a 16-thread or lesser CPU?
Thanks for the reply. No, not confident as I'm only just learning about CPU threads now.
PC we are running on is Intel i5-6300U dual core, with 16GB RAM.
What am I looking for to optimize executions?
I don't know if you just need more cores or if there is a software issue to be addressed, but the Execution Profiler can help you collect step and modules timings on a per-socket/thread basis and it might make it easier to spot what is taking longer for some sockets and whether sockets are blocking on any TestStand synchronization operations.
You can launch it from Tools>>Profile Execution.