RE: Problems in GC when using NilFS2 with large segment size

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

 



Hi Benixon,

On Tue, 2013-09-17 at 18:39 +0000, Benixon Dhas wrote:

Yes, GC of NILFS2 is inefficient now. And GC optimization is the key
direction of NILFS2 optimization at whole, from my viewpoint. But I
suppose that we haven't efficient GC solution for LFS, currently. So,
suggestion of good solution of garbage collection scheme for LFS case is
promising direction, as far as I can judge.

I think that F2FS suggests some interesting approaches of garbage
collection. As you know, there are two classical approaches of GC
policies for the LFS case: (1) threading approach; (2) copying approach.
So, F2FS uses hybrid approach. I assume that it can be useful to be
familiar with F2FS techniques of garbage collection.

I know about efforts of NILFS2 GC optimization [1]. But I dissatisfied
as way of such optimization as code quality. So, I don't think that such
GC optimization is proper way.

If we are talking about shingled drive case then, first of all, it makes
sense to be acquainted with existed patents in this field. As I know,
there are significant number of inventions are suggested by guys from
Hitachi and HGST research centers. There are different suggestions of
using LFS in these patents and considerations about possible GC
overhead.

I think that it need to discuss promising techniques of garbage
collection in NILFS2 more deeply. Moreover, garbage collection
techniques for the case of flash and shingled drive can be different, as
far as I can see. I assume that in the case of shingled drive it makes
sense to use such technique of garbage collection. If you use LFS for
the case of shingled drive then you are using Copy-on-Write (COW)
policy. But, anyway, trying to read or update some sector results in
reading as minimum this sector in a cache. So, if you read not sector
but, for example, segment in a cache then you will have opportunity to
make clean operation in this segment. As a result, your read or update
operation will have addition in the form of copied valid blocks from
cleaned segment. I assume that shingled drive controller should have
support of GC operations in such approach.

> 
> We have tried the second suggestion of reducing the number of segments
> cleaned in a single pass in the configuration file. Even after this we
> are seeing the memory issue.
> Due to limitations of ShIngled Disks the smallest segment size that we
> can go with is 128MB. In our case a larger segment size is desirable.
> 
> We would like a feature which can limit the amount of kernel memory
> that is used for garbage collection. This might make the garbage
> collector inefficient. But it would make it stable on systems with
> limited resources.

By the way, there are probability that you have discovered some issue of
NILFS2 GC. So, if you think so then you need to describe a reproducing
path and what is wrong in GC behavior from your point of view.  

>  We are just beginning to look through the source to understand NilFS2
> better. We can experiment by modifying the NilFS2 source. We would
> welcome any suggestions or pointers that would help us in modifying
> the source. 
> 
NILFS2 has many TODO. So, you are welcome. :)

But if you plan to contribute into NILFS2 project then it makes sense to
distribute tasks. And it is possible to suggest something if you will
choose some TODO.

By the way, I am implementing extended attributes (xattr) support in
NILFS2 right now.

With the best regards,
Vyacheslav Dubeyko.

[1] http://www.mail-archive.com/linux-nilfs@xxxxxxxxxxxxxxx/msg01739.html


--
To unsubscribe from this list: send the line "unsubscribe linux-nilfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Filesystem Development]     [Linux BTRFS]     [Linux CIFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux SCSI]

  Powered by Linux