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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.