LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

Unexplainable MEMORY FULL error in 8.2

Hi Coastal,
 
The results you have shared with us are pretty drastic. I'd like to narrow down this discrepancy, but I have a few questions for you:
  1. Does the memory usage vary significantly between the 8.2 version and the 7.0 version? (you can use task manager)
  2. Can you use Profile Performance and Memory Window to narrow down which specific VI(s) (if any) are taking longer to execute and/or using more memory?
  3. Have you had the opportunity to run this on a *true* Windows box (not a Virtual PC)? I'm not sure how this impacts performance, as we have not tested it...
  4. You mentioned that you mass-compiled the VI -- did you cover all the subVIs? I realize this may seem obvious Smiley Happy, but I have to check -- when you open up a subVI in 8.2, it doesn't have the asterisk, does it?

As a last resort, there are two LabVIEW.ini tokens you can use to turn off constant folding. I do not recommend this procedure for every application, as there could be a significant performance hit. Also, if you upgrade LabVIEW in the future, I would try your application without using these:

compileLoopConstantsEnabled=False
compileConstantFoldStructs=0

I hope this helps some - let me know if I can help more!

Charlie S.

Visit ni.com/gettingstarted for step-by-step help in setting up your system
0 Kudos
Message 21 of 25
(1,206 Views)
Allright, I just spent the last hour chasing this. Here's a report. My program "Viewer" opens a single datafile (hybrid: part datalog, bart bytestream) produced by another portion (not under test here), and produces a "cache" (the user chooses to put the cache into memory for speed, or on disk for efficiency), calculates other channels (based on flow rates, and emissions readings), and stores them as well.

Then it plots two channels.

Other parts of the program calculate statistics, print graphs, make spreadsheets, make reports, extract configuration stuff, other miscellaneous stuff, but that's not tested here.

Remember that these tests are AFTER I modified the one big problem VI to put the terminal with the large default value INDISE the case that used it, and added locals to all the other cases that used it.

Your questions:

Does the memory usage vary significantly between the 8.2 version and the 7.0 version? (you can use task manager)

The following is the TOTAL COMMIT CHARGE number (from Task Manager) after each indicated step:

After:LV 7.0LV 8.2
Rebooting147060140960
Loading LabVIEW162540172580
Loading "Viewer"183840202032
Running (short file)186020207904
Loading large file454916496448
Quitting Viewer368848400044
Closing Viewer177052186360
Quitting LabVIEW143968132568
---- I don't see anything terribly unexpected there, although 8.2 is more hungry across the board.

Can you use Profile Performance and Memory Window to narrow down which specific VI(s) (if any) are taking longer to execute and/or using more memory?

I did that and saved two reports, but I can't see anything outstanding. Some are better in 8.2, some are worse.

Have you had the opportunity to run this on a *true* Windows box (not a Virtual PC)? I'm not sure how this impacts performance, as we have not tested it...

I have run 7.0 on a true Windows box. Performance is considerably better. The virtual PC gets 16575 / 5908 mSec, the real box gets 2500/ 4000 mSec. But that is not the point.

I have not put 8.2 on my real box for fear of contamination issues.

You mentioned that you mass-compiled the VI -- did you cover all the subVIs? I realize this may seem obvious , but I have to check -- when you open up a subVI in 8.2, it doesn't have the asterisk, does it?

No, it does not. I did a SAVE ALL after loading the main the first time. It is definitely saved as 8.2 compiled code.

As a last resort, there are two LabVIEW.ini tokens you can use to turn off constant folding. I do not recommend this procedure for every application, as there could be a significant performance hit. Also, if you upgrade LabVIEW in the future, I would try your application without using these:

Understood. But the "performance hit" you speak of, would be relative to LV 8.2 AS OPTIMIZED by these options, right? In other words, it's not likely to be WORSE than 7.0, is it?

I just tried those two settings. It did NOT affect the overall timing, but it was not recompiled, either.

When I changed my problem code back to the old way (terminal OUTSIDE of the CASE where it was used), I DID NOT get the MEMORY FULL error. The timing was worse, but perhaps having windows open was the cause of that. Perhspa recompiling the whole thing will yield different results.

I will have to try that tomorrow, as I am exhausted right now.

Also, in your e-mail message, you wrote:

omething that I left out was your mention of the FFT example. Does this VI resemble your problematic application in any way?

No, it doesn't, and that was the point. I have a timing template VI that I use, and I just stuck an 8k FFT in there to test a compute-intensive procedure to see if it showed the same symptoms. It would have been REALLY bad news if it had, but it didn't.

Steve Bird
Culverson Software - Elegant software that is a pleasure to use.
Culverson.com


LinkedIn

Blog for (mostly LabVIEW) programmers: Tips And Tricks

0 Kudos
Message 22 of 25
(1,183 Views)
So, here it is next morning.

I set the two INI items you suggested, and returned my code to the "bad" state (where the terminal is OUTSIDE of the case) that caused the MEMORY FULL in the first place.

I mass-compiled the VIEWER code (and all the 420 or so subVIs to take advantage of the compiler settings.

Good news: it did not complain about the MEMORY FULL problem.

Good news: it improved the speed a bit.

Bad news: It's still way slower than 7.0.

On my long file, it now takes 25000 mSec, compared to 29000 before (see above), and 16500 for LV 7.0 (see above).

So, turning OFF the optimizer actually IMPROVES performance.

Steve Bird
Culverson Software - Elegant software that is a pleasure to use.
Culverson.com


LinkedIn

Blog for (mostly LabVIEW) programmers: Tips And Tricks

0 Kudos
Message 23 of 25
(1,168 Views)
Hi Coastal,
 
I have a virtual PC set up on my machine now with 512MB of RAM. I also have a "real" machine with 7.0 and 8.2 installed. I would really like to dig into this further, but I need some code to benchmark. I understand that you cannot post your entire application -- do you have a piece of it that I could use for testing purposes on my end? Or perhaps something representative?
 
We really appreciate your efforts and your feedback - keep it coming!
Charlie S.

Visit ni.com/gettingstarted for step-by-step help in setting up your system
0 Kudos
Message 24 of 25
(1,157 Views)
This was reported to R&D (# 43G91GF2) for further investigation.
This notification posted for tracking purposes.
Chris C
0 Kudos
Message 25 of 25
(1,103 Views)