Real-Time Measurement and Control

cancel
Showing results for 
Search instead for 
Did you mean: 

Memory usage of cRIO software

Hi there,
 
I am currently working on a cRIO upgrade project.  In 2005/2006, I delivered a system to a client using cRIO.  We used the following things:
 
* LabVIEW 7.1 RT/FPGA
* cRIO-9002 (32MB DRAM)
* Backplane: 8 channel - 1MB FPGA
* 6 modules - AI, TC, DI, DO, CAN, DI (QUAD)
* NI Software installed:
Datasocket for LV RT 4.2
LabVIEW RT 7.1
NI-IrDA RT 1.0.1
NI-RIO RT 1.3.0
NI-Serial RT 2.5.5
NI-VISA 3.3
NI-VISA Server 3.3
NI-Watchdog 2.1.3
My application has been running on there now for a good 2-3 years.  During testing, I found that there was 4-5MB RAM still available (using the RT System Manager tool), throughout operation.
 
I am now in the process of upgrading the system.  I thought it would be great to update everything to the newest version of LabVIEW.  This has meant quite a bit of unexpected work in relearning the environment, but I had to learn it some time, so that's OK.  My main concern is that now my application does not have enough memory to run.  Since the initial project, I have added an extra module, upgraded the FPGA to 3MB, and if anything, optimised the software.  I have stripped most of the NI software off the RT controller, which has given me some extra memory, but not enough at this stage. The system is now:
 
* LabVIEW 8.5 RT/FPGA
* cRIO-9002 (32MB DRAM)
* Backplane: 8 channel - 3MB FPGA
7 modules - AI, TC, 2 * DI, DO, CAN, DI (QUAD)
* NI Software installed:
LabVIEW RT 8.5
NI-RIO RT 2.3.1
NI-VISA 4.2
NI-VISA Server 4.2
Is there any documentation available that provides detailed information about memory use on the RT controllers?  Ie. How much memory does LabVIEW RT 8.5 use up compared to LabVIEW RT 7.1?  How much memory does an FPGA I/O point use up - these nodes seem to be more memory expensive.  And what about the Shared Variable Engine?  I have considered enhancing my code to remove all global/local variables and use the SVE instead, however what is it's memory overhead, and will it improve it any?
 
This is my last ditch attempt at fixing it before I bite the bullet and upgrade the RT controller.
 
Thanks!
Christopher Farmer

Certified LabVIEW Architect and LabVIEW Champion
DQMH Trusted Advisor
https://wiredinsoftware.com.au

0 Kudos
Message 1 of 4
(4,971 Views)
 

Hi Chris,

I'm afraid that we don't have detailed documentation on the memory allocation and useage of the RT controller.  The memory usage of a particular controller will depend on so many different factors that its difficult to define specific usage numbers.  Some of those factors include the software versions, the drivers required for that software and the number of applications that need to be running for a particular piece of software.  Regarding the memory requirement increase from 7.1 to 8.5, again I can't give you a specific number but you can check this knowledge base for some information on slimming down your software installation.  You can also use the system manager on your cRIO to monitor the memory usage on your controller.  I am working on trying to get you a benchmark difference between the gold software package and the minimum package for 8.5, the gold package takes about 40MB.  Memory usage on the FPGA will vary, for I/O points it depends on a number of factors including the data type.  I will see if I can find some more specific numbers but again, application specific memory allocation is not something we generally specify.  To answer your question about the SVE, we require a minimum of 32MB to recommend 64MB to host.  The client will take up less space but it will still be memory intensive.  There is an excellent white paper called "Using the LabVIEW Shared Variable" that gives a geat deal of information on variable usage.

At the end of the day, your RT controller is a minimum spec. controller and your using the latest software.  It is a good idea to consider upgrading the controller, this will give future scalability and make getting your application up and running much easier.  Also, you might consider the Real-Time Execution Trace Toolkit to help with your RT code optimization.  I'll try to post some more info ASAP as I can collect it for you Chris.  Thanks and have a great day! 

Stephen S.
National Instruments
1 Test is worth 1000 expert opinions
0 Kudos
Message 2 of 4
(4,949 Views)

Hi Stephen,

Thanks for your prompt reply.  I have used the System Manager quite a bit - a very useful tool.  This tool was basically telling me the story of the memory usage.

I have ordered a cRIO-9012 now...I will save myself more money in time not spent trying to over-optimise my code. 

After upgrading to the bigger FPGA (3MB), I have not had any issues with my FPGA application.

The main reason that I posted, was because you think you have 32MB RAM available to you, which in reality you don't.  So knowing what you have, and what everything else is using up can be handy.  It's only an issue for RT targets, where memory/disk space are a premium.  On a Windows PC, you wouldn't worry.

Thanks!

Christopher Farmer

Certified LabVIEW Architect and LabVIEW Champion
DQMH Trusted Advisor
https://wiredinsoftware.com.au

0 Kudos
Message 3 of 4
(4,943 Views)
... or on a Desktop PC or PXI controller running LabVIEW Real-Time Smiley Wink

| Michael K | Project Manager | LabVIEW R&D | National Instruments |

0 Kudos
Message 4 of 4
(4,940 Views)