From: Jaegeuk Kim <jaegeuk@kernel.org>
To: Alexander Gordeev <alex@gordick.net>
Cc: Chao Yu <chao@kernel.org>,
"linux-f2fs-devel@lists.sourceforge.net"
<linux-f2fs-devel@lists.sourceforge.net>
Subject: Re: video archive on a microSD card
Date: Fri, 26 Aug 2016 18:20:32 -0700 [thread overview]
Message-ID: <20160827012032.GG88444@jaegeuk> (raw)
In-Reply-To: <139021472156043@web27j.yandex.ru>
On Thu, Aug 25, 2016 at 11:14:03PM +0300, Alexander Gordeev wrote:
> Hi Jaegeuk,
>
> Thanks for all the help!
>
> 24.08.2016, 00:12, "Jaegeuk Kim" <jaegeuk@kernel.org>:
> > On Mon, Aug 22, 2016 at 11:52:12PM +0300, Alexander Gordeev wrote:
> >> Hi,
> >>
> >> I ran the test over weekend and I think I have some interesting results.
> >> I used 1 new SD card in one device and two fully utilized SD cards,
> >> that have problems with write latency, on two oter devices.
> >> I mounted all the cards with mode=lfs. The new SD card got utilized at 95% after some time.
> >> Here is the current status after the archive is rotated for some time:
> >>
> >> =====[ partition info(sda1). #0, RW]=====
> >> [SB: 1] [CP: 2] [SIT: 2] [NAT: 68] [SSA: 30] [MAIN: 15112(OverProv:803 Resv:50)]
> >>
> >> Utilization: 94% (6929763 valid blocks)
> >> - Node: 8113 (Inode: 1255, Other: 6858)
> >> - Data: 6921650
> >> - Inline_xattr Inode: 0
> >> - Inline_data Inode: 1
> >> - Inline_dentry Inode: 0
> >> - Orphan Inode: 0
> >>
> >> Main area: 15112 segs, 7556 secs 7556 zones
> >> - COLD data: 5306, 2653, 2653
> >> - WARM data: 5233, 2616, 2616
> >> - HOT data: 15100, 7550, 7550
> >> - Dir dnode: 15097, 7548, 7548
> >> - File dnode: 4701, 2350, 2350
> >> - Indir nodes: 15105, 7552, 7552
> >>
> >> - Valid: 97
> >> - Dirty: 13798
> >> - Prefree: 0
> >> - Free: 1217 (604)
> >>
> >> CP calls: 282 (BG: 0)
> >> GC calls: 0 (BG: 0)
> >> - data segments : 0 (0)
> >> - node segments : 0 (0)
> >> Try to move 0 blocks (BG: 0)
> >> - data blocks : 0 (0)
> >> - node blocks : 0 (0)
> >>
> >> Extent Cache:
> >> - Hit Count: L1-1:3084 L1-2:456 L2:0
> >> - Hit Ratio: 4% (3540 / 84026)
> >> - Inner Struct Count: tree: 1252(0), node: 0
> >>
> >> Balancing F2FS Async:
> >> - inmem: 0, wb_bios: 0
> >> - nodes: 12 in 30
> >> - dents: 3 in dirs: 2 ( 2)
> >> - datas: 48 in files: 0
> >> - meta: 9 in 34
> >> - NATs: 10/ 249
> >> - SITs: 13/ 15112
> >> - free_nids: 1797
> >>
> >> Distribution of User Blocks: [ valid | invalid | free ]
> >> [-----------------------------------------------|--|-]
> >>
> >> IPU: 0 blocks
> >> SSR: 0 blocks in 0 segments
> >> LFS: 912188 blocks in 1781 segments
> >>
> >> BDF: 94, avg. vblocks: 996
> >>
> >> Memory: 3604 KB
> >> - static: 3270 KB
> >> - cached: 78 KB
> >> - paged : 256 KB
> >>
> >> The interesting thing here is the very small number of valid and
> >> a huge number of dirty sections. I don't understand this at all.
> >
> > This is the number of dirty segments, so it needs to consider section and
> > segment at the same time; a dirty section can consist of valid and free
> > segments.
> > How abouting testing 2MB-sized section which is the default option?
>
> I tried what you said. Still the majority of segments are dirty for some reason:
>
> =====[ partition info(sda). #0, RW]=====
> [SB: 1] [CP: 2] [SIT: 6] [NAT: 114] [SSA: 116] [MAIN: 59149(OverProv:3003 Resv:48)]
>
> Utilization: 10% (3013093 valid blocks)
> - Node: 3528 (Inode: 548, Other: 2980)
> - Data: 3009565
> - Inline_xattr Inode: 0
> - Inline_data Inode: 0
> - Inline_dentry Inode: 0
> - Orphan Inode: 0
>
> Main area: 59149 segs, 59149 secs 59149 zones
> - COLD data: 7183, 7183, 7183
> - WARM data: 6654, 6654, 6654
> - HOT data: 59134, 59134, 59134
> - Dir dnode: 59127, 59127, 59127
> - File dnode: 59125, 59125, 59125
> - Indir nodes: 59129, 59129, 59129
>
> - Valid: 300
> - Dirty: 6438
> - Prefree: 0
> - Free: 52411 (52411)
>
> CP calls: 1023 (BG: 473)
> GC calls: 470 (BG: 470)
> - data segments : 466 (466)
> - node segments : 4 (4)
> Try to move 152221 blocks (BG: 152221)
> - data blocks : 151417 (151417)
> - node blocks : 804 (804)
>
> Extent Cache:
> - Hit Count: L1-1:6262 L1-2:0 L2:0
> - Hit Ratio: 2% (6262 / 273606)
> - Inner Struct Count: tree: 292(0), node: 8
>
> Balancing F2FS Async:
> - inmem: 0, wb_bios: 0
> - nodes: 0 in 0
> - dents: 0 in dirs: 0 ( 0)
> - datas: 0 in files: 0
> - meta: 0 in 0
> - NATs: 0/ 43
> - SITs: 0/ 59149
> - free_nids: 3414
>
> Distribution of User Blocks: [ valid | invalid | free ]
> [-----|--|-------------------------------------------]
>
> IPU: 0 blocks
> SSR: 0 blocks in 0 segments
> LFS: 3691542 blocks in 7208 segments
>
> BDF: 95, avg. vblocks: 444
>
> Memory: 12662 KB
> - static: 12597 KB
> - cached: 64 KB
> - paged : 0 KB
>
>
> But the archive is working perfectly as before.
Okay, so we need to gather more information about IO traces. :)
Could you get them by:
echo 1 > /sys/kernel/debug/tracing/events/f2fs/f2fs_submit_write_bio/enable
echo 1 > /sys/kernel/debug/tracing/events/f2fs/f2fs_submit_page_mbio/enable
echo 1 > /sys/kernel/debug/tracing/tracing_on
cat /sys/kernel/debug/tracing/trace_pipe
You can get a script in f2fs-tools.git/scripts/tracepoint.sh
Thanks,
>
> >> Still the archive is working perfectly. Also I see, that there GC is never
> >> called, which is probably an indication of FS working exactly as
> >> we expected.
> >> Also the small number of cold sections does not make problems.
> >> So, well, it works perfect so fat. But I don't understand everything here.
> >> Is this expected?
> >
> > So, I'm in doubt that dirty sections consist of entirely valid or free segments.
> >
> >> The other two SD cards were tested differently. On one of them I called
> >> ioctl(F2FS_IOC_GARBAGE_COLLECT) for several hours. And indeed the number
> >> of dirty sectoins dropped considerably. It works fine so far.
> >
> > It makes sense that valid segments in dirty sections would be migrated to
> > different free sections.
> >
> >> On the other SD card I called ioctl(F2FS_IOC_DEFRAGMENT) for every
> >> file in the archive. It works fine as well now. But the number of dirty sections
> >> was still very high at the end of defragmentation. I don't understand this
> >> as well.
> >
> > This is for defragementation to the given file, which would not move blocks in
> > order to decrease the number of dirty sections.
> > I think it's not necessary for this workload.
>
> Yes, I'd prefer to not run manual GC or defragmentation. This was just a test.
>
> --
> Alexander
>
> ------------------------------------------------------------------------------
> _______________________________________________
> Linux-f2fs-devel mailing list
> Linux-f2fs-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
------------------------------------------------------------------------------
next prev parent reply other threads:[~2016-08-27 1:20 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-08-12 11:52 video archive on a microSD card Alexander Gordeev
2016-08-15 10:47 ` Alexander Gordeev
2016-08-15 11:41 ` Chao Yu
2016-08-15 12:22 ` Alexander Gordeev
2016-08-16 15:29 ` Chao Yu
2016-08-17 9:47 ` Alexander Gordeev
2016-08-17 15:54 ` Chao Yu
2016-08-18 11:04 ` Alexander Gordeev
2016-08-19 2:41 ` Jaegeuk Kim
2016-08-19 11:56 ` Alexander Gordeev
2016-08-22 20:52 ` Alexander Gordeev
2016-08-23 21:12 ` Jaegeuk Kim
2016-08-25 20:14 ` Alexander Gordeev
2016-08-27 1:20 ` Jaegeuk Kim [this message]
[not found] ` <549571472473386@web20g.yandex.ru>
2016-08-29 18:23 ` Jaegeuk Kim
[not found] ` <9581472749471@web24h.yandex.ru>
2016-09-01 20:07 ` Jaegeuk Kim
2016-09-02 12:15 ` Alexander Gordeev
2016-08-23 20:27 ` Jaegeuk Kim
2016-08-19 17:22 ` Alexander Gordeev
2016-08-23 21:27 ` Jaegeuk Kim
2016-08-25 20:22 ` Alexander Gordeev
2016-08-26 16:04 ` Alexander Gordeev
2016-08-27 1:15 ` Jaegeuk Kim
2016-08-27 13:00 ` Alexander Gordeev
2016-08-29 16:50 ` Alexander Gordeev
2016-08-29 18:00 ` Jaegeuk Kim
2016-08-31 8:52 ` Alexander Gordeev
2016-08-31 23:46 ` Jaegeuk Kim
2016-09-01 17:40 ` Alexander Gordeev
2016-09-01 18:25 ` Jaegeuk Kim
2016-09-01 19:37 ` Alexander Gordeev
2016-09-01 20:15 ` Jaegeuk Kim
2016-09-02 12:05 ` Alexander Gordeev
2016-09-02 18:50 ` Jaegeuk Kim
2016-08-15 12:57 ` [PATCH] f2fs: fix build for v3.10 Alexander Gordeev
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20160827012032.GG88444@jaegeuk \
--to=jaegeuk@kernel.org \
--cc=alex@gordick.net \
--cc=chao@kernel.org \
--cc=linux-f2fs-devel@lists.sourceforge.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).