[RFC] various lists on inode table usage?

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

[RFC] various lists on inode table usage?

Changwei Ge
Hi,

I am recently working on optimizing inode searching/getting/putting
concurrency. Before the experiment/trial goes, I would like to get fully
understand what the usage of several lists of inode table, especially
for 'invalidate list', since the major difficulty making inode searching
run concurrently is that We have to move inode from one list to the
other and modify some attributes against inode table.
After reading corresponding code, it seems that inode table 'invalidate
list' is only retrieved when destroying inode table(inode_table_destroy).

Can someone help explain the list usage/purpose of 'invalidate list'?


Thanks,
Changwei
_______________________________________________

Community Meeting Calendar:

APAC Schedule -
Every 2nd and 4th Tuesday at 11:30 AM IST
Bridge: https://bluejeans.com/118564314

NA/EMEA Schedule -
Every 1st and 3rd Tuesday at 01:00 PM EDT
Bridge: https://bluejeans.com/118564314

Gluster-devel mailing list
[hidden email]
https://lists.gluster.org/mailman/listinfo/gluster-devel

Reply | Threaded
Open this post in threaded view
|

Re: [RFC] various lists on inode table usage?

Amar Tumballi-2


On Mon, Oct 21, 2019 at 11:58 AM Changwei Ge <[hidden email]> wrote:
Hi,

I am recently working on optimizing inode searching/getting/putting
concurrency. Before the experiment/trial goes, I would like to get fully
understand what the usage of several lists of inode table, especially
for 'invalidate list', since the major difficulty making inode searching
run concurrently is that We have to move inode from one list to the
other and modify some attributes against inode table.
After reading corresponding code, it seems that inode table 'invalidate
list' is only retrieved when destroying inode table(inode_table_destroy).

Can someone help explain the list usage/purpose of 'invalidate list'?

'invalidate_list' is used only in client side. The patch which got it is below:


Hope this gives some idea.

Happy to help. If there is an interest, we can even have a video conference for all interested developers to discuss inode table, and detail out how it is done.

For getting complete history of changes to inode.c (from https://github.com/amarts/glusterfs/commit/72db44413ce4686b465c29ea8383fa4f09f53a76), you can clone github.com/amarts/glusterfs and see that over time what changes got into the file... 'git log libglusterfs/src/inode.c' gives an idea.

Regards,
Amar



Thanks,
Changwei

_______________________________________________

Community Meeting Calendar:

APAC Schedule -
Every 2nd and 4th Tuesday at 11:30 AM IST
Bridge: https://bluejeans.com/118564314

NA/EMEA Schedule -
Every 1st and 3rd Tuesday at 01:00 PM EDT
Bridge: https://bluejeans.com/118564314

Gluster-devel mailing list
[hidden email]
https://lists.gluster.org/mailman/listinfo/gluster-devel

Reply | Threaded
Open this post in threaded view
|

Re: [RFC] various lists on inode table usage?

Changwei Ge
Hi Amar,

Thank you very much for your quick reply :-)

On 2019/10/21 2:44 下午, Amar Tumballi wrote:

>
>
> On Mon, Oct 21, 2019 at 11:58 AM Changwei Ge <[hidden email]
> <mailto:[hidden email]>> wrote:
>
>     Hi,
>
>     I am recently working on optimizing inode searching/getting/putting
>     concurrency. Before the experiment/trial goes, I would like to get
>     fully
>     understand what the usage of several lists of inode table, especially
>     for 'invalidate list', since the major difficulty making inode
>     searching
>     run concurrently is that We have to move inode from one list to the
>     other and modify some attributes against inode table.
>     After reading corresponding code, it seems that inode table 'invalidate
>     list' is only retrieved when destroying inode
>     table(inode_table_destroy).
>
>     Can someone help explain the list usage/purpose of 'invalidate list'?
>
>
> 'invalidate_list' is used only in client side. The patch which got it is
> below:
>
> https://github.com/gluster/glusterfs/commit/d49b41e817d592c1904b6f01716df6546dad3ebe 
>
>
> Hope this gives some idea.

Cool, this helps me to understand more deeply on inode table.
I will check out other related commits as well.

>
> Happy to help. If there is an interest, we can even have a video
> conference for all interested developers to discuss inode table, and
> detail out how it is done.
>

