From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jaegeuk Kim Subject: Re: [PATCH v2] f2fs: avoid frequent background GC Date: Thu, 25 Apr 2013 20:00:50 +0900 Message-ID: <1366887650.31792.26.camel@kjgkr> References: <1366857842-17240-1-git-send-email-jaegeuk.kim@samsung.com> Reply-To: jaegeuk.kim@samsung.com Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="=-5jZxejkueWdBfxEiCUsW" Cc: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net To: Namjae Jeon Return-path: In-reply-to: Sender: linux-kernel-owner@vger.kernel.org List-Id: linux-fsdevel.vger.kernel.org --=-5jZxejkueWdBfxEiCUsW Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi, Namjae, Agreed. How about this? Chang log from v1: o change timings - min 30s, max 60s, nogc 5 min o remove nonreachable routine o consider NOGC_SLEEP_TIME in increate/decrease_sleep_time =46rom 806e344624414fcf9fc87f6193265859027d51b5 Mon Sep 17 00:00:00 2001 From: Jaegeuk Kim Date: Wed, 24 Apr 2013 13:00:14 +0900 Subject: [PATCH] f2fs: avoid frequent background GC Cc: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net If there is no victim segments selected by background GC, let's wait a little bit longer time to collect dirty segments. By default, let's give 5 minutes. Signed-off-by: Jaegeuk Kim --- fs/f2fs/gc.c | 3 --- fs/f2fs/gc.h | 12 +++++++++--- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/fs/f2fs/gc.c b/fs/f2fs/gc.c index 1ca3324..6ed3263 100644 --- a/fs/f2fs/gc.c +++ b/fs/f2fs/gc.c @@ -82,9 +82,6 @@ static int gc_thread_func(void *data) /* if return value is not zero, no victim was selected */ if (f2fs_gc(sbi)) wait_ms =3D GC_THREAD_NOGC_SLEEP_TIME; - else if (wait_ms =3D=3D GC_THREAD_NOGC_SLEEP_TIME) - wait_ms =3D GC_THREAD_MAX_SLEEP_TIME; - } while (!kthread_should_stop()); return 0; } diff --git a/fs/f2fs/gc.h b/fs/f2fs/gc.h index 30b2db0..2c6a6bd 100644 --- a/fs/f2fs/gc.h +++ b/fs/f2fs/gc.h @@ -13,9 +13,9 @@ * whether IO subsystem is idle * or not */ -#define GC_THREAD_MIN_SLEEP_TIME 10000 /* milliseconds */ -#define GC_THREAD_MAX_SLEEP_TIME 30000 -#define GC_THREAD_NOGC_SLEEP_TIME 10000 +#define GC_THREAD_MIN_SLEEP_TIME 30000 /* milliseconds */ +#define GC_THREAD_MAX_SLEEP_TIME 60000 +#define GC_THREAD_NOGC_SLEEP_TIME 300000 /* wait 5 min */ #define LIMIT_INVALID_BLOCK 40 /* percentage over total user space */ #define LIMIT_FREE_BLOCK 40 /* percentage over invalid + free space */ =20 @@ -58,6 +58,9 @@ static inline block_t limit_free_user_blocks(struct f2fs_sb_info *sbi) =20 static inline long increase_sleep_time(long wait) { + if (wait =3D=3D GC_THREAD_NOGC_SLEEP_TIME) + return wait; + wait +=3D GC_THREAD_MIN_SLEEP_TIME; if (wait > GC_THREAD_MAX_SLEEP_TIME) wait =3D GC_THREAD_MAX_SLEEP_TIME; @@ -66,6 +69,9 @@ static inline long increase_sleep_time(long wait) =20 static inline long decrease_sleep_time(long wait) { + if (wait =3D=3D GC_THREAD_NOGC_SLEEP_TIME) + wait =3D GC_THREAD_MAX_SLEEP_TIME; + wait -=3D GC_THREAD_MIN_SLEEP_TIME; if (wait <=3D GC_THREAD_MIN_SLEEP_TIME) wait =3D GC_THREAD_MIN_SLEEP_TIME; --=20 1.8.1.3.566.gaa39828 --=20 Jaegeuk Kim Samsung --=-5jZxejkueWdBfxEiCUsW Content-Type: application/pgp-signature; name="signature.asc" Content-Description: This is a digitally signed message part Content-Transfer-Encoding: 7bit -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (GNU/Linux) iQIcBAABAgAGBQJReQziAAoJEEAUqH6CSFDSaagP/1FQ/Eu4iNv8Bve8MHUyGH+Z 3l4KztdiLtJ5BVhrc02SqJTvuvSUzxFM73Pf8llyIA/Uvlt3AeatqcPgv+v2dtEM wIF6er70T4+1cP4dnMI54RtYop4k8eYxff2Q+msui9iUgXQLHTOTVbdZJp3+fGRF y8cRRIbKVb/IJ7e+wQUsTPovaHhj4M4cMantIQJy4fTObdKQ8meWntBv0xYHyPC9 3GacGQmWuL15L1NWQAP9pT6OBh8ql6nTQS6qpJXhddk45xR0St4R045RuUzzLOoU 8NoGyGtIsxTEYcDx4iPAGtQ6d4RQTpX4cBWBX0sSiSL7nlS9a3svHwBTsENFEQty kLAvfA4V0K562mHJFdYCE3GD75+PPgpTwxLH68iYtU5oNUnmv2XJheeRln5Di94W V8VFpK89thYW59D5aY1mJTmdkc3sj/7rRIFkPQFhzpctEA8QXD5Epz/ilrVw4Js0 13BNUnZkJWk9BJXE942KgdvgNLGDaTKsh7yYXXxTy60u9TQEEDl6kV1jNpcjrB/6 Fr2iSb1fIv149dbUyZHrgbUMLCh69a/72ubqiCMPCc6zxz2hAlGN7X1iAI/O7YHP EUIol8xJHZstk4wY6eB6ql+KUncqED86EdGQpz9dCAKrOV+lceH0/SkI0U/MQKow 8X/4T4Go1GpuOa3wHeKY =RvOE -----END PGP SIGNATURE----- --=-5jZxejkueWdBfxEiCUsW--