[Info-vax] problems allocating "large" arrays in OpenVMS-Fortran

Richard B. Gilbert rgilbert88 at comcast.net
Mon Oct 28 22:05:29 EDT 2013


On 10/28/2013 6:36 AM, Joukj wrote:
> Hi all,
>
> I'm trying to use large arrays in a Fortran program, but it fails
> giving: %FOR-F-INSVIRMEM, insufficient virtual memory!
>
> PLAESE, can someone point me in the right direction to tune my system in
> order to avoid the above error.
>
> I'm using : HP Fortran V8.2-104954-50N8G on OpenVMS IA64 V8.4
>
> The code I tried:
>
> program test
> !
>    integer ( kind = 1 ) , allocatable :: size_array( : , : , : )
>    integer ( kind = 4 ) , parameter :: dimens = 1000
>    integer ( kind = 4 ) :: gbs
> !
>    write( * , * ) 'number of GB :'
>    read ( * , * ) gbs
>    allocate( size_array( gbs * dimens , dimens , dimens ) )
>    size_array=4
>    read( *, *)
> !
> end
>
>
> Compiling running it like:
> valeta-jj) f90 test
> valeta-jj) link test
> valeta-jj) run test
> number of GB :
> 1
>
> valeta-jj) run test
> number of GB :
> 2
> %FOR-F-INSVIRMEM, insufficient virtual memory!/  unit !SL  file !AS!/
> user PC !
> XL
> %TRACE-F-TRACEBACK, symbolic stack dump follows
> image     module    routine               line      rel PC           abs PC
> DEC$FORRTL                                   0 00000000000CFA40
> FFFFFFFF84DDFA40
> test  TEST  TEST                             9 00000000000002C2
> 00000000000102C2
>                                               0 FFFFFFFF80A190D2
> FFFFFFFF80A190D2
> DCL                                          0 000000000007D072
> 000000007AE45072
> %TRACE-I-END, end of TRACE stack dump
>
>
>
> So if gbs=1 everything is OK, but with gbs=2 it already crashes.
>
> The machine has 64GB RAM and enough paging space which is hardly ever used:
> valeta-jj) sh mem
>                System Memory Resources on 28-OCT-2013 10:25:14.11
>
> Physical Memory Usage (pages):     Total        Free      In Use
> Modified
>    Main Memory (63.99GB)          8388560     8195291      192775   494
>
> Extended File Cache  (Time of last reset: 28-OCT-2013 08:30:33.56)
>   Allocated (MBytes)            144.65    Maximum size (MBytes) 32767.81
>   Free (MBytes)                   0.00    Minimum size (MBytes)     3.12
>   In use (MBytes)               144.64    Percentage Read I/Os       96%
>   Read hit rate                     81%   Write hit rate        0%
>   Read I/O count                 55125    Write I/O count     1942
>   Read hit count                 44669    Write hit count        0
>   Reads bypassing cache             51    Writes bypassing cache        1
>   Files cached open                682    Files cached closed      611
>   Vols in Full XFC mode              0    Vols in VIOC Compatible mode
>        27
>   Vols in No Caching mode            0    Vols in Perm. No Caching mode
>         0
>
> Granularity Hint Regions (pages):   Total        Free      In Use Released
>    Execlet code region                4096         597        3499      0
>    Execlet data region                2048        1143         905      0
>    S0S1 Executive data region         6845           0        6845      0
>    S0S1 Resident image code region    8192        5055        3137      0
>    S0S1 Resident image data region     512         347         165      0
>
> Slot Usage (slots):                Total        Free    Resident
> Swapped
>    Process Entry Slots                826         783          43     0
>    Balance Set Slots                  824         783          41     0
>
> Dynamic Memory Usage:              Total        Free      In Use
> Largest
>    Nonpaged Dynamic Memory (MB)     53.17       42.88       10.29 42.60
>    Bus Addressable Memory  (KB)    128.00      110.87       17.12 104.00
>    Paged Dynamic Memory    (MB)     11.68        5.60        6.07  5.60
>    Lock Manager Dyn Memory (MB)      5.88        2.43        3.44
>
> Buffer Object Usage (pages):                  In Use        Peak
>    32-bit System Space Windows (S0/S1)              1           1
>    64-bit System Space Windows (S2)                 0           0
>    Physical pages locked by buffer objects          1           1
>
> Memory Reservations (pages):       Group    Reserved      In Use
> Type
>    Total (0 bytes reserved)                         0           0
>
> Swap File Usage (8KB pages):                   Index        Free
> Size
>    DISK$VALETA_29757:[SYSEXE]SWAPFILE.SYS;2
>                                                     1        6600  6600
>
> Paging File Usage (8KB pages):                 Index        Free
> Size
>    DISK$VALETA108:[sysexe]PAGEFILE.SYS;3
>                                                   253     4999992 4999992
>    DISK$VALETA_29757:[SYSEXE]PAGEFILE.SYS;1
>                                                   254     3143423 3143424
>
>    Total size of all paging files: 8143416
>    Total committed paging file usage: 17873
>
> Of the physical pages in use, 157170 pages are permanently allocated to
> OpenVMS.
>
>
> I already tried to increase my process quota:
> UAF> sh joukj
>
> Username: JOUKJ                            Owner:  JOUK JANSEN
> Account:  JOUKJ                            UIC:    [300,300] ([JOUKJ])
> CLI:      DCL                              Tables:
> BOLERO$DKA0:[JOUKJ.COM]JJJ.EX
> E
> Default:  SYS$SYSDEVICE:[JOUKJ.COM]
> LGICMD:
> Flags:
> Primary days:   Mon Tue Wed Thu Fri
> Secondary days:                     Sat Sun
> No access restrictions
> Expiration:            (none)    Pwdminimum:  6   Login Fails:     0
> Pwdlifetime:           (none)    Pwdchange:  19-SEP-2011 16:47
> Last Login: 28-OCT-2013 10:08 (interactive), 28-OCT-2013 08:52
> (non-interactive)
> Maxjobs:         0  Fillm:      5000  Bytlm:      2100000
> Maxacctjobs:     0  Shrfillm:      0  Pbytlm:           0
> Maxdetach:       0  BIOlm:     10000  JTquota:      60000
> Prclm:          40  DIOlm:      1024  WSdef:        48000
> Prio:            4  ASTlm:      1200  WSquo:       200000
> Queprio:         0  TQElm:       400  WSextent:   1000000
> CPU:        (none)  Enqlm:      4000  Pgflquo:   72000000
>
>
> I tried to play with some sysgen-parameters but I did not see any change
> SYSGEN>  SHOW WS*
> Parameter Name            Current    Default     Min.       Max.   Unit
>   Dynamic
> --------------            -------    -------   -------    -------  ----
>   -------
> WSMAX                     4669536     131072     16384  134217728 Pagelets
>   internal value            291846       8192      1024    8388608 Pages
> WSINC                      187780       2400         0         -1
> Pagelets   D
>   internal value             11737        150         0         -1 Pages
>       D
> WSDEC                       93890       4000         0         -1
> Pagelets   D
>   internal value              5869        250         0         -1 Pages
>       D
> SYSGEN>  SHOW PQL_M*
> Parameter Name            Current    Default     Min.       Max.   Unit
>   Dynamic
> --------------            -------    -------   -------    -------  ----
>   -------
> PQL_MASTLM                    100          4         4         -1 Ast
>       D
> PQL_MBIOLM                    100          4         4         -1 I/O
>       D
> PQL_MBYTLM                 128000     128000    128000         -1 Bytes
>       D
> PQL_MCPULM                      0          0         0         -1 10Ms
>       D
> PQL_MDIOLM                    100          4         4         -1 I/O
>       D
> PQL_MFILLM                    100          2         2         -1 Files
>       D
> PQL_MPGFLQUOTA           72000000     512000    512000         -1
> Pagelets   D
>   internal value           4500000      32000     32000         -1 Pages
>       D
> PQL_MPRCLM                     10          0         0         -1
> Processes  D
> PQL_MTQELM                      0          0         0         -1 Timers
>      D
> PQL_MWSDEFAULT             291937      16384     16384         -1 Pagelets
>   internal value             18247       1024      1024         -1 Pages
> PQL_MWSQUOTA               583874      32768     32768         -1
> Pagelets   D
>   internal value             36493       2048      2048         -1 Pages
>       D
> PQL_MWSEXTENT             4669536      65536     65536         -1
> Pagelets   D
>   internal value            291846       4096      4096         -1 Pages
>       D
> PQL_MENQLM                    300         64        64         -1 Locks
>       D
> PQL_MJTQUOTA                    0          0         0         -1 Bytes
>       D
>
>
>
> I'm lost, so any help is welcome
>
>                    Regards
>                        Jouk

"Virtual memory" is an  illusion!  You take some physical memory "X" 
blocks and add two, to four times that amount of disk blocks.  Your 
memory appears to be "real".  With the proper amount of "Real" memory
you can use a modest amount of disk space that **appears** to be memory.
Thats the "virtual" part.

This sort of juggling has been used for situations where you don't
have enough RAM.

These days it its not used as much as it was ten or twenty years ago.
Today, I can get four Gigabytes of RAM into my shirt pocket!!!  It makes
some things much easier.  I haven't checked prices recently but you 
might get 4G of RAM for $20 or less, if not, wait another week or two.






More information about the Info-vax mailing list