Hi,

I'm using a 2.6.26 kernel on an AMD64 machine. Im running some timing
experiments on the Linux swapping system.
My system has 2GB of RAM but I boot linux with mem=1GB.

There's is some behavior happening which I don't understand and I'm
hoping someone can explain it to me.

Here is what my experimental (simple) programs do. in sequence :

1) Process A grabs a lot of memory (calloc). It takes about 90% of memory
2) Process A does some reads/writes to all its allocated memory
3) Start process B. This also grabs a lot of memory (calloc).
4) Process B writes to all its allocated memory
5) OS swaps out Process A pages (to swap device) to make room for B
6) Process A does a timed read of all its pages.

In this case I was expecting it to take a while to do the timed read
since all its pages have been swapped to
disk. However this is not the case. It takes the same amount of time
as when I don't run Process B. This is
counter to my understanding of how it should work.

If I replace step 6) above with :

6) Process A does a timed write of all its pages

Then I see the expected behavior which is that it takes a long time
because all its pages are swapped in first.
Why is there this discrepancy between timed reads and writes ?
At first I thought it may be because AMD64 has a tagged cache and
tagged TLB which causes this behaviour
but I'm not really sure. Does anyone have an idea ?

Thanks
arn

--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to [EMAIL PROTECTED]
Please read the FAQ at http://kernelnewbies.org/FAQ

Reply via email to