1753797 Members
7231 Online
108802 Solutions
New Discussion

vx_ninode question

 
Paul Thomson_2
Super Advisor

vx_ninode question

Hi

Im currently doing some benchmarking by setting vx_ninode to reduce my system memory. After setting this to a value appropriate to my nfile usage, I set the value back (vx_ninode) to 0 and rebooted. My system memory has not returned to the previous value.

Before changing vx_ninode sys memory was 532mb, after setting to 16000, it was 279mb. I have now set back to 0 but system memory is still 279mb. This is obviously a good thing, but I need it back at 532mb to perform my benchmarking test.

Does anyone have an idea why the system memory would remain low after setting vx_ninode back to 0 ?

My current kernel setting are attached.

Thanks
Argh ye land lovers !
1 REPLY 1
Mridul Shrivastava
Honored Contributor

Re: vx_ninode question

VX_NINODE allows setting the maximum number of inodes that can be present in the VxFS in-memory inode cache. If set to zero (the default) the size is tuned according to how much physical memory the system has. Decreasing the maximum size of the inode cache reduces the fragmentation it causes.
To see what size the inode cache is on a running system:
# echo 'vxfs_ninode/D' | adb /stand/vmunix /dev/mem
So that this system will have a maximum of 8000 inodes allocated in the VxFS cache.

VX_NOIFREE controls whether to free memory from the VxFS inode cache. If set to zero (the default), inodes are eventually freed
back to the general memory pool if they are unused. If VX_NOIFREE is non-zero, then memory is never freed from the VxFS inode cache. It may seem counter-intuitive to hoard memory to prevent memory problems, but
not freeing the 2KB buckets holding VxFS inodes to the general memory pool prevents fragmentation of the pool. Once the maximum size is reached for the inode cache, VxFS will always re-use older inodes.
Time has a wonderful way of weeding out the trivial