Low Virtual memory available

Hi

I am running AIX 5.2. My server is running low on memory. It it using about 1307775 file pages on a total of 1511424 (from vmstat -v).

I looked at the memory yesterday morning, and we had plenty of free memory. I did a backup from Windows (ftp mget command) of a large file selection. From this moment, free memory dropped to very low.

Question #1 : how do I prevent that to happen?
Question #2 : how do I "flush" memory for it to be normal, without restarting my server?

Here is the result of vmstat -v :

 vmstat -v                                                    
 1511424 memory pages                                         
 1462705 lruable pages                                        
     184 free pages                                           
       1 memory pools                                         
   60528 pinned pages                                         
    80.1 maxpin percentage                                    
    20.0 minperm percentage                                   
    80.0 maxperm percentage                                   
    89.4 numperm percentage                                   
 1307775 file pages                                           
     0.0 compressed percentage                                
       0 compressed pages                                     
     0.0 numclient percentage                                 
    80.0 maxclient percentage                                 
       0 client pages                                         
       0 remote pageouts scheduled                            
      32 pending disk I/Os blocked with no pbuf               
       0 paging space I/Os blocked with no psbuf              
  198714 filesystem I/Os blocked with no fsbuf                
       0 client filesystem I/Os blocked with no fsbuf         
       0 external pager filesystem I/Os blocked with no fsbuf 

Thanks

Are you getting errors in another application, or do you just want to see memory free? File memory (like reading large files to perform a backup) will not be freed unless that memory is needed for something else.

Just getting slow system... slow backup,, slow execution of programs, no errors...
I restarted the server, and now memory looks great.

How does FTP files transfer can fulls memory like that? there must be a way to prevent that?

Thanks for your reply!

I don't think high "file pages" is bad per se, if that's disk cache like the documents I've found suggest. The OS should give that up as easily as "free", and when the right things get cached(frequently used programs and data) it's not just harmless, it's highly beneficial.

But large amounts of disk access can cause cache pollution -- all the "good" disk cache of frequently-used programs and data gets recycled, to make room for the "more recent" disk activity caused by a big FTP transfer.

This useless cache will be replaced by better things once they're used again, but not before, which may be surprisingly slow once you're used to how fast they work when cached...

198714 filesystem I/Os blocked with no fsbuf

This clearly shows that you are running out of filesystem buffer (bufstruct) causing slow I/O. You can increase the number of bufstructs per file system, known as numfsbufs, with the ioo command and remount the file system. Check man page of ioo for details or go to here: Help - AIX 6.1 Information Center

can you post vmstat -v

I guess your system is paging a lot (or scanning and freeing pages in significant amount).
Your minperm value is set to 20% which is approx 26000 pages - you might want to reduce this to give the box some air to breathe.

For AIX 5.2 with ML greater 4, IBM used to recommend usually below tunables

vmo -p -o minperm%=5
Leave maxperm and maxclient at default of 80
Leave strict_maxperm and strict_maxclient at their defaults
vmo -p -o minfree=960
vmo -p -o maxfree=1088
vmo -p -o lru_file_repage=0
vmo -p -o lru_poll_interval=10
ioo -p -o j2_maxPageReadAhead=128
ioo -p -o maxpgahead=16
ioo -p -o j2_maxRandomWrite=32
ioo -p -o maxrandwrt=32
ioo -p -o j2_nBufferPerPagerDevice=1024
ioo -p -o hd_pbuf_cnt=1024
ioo -p -o numfsbufs=1024

Regards
zxmaus