Applies To:
  • CitectSCADA 2.10

Summary:
A new option which can be set only in the CITECT.INI file called [MEMORY]NoLock has been included with versions 2.10 and later. This option defaults to 0 and when enabled will stop CITECT from locking any of its memory. Using this option will give you more memory below the 1 Meg limit and will help stop you getting the error message 'not enough memory to start application'. When you enable this option you must disable Windows Virtual memory. If you don't disable Virtual memory then you computer will crash if Windows starts to use Virtual memory. You should only use this option if really necessary. 

Solution:
Citect must lock sections of its memory as this memory is access under interrupt. Locking memory prevents Windows from paged this memory out to disk when Virtual memory is in use. If this memory was paged out to disk and an interrupt routine needed to access this memory a paging error would occur or your computer would crash or produce a GPF. So Citect must lock all memory which is access via interrupt routines.

Whenever Citect tells Windows to lock the memory, Windows will move the memory down below 1 Mb and lock it. This is a design flaw in Windows as there is no need to do this and this can cause Windows to run out of memory below 1 Mb when there is plenty of memory available. When Windows runs out of memory below 1 Mb, you will not longer be able to start any new applications and you will get the error message 'not enough memory to start application'. You can verify that you have run out of memory below 1 Mb by checking the available Memory and System Resource in the Program Manager, if they are both OK then you have most likely run out of DOS memory. You may also verify by closing 1 running application, you then should be able to start only 1 new application in its place.

When you set the new option [Memory]NoLock=1, Citect will not lock any of its memory which is accessed under interrupt. As Windows will not move this memory down below 1 Mb then there should be plenty of low memory available and you should be able to run many more applications. However as this memory is being access under interrupt you must disable virtual memory otherwise your computer will crash if any of this memory is paged out to disk.

See also Q1144.

 

Keywords:
 

Attachments