delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/2000/10/07/10:15:12

From: michael AT idisys DOT iae DOT nsk DOT su
Date: 7 Oct 2000 14:14:27 -0000
Message-ID: <20001007141427.10046.qmail@idisys.iae.nsk.su>
To: djgpp AT delorie DOT com
Subject: Re: Memory amount and PMODE
X-Newsgroups: comp.os.msdos.djgpp
In-Reply-To: <8rkrl1$31j5$1@news.itfs.nsk.su> <2950-Sat07Oct2000133524+0300-eliz@is.elta.co.il>
User-Agent: tin/pre-1.4-19990517 ("Psychonaut") (UNIX) (Linux/2.4.0-test1 (i586))
Reply-To: djgpp AT delorie DOT com
Errors-To: nobody AT delorie DOT com
X-Mailing-List: djgpp AT delorie DOT com
X-Unsubscribes-To: listserv AT delorie DOT com

In article <2950-Sat07Oct2000133524+0300-eliz AT is DOT elta DOT co DOT il> you wrote:
>> From: "Michael N. Filippov" <michael AT idisys DOT iae DOT nsk DOT su>
>> Newsgroups: comp.os.msdos.djgpp
>> Date: 6 Oct 2000 15:38:09 GMT
>> 
>> How can I estimate amount of free / busy memory
>> in the program runing under PMODSTUB DPMI server.
>> For example _go32_dpmi_remaining_physical_memory() and
>> go32_dpmi_remaining_virtual_memory() return values that have no 
>> sense (4294967295 and 67107840).

> The first one is actually -1 (meaning the info is unavailable), but
> the second number is 64MB.  Why doesn't this make sense, on a 128MB
> machine?

I understand about -1 (for unsigned long :) and corrected the prog a little.
I just expected that I'll be able to use all memory. As for the difference
in the program output when 
using CWSDPMI)
-------- go32 information ---------
physical_mem = 132927488
virtual_mem = 266563584
-------- __dpmi_free_mem_info information ---------
largest_available_free_block_in_bytes = 266563584
maximum_unlocked_page_allocation_in_pages = 65079
maximum_locked_page_allocation_in_pages = 32453
linear_address_space_size_in_pages = unsupported
total_number_of_unlocked_pages = 32495
total_number_of_free_pages = 32453
total_number_of_physical_pages = 32495
free_linear_address_space_in_pages = unsupported
size_of_paging_file_partition_in_pages = 32760
-------- __dpmi_memory_info information ---------
Returned: -1

using PMODE)
-------- go32 information ---------
physical_mem = 4294963200
virtual_mem = 67107840
-------- __dpmi_free_mem_info information ---------
largest_available_free_block_in_bytes = 67107840
maximum_unlocked_page_allocation_in_pages = 16383
maximum_locked_page_allocation_in_pages = 16383
linear_address_space_size_in_pages = unsupported
total_number_of_unlocked_pages = unsupported
total_number_of_free_pages = unsupported
total_number_of_physical_pages = unsupported
free_linear_address_space_in_pages = unsupported
size_of_paging_file_partition_in_pages = unsupported
-------- __dpmi_memory_info information ---------
Returned: -1
 
So maybe PMODE doesnt use more than 64Mb, there's no hint in 
documentation what can I do.

> What does go32-v2.exe print when invoked with no arguments, on that
> machine?
go32/v2 version 2.0 built Nov 15 1998 14:36:43
Usage: go32 coff-image [args]
Rename this to go32.exe only if you need a go32 that can run v2 binaries as
 well as v1 binaries (old makefiles).  Put ahead of the old go32 in your PATH
 but do not delete your old go32 - leave it in the PATH after this one.
Set GO32_V2_DEBUG=y in the environment to get verbose output.

DPMI memory available: 130499 Kb
DPMI swap space available: 129881 Kb


>> I'd like to trace my program which uses STL and sometimes dies
>> with "out of memory" message though my estimations show than 
>> only 30-50% of memory is allocated at the moment.

> go32-v2, when invoked with no arguments, will show you what maximum
> amount of memory can you count on.  PMODE may incur additional
> limitations (why do you use it, btw?), which go32-v2 won't show, since
> it wasn't linked with PMODE stub.

Namely, I expected to have all memory :( and didn't think about additional
limitations (except virtual memory). I hope somebody can help me with 
PMODSTUB tuning. Or offer another DPMI server (stub), because I have no
choice - only single EXE file (consumer demands) and even all data must be 
attached to the executable in EXEDAT format.

BTW - i know that STL has own allocators, is there way to optimize it for
size (not for speed). And how can i estimate in the program (run-time)
free/busy memory amount (as far as I concerned sbrk(0) traces heap, how can
I find out if the program runs out of stack - to catch memory eating 
block).

Sincerely,
Michael

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019