1. Work around faulty RAM
- Posted by Lutz_Heitmann at NF.MAUS.DE
Mar 21, 2001
-
Last edited Mar 22, 2001
Hello Euphorians,
Is it possible to use Euphoria to keep Windows NT from using specific address
ranges in physical RAM?
I'm thinking of this: You have some "bad spot" in memory. Now make Euphoria
allocate memory in 1 mb chunks, until one of the chunks contains this "bad
spot". Then free all the other chunks, and only this one chunk won't be used
by Windows anymore.
The EU-program must not terminate, of course, only minimized (a little icon in
the task bar) or even be made invisible.
Would it work?
A very good program for checking RAM can be found by having a search engine
look for memtest, memtest86 and such. It should come up with something like
www.reality.sgi.../... (I have to look up the URL). This program also gives
the exact error location, so you can use it in the EU-program.
Lutz.
PS: My idea for this EU-program could even be commercially successful - I'd
call it "RAMRepair"... ;)
2. Work around faulty RAM
- Posted by Lutz_Heitmann at NF.MAUS.DE
Mar 26, 2001
-
Last edited Mar 27, 2001
-P44249@NF
Hello Euphorians,
I wrote this a few days ago:
LH>make Euphoria allocate memory in 1 mb chunks, until one of the chunks
LH>contains this "bad spot". Then free all the other chunks, and only this
LH>one chunk won't be used by Windows anymore.
LH>The EU-program must not terminate, of course, only minimized (a little
LH>icon in the task bar) or even be made invisible.
LH>Would it work?
Seems like it wouldn't work. I wrote a program test.exw:
include machine.e
atom x
x = allocate(1000000)
? x
while 1 do end while
Then I started it a dozen times from the desktop, expecting the value of x
to go up with every new task. NT should allocate memory further and further
on within physical memory space. But the address was always the same...
I even suspected NT of reallocating the same space over and over again, but
that wasnt the case: A value poked in one task didn't show up in another
task at (seemingly) the same address.
Now I'm wondering: What do these addresses actually mean?
Lutz.
3. Re: Work around faulty RAM
- Posted by Robert Craig <rds at RapidEuphoria.com>
Mar 26, 2001
-
Last edited Mar 27, 2001
Lutz Heitmann writes:
> Then I started it a dozen times from the desktop,
> expecting the value of x to go up with every new task.
> NT should allocate memory further and further
> on within physical memory space. But the address
> was always the same...
> I even suspected NT of reallocating the same
> space over and over again, but that wasnt the case:
> A value poked in one task didn't show up in another
> task at (seemingly) the same address.
> Now I'm wondering: What do these addresses
> actually mean?
You've just discovered the difference between
"virtual" memory and physical memory.
The addresses that you normally deal with in
a Euphoria (or any other language) program
are called "virtual" addresses.
Each program has it's own "virtual address space" that
is independent of the address space of all other
programs. The operating system and the hardware
map each virtual address to a physical address.
This is done very quickly so it doesn't slow things down.
The physical address is fed to the memory chips
and they respond with the data that's stored at that
physical address. Typically a chip will hold just one
bit over a range of addresses, so you might need
8 chips to get all the bytes over a range of addresses.
A few years ago I had a problem similar to yours,
where my machine was crashing a lot and
I suspected that I had faulty memory.
I wrote a Euphoria program to copy megabytes of
data (in a sequence) back and forth millions of times,
checking the result of the copy each time.
After running for several minutes the program
would usually fail, with a single bit being incorrect in
one byte. This showed that I had an unreliable chip.
I got all the memory chips replaced,
and the machine was fixed.
Regards,
Rob Craig
Rapid Deployment Software
http://www.RapidEuphoria.com
4. Work around faulty RAM
-P64516@KI
Hello Robert,
RC>You've just discovered the difference between "virtual" memory and
RC>physical memory.
Nope! - I've known the difference for more than a decade.
RC>Typically a chip will hold just one bit over a range of addresses
Trivially so! (for me at least)
RC>I got all the memory chips replaced, and the machine was fixed.
But that's exactly what I'm trying to avoid! It doesn't make sense to
replace 128 mb of RAM, when only 1 out of > 1 billion bits doesn't work
right.
"Elderly" EDO-RAM is getting pretty expensive (if available at all), and I
only want to keep it running...
Lutz.