Ack.
As I think that inode table(how we manage inode/dentry) is one of the
most critical parts of a certain type of FS, we should consider and
design carefully hence run it efficiently.
What I can see from glusterfs HEAD code is that we might have many
locking contentions and burden too much logic into inode_[un]ref().

So how can we arrange a video conference and have a further discussion?

Thanks,
Changwei

> For getting complete history of changes to inode.c (from
> https://github.com/amarts/glusterfs/commit/72db44413ce4686b465c29ea8383fa4f09f53a76),
> you can clone github.com/amarts/glusterfs
> <http://github.com/amarts/glusterfs> and see that over time what changes
> got into the file... 'git log libglusterfs/src/inode.c' gives an idea.
>
> Regards,
> Amar
>
>
>
>     Thanks,
>     Changwei
>
_______________________________________________

Community Meeting Calendar:

APAC Schedule -
Every 2nd and 4th Tuesday at 11:30 AM IST
Bridge: https://bluejeans.com/118564314

NA/EMEA Schedule -
Every 1st and 3rd Tuesday at 01:00 PM EDT
Bridge: https://bluejeans.com/118564314

Gluster-devel mailing list
[hidden email]
https://lists.gluster.org/mailman/listinfo/gluster-devel

Reply | Threaded
Open this post in threaded view
|

Re: [RFC] various lists on inode table usage?

Amar Tumballi-2


On Mon, Oct 21, 2019 at 1:02 PM Changwei Ge <[hidden email]> wrote:
Hi Amar,

Thank you very much for your quick reply :-)

On 2019/10/21 2:44 下午, Amar Tumballi wrote:
>
>
> On Mon, Oct 21, 2019 at 11:58 AM Changwei Ge <[hidden email]
> <mailto:[hidden email]>> wrote:
>
>     Hi,
>
>     I am recently working on optimizing inode searching/getting/putting
>     concurrency. Before the experiment/trial goes, I would like to get
>     fully
>     understand what the usage of several lists of inode table, especially
>     for 'invalidate list', since the major difficulty making inode
>     searching
>     run concurrently is that We have to move inode from one list to the
>     other and modify some attributes against inode table.
>     After reading corresponding code, it seems that inode table 'invalidate
>     list' is only retrieved when destroying inode
>     table(inode_table_destroy).
>
>     Can someone help explain the list usage/purpose of 'invalidate list'?
>
>
> 'invalidate_list' is used only in client side. The patch which got it is
> below:
>
> https://github.com/gluster/glusterfs/commit/d49b41e817d592c1904b6f01716df6546dad3ebe
>
>
> Hope this gives some idea.

Cool, this helps me to understand more deeply on inode table.
I will check out other related commits as well.

>
> Happy to help. If there is an interest, we can even have a video
> conference for all interested developers to discuss inode table, and
> detail out how it is done.
>

Ack.
As I think that inode table(how we manage inode/dentry) is one of the
most critical parts of a certain type of FS, we should consider and
design carefully hence run it efficiently.
What I can see from glusterfs HEAD code is that we might have many
locking contentions and burden too much logic into inode_[un]ref().

This is true. And I tried couple of approaches. Couldn't get to take it to completion earlier.



 

So how can we arrange a video conference and have a further discussion?


Open for suggestions. We have weekly Community meeting, which can be extended to talk about this.
 
Thanks,
Changwei

> For getting complete history of changes to inode.c (from
> https://github.com/amarts/glusterfs/commit/72db44413ce4686b465c29ea8383fa4f09f53a76),
> you can clone github.com/amarts/glusterfs
> <http://github.com/amarts/glusterfs> and see that over time what changes
> got into the file... 'git log libglusterfs/src/inode.c' gives an idea.
>
> Regards,
> Amar
>
>
>
>     Thanks,
>     Changwei
>

_______________________________________________

Community Meeting Calendar:

APAC Schedule -
Every 2nd and 4th Tuesday at 11:30 AM IST
Bridge: https://bluejeans.com/118564314

NA/EMEA Schedule -
Every 1st and 3rd Tuesday at 01:00 PM EDT
Bridge: https://bluejeans.com/118564314

Gluster-devel mailing list
[hidden email]
https://lists.gluster.org/mailman/listinfo/gluster-devel