We have a problem with a program that seems to getting
paged out. When I first start the application, I can
see that it's virtual image size is about 32 megs, and
all of it is resident (RSS == SIZE == 32).
Shortly after the program reads more from disk, however,
Solaris starts paging it out. I can see the RSS go
down to 16 mb, I can hear the disks making a lot of
noise, and the performance of my program slows to a crawl.
Normally, I would suspect that I just need more RAM but
the system had plenty of free memory before the process
started (more than the total virtual image size of my
program). So why is it paging it out? And if it really
does have to page out, to keep free memory above lotsfree,
why my running process, instead of some unused sleeping
I've examined the output from vmstat, sar and top
carefully - the system is definitely paging, but I just
can't seem to understand why.
One final clue: I wrote a simple C program which allocated
a block of 40 megs and continually wrote to it - when
run, this program never pages out -- I didn't write the
program with the problem, but I do have its source --
is there something I should look for?
All help greatly appreciated.