Re: How long can an inode structure reside in the inode_cache?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




--- Jeff Mahoney <jeffm@xxxxxxxx> wrote:

> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> 
> Xin Zhao wrote:
> > No. I guess I didn't make my question clear.
> > 
> > My question is: Will an inode be released after
> the last file refers
> > to this is closed? If so, this could bring a
> performance issue.
> > Consider this case: a process open a file, read
> it, close it, then
> > reopen this file, read it, close it. For every
> open,  the inode has to
> > be read from disk again, which make hurt
> performance.
> > 
> > So I think inode should stay in inode_cache for a
> while, not released
> > right after the last file stops referring it. I
> just want to know
> > whether my guess is right. If it is, when will
> kernel release the
> > inode, since an inode cannot stay in memory
> forever.
> 
> That's pretty much exactly what happens. The kernel
> caches inodes and
> dentries when memory usage allows. When the last
> reference to an inode
> is dropped and the file system is still in use, the
> inode goes on the
> unused_inode list. It remains linked to the inode
> hash table. When a
> inode is requested, the hash table is checked before
> trying to read it
> back from disk. Check out generic_forget_inode() and
> ifind().
> 
> When there is memory pressure, the VM system will
> shrink these caches.
> inode_init() registers a callback for the VM to call
> shrink_icache_memory () which will finally free the
> memory. Check out
> mm/vmscan.c and fs/inode.c for more detailed
> information.
> 
> - -Jeff
> 
> - --
> Jeff Mahoney
> SUSE Labs

Hello All,

Continuing the above discusssion I want to ask one
question. If a file system allocated new inodes using
new_inode() then after this uses d_add or
d_instantiate to attach this inode to a dentry, then
what will happen when we get short of memory.

In other words since new_inode() alolocates the memory
for the inode in the inode cache and since we are
getting short of memory so we can loose this inode but
we already have attached this inode with a dentry.
Then how the kernel will get the inode for this dentry
since we already have loose the inode for this dentry.

Similarly the file system allocates the memory for
dentries using d_alloc; is this can also create
problems like for the inodes.

Thanks,
Uzair Lakhani,
Karachi, Pakistan.
> 
> 
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.2 (GNU/Linux)
> Comment: Using GnuPG with SUSE -
> http://enigmail.mozdev.org
> 
>
iD8DBQFEixcGLPWxlyuTD7IRAn1SAJ4yjgtJ9YL321W/18a7nttlaEc9pACeIMJX
> yNUuC/impK4eZpHpLkwtCOQ=
> =ykbS
> -----END PGP SIGNATURE-----
> -
> To unsubscribe from this list: send the line
> "unsubscribe linux-fsdevel" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at 
> http://vger.kernel.org/majordomo-info.html
> 


__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 
-
To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [Samba]     [Device Mapper]     [CEPH Development]
  Powered by Linux