* [RFC] Smart fibration plugin ext_4321
@ 2016-12-25 0:59 Dušan Čolić
2016-12-25 8:51 ` Dušan Čolić
2016-12-26 18:47 ` Edward Shishkin
0 siblings, 2 replies; 15+ messages in thread
From: Dušan Čolić @ 2016-12-25 0:59 UTC (permalink / raw)
To: reiserfs-devel
[-- Attachment #1: Type: text/plain, Size: 1006 bytes --]
Fibration is a great way to decrease fragmentation and increase throughput.
Currently there are 4 fibration plugins, lex, dot.o, ext_1 and ext_3
and they all have their upsides and downsides.
Proposed fibration plugin combines them all so that it combines files
with same extensions for 1, 2. 3 and 4 character extension in groups
and sorts them in same fiber group.
With this fibration plugin all eg. xvid files would be in same group
in folder on disk sorted alphabetically so that we will avoid putting
small files between them and in that way reduce fragmentation. That
group (xvid 4 character extensions) would be among last groups under
one directory so that all small files would be written before it.
Problem with the attached patch is that currently every fibre value is
defined as u64 (eg. static __u64 fibre_ext_3) but if I understood
correctly comments in kassign.c and fibration.c fibration part of the
key is only 7 bits long.
If that is true how did fibre_ext_3 worked?
Thanks
Dushan
[-- Attachment #2: fibration_ext_4321.patch --]
[-- Type: application/octet-stream, Size: 2032 bytes --]
Signed-off-by:Dushan Tcholich <dusanc@gmail.com>
--- linux-4.8.15-gentoo/fs/reiser4/plugin/fibration.c 2016-12-24 18:22:09.679645971 +0100
+++ linux/fs/reiser4/plugin/fibration.c 2016-12-25 01:31:43.700383624 +0100
@@ -81,6 +81,25 @@ static __u64 fibre_ext_3(const struct in
return FIBRE_NO(0);
}
+/*
+* ext.4321 fibration: try to separate files with different 1, 2, 3 and 4-character
+* extensions from each other.
+*/
+
+static __u64 fibre_ext_4321(const struct inode *dir, const char *name, int len)
+{
+ if (len > 5 && name[len - 5] == '.')
+ return FIBRE_NO(name[len - 4] + name[len - 3] + name[len - 2] + name[len - 1] + 768);
+ else if (len > 4 && name[len - 4] == '.')
+ return FIBRE_NO(name[len - 3] + name[len - 2] + name[len - 1] + 384);
+ else if (len > 3 && name[len - 3] == '.')
+ return FIBRE_NO(name[len - 2] + name[len - 1] + 128);
+ else if (len > 2 && name[len - 2] == '.')
+ return FIBRE_NO(name[len - 1]);
+ else
+ return FIBRE_NO(0);
+}
+
static int change_fibration(struct inode *inode,
reiser4_plugin * plugin,
pset_member memb)
@@ -161,7 +180,18 @@ fibration_plugin fibration_plugins[LAST_
.linkage = {NULL, NULL}
},
.fibre = fibre_ext_3
- }
+ },
+ [FIBRATION_EXT_4321] = {
+ .h = {
+ .type_id = REISER4_FIBRATION_PLUGIN_TYPE,
+ .id = FIBRATION_EXT_4321,
+ .pops = &fibration_plugin_ops,
+ .label = "ext-4321",
+ .desc = "fibrate file by 4, 3, 2 and 1 character extension",
+ .linkage = {NULL, NULL}
+ },
+ .fibre = fibre_ext_4321
+ }
};
/*
--- linux-4.8.15-gentoo/fs/reiser4/plugin/fibration.h 2016-12-24 18:22:09.683646147 +0100
+++ linux/fs/reiser4/plugin/fibration.h 2016-12-25 01:19:12.975390151 +0100
@@ -20,6 +20,7 @@ typedef enum {
FIBRATION_DOT_O,
FIBRATION_EXT_1,
FIBRATION_EXT_3,
+ FIBRATION_EXT_4321,
LAST_FIBRATION_ID
} reiser4_fibration_id;
^ permalink raw reply [flat|nested] 15+ messages in thread* Re: [RFC] Smart fibration plugin ext_4321 2016-12-25 0:59 [RFC] Smart fibration plugin ext_4321 Dušan Čolić @ 2016-12-25 8:51 ` Dušan Čolić 2016-12-26 18:47 ` Edward Shishkin 1 sibling, 0 replies; 15+ messages in thread From: Dušan Čolić @ 2016-12-25 8:51 UTC (permalink / raw) To: reiserfs-devel [-- Attachment #1: Type: text/plain, Size: 2020 bytes --] On Sun, Dec 25, 2016 at 1:59 AM, Dušan Čolić <dusanc@gmail.com> wrote: > Fibration is a great way to decrease fragmentation and increase throughput. > Currently there are 4 fibration plugins, lex, dot.o, ext_1 and ext_3 > and they all have their upsides and downsides. > > Proposed fibration plugin combines them all so that it combines files > with same extensions for 1, 2. 3 and 4 character extension in groups > and sorts them in same fiber group. > > With this fibration plugin all eg. xvid files would be in same group > in folder on disk sorted alphabetically so that we will avoid putting > small files between them and in that way reduce fragmentation. That > group (xvid 4 character extensions) would be among last groups under > one directory so that all small files would be written before it. > > Problem with the attached patch is that currently every fibre value is > defined as u64 (eg. static __u64 fibre_ext_3) but if I understood > correctly comments in kassign.c and fibration.c fibration part of the > key is only 7 bits long. > If that is true how did fibre_ext_3 worked? > Patch v2 addresses the problem that we have only 127 fibration groups available with 7 bits in the key so I made following groups: 1. Fibration value 0-31 - files with 1 character extension except .o files 2. Fibration value 32-60 - files with 2 character extension 3. Fibration value 61-90 - files with 3 character extension 4. Fibration value 91-120 - files with 4 character extension 5. Fibration value 121-125 - Free for some special files 6. Fibration value 126 - rest of files 7. Fibration value 127 - .o files Overlap from 128/4=32 and we use offset 30 is because control characters (those we do not use in file names) are in 0-31 range so we will never use those values. I also changed name of fibration plugin to ext_1234 to better reflect the real function of plugin. This is all still RFC as I made no changes to reiser4progs yet. Dushan > Thanks > > Dushan [-- Attachment #2: fibration_ext_1234.2.patch --] [-- Type: application/octet-stream, Size: 2303 bytes --] Signed-off-by:Dushan Tcholich <dusanc@gmail.com> --- linux-4.8.15-gentoo/fs/reiser4/plugin/fibration.h 2016-12-24 18:22:09.683646147 +0100 +++ linux/fs/reiser4/plugin/fibration.h 2016-12-25 09:30:16.585153093 +0100 @@ -20,6 +20,7 @@ typedef enum { FIBRATION_DOT_O, FIBRATION_EXT_1, FIBRATION_EXT_3, + FIBRATION_EXT_1234, LAST_FIBRATION_ID } reiser4_fibration_id; --- linux-4.8.15-gentoo/fs/reiser4/plugin/fibration.c 2016-12-24 18:22:09.679645971 +0100 +++ linux/fs/reiser4/plugin/fibration.c 2016-12-25 09:29:58.092340355 +0100 @@ -81,6 +81,31 @@ static __u64 fibre_ext_3(const struct in return FIBRE_NO(0); } +/* +* ext.1234 fibration: try to separate files with different 1, 2, 3 and 4-character +* extensions from each other in groups of 30 each and put everything else after +* them (group 126) with .o files at the end (group 127). +*/ + +static __u64 fibre_ext_1234(const struct inode *dir, const char *name, int len) +{ + if (len > 5 && name[len - 5] == '.') + return FIBRE_NO(name[len - 4] + name[len - 3] + name[len - 2] + + name[len - 1]) / 16 + 90); + else if (len > 4 && name[len - 4] == '.') + return FIBRE_NO((name[len - 3] + name[len - 2] + + name[len - 1]) / 12 + 60); + else if (len > 3 && name[len - 3] == '.') + return FIBRE_NO((name[len - 2] + name[len - 1]) / 8 + 30); + /* special treatment for .*\.o */ + else if (len > 2 && name[len - 1] == 'o' && name[len - 2] == '.') + return FIBRE_NO(127); + else if (len > 2 && name[len - 2] == '.') + return FIBRE_NO((name[len - 1]) / 4); + else + return FIBRE_NO(126); +} + static int change_fibration(struct inode *inode, reiser4_plugin * plugin, pset_member memb) @@ -161,7 +186,18 @@ fibration_plugin fibration_plugins[LAST_ .linkage = {NULL, NULL} }, .fibre = fibre_ext_3 - } + }, + [FIBRATION_EXT_1234] = { + .h = { + .type_id = REISER4_FIBRATION_PLUGIN_TYPE, + .id = FIBRATION_EXT_1234, + .pops = &fibration_plugin_ops, + .label = "ext-1234", + .desc = "fibrate file by 1, 2, 3 and 4 character extension", + .linkage = {NULL, NULL} + }, + .fibre = fibre_ext_1234 + } }; /* ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [RFC] Smart fibration plugin ext_4321 2016-12-25 0:59 [RFC] Smart fibration plugin ext_4321 Dušan Čolić 2016-12-25 8:51 ` Dušan Čolić @ 2016-12-26 18:47 ` Edward Shishkin 2016-12-26 21:13 ` Dušan Čolić 1 sibling, 1 reply; 15+ messages in thread From: Edward Shishkin @ 2016-12-26 18:47 UTC (permalink / raw) To: Dušan Čolić, reiserfs-devel On 12/25/2016 02:59 AM, Dušan Čolić wrote: > Fibration is a great way to decrease fragmentation and increase throughput. > Currently there are 4 fibration plugins, lex, dot.o, ext_1 and ext_3 > and they all have their upsides and downsides. > > Proposed fibration plugin combines them all so that it combines files > with same extensions for 1, 2. 3 and 4 character extension in groups > and sorts them in same fiber group. > > With this fibration plugin all eg. xvid files would be in same group > in folder on disk sorted alphabetically What application wants all xvid files to be in the same group? Do you have any benchmark numbers which show advantages of the new plugin? Thanks, Edward. > so that we will avoid putting > small files between them and in that way reduce fragmentation. That > group (xvid 4 character extensions) would be among last groups under > one directory so that all small files would be written before it. > > Problem with the attached patch is that currently every fibre value is > defined as u64 (eg. static __u64 fibre_ext_3) but if I understood > correctly comments in kassign.c and fibration.c fibration part of the > key is only 7 bits long. > If that is true how did fibre_ext_3 worked? > > Thanks > > Dushan ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [RFC] Smart fibration plugin ext_4321 2016-12-26 18:47 ` Edward Shishkin @ 2016-12-26 21:13 ` Dušan Čolić 2017-01-06 13:44 ` Edward Shishkin 0 siblings, 1 reply; 15+ messages in thread From: Dušan Čolić @ 2016-12-26 21:13 UTC (permalink / raw) Cc: reiserfs-devel On Mon, Dec 26, 2016 at 7:47 PM, Edward Shishkin <edward.shishkin@gmail.com> wrote: > > > > On 12/25/2016 02:59 AM, Dušan Čolić wrote: >> >> Fibration is a great way to decrease fragmentation and increase throughput. >> Currently there are 4 fibration plugins, lex, dot.o, ext_1 and ext_3 >> and they all have their upsides and downsides. >> >> Proposed fibration plugin combines them all so that it combines files >> with same extensions for 1, 2. 3 and 4 character extension in groups >> and sorts them in same fiber group. >> >> With this fibration plugin all eg. xvid files would be in same group >> in folder on disk sorted alphabetically > > > > What application wants all xvid files to be in the same group? > Do you have any benchmark numbers which show advantages > of the new plugin? > Xvid files are just an example. ext_1234 fibration would be equal to sum of ext_1, ext_2, ext_3, ext_4 and dot_o in one. In currently default plugin (dot_o) we sort all files by name from the start except .o files which we put at the end. So if we had a source directory with .c .h and .o files in it files by extension would be sorted like: chchchchchchchchoooooooooooooo I presumed that in some use cases it is better to have files be sorted ccccccccccchhhhhhhhhhhhhhoooooooooooo Hypothesis is to use the premise that files of same extension are in same order of size to reduce fragmentation. If we group files of same extension in groups in one directory, when we write files of same extension after deletion of some files of one extension their group would be in same order as the deleted file so they would be written in similar place and occupy the 'hole' of similar size. Ofc I am not talking about files of few kB size where Reiser4 is great at packing but about files from few MB to few GB. Eg. directory with mp3 and xvid files. mp3s are on the order of MB and xvid on the order of GB. If we sort them just by name order of xvid and mp3 files in one directory would be random so when deleting the smaller ones we would make random holes (like from mxmxmxxmmmxxxxmxxmmmx to mx xmxx mx xmx mmmx). With grouping of writing where all mp3s would be written first and all xvid after them after some deletions we would have smaller holes grouped first and larger last (like from mmmmmmmmmmmmxxxxxxxxxx to mm m mmm mmxx xxx xxx) but the main thing that after writing we would write mp3s in mp3 holes and xvid in xvid holes ergo. reduce fragmentation (like from mm m mmm mmxx xxx xxx to mmMmMMMmmmXmmxxXxxx xxx) that we would create if we would try to write xvid over mp3 holes. One obvious use case where I hypothesize that this type of fibration is better long term would be directories with content similar to usual Downloads directory, a lot of different types (and siyes) of files that get written and deleted a lot. ext_1234 fibration is the same as dot_o for directories with only one or one and .o file extension. Ofc this is just a hypothesis that I would like to prove with some fragmentation benchmarks but I wanted to hear your thoughts. And while I was looking through the code I found a part that I comprehended, elegant and easy to understand so I wanted to make something so I could learn more. > Thanks, > Edward. > Thank you for your time and effort Dushan > > >> so that we will avoid putting >> small files between them and in that way reduce fragmentation. That >> group (xvid 4 character extensions) would be among last groups under >> one directory so that all small files would be written before it. >> >> Problem with the attached patch is that currently every fibre value is >> defined as u64 (eg. static __u64 fibre_ext_3) but if I understood >> correctly comments in kassign.c and fibration.c fibration part of the >> key is only 7 bits long. >> If that is true how did fibre_ext_3 worked? >> >> Thanks >> >> Dushan > > ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [RFC] Smart fibration plugin ext_4321 2016-12-26 21:13 ` Dušan Čolić @ 2017-01-06 13:44 ` Edward Shishkin 2017-01-06 15:34 ` Dušan Čolić 0 siblings, 1 reply; 15+ messages in thread From: Edward Shishkin @ 2017-01-06 13:44 UTC (permalink / raw) To: Dušan Čolić; +Cc: reiserfs-devel On 12/26/2016 11:13 PM, Dušan Čolić wrote: > On Mon, Dec 26, 2016 at 7:47 PM, Edward Shishkin > <edward.shishkin@gmail.com> wrote: >> >> >> On 12/25/2016 02:59 AM, Dušan Čolić wrote: >>> Fibration is a great way to decrease fragmentation and increase throughput. >>> Currently there are 4 fibration plugins, lex, dot.o, ext_1 and ext_3 >>> and they all have their upsides and downsides. >>> >>> Proposed fibration plugin combines them all so that it combines files >>> with same extensions for 1, 2. 3 and 4 character extension in groups >>> and sorts them in same fiber group. >>> >>> With this fibration plugin all eg. xvid files would be in same group >>> in folder on disk sorted alphabetically >> >> >> What application wants all xvid files to be in the same group? >> Do you have any benchmark numbers which show advantages >> of the new plugin? >> > Xvid files are just an example. > ext_1234 fibration would be equal to sum of ext_1, ext_2, ext_3, ext_4 > and dot_o in one. > > In currently default plugin (dot_o) we sort all files by name from the > start except .o files which we put at the end. > So if we had a source directory with .c .h and .o files in it files by > extension would be sorted like: chchchchchchchchoooooooooooooo > I presumed that in some use cases it is better to have files be sorted > ccccccccccchhhhhhhhhhhhhhoooooooooooo > > Hypothesis is to use the premise that files of same extension are in > same order of size to reduce fragmentation. What kind of fragmentation you are talking about? Internal (which results in "dead" disk space), or external (which results in a lot of "extents")? Edward. > > If we group files of same extension in groups in one directory, when > we write files of same extension after deletion of some files of one > extension their group would be in same order as the deleted file so > they would be written in similar place and occupy the 'hole' of > similar size. > Ofc I am not talking about files of few kB size where Reiser4 is great > at packing but about files from few MB to few GB. > > Eg. directory with mp3 and xvid files. mp3s are on the order of MB and > xvid on the order of GB. If we sort them just by name order of xvid > and mp3 files in one directory would be random so when deleting the > smaller ones we would make random holes (like from > mxmxmxxmmmxxxxmxxmmmx to mx xmxx mx xmx mmmx). > With grouping of writing where all mp3s would be written first and all > xvid after them after some deletions we would have smaller holes > grouped first and larger last (like from mmmmmmmmmmmmxxxxxxxxxx to mm > m mmm mmxx xxx xxx) but the main thing that after writing we would > write mp3s in mp3 holes and xvid in xvid holes ergo. reduce > fragmentation (like from mm m mmm mmxx xxx xxx to > mmMmMMMmmmXmmxxXxxx xxx) that we would create if we would try to write > xvid over mp3 holes. > > One obvious use case where I hypothesize that this type of fibration > is better long term would be directories with content similar to usual > Downloads directory, a lot of different types (and siyes) of files > that get written and deleted a lot. > > ext_1234 fibration is the same as dot_o for directories with only one > or one and .o file extension. > > Ofc this is just a hypothesis that I would like to prove with some > fragmentation benchmarks but I wanted to hear your thoughts. > > And while I was looking through the code I found a part that I > comprehended, elegant and easy to understand so I wanted to make > something so I could learn more. > > >> Thanks, >> Edward. >> > Thank you for your time and effort > > Dushan > > >> >>> so that we will avoid putting >>> small files between them and in that way reduce fragmentation. That >>> group (xvid 4 character extensions) would be among last groups under >>> one directory so that all small files would be written before it. >>> >>> Problem with the attached patch is that currently every fibre value is >>> defined as u64 (eg. static __u64 fibre_ext_3) but if I understood >>> correctly comments in kassign.c and fibration.c fibration part of the >>> key is only 7 bits long. >>> If that is true how did fibre_ext_3 worked? >>> >>> Thanks >>> >>> Dushan >> > -- > To unsubscribe from this list: send the line "unsubscribe reiserfs-devel" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [RFC] Smart fibration plugin ext_4321 2017-01-06 13:44 ` Edward Shishkin @ 2017-01-06 15:34 ` Dušan Čolić 2017-01-06 19:58 ` Edward Shishkin 0 siblings, 1 reply; 15+ messages in thread From: Dušan Čolić @ 2017-01-06 15:34 UTC (permalink / raw) To: Edward Shishkin; +Cc: reiserfs-devel On Fri, Jan 6, 2017 at 2:44 PM, Edward Shishkin <edward.shishkin@gmail.com> wrote: > On 12/26/2016 11:13 PM, Dušan Čolić wrote: >> >> On Mon, Dec 26, 2016 at 7:47 PM, Edward Shishkin >> <edward.shishkin@gmail.com> wrote: >>> >>> >>> >>> On 12/25/2016 02:59 AM, Dušan Čolić wrote: >>>> >>>> Fibration is a great way to decrease fragmentation and increase >>>> throughput. >>>> Currently there are 4 fibration plugins, lex, dot.o, ext_1 and ext_3 >>>> and they all have their upsides and downsides. >>>> >>>> Proposed fibration plugin combines them all so that it combines files >>>> with same extensions for 1, 2. 3 and 4 character extension in groups >>>> and sorts them in same fiber group. >>>> >>>> With this fibration plugin all eg. xvid files would be in same group >>>> in folder on disk sorted alphabetically >>> >>> >>> >>> What application wants all xvid files to be in the same group? >>> Do you have any benchmark numbers which show advantages >>> of the new plugin? >>> >> Xvid files are just an example. >> ext_1234 fibration would be equal to sum of ext_1, ext_2, ext_3, ext_4 >> and dot_o in one. >> >> In currently default plugin (dot_o) we sort all files by name from the >> start except .o files which we put at the end. >> So if we had a source directory with .c .h and .o files in it files by >> extension would be sorted like: chchchchchchchchoooooooooooooo >> I presumed that in some use cases it is better to have files be sorted >> ccccccccccchhhhhhhhhhhhhhoooooooooooo >> >> Hypothesis is to use the premise that files of same extension are in >> same order of size to reduce fragmentation. > > > > What kind of fragmentation you are talking about? > Internal (which results in "dead" disk space), or > external (which results in a lot of "extents")? > External > Edward. > > >> >> If we group files of same extension in groups in one directory, when >> we write files of same extension after deletion of some files of one >> extension their group would be in same order as the deleted file so >> they would be written in similar place and occupy the 'hole' of >> similar size. >> Ofc I am not talking about files of few kB size where Reiser4 is great >> at packing but about files from few MB to few GB. >> >> Eg. directory with mp3 and xvid files. mp3s are on the order of MB and >> xvid on the order of GB. If we sort them just by name order of xvid >> and mp3 files in one directory would be random so when deleting the >> smaller ones we would make random holes (like from >> mxmxmxxmmmxxxxmxxmmmx to mx xmxx mx xmx mmmx). >> With grouping of writing where all mp3s would be written first and all >> xvid after them after some deletions we would have smaller holes >> grouped first and larger last (like from mmmmmmmmmmmmxxxxxxxxxx to mm >> m mmm mmxx xxx xxx) but the main thing that after writing we would >> write mp3s in mp3 holes and xvid in xvid holes ergo. reduce >> fragmentation (like from mm m mmm mmxx xxx xxx to >> mmMmMMMmmmXmmxxXxxx xxx) that we would create if we would try to write >> xvid over mp3 holes. >> >> One obvious use case where I hypothesize that this type of fibration >> is better long term would be directories with content similar to usual >> Downloads directory, a lot of different types (and siyes) of files >> that get written and deleted a lot. >> >> ext_1234 fibration is the same as dot_o for directories with only one >> or one and .o file extension. >> >> Ofc this is just a hypothesis that I would like to prove with some >> fragmentation benchmarks but I wanted to hear your thoughts. >> >> And while I was looking through the code I found a part that I >> comprehended, elegant and easy to understand so I wanted to make >> something so I could learn more. >> >> >>> Thanks, >>> Edward. >>> >> Thank you for your time and effort >> >> Dushan >> >> >>> >>>> so that we will avoid putting >>>> small files between them and in that way reduce fragmentation. That >>>> group (xvid 4 character extensions) would be among last groups under >>>> one directory so that all small files would be written before it. >>>> >>>> Problem with the attached patch is that currently every fibre value is >>>> defined as u64 (eg. static __u64 fibre_ext_3) but if I understood >>>> correctly comments in kassign.c and fibration.c fibration part of the >>>> key is only 7 bits long. >>>> If that is true how did fibre_ext_3 worked? >>>> >>>> Thanks >>>> >>>> Dushan >>> >>> >> -- >> To unsubscribe from this list: send the line "unsubscribe reiserfs-devel" >> in >> the body of a message to majordomo@vger.kernel.org >> More majordomo info at http://vger.kernel.org/majordomo-info.html > > ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [RFC] Smart fibration plugin ext_4321 2017-01-06 15:34 ` Dušan Čolić @ 2017-01-06 19:58 ` Edward Shishkin 2017-01-06 23:09 ` Dušan Čolić 0 siblings, 1 reply; 15+ messages in thread From: Edward Shishkin @ 2017-01-06 19:58 UTC (permalink / raw) To: Dušan Čolić; +Cc: reiserfs-devel On 01/06/2017 05:34 PM, Dušan Čolić wrote: > On Fri, Jan 6, 2017 at 2:44 PM, Edward Shishkin > <edward.shishkin@gmail.com> wrote: >> On 12/26/2016 11:13 PM, Dušan Čolić wrote: >>> On Mon, Dec 26, 2016 at 7:47 PM, Edward Shishkin >>> <edward.shishkin@gmail.com> wrote: >>>> >>>> >>>> On 12/25/2016 02:59 AM, Dušan Čolić wrote: >>>>> Fibration is a great way to decrease fragmentation and increase >>>>> throughput. >>>>> Currently there are 4 fibration plugins, lex, dot.o, ext_1 and ext_3 >>>>> and they all have their upsides and downsides. >>>>> >>>>> Proposed fibration plugin combines them all so that it combines files >>>>> with same extensions for 1, 2. 3 and 4 character extension in groups >>>>> and sorts them in same fiber group. >>>>> >>>>> With this fibration plugin all eg. xvid files would be in same group >>>>> in folder on disk sorted alphabetically >>>> >>>> >>>> What application wants all xvid files to be in the same group? >>>> Do you have any benchmark numbers which show advantages >>>> of the new plugin? >>>> >>> Xvid files are just an example. >>> ext_1234 fibration would be equal to sum of ext_1, ext_2, ext_3, ext_4 >>> and dot_o in one. >>> >>> In currently default plugin (dot_o) we sort all files by name from the >>> start except .o files which we put at the end. >>> So if we had a source directory with .c .h and .o files in it files by >>> extension would be sorted like: chchchchchchchchoooooooooooooo >>> I presumed that in some use cases it is better to have files be sorted >>> ccccccccccchhhhhhhhhhhhhhoooooooooooo >>> >>> Hypothesis is to use the premise that files of same extension are in >>> same order of size to reduce fragmentation. >> >> >> What kind of fragmentation you are talking about? >> Internal (which results in "dead" disk space), or >> external (which results in a lot of "extents")? >> > External > >> Edward. >> >> >>> If we group files of same extension in groups in one directory, when >>> we write files of same extension after deletion of some files of one >>> extension their group would be in same order as the deleted file so >>> they would be written in similar place and occupy the 'hole' of >>> similar size. So "similar" means the same order, that is file sizes can differ in 2 times? TBH, I don't see what can be deduced from this assumption ;) It can happen that new file either doesn't fit to that hole, or occupies too small place, so that next file won't fit to the rest of the hole.. Edward. >>> Ofc I am not talking about files of few kB size where Reiser4 is great >>> at packing but about files from few MB to few GB. >>> >>> Eg. directory with mp3 and xvid files. mp3s are on the order of MB and >>> xvid on the order of GB. If we sort them just by name order of xvid >>> and mp3 files in one directory would be random so when deleting the >>> smaller ones we would make random holes (like from >>> mxmxmxxmmmxxxxmxxmmmx to mx xmxx mx xmx mmmx). >>> With grouping of writing where all mp3s would be written first and all >>> xvid after them after some deletions we would have smaller holes >>> grouped first and larger last (like from mmmmmmmmmmmmxxxxxxxxxx to mm >>> m mmm mmxx xxx xxx) but the main thing that after writing we would >>> write mp3s in mp3 holes and xvid in xvid holes ergo. reduce >>> fragmentation (like from mm m mmm mmxx xxx xxx to >>> mmMmMMMmmmXmmxxXxxx xxx) that we would create if we would try to write >>> xvid over mp3 holes. >>> >>> One obvious use case where I hypothesize that this type of fibration >>> is better long term would be directories with content similar to usual >>> Downloads directory, a lot of different types (and siyes) of files >>> that get written and deleted a lot. >>> >>> ext_1234 fibration is the same as dot_o for directories with only one >>> or one and .o file extension. >>> >>> Ofc this is just a hypothesis that I would like to prove with some >>> fragmentation benchmarks but I wanted to hear your thoughts. >>> >>> And while I was looking through the code I found a part that I >>> comprehended, elegant and easy to understand so I wanted to make >>> something so I could learn more. >>> >>> >>>> Thanks, >>>> Edward. >>>> >>> Thank you for your time and effort >>> >>> Dushan >>> >>> >>>>> so that we will avoid putting >>>>> small files between them and in that way reduce fragmentation. That >>>>> group (xvid 4 character extensions) would be among last groups under >>>>> one directory so that all small files would be written before it. >>>>> >>>>> Problem with the attached patch is that currently every fibre value is >>>>> defined as u64 (eg. static __u64 fibre_ext_3) but if I understood >>>>> correctly comments in kassign.c and fibration.c fibration part of the >>>>> key is only 7 bits long. >>>>> If that is true how did fibre_ext_3 worked? >>>>> >>>>> Thanks >>>>> >>>>> Dushan >>>> >>> -- >>> To unsubscribe from this list: send the line "unsubscribe reiserfs-devel" >>> in >>> the body of a message to majordomo@vger.kernel.org >>> More majordomo info at http://vger.kernel.org/majordomo-info.html >> ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [RFC] Smart fibration plugin ext_4321 2017-01-06 19:58 ` Edward Shishkin @ 2017-01-06 23:09 ` Dušan Čolić 2017-01-06 23:05 ` Edward Shishkin 0 siblings, 1 reply; 15+ messages in thread From: Dušan Čolić @ 2017-01-06 23:09 UTC (permalink / raw) To: Edward Shishkin; +Cc: reiserfs-devel On Fri, Jan 6, 2017 at 8:58 PM, Edward Shishkin <edward.shishkin@gmail.com> wrote: > > > On 01/06/2017 05:34 PM, Dušan Čolić wrote: >> >> On Fri, Jan 6, 2017 at 2:44 PM, Edward Shishkin >> <edward.shishkin@gmail.com> wrote: >>> >>> On 12/26/2016 11:13 PM, Dušan Čolić wrote: >>>> >>>> On Mon, Dec 26, 2016 at 7:47 PM, Edward Shishkin >>>> <edward.shishkin@gmail.com> wrote: >>>>> >>>>> >>>>> >>>>> On 12/25/2016 02:59 AM, Dušan Čolić wrote: >>>>>> >>>>>> Fibration is a great way to decrease fragmentation and increase >>>>>> throughput. >>>>>> Currently there are 4 fibration plugins, lex, dot.o, ext_1 and ext_3 >>>>>> and they all have their upsides and downsides. >>>>>> >>>>>> Proposed fibration plugin combines them all so that it combines files >>>>>> with same extensions for 1, 2. 3 and 4 character extension in groups >>>>>> and sorts them in same fiber group. >>>>>> >>>>>> With this fibration plugin all eg. xvid files would be in same group >>>>>> in folder on disk sorted alphabetically >>>>> >>>>> >>>>> >>>>> What application wants all xvid files to be in the same group? >>>>> Do you have any benchmark numbers which show advantages >>>>> of the new plugin? >>>>> >>>> Xvid files are just an example. >>>> ext_1234 fibration would be equal to sum of ext_1, ext_2, ext_3, ext_4 >>>> and dot_o in one. >>>> >>>> In currently default plugin (dot_o) we sort all files by name from the >>>> start except .o files which we put at the end. >>>> So if we had a source directory with .c .h and .o files in it files by >>>> extension would be sorted like: chchchchchchchchoooooooooooooo >>>> I presumed that in some use cases it is better to have files be sorted >>>> ccccccccccchhhhhhhhhhhhhhoooooooooooo >>>> >>>> Hypothesis is to use the premise that files of same extension are in >>>> same order of size to reduce fragmentation. >>> >>> >>> >>> What kind of fragmentation you are talking about? >>> Internal (which results in "dead" disk space), or >>> external (which results in a lot of "extents")? >>> >> External >> >>> Edward. >>> >>> >>>> If we group files of same extension in groups in one directory, when >>>> we write files of same extension after deletion of some files of one >>>> extension their group would be in same order as the deleted file so >>>> they would be written in similar place and occupy the 'hole' of >>>> similar size. > > > > So "similar" means the same order, that is file sizes can differ in 2 times? > TBH, I don't see what can be deduced from this assumption ;) > It can happen that new file either doesn't fit to that hole, or occupies too > small place, so that next file won't fit to the rest of the hole.. > OFC we can never guarantee that the new file completely fits the hole (especially as we go through compression in next layer) but for both smaller and larger file than a hole we would have higher probability for less extents for situations with 2 or more types of files in a directory. For one type of file in a directory behavior would be the same as dot_o and ext_1 plugin. > Edward. > > > >>>> Ofc I am not talking about files of few kB size where Reiser4 is great >>>> at packing but about files from few MB to few GB. >>>> >>>> Eg. directory with mp3 and xvid files. mp3s are on the order of MB and >>>> xvid on the order of GB. If we sort them just by name order of xvid >>>> and mp3 files in one directory would be random so when deleting the >>>> smaller ones we would make random holes (like from >>>> mxmxmxxmmmxxxxmxxmmmx to mx xmxx mx xmx mmmx). >>>> With grouping of writing where all mp3s would be written first and all >>>> xvid after them after some deletions we would have smaller holes >>>> grouped first and larger last (like from mmmmmmmmmmmmxxxxxxxxxx to mm >>>> m mmm mmxx xxx xxx) but the main thing that after writing we would >>>> write mp3s in mp3 holes and xvid in xvid holes ergo. reduce >>>> fragmentation (like from mm m mmm mmxx xxx xxx to >>>> mmMmMMMmmmXmmxxXxxx xxx) that we would create if we would try to write >>>> xvid over mp3 holes. >>>> >>>> One obvious use case where I hypothesize that this type of fibration >>>> is better long term would be directories with content similar to usual >>>> Downloads directory, a lot of different types (and siyes) of files >>>> that get written and deleted a lot. >>>> >>>> ext_1234 fibration is the same as dot_o for directories with only one >>>> or one and .o file extension. >>>> >>>> Ofc this is just a hypothesis that I would like to prove with some >>>> fragmentation benchmarks but I wanted to hear your thoughts. >>>> >>>> And while I was looking through the code I found a part that I >>>> comprehended, elegant and easy to understand so I wanted to make >>>> something so I could learn more. >>>> >>>> >>>>> Thanks, >>>>> Edward. >>>>> >>>> Thank you for your time and effort >>>> >>>> Dushan >>>> >>>> >>>>>> so that we will avoid putting >>>>>> small files between them and in that way reduce fragmentation. That >>>>>> group (xvid 4 character extensions) would be among last groups under >>>>>> one directory so that all small files would be written before it. >>>>>> >>>>>> Problem with the attached patch is that currently every fibre value is >>>>>> defined as u64 (eg. static __u64 fibre_ext_3) but if I understood >>>>>> correctly comments in kassign.c and fibration.c fibration part of the >>>>>> key is only 7 bits long. >>>>>> If that is true how did fibre_ext_3 worked? >>>>>> >>>>>> Thanks >>>>>> >>>>>> Dushan >>>>> >>>>> >>>> -- >>>> To unsubscribe from this list: send the line "unsubscribe >>>> reiserfs-devel" >>>> in >>>> the body of a message to majordomo@vger.kernel.org >>>> More majordomo info at http://vger.kernel.org/majordomo-info.html >>> >>> > ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [RFC] Smart fibration plugin ext_4321 2017-01-06 23:09 ` Dušan Čolić @ 2017-01-06 23:05 ` Edward Shishkin 2017-01-07 8:15 ` Dušan Čolić 0 siblings, 1 reply; 15+ messages in thread From: Edward Shishkin @ 2017-01-06 23:05 UTC (permalink / raw) To: Dušan Čolić; +Cc: reiserfs-devel On 01/07/2017 01:09 AM, Dušan Čolić wrote: > On Fri, Jan 6, 2017 at 8:58 PM, Edward Shishkin > <edward.shishkin@gmail.com> wrote: >> >> On 01/06/2017 05:34 PM, Dušan Čolić wrote: >>> On Fri, Jan 6, 2017 at 2:44 PM, Edward Shishkin >>> <edward.shishkin@gmail.com> wrote: >>>> On 12/26/2016 11:13 PM, Dušan Čolić wrote: >>>>> On Mon, Dec 26, 2016 at 7:47 PM, Edward Shishkin >>>>> <edward.shishkin@gmail.com> wrote: >>>>>> >>>>>> >>>>>> On 12/25/2016 02:59 AM, Dušan Čolić wrote: >>>>>>> Fibration is a great way to decrease fragmentation and increase >>>>>>> throughput. >>>>>>> Currently there are 4 fibration plugins, lex, dot.o, ext_1 and ext_3 >>>>>>> and they all have their upsides and downsides. >>>>>>> >>>>>>> Proposed fibration plugin combines them all so that it combines files >>>>>>> with same extensions for 1, 2. 3 and 4 character extension in groups >>>>>>> and sorts them in same fiber group. >>>>>>> >>>>>>> With this fibration plugin all eg. xvid files would be in same group >>>>>>> in folder on disk sorted alphabetically >>>>>> >>>>>> >>>>>> What application wants all xvid files to be in the same group? >>>>>> Do you have any benchmark numbers which show advantages >>>>>> of the new plugin? >>>>>> >>>>> Xvid files are just an example. >>>>> ext_1234 fibration would be equal to sum of ext_1, ext_2, ext_3, ext_4 >>>>> and dot_o in one. >>>>> >>>>> In currently default plugin (dot_o) we sort all files by name from the >>>>> start except .o files which we put at the end. >>>>> So if we had a source directory with .c .h and .o files in it files by >>>>> extension would be sorted like: chchchchchchchchoooooooooooooo >>>>> I presumed that in some use cases it is better to have files be sorted >>>>> ccccccccccchhhhhhhhhhhhhhoooooooooooo >>>>> >>>>> Hypothesis is to use the premise that files of same extension are in >>>>> same order of size to reduce fragmentation. >>>> >>>> >>>> What kind of fragmentation you are talking about? >>>> Internal (which results in "dead" disk space), or >>>> external (which results in a lot of "extents")? >>>> >>> External >>> >>>> Edward. >>>> >>>> >>>>> If we group files of same extension in groups in one directory, when >>>>> we write files of same extension after deletion of some files of one >>>>> extension their group would be in same order as the deleted file so >>>>> they would be written in similar place and occupy the 'hole' of >>>>> similar size. >> >> >> So "similar" means the same order, that is file sizes can differ in 2 times? >> TBH, I don't see what can be deduced from this assumption ;) >> It can happen that new file either doesn't fit to that hole, or occupies too >> small place, so that next file won't fit to the rest of the hole.. >> > OFC we can never guarantee that the new file completely fits the hole > (especially as we go through compression in next layer) but for both > smaller and larger file than a hole we would have higher probability > for less extents for situations with 2 or more types of files in a > directory. For one type of file in a directory behavior would be the > same as dot_o and ext_1 plugin. I should upset you: fibration plugins are about mapping of a semantic tree to the storage tree. Simply speaking, they manage mapping object-> key, which has nothing common with real locations on disk. This is a block allocator, who assigns disk addresses to nodes of the storage tree (right before writing them to disk at flush time). And I am sure that block allocator doesn't care about fibration groups. I strongly not recommend you to experiment with block allocator. Simply because I know how many people killed a lot of time without results. Edward. ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [RFC] Smart fibration plugin ext_4321 2017-01-06 23:05 ` Edward Shishkin @ 2017-01-07 8:15 ` Dušan Čolić 2017-01-07 7:58 ` Edward Shishkin 0 siblings, 1 reply; 15+ messages in thread From: Dušan Čolić @ 2017-01-07 8:15 UTC (permalink / raw) To: Edward Shishkin; +Cc: reiserfs-devel On Sat, Jan 7, 2017 at 12:05 AM, Edward Shishkin <edward.shishkin@gmail.com> wrote: > On 01/07/2017 01:09 AM, Dušan Čolić wrote: >> >> On Fri, Jan 6, 2017 at 8:58 PM, Edward Shishkin >> <edward.shishkin@gmail.com> wrote: >>> >>> >>> On 01/06/2017 05:34 PM, Dušan Čolić wrote: >>>> >>>> On Fri, Jan 6, 2017 at 2:44 PM, Edward Shishkin >>>> <edward.shishkin@gmail.com> wrote: >>>>> >>>>> On 12/26/2016 11:13 PM, Dušan Čolić wrote: >>>>>> >>>>>> On Mon, Dec 26, 2016 at 7:47 PM, Edward Shishkin >>>>>> <edward.shishkin@gmail.com> wrote: >>>>>>> >>>>>>> >>>>>>> >>>>>>> On 12/25/2016 02:59 AM, Dušan Čolić wrote: >>>>>>>> >>>>>>>> Fibration is a great way to decrease fragmentation and increase >>>>>>>> throughput. >>>>>>>> Currently there are 4 fibration plugins, lex, dot.o, ext_1 and ext_3 >>>>>>>> and they all have their upsides and downsides. >>>>>>>> >>>>>>>> Proposed fibration plugin combines them all so that it combines >>>>>>>> files >>>>>>>> with same extensions for 1, 2. 3 and 4 character extension in >>>>>>>> groups >>>>>>>> and sorts them in same fiber group. >>>>>>>> >>>>>>>> With this fibration plugin all eg. xvid files would be in same group >>>>>>>> in folder on disk sorted alphabetically >>>>>>> >>>>>>> >>>>>>> >>>>>>> What application wants all xvid files to be in the same group? >>>>>>> Do you have any benchmark numbers which show advantages >>>>>>> of the new plugin? >>>>>>> >>>>>> Xvid files are just an example. >>>>>> ext_1234 fibration would be equal to sum of ext_1, ext_2, ext_3, ext_4 >>>>>> and dot_o in one. >>>>>> >>>>>> In currently default plugin (dot_o) we sort all files by name from the >>>>>> start except .o files which we put at the end. >>>>>> So if we had a source directory with .c .h and .o files in it files by >>>>>> extension would be sorted like: chchchchchchchchoooooooooooooo >>>>>> I presumed that in some use cases it is better to have files be sorted >>>>>> ccccccccccchhhhhhhhhhhhhhoooooooooooo >>>>>> >>>>>> Hypothesis is to use the premise that files of same extension are in >>>>>> same order of size to reduce fragmentation. >>>>> >>>>> >>>>> >>>>> What kind of fragmentation you are talking about? >>>>> Internal (which results in "dead" disk space), or >>>>> external (which results in a lot of "extents")? >>>>> >>>> External >>>> >>>>> Edward. >>>>> >>>>> >>>>>> If we group files of same extension in groups in one directory, when >>>>>> we write files of same extension after deletion of some files of one >>>>>> extension their group would be in same order as the deleted file so >>>>>> they would be written in similar place and occupy the 'hole' of >>>>>> similar size. >>> >>> >>> >>> So "similar" means the same order, that is file sizes can differ in 2 >>> times? >>> TBH, I don't see what can be deduced from this assumption ;) >>> It can happen that new file either doesn't fit to that hole, or occupies >>> too >>> small place, so that next file won't fit to the rest of the hole.. >>> >> OFC we can never guarantee that the new file completely fits the hole >> (especially as we go through compression in next layer) but for both >> smaller and larger file than a hole we would have higher probability >> for less extents for situations with 2 or more types of files in a >> directory. For one type of file in a directory behavior would be the >> same as dot_o and ext_1 plugin. > > > > I should upset you: fibration plugins are about mapping of a semantic > tree to the storage tree. Simply speaking, they manage mapping > object-> key, which has nothing common with real locations on disk. > > This is a block allocator, who assigns disk addresses to nodes of the > storage tree (right before writing them to disk at flush time). > And I am sure that block allocator doesn't care about fibration groups. > > I strongly not recommend you to experiment with block allocator. > Simply because I know how many people killed a lot of time without > results. Then what is this comment in the beginning of kassign.c about: * In reiser4 every piece of file system data and meta-data has a key. Keys * are used to store information in and retrieve it from reiser4 internal * tree. In addition to this, keys define _ordering_ of all file system * information: things having close keys are placed into the same or * neighboring (in the tree order) nodes of the tree. As our block allocator * tries to respect tree order (see flush.c), keys also define order in which * things are laid out on the disk, and hence, affect performance directly. > > Edward. > ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [RFC] Smart fibration plugin ext_4321 2017-01-07 8:15 ` Dušan Čolić @ 2017-01-07 7:58 ` Edward Shishkin 2017-01-07 17:10 ` Dušan Čolić 0 siblings, 1 reply; 15+ messages in thread From: Edward Shishkin @ 2017-01-07 7:58 UTC (permalink / raw) To: Dušan Čolić; +Cc: reiserfs-devel On 01/07/2017 10:15 AM, Dušan Čolić wrote: > On Sat, Jan 7, 2017 at 12:05 AM, Edward Shishkin > <edward.shishkin@gmail.com> wrote: >> On 01/07/2017 01:09 AM, Dušan Čolić wrote: >>> On Fri, Jan 6, 2017 at 8:58 PM, Edward Shishkin >>> <edward.shishkin@gmail.com> wrote: >>>> >>>> On 01/06/2017 05:34 PM, Dušan Čolić wrote: >>>>> On Fri, Jan 6, 2017 at 2:44 PM, Edward Shishkin >>>>> <edward.shishkin@gmail.com> wrote: >>>>>> On 12/26/2016 11:13 PM, Dušan Čolić wrote: >>>>>>> On Mon, Dec 26, 2016 at 7:47 PM, Edward Shishkin >>>>>>> <edward.shishkin@gmail.com> wrote: >>>>>>>> >>>>>>>> >>>>>>>> On 12/25/2016 02:59 AM, Dušan Čolić wrote: >>>>>>>>> Fibration is a great way to decrease fragmentation and increase >>>>>>>>> throughput. >>>>>>>>> Currently there are 4 fibration plugins, lex, dot.o, ext_1 and ext_3 >>>>>>>>> and they all have their upsides and downsides. >>>>>>>>> >>>>>>>>> Proposed fibration plugin combines them all so that it combines >>>>>>>>> files >>>>>>>>> with same extensions for 1, 2. 3 and 4 character extension in >>>>>>>>> groups >>>>>>>>> and sorts them in same fiber group. >>>>>>>>> >>>>>>>>> With this fibration plugin all eg. xvid files would be in same group >>>>>>>>> in folder on disk sorted alphabetically >>>>>>>> >>>>>>>> >>>>>>>> What application wants all xvid files to be in the same group? >>>>>>>> Do you have any benchmark numbers which show advantages >>>>>>>> of the new plugin? >>>>>>>> >>>>>>> Xvid files are just an example. >>>>>>> ext_1234 fibration would be equal to sum of ext_1, ext_2, ext_3, ext_4 >>>>>>> and dot_o in one. >>>>>>> >>>>>>> In currently default plugin (dot_o) we sort all files by name from the >>>>>>> start except .o files which we put at the end. >>>>>>> So if we had a source directory with .c .h and .o files in it files by >>>>>>> extension would be sorted like: chchchchchchchchoooooooooooooo >>>>>>> I presumed that in some use cases it is better to have files be sorted >>>>>>> ccccccccccchhhhhhhhhhhhhhoooooooooooo >>>>>>> >>>>>>> Hypothesis is to use the premise that files of same extension are in >>>>>>> same order of size to reduce fragmentation. >>>>>> >>>>>> >>>>>> What kind of fragmentation you are talking about? >>>>>> Internal (which results in "dead" disk space), or >>>>>> external (which results in a lot of "extents")? >>>>>> >>>>> External >>>>> >>>>>> Edward. >>>>>> >>>>>> >>>>>>> If we group files of same extension in groups in one directory, when >>>>>>> we write files of same extension after deletion of some files of one >>>>>>> extension their group would be in same order as the deleted file so >>>>>>> they would be written in similar place and occupy the 'hole' of >>>>>>> similar size. >>>> >>>> >>>> So "similar" means the same order, that is file sizes can differ in 2 >>>> times? >>>> TBH, I don't see what can be deduced from this assumption ;) >>>> It can happen that new file either doesn't fit to that hole, or occupies >>>> too >>>> small place, so that next file won't fit to the rest of the hole.. >>>> >>> OFC we can never guarantee that the new file completely fits the hole >>> (especially as we go through compression in next layer) but for both >>> smaller and larger file than a hole we would have higher probability >>> for less extents for situations with 2 or more types of files in a >>> directory. For one type of file in a directory behavior would be the >>> same as dot_o and ext_1 plugin. >> >> >> I should upset you: fibration plugins are about mapping of a semantic >> tree to the storage tree. Simply speaking, they manage mapping >> object-> key, which has nothing common with real locations on diТак ты уже не ищешь? sk. >> >> This is a block allocator, who assigns disk addresses to nodes of the >> storage tree (right before writing them to disk at flush time). >> And I am sure that block allocator doesn't care about fibration groups. >> >> I strongly not recommend you to experiment with block allocator. >> Simply because I know how many people killed a lot of time without >> results. > Then what is this comment in the beginning of kassign.c about: > > > * In reiser4 every piece of file system data and meta-data has a key. Keys > * are used to store information in and retrieve it from reiser4 internal > * tree. In addition to this, keys define _ordering_ of all file system > * information: things having close keys are placed into the same or > * neighboring (in the tree order) nodes of the tree. As our block allocator > * tries to respect tree order (see flush.c), keys also define order in which > * things are laid out on the disk, and hence, affect performance directly. I can not find where in the code block allocator respects key ordering. Once you find it, then let me know.. Thanks, Edward. ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [RFC] Smart fibration plugin ext_4321 2017-01-07 7:58 ` Edward Shishkin @ 2017-01-07 17:10 ` Dušan Čolić 2017-01-07 17:56 ` Edward Shishkin 0 siblings, 1 reply; 15+ messages in thread From: Dušan Čolić @ 2017-01-07 17:10 UTC (permalink / raw) To: Edward Shishkin; +Cc: reiserfs-devel On Sat, Jan 7, 2017 at 8:58 AM, Edward Shishkin <edward.shishkin@gmail.com> wrote: > > > On 01/07/2017 10:15 AM, Dušan Čolić wrote: >> >> On Sat, Jan 7, 2017 at 12:05 AM, Edward Shishkin >> <edward.shishkin@gmail.com> wrote: >>> >>> On 01/07/2017 01:09 AM, Dušan Čolić wrote: >>>> >>>> On Fri, Jan 6, 2017 at 8:58 PM, Edward Shishkin >>>> <edward.shishkin@gmail.com> wrote: >>>>> >>>>> >>>>> On 01/06/2017 05:34 PM, Dušan Čolić wrote: >>>>>> >>>>>> On Fri, Jan 6, 2017 at 2:44 PM, Edward Shishkin >>>>>> <edward.shishkin@gmail.com> wrote: >>>>>>> >>>>>>> On 12/26/2016 11:13 PM, Dušan Čolić wrote: >>>>>>>> >>>>>>>> On Mon, Dec 26, 2016 at 7:47 PM, Edward Shishkin >>>>>>>> <edward.shishkin@gmail.com> wrote: >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> On 12/25/2016 02:59 AM, Dušan Čolić wrote: >>>>>>>>>> >>>>>>>>>> Fibration is a great way to decrease fragmentation and increase >>>>>>>>>> throughput. >>>>>>>>>> Currently there are 4 fibration plugins, lex, dot.o, ext_1 and >>>>>>>>>> ext_3 >>>>>>>>>> and they all have their upsides and downsides. >>>>>>>>>> >>>>>>>>>> Proposed fibration plugin combines them all so that it combines >>>>>>>>>> files >>>>>>>>>> with same extensions for 1, 2. 3 and 4 character extension in >>>>>>>>>> groups >>>>>>>>>> and sorts them in same fiber group. >>>>>>>>>> >>>>>>>>>> With this fibration plugin all eg. xvid files would be in same >>>>>>>>>> group >>>>>>>>>> in folder on disk sorted alphabetically >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> What application wants all xvid files to be in the same group? >>>>>>>>> Do you have any benchmark numbers which show advantages >>>>>>>>> of the new plugin? >>>>>>>>> >>>>>>>> Xvid files are just an example. >>>>>>>> ext_1234 fibration would be equal to sum of ext_1, ext_2, ext_3, >>>>>>>> ext_4 >>>>>>>> and dot_o in one. >>>>>>>> >>>>>>>> In currently default plugin (dot_o) we sort all files by name from >>>>>>>> the >>>>>>>> start except .o files which we put at the end. >>>>>>>> So if we had a source directory with .c .h and .o files in it files >>>>>>>> by >>>>>>>> extension would be sorted like: chchchchchchchchoooooooooooooo >>>>>>>> I presumed that in some use cases it is better to have files be >>>>>>>> sorted >>>>>>>> ccccccccccchhhhhhhhhhhhhhoooooooooooo >>>>>>>> >>>>>>>> Hypothesis is to use the premise that files of same extension are in >>>>>>>> same order of size to reduce fragmentation. >>>>>>> >>>>>>> >>>>>>> >>>>>>> What kind of fragmentation you are talking about? >>>>>>> Internal (which results in "dead" disk space), or >>>>>>> external (which results in a lot of "extents")? >>>>>>> >>>>>> External >>>>>> >>>>>>> Edward. >>>>>>> >>>>>>> >>>>>>>> If we group files of same extension in groups in one directory, when >>>>>>>> we write files of same extension after deletion of some files of one >>>>>>>> extension their group would be in same order as the deleted file so >>>>>>>> they would be written in similar place and occupy the 'hole' of >>>>>>>> similar size. >>>>> >>>>> >>>>> >>>>> So "similar" means the same order, that is file sizes can differ in 2 >>>>> times? >>>>> TBH, I don't see what can be deduced from this assumption ;) >>>>> It can happen that new file either doesn't fit to that hole, or >>>>> occupies >>>>> too >>>>> small place, so that next file won't fit to the rest of the hole.. >>>>> >>>> OFC we can never guarantee that the new file completely fits the hole >>>> (especially as we go through compression in next layer) but for both >>>> smaller and larger file than a hole we would have higher probability >>>> for less extents for situations with 2 or more types of files in a >>>> directory. For one type of file in a directory behavior would be the >>>> same as dot_o and ext_1 plugin. >>> >>> >>> >>> I should upset you: fibration plugins are about mapping of a semantic >>> tree to the storage tree. Simply speaking, they manage mapping >>> object-> key, which has nothing common with real locations on diТак ты >>> уже не ищешь? sk. >>> >>> This is a block allocator, who assigns disk addresses to nodes of the >>> storage tree (right before writing them to disk at flush time). >>> And I am sure that block allocator doesn't care about fibration groups. >>> >>> I strongly not recommend you to experiment with block allocator. >>> Simply because I know how many people killed a lot of time without >>> results. >> >> Then what is this comment in the beginning of kassign.c about: >> >> >> * In reiser4 every piece of file system data and meta-data has a key. Keys >> * are used to store information in and retrieve it from reiser4 internal >> * tree. In addition to this, keys define _ordering_ of all file system >> * information: things having close keys are placed into the same or >> * neighboring (in the tree order) nodes of the tree. As our block >> allocator >> * tries to respect tree order (see flush.c), keys also define order in >> which >> * things are laid out on the disk, and hence, affect performance directly. > > > I can not find where in the code block allocator respects key ordering. > Once you find it, then let me know.. > Let me prove it in a way that is possible for me without investing years in learning R4 internals ;) krshina3 test # mkfs.reiser4 -o create=reg40,fibration=ext_1_fibre /dev/md123 krshina3 test # ls -la /home/dusan/test/ total 261 drwxr-xr-x 2 root root 6 Jan 7 17:51 . drwxr-xr-x 46 dusan dusan 73 Jan 7 17:48 .. -rw-r--r-- 1 root root 4096 Jan 7 17:49 1.a -rw-r--r-- 1 root root 8192 Jan 7 17:49 2.b -rw-r--r-- 1 root root 12288 Jan 7 17:50 3.a -rw-r--r-- 1 root root 16384 Jan 7 17:51 4.b krshina3 test # mount /dev/md123 /mnt/test krshina3 test # cp /home/dusan/test/* /mnt/test krshina3 test # umount /dev/md123 krshina3 test # debugfs.reiser4 -t /dev/md123 debugfs.reiser4 1.1.0 Format release: 4.0.1 Copyright (C) 2001-2005 by Hans Reiser, licensing governed by reiser4progs/COPYING. NODE (25) LEVEL=2 ITEMS=11 SPACE=3562 MKFS ID=0x51a268e2 FLUSH=0x0 #0 NPTR (nodeptr40): [29:1(SD):0:2a:0] OFF=28, LEN=8, flags=0x0 [24] ------------------------------------------------------------------------------ #1 NPTR (nodeptr40): [2a:4(FB):c2312e6100000000:10000:c6e] OFF=36, LEN=8, flags=0x0 [26] ------------------------------------------------------------------------------ #2 NPTR (nodeptr40): [2a:4(FB):c2332e6100000000:10002:c06] OFF=44, LEN=8, flags=0x0 [27] ------------------------------------------------------------------------------ #3 NPTR (nodeptr40): [2a:4(FB):c2332e6100000000:10002:1bc4] OFF=52, LEN=8, flags=0x0 [28] ------------------------------------------------------------------------------ #4 NPTR (nodeptr40): [2a:4(FB):c2332e6100000000:10002:2b82] OFF=60, LEN=8, flags=0x0 [29] ------------------------------------------------------------------------------ #5 NPTR (nodeptr40): [2a:4(FB):c4322e6200000000:10001:b1a] OFF=68, LEN=8, flags=0x0 [30] ------------------------------------------------------------------------------ #6 NPTR (nodeptr40): [2a:4(FB):c4322e6200000000:10001:1ad8] OFF=76, LEN=8, flags=0x0 [31] ------------------------------------------------------------------------------ #7 NPTR (nodeptr40): [2a:4(FB):c4342e6200000000:10003:a70] OFF=84, LEN=8, flags=0x0 [32] ------------------------------------------------------------------------------ #8 NPTR (nodeptr40): [2a:4(FB):c4342e6200000000:10003:1a2e] OFF=92, LEN=8, flags=0x0 [33] ------------------------------------------------------------------------------ #9 NPTR (nodeptr40): [2a:4(FB):c4342e6200000000:10003:29ec] OFF=100, LEN=8, flags=0x0 [34] ------------------------------------------------------------------------------ #10 NPTR (nodeptr40): [2a:4(FB):c4342e6200000000:10003:39aa] OFF=108, LEN=8, flags=0x0 [35] ============================================================================== NODE (24) LEVEL=1 ITEMS=7 SPACE=0 MKFS ID=0x51a268e2 FLUSH=0x0 #0 SD (stat40): [29:1(SD):0:2a:0] OFF=28, LEN=94, flags=0x0 exts: 3 mask: 0x13 plugin: sdext_lw offset: 2 len: 14 mode: drwxr-xr-x nlink: 3 size: 6 plugin: sdext_unix offset: 16 len: 28 uid: 0 gid: 0 atime: Sat Jan 7 17:59:37 2017 mtime: Sat Jan 7 18:03:59 2017 ctime: Sat Jan 7 18:03:59 2017 rdev: 300 bytes: 300 plugin: sdext_plugin_set offset: 44 len: 50 Pset count: 12 permission : id = 0 formatting : id = 2 (smart) hash : id = 1 (r5_hash) fibration : id = 2 (ext_1_fibre) statdata : id = 0 (stat40) diritem : id = 2 (cde40) crypto : id = 0 digest : id = 0 compress : id = 0 (lzo1) compressMode : id = 4 (conv) cluster : id = 0 (64K) create : id = 0 (reg40) ------------------------------------------------------------------------------ #1 DIRITEM (cde40): [2a:0(NAME):0:0:0] OFF=122, LEN=302, flags=0x0 NR(6) NAME OFFSET HASH SDKEY 0 . 158 0000000000000000:0000000000000000 0000291:000002a 1 .. 182 0000000000000000:0000000000000000 0000291:000002a 2 1.a 206 0000000000000000:0000000000000000 00002a1:0010000 3 3.a 230 0000000000000000:0000000000000000 00002a1:0010002 4 2.b 254 0000000000000000:0000000000000000 00002a1:0010001 5 4.b 278 0000000000000000:0000000000000000 00002a1:0010003 ------------------------------------------------------------------------------ #2 SD (stat40): [2a:1(SD):c2312e6100000000:10000:0] OFF=424, LEN=56, flags=0x0 exts: 3 mask: 0x7 plugin: sdext_lw offset: 2 len: 14 mode: -rw-r--r-- nlink: 1 size: 4096 plugin: sdext_unix offset: 16 len: 28 uid: 0 gid: 0 atime: Sat Jan 7 18:03:59 2017 mtime: Sat Jan 7 18:03:59 2017 ctime: Sat Jan 7 18:03:59 2017 rdev: 4096 bytes: 4096 plugin: sdext_lt offset: 44 len: 12 atime: 652286102 mtime: 652286102 ctime: 652286102 ------------------------------------------------------------------------------ #3 SD (stat40): [2a:1(SD):c2332e6100000000:10002:0] OFF=480, LEN=56, flags=0x0 exts: 3 mask: 0x7 plugin: sdext_lw offset: 2 len: 14 mode: -rw-r--r-- nlink: 1 size: 12288 plugin: sdext_unix offset: 16 len: 28 uid: 0 gid: 0 atime: Sat Jan 7 18:03:59 2017 mtime: Sat Jan 7 18:03:59 2017 ctime: Sat Jan 7 18:03:59 2017 rdev: 12288 bytes: 12288 plugin: sdext_lt offset: 44 len: 12 atime: 656286256 mtime: 656286256 ctime: 656286256 ------------------------------------------------------------------------------ #4 SD (stat40): [2a:1(SD):c4322e6200000000:10001:0] OFF=536, LEN=56, flags=0x0 exts: 3 mask: 0x7 plugin: sdext_lw offset: 2 len: 14 mode: -rw-r--r-- nlink: 1 size: 8192 plugin: sdext_unix offset: 16 len: 28 uid: 0 gid: 0 atime: Sat Jan 7 18:03:59 2017 mtime: Sat Jan 7 18:03:59 2017 ctime: Sat Jan 7 18:03:59 2017 rdev: 8192 bytes: 8192 plugin: sdext_lt offset: 44 len: 12 atime: 652286102 mtime: 656286256 ctime: 656286256 ------------------------------------------------------------------------------ #5 SD (stat40): [2a:1(SD):c4342e6200000000:10003:0] OFF=592, LEN=56, flags=0x0 exts: 3 mask: 0x7 plugin: sdext_lw offset: 2 len: 14 mode: -rw-r--r-- nlink: 1 size: 16384 plugin: sdext_unix offset: 16 len: 28 uid: 0 gid: 0 atime: Sat Jan 7 18:03:59 2017 mtime: Sat Jan 7 18:03:59 2017 ctime: Sat Jan 7 18:03:59 2017 rdev: 16384 bytes: 16384 plugin: sdext_lt offset: 44 len: 12 atime: 656286256 mtime: 656286256 ctime: 656286256 ------------------------------------------------------------------------------ #6 TAIL (plain40): [2a:4(FB):c2312e6100000000:10000:0] OFF=648, LEN=3182, flags=0x0 ============================================================================== NODE (26) LEVEL=1 ITEMS=2 SPACE=0 MKFS ID=0x51a268e2 FLUSH=0x0 #0 TAIL (plain40): [2a:4(FB):c2312e6100000000:10000:c6e] OFF=28, LEN=914, flags=0x0 ------------------------------------------------------------------------------ #1 TAIL (plain40): [2a:4(FB):c2332e6100000000:10002:0] OFF=942, LEN=3078, flags=0x0 ============================================================================== NODE (27) LEVEL=1 ITEMS=1 SPACE=0 MKFS ID=0x51a268e2 FLUSH=0x0 #0 TAIL (plain40): [2a:4(FB):c2332e6100000000:10002:c06] OFF=28, LEN=4030, flags=0x0 ============================================================================== NODE (28) LEVEL=1 ITEMS=1 SPACE=0 MKFS ID=0x51a268e2 FLUSH=0x0 #0 TAIL (plain40): [2a:4(FB):c2332e6100000000:10002:1bc4] OFF=28, LEN=4030, flags=0x50 ============================================================================== NODE (29) LEVEL=1 ITEMS=2 SPACE=0 MKFS ID=0x51a268e2 FLUSH=0x0 #0 TAIL (plain40): [2a:4(FB):c2332e6100000000:10002:2b82] OFF=28, LEN=1150, flags=0x54 ------------------------------------------------------------------------------ #1 TAIL (plain40): [2a:4(FB):c4322e6200000000:10001:0] OFF=1178, LEN=2842, flags=0x0 ============================================================================== NODE (30) LEVEL=1 ITEMS=1 SPACE=0 MKFS ID=0x51a268e2 FLUSH=0x0 #0 TAIL (plain40): [2a:4(FB):c4322e6200000000:10001:b1a] OFF=28, LEN=4030, flags=0x0 ============================================================================== NODE (31) LEVEL=1 ITEMS=2 SPACE=0 MKFS ID=0x51a268e2 FLUSH=0x0 #0 TAIL (plain40): [2a:4(FB):c4322e6200000000:10001:1ad8] OFF=28, LEN=1320, flags=0x0 ------------------------------------------------------------------------------ #1 TAIL (plain40): [2a:4(FB):c4342e6200000000:10003:0] OFF=1348, LEN=2672, flags=0x0 ============================================================================== NODE (32) LEVEL=1 ITEMS=1 SPACE=0 MKFS ID=0x51a268e2 FLUSH=0x0 #0 TAIL (plain40): [2a:4(FB):c4342e6200000000:10003:a70] OFF=28, LEN=4030, flags=0x0 ============================================================================== NODE (33) LEVEL=1 ITEMS=1 SPACE=0 MKFS ID=0x51a268e2 FLUSH=0x0 #0 TAIL (plain40): [2a:4(FB):c4342e6200000000:10003:1a2e] OFF=28, LEN=4030, flags=0x63 ============================================================================== NODE (34) LEVEL=1 ITEMS=1 SPACE=0 MKFS ID=0x51a268e2 FLUSH=0x0 #0 TAIL (plain40): [2a:4(FB):c4342e6200000000:10003:29ec] OFF=28, LEN=4030, flags=0xbf ============================================================================== NODE (35) LEVEL=1 ITEMS=1 SPACE=2408 MKFS ID=0x51a268e2 FLUSH=0x0 #0 TAIL (plain40): [2a:4(FB):c4342e6200000000:10003:39aa] OFF=28, LEN=1622, flags=0x1b7 ============================================================================== krshina3 test # mkfs.reiser4 -o create=reg40,fibration=dot_o_fibre /dev/md123 krshina3 test # mount /dev/md123 /mnt/test krshina3 test # cp /home/dusan/test/* /mnt/test krshina3 test # umount /dev/md123 krshina3 test # debugfs.reiser4 -t /dev/md123 debugfs.reiser4 1.1.0 Format release: 4.0.1 Copyright (C) 2001-2005 by Hans Reiser, licensing governed by reiser4progs/COPYING. NODE (25) LEVEL=2 ITEMS=11 SPACE=3562 MKFS ID=0x1bb9bd27 FLUSH=0x0 #0 NPTR (nodeptr40): [29:1(SD):0:2a:0] OFF=28, LEN=8, flags=0x0 [24] ------------------------------------------------------------------------------ #1 NPTR (nodeptr40): [2a:4(FB):312e6100000000:10000:c6e] OFF=36, LEN=8, flags=0x0 [26] ------------------------------------------------------------------------------ #2 NPTR (nodeptr40): [2a:4(FB):322e6200000000:10001:c06] OFF=44, LEN=8, flags=0x0 [27] ------------------------------------------------------------------------------ #3 NPTR (nodeptr40): [2a:4(FB):322e6200000000:10001:1bc4] OFF=52, LEN=8, flags=0x0 [28] ------------------------------------------------------------------------------ #4 NPTR (nodeptr40): [2a:4(FB):332e6100000000:10002:b5c] OFF=60, LEN=8, flags=0x0 [29] ------------------------------------------------------------------------------ #5 NPTR (nodeptr40): [2a:4(FB):332e6100000000:10002:1b1a] OFF=68, LEN=8, flags=0x0 [30] ------------------------------------------------------------------------------ #6 NPTR (nodeptr40): [2a:4(FB):332e6100000000:10002:2ad8] OFF=76, LEN=8, flags=0x0 [31] ------------------------------------------------------------------------------ #7 NPTR (nodeptr40): [2a:4(FB):342e6200000000:10003:a70] OFF=84, LEN=8, flags=0x0 [32] ------------------------------------------------------------------------------ #8 NPTR (nodeptr40): [2a:4(FB):342e6200000000:10003:1a2e] OFF=92, LEN=8, flags=0x0 [33] ------------------------------------------------------------------------------ #9 NPTR (nodeptr40): [2a:4(FB):342e6200000000:10003:29ec] OFF=100, LEN=8, flags=0x0 [34] ------------------------------------------------------------------------------ #10 NPTR (nodeptr40): [2a:4(FB):342e6200000000:10003:39aa] OFF=108, LEN=8, flags=0x0 [35] ============================================================================== NODE (24) LEVEL=1 ITEMS=7 SPACE=0 MKFS ID=0x1bb9bd27 FLUSH=0x0 #0 SD (stat40): [29:1(SD):0:2a:0] OFF=28, LEN=94, flags=0x0 exts: 3 mask: 0x13 plugin: sdext_lw offset: 2 len: 14 mode: drwxr-xr-x nlink: 3 size: 6 plugin: sdext_unix offset: 16 len: 28 uid: 0 gid: 0 atime: Sat Jan 7 18:05:26 2017 mtime: Sat Jan 7 18:06:31 2017 ctime: Sat Jan 7 18:06:31 2017 rdev: 300 bytes: 300 plugin: sdext_plugin_set offset: 44 len: 50 Pset count: 12 permission : id = 0 formatting : id = 2 (smart) hash : id = 1 (r5_hash) fibration : id = 1 (dot_o_fibre) statdata : id = 0 (stat40) diritem : id = 2 (cde40) crypto : id = 0 digest : id = 0 compress : id = 0 (lzo1) compressMode : id = 4 (conv) cluster : id = 0 (64K) create : id = 0 (reg40) ------------------------------------------------------------------------------ #1 DIRITEM (cde40): [2a:0(NAME):0:0:0] OFF=122, LEN=302, flags=0x0 NR(6) NAME OFFSET HASH SDKEY 0 . 158 0000000000000000:0000000000000000 0000291:000002a 1 .. 182 0000000000000000:0000000000000000 0000291:000002a 2 1.a 206 0000000000000000:0000000000000000 00002a1:0010000 3 2.b 230 0000000000000000:0000000000000000 00002a1:0010001 4 3.a 254 0000000000000000:0000000000000000 00002a1:0010002 5 4.b 278 0000000000000000:0000000000000000 00002a1:0010003 ------------------------------------------------------------------------------ #2 SD (stat40): [2a:1(SD):312e6100000000:10000:0] OFF=424, LEN=56, flags=0x0 exts: 3 mask: 0x7 plugin: sdext_lw offset: 2 len: 14 mode: -rw-r--r-- nlink: 1 size: 4096 plugin: sdext_unix offset: 16 len: 28 uid: 0 gid: 0 atime: Sat Jan 7 18:06:31 2017 mtime: Sat Jan 7 18:06:31 2017 ctime: Sat Jan 7 18:06:31 2017 rdev: 4096 bytes: 4096 plugin: sdext_lt offset: 44 len: 12 atime: 778212799 mtime: 778212799 ctime: 778212799 ------------------------------------------------------------------------------ #3 SD (stat40): [2a:1(SD):322e6200000000:10001:0] OFF=480, LEN=56, flags=0x0 exts: 3 mask: 0x7 plugin: sdext_lw offset: 2 len: 14 mode: -rw-r--r-- nlink: 1 size: 8192 plugin: sdext_unix offset: 16 len: 28 uid: 0 gid: 0 atime: Sat Jan 7 18:06:31 2017 mtime: Sat Jan 7 18:06:31 2017 ctime: Sat Jan 7 18:06:31 2017 rdev: 8192 bytes: 8192 plugin: sdext_lt offset: 44 len: 12 atime: 778212799 mtime: 778212799 ctime: 778212799 ------------------------------------------------------------------------------ #4 SD (stat40): [2a:1(SD):332e6100000000:10002:0] OFF=536, LEN=56, flags=0x0 exts: 3 mask: 0x7 plugin: sdext_lw offset: 2 len: 14 mode: -rw-r--r-- nlink: 1 size: 12288 plugin: sdext_unix offset: 16 len: 28 uid: 0 gid: 0 atime: Sat Jan 7 18:06:31 2017 mtime: Sat Jan 7 18:06:31 2017 ctime: Sat Jan 7 18:06:31 2017 rdev: 12288 bytes: 12288 plugin: sdext_lt offset: 44 len: 12 atime: 782212955 mtime: 782212955 ctime: 782212955 ------------------------------------------------------------------------------ #5 SD (stat40): [2a:1(SD):342e6200000000:10003:0] OFF=592, LEN=56, flags=0x0 exts: 3 mask: 0x7 plugin: sdext_lw offset: 2 len: 14 mode: -rw-r--r-- nlink: 1 size: 16384 plugin: sdext_unix offset: 16 len: 28 uid: 0 gid: 0 atime: Sat Jan 7 18:06:31 2017 mtime: Sat Jan 7 18:06:31 2017 ctime: Sat Jan 7 18:06:31 2017 rdev: 16384 bytes: 16384 plugin: sdext_lt offset: 44 len: 12 atime: 782212955 mtime: 782212955 ctime: 782212955 ------------------------------------------------------------------------------ #6 TAIL (plain40): [2a:4(FB):312e6100000000:10000:0] OFF=648, LEN=3182, flags=0x0 ============================================================================== NODE (26) LEVEL=1 ITEMS=2 SPACE=0 MKFS ID=0x1bb9bd27 FLUSH=0x0 #0 TAIL (plain40): [2a:4(FB):312e6100000000:10000:c6e] OFF=28, LEN=914, flags=0x0 ------------------------------------------------------------------------------ #1 TAIL (plain40): [2a:4(FB):322e6200000000:10001:0] OFF=942, LEN=3078, flags=0x0 ============================================================================== NODE (27) LEVEL=1 ITEMS=1 SPACE=0 MKFS ID=0x1bb9bd27 FLUSH=0x0 #0 TAIL (plain40): [2a:4(FB):322e6200000000:10001:c06] OFF=28, LEN=4030, flags=0x0 ============================================================================== NODE (28) LEVEL=1 ITEMS=2 SPACE=0 MKFS ID=0x1bb9bd27 FLUSH=0x0 #0 TAIL (plain40): [2a:4(FB):322e6200000000:10001:1bc4] OFF=28, LEN=1084, flags=0x0 ------------------------------------------------------------------------------ #1 TAIL (plain40): [2a:4(FB):332e6100000000:10002:0] OFF=1112, LEN=2908, flags=0x0 ============================================================================== NODE (29) LEVEL=1 ITEMS=1 SPACE=0 MKFS ID=0x1bb9bd27 FLUSH=0x0 #0 TAIL (plain40): [2a:4(FB):332e6100000000:10002:b5c] OFF=28, LEN=4030, flags=0x0 ============================================================================== NODE (30) LEVEL=1 ITEMS=1 SPACE=0 MKFS ID=0x1bb9bd27 FLUSH=0x0 #0 TAIL (plain40): [2a:4(FB):332e6100000000:10002:1b1a] OFF=28, LEN=4030, flags=0xc ============================================================================== NODE (31) LEVEL=1 ITEMS=2 SPACE=0 MKFS ID=0x1bb9bd27 FLUSH=0x0 #0 TAIL (plain40): [2a:4(FB):332e6100000000:10002:2ad8] OFF=28, LEN=1320, flags=0x1cf ------------------------------------------------------------------------------ #1 TAIL (plain40): [2a:4(FB):342e6200000000:10003:0] OFF=1348, LEN=2672, flags=0x0 ============================================================================== NODE (32) LEVEL=1 ITEMS=1 SPACE=0 MKFS ID=0x1bb9bd27 FLUSH=0x0 #0 TAIL (plain40): [2a:4(FB):342e6200000000:10003:a70] OFF=28, LEN=4030, flags=0x0 ============================================================================== NODE (33) LEVEL=1 ITEMS=1 SPACE=0 MKFS ID=0x1bb9bd27 FLUSH=0x0 #0 TAIL (plain40): [2a:4(FB):342e6200000000:10003:1a2e] OFF=28, LEN=4030, flags=0x21 ============================================================================== NODE (34) LEVEL=1 ITEMS=1 SPACE=0 MKFS ID=0x1bb9bd27 FLUSH=0x0 #0 TAIL (plain40): [2a:4(FB):342e6200000000:10003:29ec] OFF=28, LEN=4030, flags=0x1cf ============================================================================== NODE (35) LEVEL=1 ITEMS=1 SPACE=2408 MKFS ID=0x1bb9bd27 FLUSH=0x0 #0 TAIL (plain40): [2a:4(FB):342e6200000000:10003:39aa] OFF=28, LEN=1622, flags=0x16 ============================================================================== As we can see with ext_1_fibre files were sorted: 1.a 3.a 2.b 4.b With dot_o_fibre: 1.a 2.b 3.a 4.b > Thanks, > Edward. ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [RFC] Smart fibration plugin ext_4321 2017-01-07 17:10 ` Dušan Čolić @ 2017-01-07 17:56 ` Edward Shishkin 2017-01-07 19:26 ` Dušan Čolić 0 siblings, 1 reply; 15+ messages in thread From: Edward Shishkin @ 2017-01-07 17:56 UTC (permalink / raw) To: Dušan Čolić; +Cc: reiserfs-devel On 01/07/2017 07:10 PM, Dušan Čolić wrote: > On Sat, Jan 7, 2017 at 8:58 AM, Edward Shishkin > <edward.shishkin@gmail.com> wrote: >> >> On 01/07/2017 10:15 AM, Dušan Čolić wrote: >>> On Sat, Jan 7, 2017 at 12:05 AM, Edward Shishkin >>> <edward.shishkin@gmail.com> wrote: >>>> On 01/07/2017 01:09 AM, Dušan Čolić wrote: >>>>> On Fri, Jan 6, 2017 at 8:58 PM, Edward Shishkin >>>>> <edward.shishkin@gmail.com> wrote: >>>>>> >>>>>> On 01/06/2017 05:34 PM, Dušan Čolić wrote: >>>>>>> On Fri, Jan 6, 2017 at 2:44 PM, Edward Shishkin >>>>>>> <edward.shishkin@gmail.com> wrote: >>>>>>>> On 12/26/2016 11:13 PM, Dušan Čolić wrote: >>>>>>>>> On Mon, Dec 26, 2016 at 7:47 PM, Edward Shishkin >>>>>>>>> <edward.shishkin@gmail.com> wrote: >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On 12/25/2016 02:59 AM, Dušan Čolić wrote: >>>>>>>>>>> Fibration is a great way to decrease fragmentation and increase >>>>>>>>>>> throughput. >>>>>>>>>>> Currently there are 4 fibration plugins, lex, dot.o, ext_1 and >>>>>>>>>>> ext_3 >>>>>>>>>>> and they all have their upsides and downsides. >>>>>>>>>>> >>>>>>>>>>> Proposed fibration plugin combines them all so that it combines >>>>>>>>>>> files >>>>>>>>>>> with same extensions for 1, 2. 3 and 4 character extension in >>>>>>>>>>> groups >>>>>>>>>>> and sorts them in same fiber group. >>>>>>>>>>> >>>>>>>>>>> With this fibration plugin all eg. xvid files would be in same >>>>>>>>>>> group >>>>>>>>>>> in folder on disk sorted alphabetically >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> What application wants all xvid files to be in the same group? >>>>>>>>>> Do you have any benchmark numbers which show advantages >>>>>>>>>> of the new plugin? >>>>>>>>>> >>>>>>>>> Xvid files are just an example. >>>>>>>>> ext_1234 fibration would be equal to sum of ext_1, ext_2, ext_3, >>>>>>>>> ext_4 >>>>>>>>> and dot_o in one. >>>>>>>>> >>>>>>>>> In currently default plugin (dot_o) we sort all files by name from >>>>>>>>> the >>>>>>>>> start except .o files which we put at the end. >>>>>>>>> So if we had a source directory with .c .h and .o files in it files >>>>>>>>> by >>>>>>>>> extension would be sorted like: chchchchchchchchoooooooooooooo >>>>>>>>> I presumed that in some use cases it is better to have files be >>>>>>>>> sorted >>>>>>>>> ccccccccccchhhhhhhhhhhhhhoooooooooooo >>>>>>>>> >>>>>>>>> Hypothesis is to use the premise that files of same extension are in >>>>>>>>> same order of size to reduce fragmentation. >>>>>>>> >>>>>>>> >>>>>>>> What kind of fragmentation you are talking about? >>>>>>>> Internal (which results in "dead" disk space), or >>>>>>>> external (which results in a lot of "extents")? >>>>>>>> >>>>>>> External >>>>>>> >>>>>>>> Edward. >>>>>>>> >>>>>>>> >>>>>>>>> If we group files of same extension in groups in one directory, when >>>>>>>>> we write files of same extension after deletion of some files of one >>>>>>>>> extension their group would be in same order as the deleted file so >>>>>>>>> they would be written in similar place and occupy the 'hole' of >>>>>>>>> similar size. >>>>>> >>>>>> >>>>>> So "similar" means the same order, that is file sizes can differ in 2 >>>>>> times? >>>>>> TBH, I don't see what can be deduced from this assumption ;) >>>>>> It can happen that new file either doesn't fit to that hole, or >>>>>> occupies >>>>>> too >>>>>> small place, so that next file won't fit to the rest of the hole.. >>>>>> >>>>> OFC we can never guarantee that the new file completely fits the hole >>>>> (especially as we go through compression in next layer) but for both >>>>> smaller and larger file than a hole we would have higher probability >>>>> for less extents for situations with 2 or more types of files in a >>>>> directory. For one type of file in a directory behavior would be the >>>>> same as dot_o and ext_1 plugin. >>>> >>>> >>>> I should upset you: fibration plugins are about mapping of a semantic >>>> tree to the storage tree. Simply speaking, they manage mapping >>>> object-> key, which has nothing common with real locations on diТак ты >>>> уже не ищешь? sk. >>>> >>>> This is a block allocator, who assigns disk addresses to nodes of the >>>> storage tree (right before writing them to disk at flush time). >>>> And I am sure that block allocator doesn't care about fibration groups. >>>> >>>> I strongly not recommend you to experiment with block allocator. >>>> Simply because I know how many people killed a lot of time without >>>> results. >>> Then what is this comment in the beginning of kassign.c about: >>> >>> >>> * In reiser4 every piece of file system data and meta-data has a key. Keys >>> * are used to store information in and retrieve it from reiser4 internal >>> * tree. In addition to this, keys define _ordering_ of all file system >>> * information: things having close keys are placed into the same or >>> * neighboring (in the tree order) nodes of the tree. As our block >>> allocator >>> * tries to respect tree order (see flush.c), keys also define order in >>> which >>> * things are laid out on the disk, and hence, affect performance directly. >> >> I can not find where in the code block allocator respects key ordering. >> Once you find it, then let me know.. >> > Let me prove it in a way that is possible for me without investing > years in learning R4 internals ;) > > krshina3 test # mkfs.reiser4 -o create=reg40,fibration=ext_1_fibre /dev/md123 > > krshina3 test # ls -la /home/dusan/test/ > total 261 > drwxr-xr-x 2 root root 6 Jan 7 17:51 . > drwxr-xr-x 46 dusan dusan 73 Jan 7 17:48 .. > -rw-r--r-- 1 root root 4096 Jan 7 17:49 1.a > -rw-r--r-- 1 root root 8192 Jan 7 17:49 2.b > -rw-r--r-- 1 root root 12288 Jan 7 17:50 3.a > -rw-r--r-- 1 root root 16384 Jan 7 17:51 4.b > > krshina3 test # mount /dev/md123 /mnt/test > > krshina3 test # cp /home/dusan/test/* /mnt/test > > krshina3 test # umount /dev/md123 > > krshina3 test # debugfs.reiser4 -t /dev/md123 > debugfs.reiser4 1.1.0 > Format release: 4.0.1 > Copyright (C) 2001-2005 by Hans Reiser, licensing governed by > reiser4progs/COPYING. > > NODE (25) LEVEL=2 ITEMS=11 SPACE=3562 MKFS ID=0x51a268e2 FLUSH=0x0 > #0 NPTR (nodeptr40): [29:1(SD):0:2a:0] OFF=28, LEN=8, flags=0x0 [24] > ------------------------------------------------------------------------------ > #1 NPTR (nodeptr40): [2a:4(FB):c2312e6100000000:10000:c6e] OFF=36, > LEN=8, flags=0x0 [26] > ------------------------------------------------------------------------------ > #2 NPTR (nodeptr40): [2a:4(FB):c2332e6100000000:10002:c06] OFF=44, > LEN=8, flags=0x0 [27] > ------------------------------------------------------------------------------ > #3 NPTR (nodeptr40): [2a:4(FB):c2332e6100000000:10002:1bc4] OFF=52, > LEN=8, flags=0x0 [28] > ------------------------------------------------------------------------------ > #4 NPTR (nodeptr40): [2a:4(FB):c2332e6100000000:10002:2b82] OFF=60, > LEN=8, flags=0x0 [29] > ------------------------------------------------------------------------------ > #5 NPTR (nodeptr40): [2a:4(FB):c4322e6200000000:10001:b1a] OFF=68, > LEN=8, flags=0x0 [30] > ------------------------------------------------------------------------------ > #6 NPTR (nodeptr40): [2a:4(FB):c4322e6200000000:10001:1ad8] OFF=76, > LEN=8, flags=0x0 [31] > ------------------------------------------------------------------------------ > #7 NPTR (nodeptr40): [2a:4(FB):c4342e6200000000:10003:a70] OFF=84, > LEN=8, flags=0x0 [32] > ------------------------------------------------------------------------------ > #8 NPTR (nodeptr40): [2a:4(FB):c4342e6200000000:10003:1a2e] OFF=92, > LEN=8, flags=0x0 [33] > ------------------------------------------------------------------------------ > #9 NPTR (nodeptr40): [2a:4(FB):c4342e6200000000:10003:29ec] OFF=100, > LEN=8, flags=0x0 [34] > ------------------------------------------------------------------------------ > #10 NPTR (nodeptr40): [2a:4(FB):c4342e6200000000:10003:39aa] OFF=108, > LEN=8, flags=0x0 [35] > ============================================================================== > NODE (24) LEVEL=1 ITEMS=7 SPACE=0 MKFS ID=0x51a268e2 FLUSH=0x0 > #0 SD (stat40): [29:1(SD):0:2a:0] OFF=28, LEN=94, flags=0x0 > exts: 3 > mask: 0x13 > plugin: sdext_lw > offset: 2 > len: 14 > mode: drwxr-xr-x > nlink: 3 > size: 6 > plugin: sdext_unix > offset: 16 > len: 28 > uid: 0 > gid: 0 > atime: Sat Jan 7 17:59:37 2017 > mtime: Sat Jan 7 18:03:59 2017 > ctime: Sat Jan 7 18:03:59 2017 > rdev: 300 > bytes: 300 > plugin: sdext_plugin_set > offset: 44 > len: 50 > Pset count: 12 > permission : id = 0 > formatting : id = 2 (smart) > hash : id = 1 (r5_hash) > fibration : id = 2 (ext_1_fibre) > statdata : id = 0 (stat40) > diritem : id = 2 (cde40) > crypto : id = 0 > digest : id = 0 > compress : id = 0 (lzo1) > compressMode : id = 4 (conv) > cluster : id = 0 (64K) > create : id = 0 (reg40) > ------------------------------------------------------------------------------ > #1 DIRITEM (cde40): [2a:0(NAME):0:0:0] OFF=122, LEN=302, flags=0x0 > NR(6) NAME OFFSET HASH > SDKEY > 0 . 158 > 0000000000000000:0000000000000000 0000291:000002a > 1 .. 182 > 0000000000000000:0000000000000000 0000291:000002a > 2 1.a 206 > 0000000000000000:0000000000000000 00002a1:0010000 > 3 3.a 230 > 0000000000000000:0000000000000000 00002a1:0010002 > 4 2.b 254 > 0000000000000000:0000000000000000 00002a1:0010001 > 5 4.b 278 > 0000000000000000:0000000000000000 00002a1:0010003 > ------------------------------------------------------------------------------ > #2 SD (stat40): [2a:1(SD):c2312e6100000000:10000:0] OFF=424, LEN=56, flags=0x0 > exts: 3 > mask: 0x7 > plugin: sdext_lw > offset: 2 > len: 14 > mode: -rw-r--r-- > nlink: 1 > size: 4096 > plugin: sdext_unix > offset: 16 > len: 28 > uid: 0 > gid: 0 > atime: Sat Jan 7 18:03:59 2017 > mtime: Sat Jan 7 18:03:59 2017 > ctime: Sat Jan 7 18:03:59 2017 > rdev: 4096 > bytes: 4096 > plugin: sdext_lt > offset: 44 > len: 12 > atime: 652286102 > mtime: 652286102 > ctime: 652286102 > ------------------------------------------------------------------------------ > #3 SD (stat40): [2a:1(SD):c2332e6100000000:10002:0] OFF=480, LEN=56, flags=0x0 > exts: 3 > mask: 0x7 > plugin: sdext_lw > offset: 2 > len: 14 > mode: -rw-r--r-- > nlink: 1 > size: 12288 > plugin: sdext_unix > offset: 16 > len: 28 > uid: 0 > gid: 0 > atime: Sat Jan 7 18:03:59 2017 > mtime: Sat Jan 7 18:03:59 2017 > ctime: Sat Jan 7 18:03:59 2017 > rdev: 12288 > bytes: 12288 > plugin: sdext_lt > offset: 44 > len: 12 > atime: 656286256 > mtime: 656286256 > ctime: 656286256 > ------------------------------------------------------------------------------ > #4 SD (stat40): [2a:1(SD):c4322e6200000000:10001:0] OFF=536, LEN=56, flags=0x0 > exts: 3 > mask: 0x7 > plugin: sdext_lw > offset: 2 > len: 14 > mode: -rw-r--r-- > nlink: 1 > size: 8192 > plugin: sdext_unix > offset: 16 > len: 28 > uid: 0 > gid: 0 > atime: Sat Jan 7 18:03:59 2017 > mtime: Sat Jan 7 18:03:59 2017 > ctime: Sat Jan 7 18:03:59 2017 > rdev: 8192 > bytes: 8192 > plugin: sdext_lt > offset: 44 > len: 12 > atime: 652286102 > mtime: 656286256 > ctime: 656286256 > ------------------------------------------------------------------------------ > #5 SD (stat40): [2a:1(SD):c4342e6200000000:10003:0] OFF=592, LEN=56, flags=0x0 > exts: 3 > mask: 0x7 > plugin: sdext_lw > offset: 2 > len: 14 > mode: -rw-r--r-- > nlink: 1 > size: 16384 > plugin: sdext_unix > offset: 16 > len: 28 > uid: 0 > gid: 0 > atime: Sat Jan 7 18:03:59 2017 > mtime: Sat Jan 7 18:03:59 2017 > ctime: Sat Jan 7 18:03:59 2017 > rdev: 16384 > bytes: 16384 > plugin: sdext_lt > offset: 44 > len: 12 > atime: 656286256 > mtime: 656286256 > ctime: 656286256 > ------------------------------------------------------------------------------ > #6 TAIL (plain40): [2a:4(FB):c2312e6100000000:10000:0] OFF=648, > LEN=3182, flags=0x0 > ============================================================================== > NODE (26) LEVEL=1 ITEMS=2 SPACE=0 MKFS ID=0x51a268e2 FLUSH=0x0 > #0 TAIL (plain40): [2a:4(FB):c2312e6100000000:10000:c6e] OFF=28, > LEN=914, flags=0x0 > ------------------------------------------------------------------------------ > #1 TAIL (plain40): [2a:4(FB):c2332e6100000000:10002:0] OFF=942, > LEN=3078, flags=0x0 > ============================================================================== > NODE (27) LEVEL=1 ITEMS=1 SPACE=0 MKFS ID=0x51a268e2 FLUSH=0x0 > #0 TAIL (plain40): [2a:4(FB):c2332e6100000000:10002:c06] OFF=28, > LEN=4030, flags=0x0 > ============================================================================== > NODE (28) LEVEL=1 ITEMS=1 SPACE=0 MKFS ID=0x51a268e2 FLUSH=0x0 > #0 TAIL (plain40): [2a:4(FB):c2332e6100000000:10002:1bc4] OFF=28, > LEN=4030, flags=0x50 > ============================================================================== > NODE (29) LEVEL=1 ITEMS=2 SPACE=0 MKFS ID=0x51a268e2 FLUSH=0x0 > #0 TAIL (plain40): [2a:4(FB):c2332e6100000000:10002:2b82] OFF=28, > LEN=1150, flags=0x54 > ------------------------------------------------------------------------------ > #1 TAIL (plain40): [2a:4(FB):c4322e6200000000:10001:0] OFF=1178, > LEN=2842, flags=0x0 > ============================================================================== > NODE (30) LEVEL=1 ITEMS=1 SPACE=0 MKFS ID=0x51a268e2 FLUSH=0x0 > #0 TAIL (plain40): [2a:4(FB):c4322e6200000000:10001:b1a] OFF=28, > LEN=4030, flags=0x0 > ============================================================================== > NODE (31) LEVEL=1 ITEMS=2 SPACE=0 MKFS ID=0x51a268e2 FLUSH=0x0 > #0 TAIL (plain40): [2a:4(FB):c4322e6200000000:10001:1ad8] OFF=28, > LEN=1320, flags=0x0 > ------------------------------------------------------------------------------ > #1 TAIL (plain40): [2a:4(FB):c4342e6200000000:10003:0] OFF=1348, > LEN=2672, flags=0x0 > ============================================================================== > NODE (32) LEVEL=1 ITEMS=1 SPACE=0 MKFS ID=0x51a268e2 FLUSH=0x0 > #0 TAIL (plain40): [2a:4(FB):c4342e6200000000:10003:a70] OFF=28, > LEN=4030, flags=0x0 > ============================================================================== > NODE (33) LEVEL=1 ITEMS=1 SPACE=0 MKFS ID=0x51a268e2 FLUSH=0x0 > #0 TAIL (plain40): [2a:4(FB):c4342e6200000000:10003:1a2e] OFF=28, > LEN=4030, flags=0x63 > ============================================================================== > NODE (34) LEVEL=1 ITEMS=1 SPACE=0 MKFS ID=0x51a268e2 FLUSH=0x0 > #0 TAIL (plain40): [2a:4(FB):c4342e6200000000:10003:29ec] OFF=28, > LEN=4030, flags=0xbf > ============================================================================== > NODE (35) LEVEL=1 ITEMS=1 SPACE=2408 MKFS ID=0x51a268e2 FLUSH=0x0 > #0 TAIL (plain40): [2a:4(FB):c4342e6200000000:10003:39aa] OFF=28, > LEN=1622, flags=0x1b7 > ============================================================================== > > krshina3 test # mkfs.reiser4 -o create=reg40,fibration=dot_o_fibre /dev/md123 > > krshina3 test # mount /dev/md123 /mnt/test > > krshina3 test # cp /home/dusan/test/* /mnt/test > > krshina3 test # umount /dev/md123 > > krshina3 test # debugfs.reiser4 -t /dev/md123 > debugfs.reiser4 1.1.0 > Format release: 4.0.1 > Copyright (C) 2001-2005 by Hans Reiser, licensing governed by > reiser4progs/COPYING. > > NODE (25) LEVEL=2 ITEMS=11 SPACE=3562 MKFS ID=0x1bb9bd27 FLUSH=0x0 > #0 NPTR (nodeptr40): [29:1(SD):0:2a:0] OFF=28, LEN=8, flags=0x0 [24] > ------------------------------------------------------------------------------ > #1 NPTR (nodeptr40): [2a:4(FB):312e6100000000:10000:c6e] OFF=36, > LEN=8, flags=0x0 [26] > ------------------------------------------------------------------------------ > #2 NPTR (nodeptr40): [2a:4(FB):322e6200000000:10001:c06] OFF=44, > LEN=8, flags=0x0 [27] > ------------------------------------------------------------------------------ > #3 NPTR (nodeptr40): [2a:4(FB):322e6200000000:10001:1bc4] OFF=52, > LEN=8, flags=0x0 [28] > ------------------------------------------------------------------------------ > #4 NPTR (nodeptr40): [2a:4(FB):332e6100000000:10002:b5c] OFF=60, > LEN=8, flags=0x0 [29] > ------------------------------------------------------------------------------ > #5 NPTR (nodeptr40): [2a:4(FB):332e6100000000:10002:1b1a] OFF=68, > LEN=8, flags=0x0 [30] > ------------------------------------------------------------------------------ > #6 NPTR (nodeptr40): [2a:4(FB):332e6100000000:10002:2ad8] OFF=76, > LEN=8, flags=0x0 [31] > ------------------------------------------------------------------------------ > #7 NPTR (nodeptr40): [2a:4(FB):342e6200000000:10003:a70] OFF=84, > LEN=8, flags=0x0 [32] > ------------------------------------------------------------------------------ > #8 NPTR (nodeptr40): [2a:4(FB):342e6200000000:10003:1a2e] OFF=92, > LEN=8, flags=0x0 [33] > ------------------------------------------------------------------------------ > #9 NPTR (nodeptr40): [2a:4(FB):342e6200000000:10003:29ec] OFF=100, > LEN=8, flags=0x0 [34] > ------------------------------------------------------------------------------ > #10 NPTR (nodeptr40): [2a:4(FB):342e6200000000:10003:39aa] OFF=108, > LEN=8, flags=0x0 [35] > ============================================================================== > NODE (24) LEVEL=1 ITEMS=7 SPACE=0 MKFS ID=0x1bb9bd27 FLUSH=0x0 > #0 SD (stat40): [29:1(SD):0:2a:0] OFF=28, LEN=94, flags=0x0 > exts: 3 > mask: 0x13 > plugin: sdext_lw > offset: 2 > len: 14 > mode: drwxr-xr-x > nlink: 3 > size: 6 > plugin: sdext_unix > offset: 16 > len: 28 > uid: 0 > gid: 0 > atime: Sat Jan 7 18:05:26 2017 > mtime: Sat Jan 7 18:06:31 2017 > ctime: Sat Jan 7 18:06:31 2017 > rdev: 300 > bytes: 300 > plugin: sdext_plugin_set > offset: 44 > len: 50 > Pset count: 12 > permission : id = 0 > formatting : id = 2 (smart) > hash : id = 1 (r5_hash) > fibration : id = 1 (dot_o_fibre) > statdata : id = 0 (stat40) > diritem : id = 2 (cde40) > crypto : id = 0 > digest : id = 0 > compress : id = 0 (lzo1) > compressMode : id = 4 (conv) > cluster : id = 0 (64K) > create : id = 0 (reg40) > ------------------------------------------------------------------------------ > #1 DIRITEM (cde40): [2a:0(NAME):0:0:0] OFF=122, LEN=302, flags=0x0 > NR(6) NAME OFFSET HASH > SDKEY > 0 . 158 > 0000000000000000:0000000000000000 0000291:000002a > 1 .. 182 > 0000000000000000:0000000000000000 0000291:000002a > 2 1.a 206 > 0000000000000000:0000000000000000 00002a1:0010000 > 3 2.b 230 > 0000000000000000:0000000000000000 00002a1:0010001 > 4 3.a 254 > 0000000000000000:0000000000000000 00002a1:0010002 > 5 4.b 278 > 0000000000000000:0000000000000000 00002a1:0010003 > ------------------------------------------------------------------------------ > #2 SD (stat40): [2a:1(SD):312e6100000000:10000:0] OFF=424, LEN=56, flags=0x0 > exts: 3 > mask: 0x7 > plugin: sdext_lw > offset: 2 > len: 14 > mode: -rw-r--r-- > nlink: 1 > size: 4096 > plugin: sdext_unix > offset: 16 > len: 28 > uid: 0 > gid: 0 > atime: Sat Jan 7 18:06:31 2017 > mtime: Sat Jan 7 18:06:31 2017 > ctime: Sat Jan 7 18:06:31 2017 > rdev: 4096 > bytes: 4096 > plugin: sdext_lt > offset: 44 > len: 12 > atime: 778212799 > mtime: 778212799 > ctime: 778212799 > ------------------------------------------------------------------------------ > #3 SD (stat40): [2a:1(SD):322e6200000000:10001:0] OFF=480, LEN=56, flags=0x0 > exts: 3 > mask: 0x7 > plugin: sdext_lw > offset: 2 > len: 14 > mode: -rw-r--r-- > nlink: 1 > size: 8192 > plugin: sdext_unix > offset: 16 > len: 28 > uid: 0 > gid: 0 > atime: Sat Jan 7 18:06:31 2017 > mtime: Sat Jan 7 18:06:31 2017 > ctime: Sat Jan 7 18:06:31 2017 > rdev: 8192 > bytes: 8192 > plugin: sdext_lt > offset: 44 > len: 12 > atime: 778212799 > mtime: 778212799 > ctime: 778212799 > ------------------------------------------------------------------------------ > #4 SD (stat40): [2a:1(SD):332e6100000000:10002:0] OFF=536, LEN=56, flags=0x0 > exts: 3 > mask: 0x7 > plugin: sdext_lw > offset: 2 > len: 14 > mode: -rw-r--r-- > nlink: 1 > size: 12288 > plugin: sdext_unix > offset: 16 > len: 28 > uid: 0 > gid: 0 > atime: Sat Jan 7 18:06:31 2017 > mtime: Sat Jan 7 18:06:31 2017 > ctime: Sat Jan 7 18:06:31 2017 > rdev: 12288 > bytes: 12288 > plugin: sdext_lt > offset: 44 > len: 12 > atime: 782212955 > mtime: 782212955 > ctime: 782212955 > ------------------------------------------------------------------------------ > #5 SD (stat40): [2a:1(SD):342e6200000000:10003:0] OFF=592, LEN=56, flags=0x0 > exts: 3 > mask: 0x7 > plugin: sdext_lw > offset: 2 > len: 14 > mode: -rw-r--r-- > nlink: 1 > size: 16384 > plugin: sdext_unix > offset: 16 > len: 28 > uid: 0 > gid: 0 > atime: Sat Jan 7 18:06:31 2017 > mtime: Sat Jan 7 18:06:31 2017 > ctime: Sat Jan 7 18:06:31 2017 > rdev: 16384 > bytes: 16384 > plugin: sdext_lt > offset: 44 > len: 12 > atime: 782212955 > mtime: 782212955 > ctime: 782212955 > ------------------------------------------------------------------------------ > #6 TAIL (plain40): [2a:4(FB):312e6100000000:10000:0] OFF=648, > LEN=3182, flags=0x0 > ============================================================================== > NODE (26) LEVEL=1 ITEMS=2 SPACE=0 MKFS ID=0x1bb9bd27 FLUSH=0x0 > #0 TAIL (plain40): [2a:4(FB):312e6100000000:10000:c6e] OFF=28, > LEN=914, flags=0x0 > ------------------------------------------------------------------------------ > #1 TAIL (plain40): [2a:4(FB):322e6200000000:10001:0] OFF=942, > LEN=3078, flags=0x0 > ============================================================================== > NODE (27) LEVEL=1 ITEMS=1 SPACE=0 MKFS ID=0x1bb9bd27 FLUSH=0x0 > #0 TAIL (plain40): [2a:4(FB):322e6200000000:10001:c06] OFF=28, > LEN=4030, flags=0x0 > ============================================================================== > NODE (28) LEVEL=1 ITEMS=2 SPACE=0 MKFS ID=0x1bb9bd27 FLUSH=0x0 > #0 TAIL (plain40): [2a:4(FB):322e6200000000:10001:1bc4] OFF=28, > LEN=1084, flags=0x0 > ------------------------------------------------------------------------------ > #1 TAIL (plain40): [2a:4(FB):332e6100000000:10002:0] OFF=1112, > LEN=2908, flags=0x0 > ============================================================================== > NODE (29) LEVEL=1 ITEMS=1 SPACE=0 MKFS ID=0x1bb9bd27 FLUSH=0x0 > #0 TAIL (plain40): [2a:4(FB):332e6100000000:10002:b5c] OFF=28, > LEN=4030, flags=0x0 > ============================================================================== > NODE (30) LEVEL=1 ITEMS=1 SPACE=0 MKFS ID=0x1bb9bd27 FLUSH=0x0 > #0 TAIL (plain40): [2a:4(FB):332e6100000000:10002:1b1a] OFF=28, > LEN=4030, flags=0xc > ============================================================================== > NODE (31) LEVEL=1 ITEMS=2 SPACE=0 MKFS ID=0x1bb9bd27 FLUSH=0x0 > #0 TAIL (plain40): [2a:4(FB):332e6100000000:10002:2ad8] OFF=28, > LEN=1320, flags=0x1cf > ------------------------------------------------------------------------------ > #1 TAIL (plain40): [2a:4(FB):342e6200000000:10003:0] OFF=1348, > LEN=2672, flags=0x0 > ============================================================================== > NODE (32) LEVEL=1 ITEMS=1 SPACE=0 MKFS ID=0x1bb9bd27 FLUSH=0x0 > #0 TAIL (plain40): [2a:4(FB):342e6200000000:10003:a70] OFF=28, > LEN=4030, flags=0x0 > ============================================================================== > NODE (33) LEVEL=1 ITEMS=1 SPACE=0 MKFS ID=0x1bb9bd27 FLUSH=0x0 > #0 TAIL (plain40): [2a:4(FB):342e6200000000:10003:1a2e] OFF=28, > LEN=4030, flags=0x21 > ============================================================================== > NODE (34) LEVEL=1 ITEMS=1 SPACE=0 MKFS ID=0x1bb9bd27 FLUSH=0x0 > #0 TAIL (plain40): [2a:4(FB):342e6200000000:10003:29ec] OFF=28, > LEN=4030, flags=0x1cf > ============================================================================== > NODE (35) LEVEL=1 ITEMS=1 SPACE=2408 MKFS ID=0x1bb9bd27 FLUSH=0x0 > #0 TAIL (plain40): [2a:4(FB):342e6200000000:10003:39aa] OFF=28, > LEN=1622, flags=0x16 > ============================================================================== > > > As we can see with ext_1_fibre files were sorted: > 1.a > 3.a > 2.b > 4.b > > With dot_o_fibre: > > 1.a > 2.b > 3.a > 4.b > Thus, respect for fibration groups is also under a big question. TBH, I prefer to not kill time for projects basing on questionable assumptions and deductions. Just because there is a lot of interesting TODOs with tangible results. Thanks, Edward. ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [RFC] Smart fibration plugin ext_4321 2017-01-07 17:56 ` Edward Shishkin @ 2017-01-07 19:26 ` Dušan Čolić 2017-01-07 19:06 ` Edward Shishkin 0 siblings, 1 reply; 15+ messages in thread From: Dušan Čolić @ 2017-01-07 19:26 UTC (permalink / raw) To: Edward Shishkin; +Cc: reiserfs-devel On Sat, Jan 7, 2017 at 6:56 PM, Edward Shishkin <edward.shishkin@gmail.com> wrote: > > > On 01/07/2017 07:10 PM, Dušan Čolić wrote: >> >> On Sat, Jan 7, 2017 at 8:58 AM, Edward Shishkin >> <edward.shishkin@gmail.com> wrote: >>> >>> >>> On 01/07/2017 10:15 AM, Dušan Čolić wrote: >>>> >>>> On Sat, Jan 7, 2017 at 12:05 AM, Edward Shishkin >>>> <edward.shishkin@gmail.com> wrote: >>>>> >>>>> On 01/07/2017 01:09 AM, Dušan Čolić wrote: >>>>>> >>>>>> On Fri, Jan 6, 2017 at 8:58 PM, Edward Shishkin >>>>>> <edward.shishkin@gmail.com> wrote: >>>>>>> >>>>>>> >>>>>>> On 01/06/2017 05:34 PM, Dušan Čolić wrote: >>>>>>>> >>>>>>>> On Fri, Jan 6, 2017 at 2:44 PM, Edward Shishkin >>>>>>>> <edward.shishkin@gmail.com> wrote: >>>>>>>>> >>>>>>>>> On 12/26/2016 11:13 PM, Dušan Čolić wrote: >>>>>>>>>> >>>>>>>>>> On Mon, Dec 26, 2016 at 7:47 PM, Edward Shishkin >>>>>>>>>> <edward.shishkin@gmail.com> wrote: >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> On 12/25/2016 02:59 AM, Dušan Čolić wrote: >>>>>>>>>>>> >>>>>>>>>>>> Fibration is a great way to decrease fragmentation and increase >>>>>>>>>>>> throughput. >>>>>>>>>>>> Currently there are 4 fibration plugins, lex, dot.o, ext_1 and >>>>>>>>>>>> ext_3 >>>>>>>>>>>> and they all have their upsides and downsides. >>>>>>>>>>>> >>>>>>>>>>>> Proposed fibration plugin combines them all so that it combines >>>>>>>>>>>> files >>>>>>>>>>>> with same extensions for 1, 2. 3 and 4 character extension in >>>>>>>>>>>> groups >>>>>>>>>>>> and sorts them in same fiber group. >>>>>>>>>>>> >>>>>>>>>>>> With this fibration plugin all eg. xvid files would be in same >>>>>>>>>>>> group >>>>>>>>>>>> in folder on disk sorted alphabetically >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> What application wants all xvid files to be in the same group? >>>>>>>>>>> Do you have any benchmark numbers which show advantages >>>>>>>>>>> of the new plugin? >>>>>>>>>>> >>>>>>>>>> Xvid files are just an example. >>>>>>>>>> ext_1234 fibration would be equal to sum of ext_1, ext_2, ext_3, >>>>>>>>>> ext_4 >>>>>>>>>> and dot_o in one. >>>>>>>>>> >>>>>>>>>> In currently default plugin (dot_o) we sort all files by name from >>>>>>>>>> the >>>>>>>>>> start except .o files which we put at the end. >>>>>>>>>> So if we had a source directory with .c .h and .o files in it >>>>>>>>>> files >>>>>>>>>> by >>>>>>>>>> extension would be sorted like: chchchchchchchchoooooooooooooo >>>>>>>>>> I presumed that in some use cases it is better to have files be >>>>>>>>>> sorted >>>>>>>>>> ccccccccccchhhhhhhhhhhhhhoooooooooooo >>>>>>>>>> >>>>>>>>>> Hypothesis is to use the premise that files of same extension are >>>>>>>>>> in >>>>>>>>>> same order of size to reduce fragmentation. >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> What kind of fragmentation you are talking about? >>>>>>>>> Internal (which results in "dead" disk space), or >>>>>>>>> external (which results in a lot of "extents")? >>>>>>>>> >>>>>>>> External >>>>>>>> >>>>>>>>> Edward. >>>>>>>>> >>>>>>>>> >>>>>>>>>> If we group files of same extension in groups in one directory, >>>>>>>>>> when >>>>>>>>>> we write files of same extension after deletion of some files of >>>>>>>>>> one >>>>>>>>>> extension their group would be in same order as the deleted file >>>>>>>>>> so >>>>>>>>>> they would be written in similar place and occupy the 'hole' of >>>>>>>>>> similar size. >>>>>>> >>>>>>> >>>>>>> >>>>>>> So "similar" means the same order, that is file sizes can differ in 2 >>>>>>> times? >>>>>>> TBH, I don't see what can be deduced from this assumption ;) >>>>>>> It can happen that new file either doesn't fit to that hole, or >>>>>>> occupies >>>>>>> too >>>>>>> small place, so that next file won't fit to the rest of the hole.. >>>>>>> >>>>>> OFC we can never guarantee that the new file completely fits the hole >>>>>> (especially as we go through compression in next layer) but for both >>>>>> smaller and larger file than a hole we would have higher probability >>>>>> for less extents for situations with 2 or more types of files in a >>>>>> directory. For one type of file in a directory behavior would be the >>>>>> same as dot_o and ext_1 plugin. >>>>> >>>>> >>>>> >>>>> I should upset you: fibration plugins are about mapping of a semantic >>>>> tree to the storage tree. Simply speaking, they manage mapping >>>>> object-> key, which has nothing common with real locations on diТак ты >>>>> уже не ищешь? sk. >>>>> >>>>> This is a block allocator, who assigns disk addresses to nodes of the >>>>> storage tree (right before writing them to disk at flush time). >>>>> And I am sure that block allocator doesn't care about fibration groups. >>>>> >>>>> I strongly not recommend you to experiment with block allocator. >>>>> Simply because I know how many people killed a lot of time without >>>>> results. >>>> >>>> Then what is this comment in the beginning of kassign.c about: >>>> >>>> >>>> * In reiser4 every piece of file system data and meta-data has a key. >>>> Keys >>>> * are used to store information in and retrieve it from reiser4 internal >>>> * tree. In addition to this, keys define _ordering_ of all file system >>>> * information: things having close keys are placed into the same or >>>> * neighboring (in the tree order) nodes of the tree. As our block >>>> allocator >>>> * tries to respect tree order (see flush.c), keys also define order in >>>> which >>>> * things are laid out on the disk, and hence, affect performance >>>> directly. >>> >>> >>> I can not find where in the code block allocator respects key ordering. >>> Once you find it, then let me know.. >>> >> Let me prove it in a way that is possible for me without investing >> years in learning R4 internals ;) >> >> krshina3 test # mkfs.reiser4 -o create=reg40,fibration=ext_1_fibre >> /dev/md123 >> >> krshina3 test # ls -la /home/dusan/test/ >> total 261 >> drwxr-xr-x 2 root root 6 Jan 7 17:51 . >> drwxr-xr-x 46 dusan dusan 73 Jan 7 17:48 .. >> -rw-r--r-- 1 root root 4096 Jan 7 17:49 1.a >> -rw-r--r-- 1 root root 8192 Jan 7 17:49 2.b >> -rw-r--r-- 1 root root 12288 Jan 7 17:50 3.a >> -rw-r--r-- 1 root root 16384 Jan 7 17:51 4.b >> >> krshina3 test # mount /dev/md123 /mnt/test >> >> krshina3 test # cp /home/dusan/test/* /mnt/test >> >> krshina3 test # umount /dev/md123 >> >> krshina3 test # debugfs.reiser4 -t /dev/md123 >> debugfs.reiser4 1.1.0 >> Format release: 4.0.1 >> Copyright (C) 2001-2005 by Hans Reiser, licensing governed by >> reiser4progs/COPYING. >> >> NODE (25) LEVEL=2 ITEMS=11 SPACE=3562 MKFS ID=0x51a268e2 FLUSH=0x0 >> #0 NPTR (nodeptr40): [29:1(SD):0:2a:0] OFF=28, LEN=8, flags=0x0 [24] >> >> ------------------------------------------------------------------------------ >> #1 NPTR (nodeptr40): [2a:4(FB):c2312e6100000000:10000:c6e] OFF=36, >> LEN=8, flags=0x0 [26] >> >> ------------------------------------------------------------------------------ >> #2 NPTR (nodeptr40): [2a:4(FB):c2332e6100000000:10002:c06] OFF=44, >> LEN=8, flags=0x0 [27] >> >> ------------------------------------------------------------------------------ >> #3 NPTR (nodeptr40): [2a:4(FB):c2332e6100000000:10002:1bc4] OFF=52, >> LEN=8, flags=0x0 [28] >> >> ------------------------------------------------------------------------------ >> #4 NPTR (nodeptr40): [2a:4(FB):c2332e6100000000:10002:2b82] OFF=60, >> LEN=8, flags=0x0 [29] >> >> ------------------------------------------------------------------------------ >> #5 NPTR (nodeptr40): [2a:4(FB):c4322e6200000000:10001:b1a] OFF=68, >> LEN=8, flags=0x0 [30] >> >> ------------------------------------------------------------------------------ >> #6 NPTR (nodeptr40): [2a:4(FB):c4322e6200000000:10001:1ad8] OFF=76, >> LEN=8, flags=0x0 [31] >> >> ------------------------------------------------------------------------------ >> #7 NPTR (nodeptr40): [2a:4(FB):c4342e6200000000:10003:a70] OFF=84, >> LEN=8, flags=0x0 [32] >> >> ------------------------------------------------------------------------------ >> #8 NPTR (nodeptr40): [2a:4(FB):c4342e6200000000:10003:1a2e] OFF=92, >> LEN=8, flags=0x0 [33] >> >> ------------------------------------------------------------------------------ >> #9 NPTR (nodeptr40): [2a:4(FB):c4342e6200000000:10003:29ec] OFF=100, >> LEN=8, flags=0x0 [34] >> >> ------------------------------------------------------------------------------ >> #10 NPTR (nodeptr40): [2a:4(FB):c4342e6200000000:10003:39aa] OFF=108, >> LEN=8, flags=0x0 [35] >> >> ============================================================================== >> NODE (24) LEVEL=1 ITEMS=7 SPACE=0 MKFS ID=0x51a268e2 FLUSH=0x0 >> #0 SD (stat40): [29:1(SD):0:2a:0] OFF=28, LEN=94, flags=0x0 >> exts: 3 >> mask: 0x13 >> plugin: sdext_lw >> offset: 2 >> len: 14 >> mode: drwxr-xr-x >> nlink: 3 >> size: 6 >> plugin: sdext_unix >> offset: 16 >> len: 28 >> uid: 0 >> gid: 0 >> atime: Sat Jan 7 17:59:37 2017 >> mtime: Sat Jan 7 18:03:59 2017 >> ctime: Sat Jan 7 18:03:59 2017 >> rdev: 300 >> bytes: 300 >> plugin: sdext_plugin_set >> offset: 44 >> len: 50 >> Pset count: 12 >> permission : id = 0 >> formatting : id = 2 (smart) >> hash : id = 1 (r5_hash) >> fibration : id = 2 (ext_1_fibre) >> statdata : id = 0 (stat40) >> diritem : id = 2 (cde40) >> crypto : id = 0 >> digest : id = 0 >> compress : id = 0 (lzo1) >> compressMode : id = 4 (conv) >> cluster : id = 0 (64K) >> create : id = 0 (reg40) >> >> ------------------------------------------------------------------------------ >> #1 DIRITEM (cde40): [2a:0(NAME):0:0:0] OFF=122, LEN=302, flags=0x0 >> NR(6) NAME OFFSET HASH >> SDKEY >> 0 . 158 >> 0000000000000000:0000000000000000 0000291:000002a >> 1 .. 182 >> 0000000000000000:0000000000000000 0000291:000002a >> 2 1.a 206 >> 0000000000000000:0000000000000000 00002a1:0010000 >> 3 3.a 230 >> 0000000000000000:0000000000000000 00002a1:0010002 >> 4 2.b 254 >> 0000000000000000:0000000000000000 00002a1:0010001 >> 5 4.b 278 >> 0000000000000000:0000000000000000 00002a1:0010003 >> >> ------------------------------------------------------------------------------ >> #2 SD (stat40): [2a:1(SD):c2312e6100000000:10000:0] OFF=424, LEN=56, >> flags=0x0 >> exts: 3 >> mask: 0x7 >> plugin: sdext_lw >> offset: 2 >> len: 14 >> mode: -rw-r--r-- >> nlink: 1 >> size: 4096 >> plugin: sdext_unix >> offset: 16 >> len: 28 >> uid: 0 >> gid: 0 >> atime: Sat Jan 7 18:03:59 2017 >> mtime: Sat Jan 7 18:03:59 2017 >> ctime: Sat Jan 7 18:03:59 2017 >> rdev: 4096 >> bytes: 4096 >> plugin: sdext_lt >> offset: 44 >> len: 12 >> atime: 652286102 >> mtime: 652286102 >> ctime: 652286102 >> >> ------------------------------------------------------------------------------ >> #3 SD (stat40): [2a:1(SD):c2332e6100000000:10002:0] OFF=480, LEN=56, >> flags=0x0 >> exts: 3 >> mask: 0x7 >> plugin: sdext_lw >> offset: 2 >> len: 14 >> mode: -rw-r--r-- >> nlink: 1 >> size: 12288 >> plugin: sdext_unix >> offset: 16 >> len: 28 >> uid: 0 >> gid: 0 >> atime: Sat Jan 7 18:03:59 2017 >> mtime: Sat Jan 7 18:03:59 2017 >> ctime: Sat Jan 7 18:03:59 2017 >> rdev: 12288 >> bytes: 12288 >> plugin: sdext_lt >> offset: 44 >> len: 12 >> atime: 656286256 >> mtime: 656286256 >> ctime: 656286256 >> >> ------------------------------------------------------------------------------ >> #4 SD (stat40): [2a:1(SD):c4322e6200000000:10001:0] OFF=536, LEN=56, >> flags=0x0 >> exts: 3 >> mask: 0x7 >> plugin: sdext_lw >> offset: 2 >> len: 14 >> mode: -rw-r--r-- >> nlink: 1 >> size: 8192 >> plugin: sdext_unix >> offset: 16 >> len: 28 >> uid: 0 >> gid: 0 >> atime: Sat Jan 7 18:03:59 2017 >> mtime: Sat Jan 7 18:03:59 2017 >> ctime: Sat Jan 7 18:03:59 2017 >> rdev: 8192 >> bytes: 8192 >> plugin: sdext_lt >> offset: 44 >> len: 12 >> atime: 652286102 >> mtime: 656286256 >> ctime: 656286256 >> >> ------------------------------------------------------------------------------ >> #5 SD (stat40): [2a:1(SD):c4342e6200000000:10003:0] OFF=592, LEN=56, >> flags=0x0 >> exts: 3 >> mask: 0x7 >> plugin: sdext_lw >> offset: 2 >> len: 14 >> mode: -rw-r--r-- >> nlink: 1 >> size: 16384 >> plugin: sdext_unix >> offset: 16 >> len: 28 >> uid: 0 >> gid: 0 >> atime: Sat Jan 7 18:03:59 2017 >> mtime: Sat Jan 7 18:03:59 2017 >> ctime: Sat Jan 7 18:03:59 2017 >> rdev: 16384 >> bytes: 16384 >> plugin: sdext_lt >> offset: 44 >> len: 12 >> atime: 656286256 >> mtime: 656286256 >> ctime: 656286256 >> >> ------------------------------------------------------------------------------ >> #6 TAIL (plain40): [2a:4(FB):c2312e6100000000:10000:0] OFF=648, >> LEN=3182, flags=0x0 >> >> ============================================================================== >> NODE (26) LEVEL=1 ITEMS=2 SPACE=0 MKFS ID=0x51a268e2 FLUSH=0x0 >> #0 TAIL (plain40): [2a:4(FB):c2312e6100000000:10000:c6e] OFF=28, >> LEN=914, flags=0x0 >> >> ------------------------------------------------------------------------------ >> #1 TAIL (plain40): [2a:4(FB):c2332e6100000000:10002:0] OFF=942, >> LEN=3078, flags=0x0 >> >> ============================================================================== >> NODE (27) LEVEL=1 ITEMS=1 SPACE=0 MKFS ID=0x51a268e2 FLUSH=0x0 >> #0 TAIL (plain40): [2a:4(FB):c2332e6100000000:10002:c06] OFF=28, >> LEN=4030, flags=0x0 >> >> ============================================================================== >> NODE (28) LEVEL=1 ITEMS=1 SPACE=0 MKFS ID=0x51a268e2 FLUSH=0x0 >> #0 TAIL (plain40): [2a:4(FB):c2332e6100000000:10002:1bc4] OFF=28, >> LEN=4030, flags=0x50 >> >> ============================================================================== >> NODE (29) LEVEL=1 ITEMS=2 SPACE=0 MKFS ID=0x51a268e2 FLUSH=0x0 >> #0 TAIL (plain40): [2a:4(FB):c2332e6100000000:10002:2b82] OFF=28, >> LEN=1150, flags=0x54 >> >> ------------------------------------------------------------------------------ >> #1 TAIL (plain40): [2a:4(FB):c4322e6200000000:10001:0] OFF=1178, >> LEN=2842, flags=0x0 >> >> ============================================================================== >> NODE (30) LEVEL=1 ITEMS=1 SPACE=0 MKFS ID=0x51a268e2 FLUSH=0x0 >> #0 TAIL (plain40): [2a:4(FB):c4322e6200000000:10001:b1a] OFF=28, >> LEN=4030, flags=0x0 >> >> ============================================================================== >> NODE (31) LEVEL=1 ITEMS=2 SPACE=0 MKFS ID=0x51a268e2 FLUSH=0x0 >> #0 TAIL (plain40): [2a:4(FB):c4322e6200000000:10001:1ad8] OFF=28, >> LEN=1320, flags=0x0 >> >> ------------------------------------------------------------------------------ >> #1 TAIL (plain40): [2a:4(FB):c4342e6200000000:10003:0] OFF=1348, >> LEN=2672, flags=0x0 >> >> ============================================================================== >> NODE (32) LEVEL=1 ITEMS=1 SPACE=0 MKFS ID=0x51a268e2 FLUSH=0x0 >> #0 TAIL (plain40): [2a:4(FB):c4342e6200000000:10003:a70] OFF=28, >> LEN=4030, flags=0x0 >> >> ============================================================================== >> NODE (33) LEVEL=1 ITEMS=1 SPACE=0 MKFS ID=0x51a268e2 FLUSH=0x0 >> #0 TAIL (plain40): [2a:4(FB):c4342e6200000000:10003:1a2e] OFF=28, >> LEN=4030, flags=0x63 >> >> ============================================================================== >> NODE (34) LEVEL=1 ITEMS=1 SPACE=0 MKFS ID=0x51a268e2 FLUSH=0x0 >> #0 TAIL (plain40): [2a:4(FB):c4342e6200000000:10003:29ec] OFF=28, >> LEN=4030, flags=0xbf >> >> ============================================================================== >> NODE (35) LEVEL=1 ITEMS=1 SPACE=2408 MKFS ID=0x51a268e2 FLUSH=0x0 >> #0 TAIL (plain40): [2a:4(FB):c4342e6200000000:10003:39aa] OFF=28, >> LEN=1622, flags=0x1b7 >> >> ============================================================================== >> >> krshina3 test # mkfs.reiser4 -o create=reg40,fibration=dot_o_fibre >> /dev/md123 >> >> krshina3 test # mount /dev/md123 /mnt/test >> >> krshina3 test # cp /home/dusan/test/* /mnt/test >> >> krshina3 test # umount /dev/md123 >> >> krshina3 test # debugfs.reiser4 -t /dev/md123 >> debugfs.reiser4 1.1.0 >> Format release: 4.0.1 >> Copyright (C) 2001-2005 by Hans Reiser, licensing governed by >> reiser4progs/COPYING. >> >> NODE (25) LEVEL=2 ITEMS=11 SPACE=3562 MKFS ID=0x1bb9bd27 FLUSH=0x0 >> #0 NPTR (nodeptr40): [29:1(SD):0:2a:0] OFF=28, LEN=8, flags=0x0 [24] >> >> ------------------------------------------------------------------------------ >> #1 NPTR (nodeptr40): [2a:4(FB):312e6100000000:10000:c6e] OFF=36, >> LEN=8, flags=0x0 [26] >> >> ------------------------------------------------------------------------------ >> #2 NPTR (nodeptr40): [2a:4(FB):322e6200000000:10001:c06] OFF=44, >> LEN=8, flags=0x0 [27] >> >> ------------------------------------------------------------------------------ >> #3 NPTR (nodeptr40): [2a:4(FB):322e6200000000:10001:1bc4] OFF=52, >> LEN=8, flags=0x0 [28] >> >> ------------------------------------------------------------------------------ >> #4 NPTR (nodeptr40): [2a:4(FB):332e6100000000:10002:b5c] OFF=60, >> LEN=8, flags=0x0 [29] >> >> ------------------------------------------------------------------------------ >> #5 NPTR (nodeptr40): [2a:4(FB):332e6100000000:10002:1b1a] OFF=68, >> LEN=8, flags=0x0 [30] >> >> ------------------------------------------------------------------------------ >> #6 NPTR (nodeptr40): [2a:4(FB):332e6100000000:10002:2ad8] OFF=76, >> LEN=8, flags=0x0 [31] >> >> ------------------------------------------------------------------------------ >> #7 NPTR (nodeptr40): [2a:4(FB):342e6200000000:10003:a70] OFF=84, >> LEN=8, flags=0x0 [32] >> >> ------------------------------------------------------------------------------ >> #8 NPTR (nodeptr40): [2a:4(FB):342e6200000000:10003:1a2e] OFF=92, >> LEN=8, flags=0x0 [33] >> >> ------------------------------------------------------------------------------ >> #9 NPTR (nodeptr40): [2a:4(FB):342e6200000000:10003:29ec] OFF=100, >> LEN=8, flags=0x0 [34] >> >> ------------------------------------------------------------------------------ >> #10 NPTR (nodeptr40): [2a:4(FB):342e6200000000:10003:39aa] OFF=108, >> LEN=8, flags=0x0 [35] >> >> ============================================================================== >> NODE (24) LEVEL=1 ITEMS=7 SPACE=0 MKFS ID=0x1bb9bd27 FLUSH=0x0 >> #0 SD (stat40): [29:1(SD):0:2a:0] OFF=28, LEN=94, flags=0x0 >> exts: 3 >> mask: 0x13 >> plugin: sdext_lw >> offset: 2 >> len: 14 >> mode: drwxr-xr-x >> nlink: 3 >> size: 6 >> plugin: sdext_unix >> offset: 16 >> len: 28 >> uid: 0 >> gid: 0 >> atime: Sat Jan 7 18:05:26 2017 >> mtime: Sat Jan 7 18:06:31 2017 >> ctime: Sat Jan 7 18:06:31 2017 >> rdev: 300 >> bytes: 300 >> plugin: sdext_plugin_set >> offset: 44 >> len: 50 >> Pset count: 12 >> permission : id = 0 >> formatting : id = 2 (smart) >> hash : id = 1 (r5_hash) >> fibration : id = 1 (dot_o_fibre) >> statdata : id = 0 (stat40) >> diritem : id = 2 (cde40) >> crypto : id = 0 >> digest : id = 0 >> compress : id = 0 (lzo1) >> compressMode : id = 4 (conv) >> cluster : id = 0 (64K) >> create : id = 0 (reg40) >> >> ------------------------------------------------------------------------------ >> #1 DIRITEM (cde40): [2a:0(NAME):0:0:0] OFF=122, LEN=302, flags=0x0 >> NR(6) NAME OFFSET HASH >> SDKEY >> 0 . 158 >> 0000000000000000:0000000000000000 0000291:000002a >> 1 .. 182 >> 0000000000000000:0000000000000000 0000291:000002a >> 2 1.a 206 >> 0000000000000000:0000000000000000 00002a1:0010000 >> 3 2.b 230 >> 0000000000000000:0000000000000000 00002a1:0010001 >> 4 3.a 254 >> 0000000000000000:0000000000000000 00002a1:0010002 >> 5 4.b 278 >> 0000000000000000:0000000000000000 00002a1:0010003 >> >> ------------------------------------------------------------------------------ >> #2 SD (stat40): [2a:1(SD):312e6100000000:10000:0] OFF=424, LEN=56, >> flags=0x0 >> exts: 3 >> mask: 0x7 >> plugin: sdext_lw >> offset: 2 >> len: 14 >> mode: -rw-r--r-- >> nlink: 1 >> size: 4096 >> plugin: sdext_unix >> offset: 16 >> len: 28 >> uid: 0 >> gid: 0 >> atime: Sat Jan 7 18:06:31 2017 >> mtime: Sat Jan 7 18:06:31 2017 >> ctime: Sat Jan 7 18:06:31 2017 >> rdev: 4096 >> bytes: 4096 >> plugin: sdext_lt >> offset: 44 >> len: 12 >> atime: 778212799 >> mtime: 778212799 >> ctime: 778212799 >> >> ------------------------------------------------------------------------------ >> #3 SD (stat40): [2a:1(SD):322e6200000000:10001:0] OFF=480, LEN=56, >> flags=0x0 >> exts: 3 >> mask: 0x7 >> plugin: sdext_lw >> offset: 2 >> len: 14 >> mode: -rw-r--r-- >> nlink: 1 >> size: 8192 >> plugin: sdext_unix >> offset: 16 >> len: 28 >> uid: 0 >> gid: 0 >> atime: Sat Jan 7 18:06:31 2017 >> mtime: Sat Jan 7 18:06:31 2017 >> ctime: Sat Jan 7 18:06:31 2017 >> rdev: 8192 >> bytes: 8192 >> plugin: sdext_lt >> offset: 44 >> len: 12 >> atime: 778212799 >> mtime: 778212799 >> ctime: 778212799 >> >> ------------------------------------------------------------------------------ >> #4 SD (stat40): [2a:1(SD):332e6100000000:10002:0] OFF=536, LEN=56, >> flags=0x0 >> exts: 3 >> mask: 0x7 >> plugin: sdext_lw >> offset: 2 >> len: 14 >> mode: -rw-r--r-- >> nlink: 1 >> size: 12288 >> plugin: sdext_unix >> offset: 16 >> len: 28 >> uid: 0 >> gid: 0 >> atime: Sat Jan 7 18:06:31 2017 >> mtime: Sat Jan 7 18:06:31 2017 >> ctime: Sat Jan 7 18:06:31 2017 >> rdev: 12288 >> bytes: 12288 interesting TODOs with tangible results. >> plugin: sdext_lt >> offset: 44 >> len: 12 >> atime: 782212955 >> mtime: 782212955 >> ctime: 782212955 >> >> ------------------------------------------------------------------------------ >> #5 SD (stat40): [2a:1(SD):342e6200000000:10003:0] OFF=592, LEN=56, >> flags=0x0 >> exts: 3 >> mask: 0x7 >> plugin: sdext_lw >> offset: 2 >> len: 14 >> mode: -rw-r--r-- >> nlink: 1 >> size: 16384 >> plugin: sdext_unix >> offset: 16 >> len: 28 >> uid: 0 >> gid: 0 >> atime: Sat Jan 7 18:06:31 2017 >> mtime: Sat Jan 7 18:06:31 2017 >> ctime: Sat Jan 7 18:06:31 2017 >> rdev: 16384 >> bytes: 16384 >> plugin: sdext_lt >> offset: 44 >> len: 12 >> atime: 782212955 >> mtime: 782212955 >> ctime: 782212955 >> >> ------------------------------------------------------------------------------ >> #6 TAIL (plain40): [2a:4(FB):312e6100000000:10000:0] OFF=648, >> LEN=3182, flags=0x0 >> >> ============================================================================== >> NODE (26) LEVEL=1 ITEMS=2 SPACE=0 MKFS ID=0x1bb9bd27 FLUSH=0x0 >> #0 TAIL (plain40): [2a:4(FB):312e6100000000:10000:c6e] OFF=28, >> LEN=914, flags=0x0 >> >> ------------------------------------------------------------------------------ >> #1 TAIL (plain40): [2a:4(FB):322e6200000000:10001:0] OFF=942, >> LEN=3078, flags=0x0 >> >> ============================================================================== >> NODE (27) LEVEL=1 ITEMS=1 SPACE=0 MKFS ID=0x1bb9bd27 FLUSH=0x0 >> #0 TAIL (plain40): [2a:4(FB):322e6200000000:10001:c06] OFF=28, >> LEN=4030, flags=0x0 >> >> ============================================================================== >> NODE (28) LEVEL=1 ITEMS=2 SPACE=0 MKFS ID=0x1bb9bd27 FLUSH=0x0 >> #0 TAIL (plain40): [2a:4(FB):322e6200000000:10001:1bc4] OFF=28, >> LEN=1084, flags=0x0 >> >> ------------------------------------------------------------------------------ >> #1 TAIL (plain40): [2a:4(FB):332e6100000000:10002:0] OFF=1112, >> LEN=2908, flags=0x0 >> >> ============================================================================== >> NODE (29) LEVEL=1 ITEMS=1 SPACE=0 MKFS ID=0x1bb9bd27 FLUSH=0x0 >> #0 TAIL (plain40): [2a:4(FB):332e6100000000:10002:b5c] OFF=28, >> LEN=4030, flags=0x0 >> >> ============================================================================== >> NODE (30) LEVEL=1 ITEMS=1 SPACE=0 MKFS ID=0x1bb9bd27 FLUSH=0x0 >> #0 TAIL (plain40): [2a:4(FB):332e6100000000:10002:1b1a] OFF=28, >> LEN=4030, flags=0xc >> >> ============================================================================== >> NODE (31) LEVEL=1 ITEMS=2 SPACE=0 MKFS ID=0x1bb9bd27 FLUSH=0x0 >> #0 TAIL (plain40): [2a:4(FB):332e6100000000:10002:2ad8] OFF=28, >> LEN=1320, flags=0x1cf >> >> ------------------------------------------------------------------------------ >> #1 TAIL (plain40): [2a:4(FB):342e6200000000:10003:0] OFF=1348, >> LEN=2672, flags=0x0 >> >> ============================================================================== >> NODE (32) LEVEL=1 ITEMS=1 SPACE=0 MKFS ID=0x1bb9bd27 FLUSH=0x0 >> #0 TAIL (plain40): [2a:4(FB):342e6200000000:10003:a70] OFF=28, >> LEN=4030, flags=0x0 >> >> ============================================================================== >> NODE (33) LEVEL=1 ITEMS=1 SPACE=0 MKFS ID=0x1bb9bd27 FLUSH=0x0 >> #0 TAIL (plain40): [2a:4(FB):342e6200000000:10003:1a2e] OFF=28, >> LEN=4030, flags=0x21 >> >> ============================================================================== >> NODE (34) LEVEL=1 ITEMS=1 SPACE=0 MKFS ID=0x1bb9bd27 FLUSH=0x0 >> #0 TAIL (plain40): [2a:4(FB):342e6200000000:10003:29ec] OFF=28, >> LEN=4030, flags=0x1cf >> >> ============================================================================== >> NODE (35) LEVEL=1 ITEMS=1 SPACE=2408 MKFS ID=0x1bb9bd27 FLUSH=0x0 >> #0 TAIL (plain40): [2a:4(FB):342e6200000000:10003:39aa] OFF=28, >> LEN=1622, flags=0x16 >> >> ============================================================================== >> >> >> As we can see with ext_1_fibre files were sorted: >> 1.a >> 3.a >> 2.b >> 4.b >> >> With dot_o_fibre: >> >> 1.a >> 2.b >> 3.a >> 4.b >> > > Thus, respect for fibration groups is also under a big question. > TBH, I prefer to not kill time for projects basing on questionable > assumptions and deductions. Just because there is a lot of > interesting TODOs with tangible results. > OK I'll get back to automatic R4 git tree lkp-tests project. I planned to make two testing steps: 1. Build, functional and stress testing under VM with R4 partition on RAM disk 2. If it passes step 1 then some performance testing under VM with R4 on real partition I'll probably use Ubuntu for VM, although I'm not familiar with Debian clones, but automatic testing suite supports it. I'm more for Gentoo but lkp-tests doesn't support it. I'll probably run 4.5 to 4.9 patches first to see what I get. > Thanks, > Edward. ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [RFC] Smart fibration plugin ext_4321 2017-01-07 19:26 ` Dušan Čolić @ 2017-01-07 19:06 ` Edward Shishkin 0 siblings, 0 replies; 15+ messages in thread From: Edward Shishkin @ 2017-01-07 19:06 UTC (permalink / raw) To: Dušan Čolić; +Cc: reiserfs-devel On 01/07/2017 09:26 PM, Dušan Čolić wrote: > On Sat, Jan 7, 2017 at 6:56 PM, Edward Shishkin > <edward.shishkin@gmail.com> wrote: >> >> On 01/07/2017 07:10 PM, Dušan Čolić wrote: >>> On Sat, Jan 7, 2017 at 8:58 AM, Edward Shishkin >>> <edward.shishkin@gmail.com> wrote: >>>> >>>> On 01/07/2017 10:15 AM, Dušan Čolić wrote: >>>>> On Sat, Jan 7, 2017 at 12:05 AM, Edward Shishkin >>>>> <edward.shishkin@gmail.com> wrote: >>>>>> On 01/07/2017 01:09 AM, Dušan Čolić wrote: >>>>>>> On Fri, Jan 6, 2017 at 8:58 PM, Edward Shishkin >>>>>>> <edward.shishkin@gmail.com> wrote: >>>>>>>> >>>>>>>> On 01/06/2017 05:34 PM, Dušan Čolić wrote: >>>>>>>>> On Fri, Jan 6, 2017 at 2:44 PM, Edward Shishkin >>>>>>>>> <edward.shishkin@gmail.com> wrote: >>>>>>>>>> On 12/26/2016 11:13 PM, Dušan Čolić wrote: >>>>>>>>>>> On Mon, Dec 26, 2016 at 7:47 PM, Edward Shishkin >>>>>>>>>>> <edward.shishkin@gmail.com> wrote: >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> On 12/25/2016 02:59 AM, Dušan Čolić wrote: >>>>>>>>>>>>> Fibration is a great way to decrease fragmentation and increase >>>>>>>>>>>>> throughput. >>>>>>>>>>>>> Currently there are 4 fibration plugins, lex, dot.o, ext_1 and >>>>>>>>>>>>> ext_3 >>>>>>>>>>>>> and they all have their upsides and downsides. >>>>>>>>>>>>> >>>>>>>>>>>>> Proposed fibration plugin combines them all so that it combines >>>>>>>>>>>>> files >>>>>>>>>>>>> with same extensions for 1, 2. 3 and 4 character extension in >>>>>>>>>>>>> groups >>>>>>>>>>>>> and sorts them in same fiber group. >>>>>>>>>>>>> >>>>>>>>>>>>> With this fibration plugin all eg. xvid files would be in same >>>>>>>>>>>>> group >>>>>>>>>>>>> in folder on disk sorted alphabetically >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> What application wants all xvid files to be in the same group? >>>>>>>>>>>> Do you have any benchmark numbers which show advantages >>>>>>>>>>>> of the new plugin? >>>>>>>>>>>> >>>>>>>>>>> Xvid files are just an example. >>>>>>>>>>> ext_1234 fibration would be equal to sum of ext_1, ext_2, ext_3, >>>>>>>>>>> ext_4 >>>>>>>>>>> and dot_o in one. >>>>>>>>>>> >>>>>>>>>>> In currently default plugin (dot_o) we sort all files by name from >>>>>>>>>>> the >>>>>>>>>>> start except .o files which we put at the end. >>>>>>>>>>> So if we had a source directory with .c .h and .o files in it >>>>>>>>>>> files >>>>>>>>>>> by >>>>>>>>>>> extension would be sorted like: chchchchchchchchoooooooooooooo >>>>>>>>>>> I presumed that in some use cases it is better to have files be >>>>>>>>>>> sorted >>>>>>>>>>> ccccccccccchhhhhhhhhhhhhhoooooooooooo >>>>>>>>>>> >>>>>>>>>>> Hypothesis is to use the premise that files of same extension are >>>>>>>>>>> in >>>>>>>>>>> same order of size to reduce fragmentation. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> What kind of fragmentation you are talking about? >>>>>>>>>> Internal (which results in "dead" disk space), or >>>>>>>>>> external (which results in a lot of "extents")? >>>>>>>>>> >>>>>>>>> External >>>>>>>>> >>>>>>>>>> Edward. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>>> If we group files of same extension in groups in one directory, >>>>>>>>>>> when >>>>>>>>>>> we write files of same extension after deletion of some files of >>>>>>>>>>> one >>>>>>>>>>> extension their group would be in same order as the deleted file >>>>>>>>>>> so >>>>>>>>>>> they would be written in similar place and occupy the 'hole' of >>>>>>>>>>> similar size. >>>>>>>> >>>>>>>> >>>>>>>> So "similar" means the same order, that is file sizes can differ in 2 >>>>>>>> times? >>>>>>>> TBH, I don't see what can be deduced from this assumption ;) >>>>>>>> It can happen that new file either doesn't fit to that hole, or >>>>>>>> occupies >>>>>>>> too >>>>>>>> small place, so that next file won't fit to the rest of the hole.. >>>>>>>> >>>>>>> OFC we can never guarantee that the new file completely fits the hole >>>>>>> (especially as we go through compression in next layer) but for both >>>>>>> smaller and larger file than a hole we would have higher probability >>>>>>> for less extents for situations with 2 or more types of files in a >>>>>>> directory. For one type of file in a directory behavior would be the >>>>>>> same as dot_o and ext_1 plugin. >>>>>> >>>>>> >>>>>> I should upset you: fibration plugins are about mapping of a semantic >>>>>> tree to the storage tree. Simply speaking, they manage mapping >>>>>> object-> key, which has nothing common with real locations on diТак ты >>>>>> уже не ищешь? sk. >>>>>> >>>>>> This is a block allocator, who assigns disk addresses to nodes of the >>>>>> storage tree (right before writing them to disk at flush time). >>>>>> And I am sure that block allocator doesn't care about fibration groups. >>>>>> >>>>>> I strongly not recommend you to experiment with block allocator. >>>>>> Simply because I know how many people killed a lot of time without >>>>>> results. >>>>> Then what is this comment in the beginning of kassign.c about: >>>>> >>>>> >>>>> * In reiser4 every piece of file system data and meta-data has a key. >>>>> Keys >>>>> * are used to store information in and retrieve it from reiser4 internal >>>>> * tree. In addition to this, keys define _ordering_ of all file system >>>>> * information: things having close keys are placed into the same or >>>>> * neighboring (in the tree order) nodes of the tree. As our block >>>>> allocator >>>>> * tries to respect tree order (see flush.c), keys also define order in >>>>> which >>>>> * things are laid out on the disk, and hence, affect performance >>>>> directly. >>>> >>>> I can not find where in the code block allocator respects key ordering. >>>> Once you find it, then let me know.. >>>> >>> Let me prove it in a way that is possible for me without investing >>> years in learning R4 internals ;) >>> >>> krshina3 test # mkfs.reiser4 -o create=reg40,fibration=ext_1_fibre >>> /dev/md123 >>> >>> krshina3 test # ls -la /home/dusan/test/ >>> total 261 >>> drwxr-xr-x 2 root root 6 Jan 7 17:51 . >>> drwxr-xr-x 46 dusan dusan 73 Jan 7 17:48 .. >>> -rw-r--r-- 1 root root 4096 Jan 7 17:49 1.a >>> -rw-r--r-- 1 root root 8192 Jan 7 17:49 2.b >>> -rw-r--r-- 1 root root 12288 Jan 7 17:50 3.a >>> -rw-r--r-- 1 root root 16384 Jan 7 17:51 4.b >>> >>> krshina3 test # mount /dev/md123 /mnt/test >>> >>> krshina3 test # cp /home/dusan/test/* /mnt/test >>> >>> krshina3 test # umount /dev/md123 >>> >>> krshina3 test # debugfs.reiser4 -t /dev/md123 >>> debugfs.reiser4 1.1.0 >>> Format release: 4.0.1 >>> Copyright (C) 2001-2005 by Hans Reiser, licensing governed by >>> reiser4progs/COPYING. >>> >>> NODE (25) LEVEL=2 ITEMS=11 SPACE=3562 MKFS ID=0x51a268e2 FLUSH=0x0 >>> #0 NPTR (nodeptr40): [29:1(SD):0:2a:0] OFF=28, LEN=8, flags=0x0 [24] >>> >>> ------------------------------------------------------------------------------ >>> #1 NPTR (nodeptr40): [2a:4(FB):c2312e6100000000:10000:c6e] OFF=36, >>> LEN=8, flags=0x0 [26] >>> >>> ------------------------------------------------------------------------------ >>> #2 NPTR (nodeptr40): [2a:4(FB):c2332e6100000000:10002:c06] OFF=44, >>> LEN=8, flags=0x0 [27] >>> >>> ------------------------------------------------------------------------------ >>> #3 NPTR (nodeptr40): [2a:4(FB):c2332e6100000000:10002:1bc4] OFF=52, >>> LEN=8, flags=0x0 [28] >>> >>> ------------------------------------------------------------------------------ >>> #4 NPTR (nodeptr40): [2a:4(FB):c2332e6100000000:10002:2b82] OFF=60, >>> LEN=8, flags=0x0 [29] >>> >>> ------------------------------------------------------------------------------ >>> #5 NPTR (nodeptr40): [2a:4(FB):c4322e6200000000:10001:b1a] OFF=68, >>> LEN=8, flags=0x0 [30] >>> >>> ------------------------------------------------------------------------------ >>> #6 NPTR (nodeptr40): [2a:4(FB):c4322e6200000000:10001:1ad8] OFF=76, >>> LEN=8, flags=0x0 [31] >>> >>> ------------------------------------------------------------------------------ >>> #7 NPTR (nodeptr40): [2a:4(FB):c4342e6200000000:10003:a70] OFF=84, >>> LEN=8, flags=0x0 [32] >>> >>> ------------------------------------------------------------------------------ >>> #8 NPTR (nodeptr40): [2a:4(FB):c4342e6200000000:10003:1a2e] OFF=92, >>> LEN=8, flags=0x0 [33] >>> >>> ------------------------------------------------------------------------------ >>> #9 NPTR (nodeptr40): [2a:4(FB):c4342e6200000000:10003:29ec] OFF=100, >>> LEN=8, flags=0x0 [34] >>> >>> ------------------------------------------------------------------------------ >>> #10 NPTR (nodeptr40): [2a:4(FB):c4342e6200000000:10003:39aa] OFF=108, >>> LEN=8, flags=0x0 [35] >>> >>> ============================================================================== >>> NODE (24) LEVEL=1 ITEMS=7 SPACE=0 MKFS ID=0x51a268e2 FLUSH=0x0 >>> #0 SD (stat40): [29:1(SD):0:2a:0] OFF=28, LEN=94, flags=0x0 >>> exts: 3 >>> mask: 0x13 >>> plugin: sdext_lw >>> offset: 2 >>> len: 14 >>> mode: drwxr-xr-x >>> nlink: 3 >>> size: 6 >>> plugin: sdext_unix >>> offset: 16 >>> len: 28 >>> uid: 0 >>> gid: 0 >>> atime: Sat Jan 7 17:59:37 2017 >>> mtime: Sat Jan 7 18:03:59 2017 >>> ctime: Sat Jan 7 18:03:59 2017 >>> rdev: 300 >>> bytes: 300 >>> plugin: sdext_plugin_set >>> offset: 44 >>> len: 50 >>> Pset count: 12 >>> permission : id = 0 >>> formatting : id = 2 (smart) >>> hash : id = 1 (r5_hash) >>> fibration : id = 2 (ext_1_fibre) >>> statdata : id = 0 (stat40) >>> diritem : id = 2 (cde40) >>> crypto : id = 0 >>> digest : id = 0 >>> compress : id = 0 (lzo1) >>> compressMode : id = 4 (conv) >>> cluster : id = 0 (64K) >>> create : id = 0 (reg40) >>> >>> ------------------------------------------------------------------------------ >>> #1 DIRITEM (cde40): [2a:0(NAME):0:0:0] OFF=122, LEN=302, flags=0x0 >>> NR(6) NAME OFFSET HASH >>> SDKEY >>> 0 . 158 >>> 0000000000000000:0000000000000000 0000291:000002a >>> 1 .. 182 >>> 0000000000000000:0000000000000000 0000291:000002a >>> 2 1.a 206 >>> 0000000000000000:0000000000000000 00002a1:0010000 >>> 3 3.a 230 >>> 0000000000000000:0000000000000000 00002a1:0010002 >>> 4 2.b 254 >>> 0000000000000000:0000000000000000 00002a1:0010001 >>> 5 4.b 278 >>> 0000000000000000:0000000000000000 00002a1:0010003 >>> >>> ------------------------------------------------------------------------------ >>> #2 SD (stat40): [2a:1(SD):c2312e6100000000:10000:0] OFF=424, LEN=56, >>> flags=0x0 >>> exts: 3 >>> mask: 0x7 >>> plugin: sdext_lw >>> offset: 2 >>> len: 14 >>> mode: -rw-r--r-- >>> nlink: 1 >>> size: 4096 >>> plugin: sdext_unix >>> offset: 16 >>> len: 28 >>> uid: 0 >>> gid: 0 >>> atime: Sat Jan 7 18:03:59 2017 >>> mtime: Sat Jan 7 18:03:59 2017 >>> ctime: Sat Jan 7 18:03:59 2017 >>> rdev: 4096 >>> bytes: 4096 >>> plugin: sdext_lt >>> offset: 44 >>> len: 12 >>> atime: 652286102 >>> mtime: 652286102 >>> ctime: 652286102 >>> >>> ------------------------------------------------------------------------------ >>> #3 SD (stat40): [2a:1(SD):c2332e6100000000:10002:0] OFF=480, LEN=56, >>> flags=0x0 >>> exts: 3 >>> mask: 0x7 >>> plugin: sdext_lw >>> offset: 2 >>> len: 14 >>> mode: -rw-r--r-- >>> nlink: 1 >>> size: 12288 >>> plugin: sdext_unix >>> offset: 16 >>> len: 28 >>> uid: 0 >>> gid: 0 >>> atime: Sat Jan 7 18:03:59 2017 >>> mtime: Sat Jan 7 18:03:59 2017 >>> ctime: Sat Jan 7 18:03:59 2017 >>> rdev: 12288 >>> bytes: 12288 >>> plugin: sdext_lt >>> offset: 44 >>> len: 12 >>> atime: 656286256 >>> mtime: 656286256 >>> ctime: 656286256 >>> >>> ------------------------------------------------------------------------------ >>> #4 SD (stat40): [2a:1(SD):c4322e6200000000:10001:0] OFF=536, LEN=56, >>> flags=0x0 >>> exts: 3 >>> mask: 0x7 >>> plugin: sdext_lw >>> offset: 2 >>> len: 14 >>> mode: -rw-r--r-- >>> nlink: 1 >>> size: 8192 >>> plugin: sdext_unix >>> offset: 16 >>> len: 28 >>> uid: 0 >>> gid: 0 >>> atime: Sat Jan 7 18:03:59 2017 >>> mtime: Sat Jan 7 18:03:59 2017 >>> ctime: Sat Jan 7 18:03:59 2017 >>> rdev: 8192 >>> bytes: 8192 >>> plugin: sdext_lt >>> offset: 44 >>> len: 12 >>> atime: 652286102 >>> mtime: 656286256 >>> ctime: 656286256 >>> >>> ------------------------------------------------------------------------------ >>> #5 SD (stat40): [2a:1(SD):c4342e6200000000:10003:0] OFF=592, LEN=56, >>> flags=0x0 >>> exts: 3 >>> mask: 0x7 >>> plugin: sdext_lw >>> offset: 2 >>> len: 14 >>> mode: -rw-r--r-- >>> nlink: 1 >>> size: 16384 >>> plugin: sdext_unix >>> offset: 16 >>> len: 28 >>> uid: 0 >>> gid: 0 >>> atime: Sat Jan 7 18:03:59 2017 >>> mtime: Sat Jan 7 18:03:59 2017 >>> ctime: Sat Jan 7 18:03:59 2017 >>> rdev: 16384 >>> bytes: 16384 >>> plugin: sdext_lt >>> offset: 44 >>> len: 12 >>> atime: 656286256 >>> mtime: 656286256 >>> ctime: 656286256 >>> >>> ------------------------------------------------------------------------------ >>> #6 TAIL (plain40): [2a:4(FB):c2312e6100000000:10000:0] OFF=648, >>> LEN=3182, flags=0x0 >>> >>> ============================================================================== >>> NODE (26) LEVEL=1 ITEMS=2 SPACE=0 MKFS ID=0x51a268e2 FLUSH=0x0 >>> #0 TAIL (plain40): [2a:4(FB):c2312e6100000000:10000:c6e] OFF=28, >>> LEN=914, flags=0x0 >>> >>> ------------------------------------------------------------------------------ >>> #1 TAIL (plain40): [2a:4(FB):c2332e6100000000:10002:0] OFF=942, >>> LEN=3078, flags=0x0 >>> >>> ============================================================================== >>> NODE (27) LEVEL=1 ITEMS=1 SPACE=0 MKFS ID=0x51a268e2 FLUSH=0x0 >>> #0 TAIL (plain40): [2a:4(FB):c2332e6100000000:10002:c06] OFF=28, >>> LEN=4030, flags=0x0 >>> >>> ============================================================================== >>> NODE (28) LEVEL=1 ITEMS=1 SPACE=0 MKFS ID=0x51a268e2 FLUSH=0x0 >>> #0 TAIL (plain40): [2a:4(FB):c2332e6100000000:10002:1bc4] OFF=28, >>> LEN=4030, flags=0x50 >>> >>> ============================================================================== >>> NODE (29) LEVEL=1 ITEMS=2 SPACE=0 MKFS ID=0x51a268e2 FLUSH=0x0 >>> #0 TAIL (plain40): [2a:4(FB):c2332e6100000000:10002:2b82] OFF=28, >>> LEN=1150, flags=0x54 >>> >>> ------------------------------------------------------------------------------ >>> #1 TAIL (plain40): [2a:4(FB):c4322e6200000000:10001:0] OFF=1178, >>> LEN=2842, flags=0x0 >>> >>> ============================================================================== >>> NODE (30) LEVEL=1 ITEMS=1 SPACE=0 MKFS ID=0x51a268e2 FLUSH=0x0 >>> #0 TAIL (plain40): [2a:4(FB):c4322e6200000000:10001:b1a] OFF=28, >>> LEN=4030, flags=0x0 >>> >>> ============================================================================== >>> NODE (31) LEVEL=1 ITEMS=2 SPACE=0 MKFS ID=0x51a268e2 FLUSH=0x0 >>> #0 TAIL (plain40): [2a:4(FB):c4322e6200000000:10001:1ad8] OFF=28, >>> LEN=1320, flags=0x0 >>> >>> ------------------------------------------------------------------------------ >>> #1 TAIL (plain40): [2a:4(FB):c4342e6200000000:10003:0] OFF=1348, >>> LEN=2672, flags=0x0 >>> >>> ============================================================================== >>> NODE (32) LEVEL=1 ITEMS=1 SPACE=0 MKFS ID=0x51a268e2 FLUSH=0x0 >>> #0 TAIL (plain40): [2a:4(FB):c4342e6200000000:10003:a70] OFF=28, >>> LEN=4030, flags=0x0 >>> >>> ============================================================================== >>> NODE (33) LEVEL=1 ITEMS=1 SPACE=0 MKFS ID=0x51a268e2 FLUSH=0x0 >>> #0 TAIL (plain40): [2a:4(FB):c4342e6200000000:10003:1a2e] OFF=28, >>> LEN=4030, flags=0x63 >>> >>> ============================================================================== >>> NODE (34) LEVEL=1 ITEMS=1 SPACE=0 MKFS ID=0x51a268e2 FLUSH=0x0 >>> #0 TAIL (plain40): [2a:4(FB):c4342e6200000000:10003:29ec] OFF=28, >>> LEN=4030, flags=0xbf >>> >>> ============================================================================== >>> NODE (35) LEVEL=1 ITEMS=1 SPACE=2408 MKFS ID=0x51a268e2 FLUSH=0x0 >>> #0 TAIL (plain40): [2a:4(FB):c4342e6200000000:10003:39aa] OFF=28, >>> LEN=1622, flags=0x1b7 >>> >>> ============================================================================== >>> >>> krshina3 test # mkfs.reiser4 -o create=reg40,fibration=dot_o_fibre >>> /dev/md123 >>> >>> krshina3 test # mount /dev/md123 /mnt/test >>> >>> krshina3 test # cp /home/dusan/test/* /mnt/test >>> >>> krshina3 test # umount /dev/md123 >>> >>> krshina3 test # debugfs.reiser4 -t /dev/md123 >>> debugfs.reiser4 1.1.0 >>> Format release: 4.0.1 >>> Copyright (C) 2001-2005 by Hans Reiser, licensing governed by >>> reiser4progs/COPYING. >>> >>> NODE (25) LEVEL=2 ITEMS=11 SPACE=3562 MKFS ID=0x1bb9bd27 FLUSH=0x0 >>> #0 NPTR (nodeptr40): [29:1(SD):0:2a:0] OFF=28, LEN=8, flags=0x0 [24] >>> >>> ------------------------------------------------------------------------------ >>> #1 NPTR (nodeptr40): [2a:4(FB):312e6100000000:10000:c6e] OFF=36, >>> LEN=8, flags=0x0 [26] >>> >>> ------------------------------------------------------------------------------ >>> #2 NPTR (nodeptr40): [2a:4(FB):322e6200000000:10001:c06] OFF=44, >>> LEN=8, flags=0x0 [27] >>> >>> ------------------------------------------------------------------------------ >>> #3 NPTR (nodeptr40): [2a:4(FB):322e6200000000:10001:1bc4] OFF=52, >>> LEN=8, flags=0x0 [28] >>> >>> ------------------------------------------------------------------------------ >>> #4 NPTR (nodeptr40): [2a:4(FB):332e6100000000:10002:b5c] OFF=60, >>> LEN=8, flags=0x0 [29] >>> >>> ------------------------------------------------------------------------------ >>> #5 NPTR (nodeptr40): [2a:4(FB):332e6100000000:10002:1b1a] OFF=68, >>> LEN=8, flags=0x0 [30] >>> >>> ------------------------------------------------------------------------------ >>> #6 NPTR (nodeptr40): [2a:4(FB):332e6100000000:10002:2ad8] OFF=76, >>> LEN=8, flags=0x0 [31] >>> >>> ------------------------------------------------------------------------------ >>> #7 NPTR (nodeptr40): [2a:4(FB):342e6200000000:10003:a70] OFF=84, >>> LEN=8, flags=0x0 [32] >>> >>> ------------------------------------------------------------------------------ >>> #8 NPTR (nodeptr40): [2a:4(FB):342e6200000000:10003:1a2e] OFF=92, >>> LEN=8, flags=0x0 [33] >>> >>> ------------------------------------------------------------------------------ >>> #9 NPTR (nodeptr40): [2a:4(FB):342e6200000000:10003:29ec] OFF=100, >>> LEN=8, flags=0x0 [34] >>> >>> ------------------------------------------------------------------------------ >>> #10 NPTR (nodeptr40): [2a:4(FB):342e6200000000:10003:39aa] OFF=108, >>> LEN=8, flags=0x0 [35] >>> >>> ============================================================================== >>> NODE (24) LEVEL=1 ITEMS=7 SPACE=0 MKFS ID=0x1bb9bd27 FLUSH=0x0 >>> #0 SD (stat40): [29:1(SD):0:2a:0] OFF=28, LEN=94, flags=0x0 >>> exts: 3 >>> mask: 0x13 >>> plugin: sdext_lw >>> offset: 2 >>> len: 14 >>> mode: drwxr-xr-x >>> nlink: 3 >>> size: 6 >>> plugin: sdext_unix >>> offset: 16 >>> len: 28 >>> uid: 0 >>> gid: 0 >>> atime: Sat Jan 7 18:05:26 2017 >>> mtime: Sat Jan 7 18:06:31 2017 >>> ctime: Sat Jan 7 18:06:31 2017 >>> rdev: 300 >>> bytes: 300 >>> plugin: sdext_plugin_set >>> offset: 44 >>> len: 50 >>> Pset count: 12 >>> permission : id = 0 >>> formatting : id = 2 (smart) >>> hash : id = 1 (r5_hash) >>> fibration : id = 1 (dot_o_fibre) >>> statdata : id = 0 (stat40) >>> diritem : id = 2 (cde40) >>> crypto : id = 0 >>> digest : id = 0 >>> compress : id = 0 (lzo1) >>> compressMode : id = 4 (conv) >>> cluster : id = 0 (64K) >>> create : id = 0 (reg40) >>> >>> ------------------------------------------------------------------------------ >>> #1 DIRITEM (cde40): [2a:0(NAME):0:0:0] OFF=122, LEN=302, flags=0x0 >>> NR(6) NAME OFFSET HASH >>> SDKEY >>> 0 . 158 >>> 0000000000000000:0000000000000000 0000291:000002a >>> 1 .. 182 >>> 0000000000000000:0000000000000000 0000291:000002a >>> 2 1.a 206 >>> 0000000000000000:0000000000000000 00002a1:0010000 >>> 3 2.b 230 >>> 0000000000000000:0000000000000000 00002a1:0010001 >>> 4 3.a 254 >>> 0000000000000000:0000000000000000 00002a1:0010002 >>> 5 4.b 278 >>> 0000000000000000:0000000000000000 00002a1:0010003 >>> >>> ------------------------------------------------------------------------------ >>> #2 SD (stat40): [2a:1(SD):312e6100000000:10000:0] OFF=424, LEN=56, >>> flags=0x0 >>> exts: 3 >>> mask: 0x7 >>> plugin: sdext_lw >>> offset: 2 >>> len: 14 >>> mode: -rw-r--r-- >>> nlink: 1 >>> size: 4096 >>> plugin: sdext_unix >>> offset: 16 >>> len: 28 >>> uid: 0 >>> gid: 0 >>> atime: Sat Jan 7 18:06:31 2017 >>> mtime: Sat Jan 7 18:06:31 2017 >>> ctime: Sat Jan 7 18:06:31 2017 >>> rdev: 4096 >>> bytes: 4096 >>> plugin: sdext_lt >>> offset: 44 >>> len: 12 >>> atime: 778212799 >>> mtime: 778212799 >>> ctime: 778212799 >>> >>> ------------------------------------------------------------------------------ >>> #3 SD (stat40): [2a:1(SD):322e6200000000:10001:0] OFF=480, LEN=56, >>> flags=0x0 >>> exts: 3 >>> mask: 0x7 >>> plugin: sdext_lw >>> offset: 2 >>> len: 14 >>> mode: -rw-r--r-- >>> nlink: 1 >>> size: 8192 >>> plugin: sdext_unix >>> offset: 16 >>> len: 28 >>> uid: 0 >>> gid: 0 >>> atime: Sat Jan 7 18:06:31 2017 >>> mtime: Sat Jan 7 18:06:31 2017 >>> ctime: Sat Jan 7 18:06:31 2017 >>> rdev: 8192 >>> bytes: 8192 >>> plugin: sdext_lt >>> offset: 44 >>> len: 12 >>> atime: 778212799 >>> mtime: 778212799 >>> ctime: 778212799 >>> >>> ------------------------------------------------------------------------------ >>> #4 SD (stat40): [2a:1(SD):332e6100000000:10002:0] OFF=536, LEN=56, >>> flags=0x0 >>> exts: 3 >>> mask: 0x7 >>> plugin: sdext_lw >>> offset: 2 >>> len: 14 >>> mode: -rw-r--r-- >>> nlink: 1 >>> size: 12288 >>> plugin: sdext_unix >>> offset: 16 >>> len: 28 >>> uid: 0 >>> gid: 0 >>> atime: Sat Jan 7 18:06:31 2017 >>> mtime: Sat Jan 7 18:06:31 2017 >>> ctime: Sat Jan 7 18:06:31 2017 >>> rdev: 12288 >>> bytes: 12288 interesting TODOs with tangible results. >>> plugin: sdext_lt >>> offset: 44 >>> len: 12 >>> atime: 782212955 >>> mtime: 782212955 >>> ctime: 782212955 >>> >>> ------------------------------------------------------------------------------ >>> #5 SD (stat40): [2a:1(SD):342e6200000000:10003:0] OFF=592, LEN=56, >>> flags=0x0 >>> exts: 3 >>> mask: 0x7 >>> plugin: sdext_lw >>> offset: 2 >>> len: 14 >>> mode: -rw-r--r-- >>> nlink: 1 >>> size: 16384 >>> plugin: sdext_unix >>> offset: 16 >>> len: 28 >>> uid: 0 >>> gid: 0 >>> atime: Sat Jan 7 18:06:31 2017 >>> mtime: Sat Jan 7 18:06:31 2017 >>> ctime: Sat Jan 7 18:06:31 2017 >>> rdev: 16384 >>> bytes: 16384 >>> plugin: sdext_lt >>> offset: 44 >>> len: 12 >>> atime: 782212955 >>> mtime: 782212955 >>> ctime: 782212955 >>> >>> ------------------------------------------------------------------------------ >>> #6 TAIL (plain40): [2a:4(FB):312e6100000000:10000:0] OFF=648, >>> LEN=3182, flags=0x0 >>> >>> ============================================================================== >>> NODE (26) LEVEL=1 ITEMS=2 SPACE=0 MKFS ID=0x1bb9bd27 FLUSH=0x0 >>> #0 TAIL (plain40): [2a:4(FB):312e6100000000:10000:c6e] OFF=28, >>> LEN=914, flags=0x0 >>> >>> ------------------------------------------------------------------------------ >>> #1 TAIL (plain40): [2a:4(FB):322e6200000000:10001:0] OFF=942, >>> LEN=3078, flags=0x0 >>> >>> ============================================================================== >>> NODE (27) LEVEL=1 ITEMS=1 SPACE=0 MKFS ID=0x1bb9bd27 FLUSH=0x0 >>> #0 TAIL (plain40): [2a:4(FB):322e6200000000:10001:c06] OFF=28, >>> LEN=4030, flags=0x0 >>> >>> ============================================================================== >>> NODE (28) LEVEL=1 ITEMS=2 SPACE=0 MKFS ID=0x1bb9bd27 FLUSH=0x0 >>> #0 TAIL (plain40): [2a:4(FB):322e6200000000:10001:1bc4] OFF=28, >>> LEN=1084, flags=0x0 >>> >>> ------------------------------------------------------------------------------ >>> #1 TAIL (plain40): [2a:4(FB):332e6100000000:10002:0] OFF=1112, >>> LEN=2908, flags=0x0 >>> >>> ============================================================================== >>> NODE (29) LEVEL=1 ITEMS=1 SPACE=0 MKFS ID=0x1bb9bd27 FLUSH=0x0 >>> #0 TAIL (plain40): [2a:4(FB):332e6100000000:10002:b5c] OFF=28, >>> LEN=4030, flags=0x0 >>> >>> ============================================================================== >>> NODE (30) LEVEL=1 ITEMS=1 SPACE=0 MKFS ID=0x1bb9bd27 FLUSH=0x0 >>> #0 TAIL (plain40): [2a:4(FB):332e6100000000:10002:1b1a] OFF=28, >>> LEN=4030, flags=0xc >>> >>> ============================================================================== >>> NODE (31) LEVEL=1 ITEMS=2 SPACE=0 MKFS ID=0x1bb9bd27 FLUSH=0x0 >>> #0 TAIL (plain40): [2a:4(FB):332e6100000000:10002:2ad8] OFF=28, >>> LEN=1320, flags=0x1cf >>> >>> ------------------------------------------------------------------------------ >>> #1 TAIL (plain40): [2a:4(FB):342e6200000000:10003:0] OFF=1348, >>> LEN=2672, flags=0x0 >>> >>> ============================================================================== >>> NODE (32) LEVEL=1 ITEMS=1 SPACE=0 MKFS ID=0x1bb9bd27 FLUSH=0x0 >>> #0 TAIL (plain40): [2a:4(FB):342e6200000000:10003:a70] OFF=28, >>> LEN=4030, flags=0x0 >>> >>> ============================================================================== >>> NODE (33) LEVEL=1 ITEMS=1 SPACE=0 MKFS ID=0x1bb9bd27 FLUSH=0x0 >>> #0 TAIL (plain40): [2a:4(FB):342e6200000000:10003:1a2e] OFF=28, >>> LEN=4030, flags=0x21 >>> >>> ============================================================================== >>> NODE (34) LEVEL=1 ITEMS=1 SPACE=0 MKFS ID=0x1bb9bd27 FLUSH=0x0 >>> #0 TAIL (plain40): [2a:4(FB):342e6200000000:10003:29ec] OFF=28, >>> LEN=4030, flags=0x1cf >>> >>> ============================================================================== >>> NODE (35) LEVEL=1 ITEMS=1 SPACE=2408 MKFS ID=0x1bb9bd27 FLUSH=0x0 >>> #0 TAIL (plain40): [2a:4(FB):342e6200000000:10003:39aa] OFF=28, >>> LEN=1622, flags=0x16 >>> >>> ============================================================================== >>> >>> >>> As we can see with ext_1_fibre files were sorted: >>> 1.a >>> 3.a >>> 2.b >>> 4.b >>> >>> With dot_o_fibre: >>> >>> 1.a >>> 2.b >>> 3.a >>> 4.b >>> >> Thus, respect for fibration groups is also under a big question. >> TBH, I prefer to not kill time for projects basing on questionable >> assumptions and deductions. Just because there is a lot of >> interesting TODOs with tangible results. >> > OK > I'll get back to automatic R4 git tree lkp-tests project. > > I planned to make two testing steps: > 1. Build, functional and stress testing under VM with R4 partition on RAM disk Sounds good. > 2. If it passes step 1 then some performance testing under VM with R4 > on real partition Performance testing under VM (or containers) is perversion. Either use a real machine, or don't test at all. > > I'll probably use Ubuntu for VM, although I'm not familiar with Debian > clones, but automatic testing suite supports it. > I'm more for Gentoo but lkp-tests doesn't support it. Use Fedora if possible, so that we'll be able to synchronize things.. Thanks, Edward. > > I'll probably run 4.5 to 4.9 patches first to see what I get. ^ permalink raw reply [flat|nested] 15+ messages in thread
end of thread, other threads:[~2017-01-07 19:26 UTC | newest] Thread overview: 15+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2016-12-25 0:59 [RFC] Smart fibration plugin ext_4321 Dušan Čolić 2016-12-25 8:51 ` Dušan Čolić 2016-12-26 18:47 ` Edward Shishkin 2016-12-26 21:13 ` Dušan Čolić 2017-01-06 13:44 ` Edward Shishkin 2017-01-06 15:34 ` Dušan Čolić 2017-01-06 19:58 ` Edward Shishkin 2017-01-06 23:09 ` Dušan Čolić 2017-01-06 23:05 ` Edward Shishkin 2017-01-07 8:15 ` Dušan Čolić 2017-01-07 7:58 ` Edward Shishkin 2017-01-07 17:10 ` Dušan Čolić 2017-01-07 17:56 ` Edward Shishkin 2017-01-07 19:26 ` Dušan Čolić 2017-01-07 19:06 ` Edward Shishkin
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).