1. No virtual memory?

What has happened to virtual memory with 2.1?

I created the following program

sequence x
x = repeat(0,6000000) -- works ok.

If I change the six million to seven million, it gives an
out of memory error. This is the same whether I have
SET CAUSEWAY=NOVM or not. I was expecting Causeway to go
to the disk to supply virtual memory when I remove the line
SET CAUSEWAY=NOVM,and reboot. There seems to be no disk activity
either way. I have 32 megs physical memory. Any ideas?

Irv

new topic     » topic index » view message » categorize

2. Re: No virtual memory?

Virtual memory has been gone since ver 2.
Or at least, in version 2 it didnt work either. Never really tried it with ver
1.5 but I can remember my HD going nuts in some
'badly' designed infinite loop, where some data grows. (developping EDOM for
example)

However, the same loop just 'runs out of memory' without me even hearing my HD
with DOS32 ver 2 and v 2.1
Im asuming however, that it will work fine under Win32, because that uses the
windows-api to allocate memory.

Ralf

new topic     » goto parent     » topic index » view message » categorize

3. Re: No virtual memory?

On Tue, 16 Feb 1999 19:45:30 +0100, Ralf Nieuwenhuijsen <nieuwen at XS4ALL.NL>
wrote:

>Virtual memory has been gone since ver 2.
>Or at least, in version 2 it didnt work either. Never really tried it with ver
>1.5 but I can remember my HD going nuts in some
>'badly' designed infinite loop, where some data grows. (developping EDOM for
>example)
>
>However, the same loop just 'runs out of memory' without me even hearing my HD
>with DOS32 ver 2 and v 2.1
>Im asuming however, that it will work fine under Win32, because that uses the
>windows-api to allocate memory.
>
>Ralf

According to the manual for ver 2.0, and the platform.doc file
with 2.1, it's still there for DOS. I haven't tried it since
version 1.5, however. It worked ok then. Rob?

Irv
Windows? We don't need no steenkin' Windows!

new topic     » goto parent     » topic index » view message » categorize

4. Re: No virtual memory?

Irv Mullins writes:
> What has happened to virtual memory with 2.1?
> I created the following program
> sequence x
> x = repeat(0,6000000) -- works ok.
> If I change the six million to seven million, it gives an
> out of memory error.

On my 32Mb Win95 machine in a DOS Window,
I can do 7 million, but then 8 million says "out of memory".

When restarted in "pure DOS", I went up to 12 million, and
didn't bother trying anything higher. 12 million needs 48 Mb,
since each element needs 4 bytes.

Nothing has happened to virtual memory in 2.1.

It's still there for ex.exe under Windows or pure DOS,
and exw.exe under Windows. The exact amount of memory
available has always been somewhat unpredictable.
The O/S, disk cache, and various background applications are
always hogging many megabytes of RAM.

Remember, for a 7 million element sequence you need
28 million *consecutive* bytes of virtual memory. It might
not always be easy for the O/S, or for CauseWay, to arrange this
for you from the existing free space.

Regards,
     Rob Craig
     Rapid Deployment Software
     http://members.aol.com/FilesEu/

new topic     » goto parent     » topic index » view message » categorize

5. Re: No virtual memory?

On Tue, 16 Feb 1999 16:47:39 -0500, Robert Craig <rds at ATTCANADA.NET> wrote:

>Irv Mullins writes:
>> What has happened to virtual memory with 2.1?
>> I created the following program
>> sequence x
>> x = repeat(0,6000000) -- works ok.
>> If I change the six million to seven million, it gives an
>> out of memory error.
>
>On my 32Mb Win95 machine in a DOS Window,
>I can do 7 million, but then 8 million says "out of memory".
>
>When restarted in "pure DOS", I went up to 12 million, and
>didn't bother trying anything higher. 12 million needs 48 Mb,
>since each element needs 4 bytes.

Yow! Something is badly wrong, I am running pure DOS 6.22, no
windows of any kind, and no drivers or anything loaded except
himem.sys and emm386.exe. with 32 megs.

>Nothing has happened to virtual memory in 2.1.
>
>It's still there for ex.exe under Windows or pure DOS,
>and exw.exe under Windows. The exact amount of memory
>available has always been somewhat unpredictable.
>The O/S, disk cache, and various background applications are
>always hogging many megabytes of RAM.
>
>Remember, for a 7 million element sequence you need
>28 million *consecutive* bytes of virtual memory. It might
>not always be easy for the O/S, or for CauseWay, to arrange this
>for you from the existing free space.

Does Euphoria/Causeway use ram first, and then use virtual
memory for any "left overs", or does it switch over to virtual
memory for the *entire* variable if said variable won't fit in
normal ram?

Irv

new topic     » goto parent     » topic index » view message » categorize

6. Re: No virtual memory?

Irv Mullins writes:
> Does Euphoria/Causeway use ram first, and then use virtual
> memory for any "left overs", or does it switch over to virtual
> memory for the *entire* variable if said variable won't fit in
> normal ram?

Under DOS, CauseWay uses extended memory first.
When extended memory runs out, it starts using
conventional memory, and finally it starts using "virtual" memory,
i.e. swap space on disk.

Note: If you have less free space on disk than you have
RAM in your machine, CauseWay (under DOS) will not use
virtual memory *at all*. i.e. in your case, if you have less
than 32 Mb of free space on C: (or whatever drive holds the
swap file), virtual memory will *not* be used. [I'll add this to the docs.]

CauseWay divides memory into 4K pages. A page could
be "in memory", or "on disk". You could have more pages
allocated than there exists physical RAM in your machine.
The extra pages are stored on disk, and are brought into
physical memory as needed. The least-recently used pages
are copied from memory out to disk (if they've been modified).
The Intel hardware supports this kind of thing. Windows works
much the same way.

An entire Euphoria sequence need not be completely
in memory at one time.

At some point, in a DOS Window, Windows will tell CauseWay
that there's no more (virtual) memory available. Under pure DOS,
CauseWay manages its own swap file, and I've never been
sure of the exact algorithm it uses to decide that you are
"out of memory".

Regards,
     Rob Craig
     Rapid Deployment Software
     http://members.aol.com/FilesEu/

new topic     » goto parent     » topic index » view message » categorize

Search



Quick Links

User menu

Not signed in.

Misc Menu