diff mbox

[1/2] lightnvm: pblk: add possibility to set write buffer size manually

Message ID 1527088640-13062-2-git-send-email-marcin.dziegielewski@intel.com (mailing list archive)
State New, archived
Headers show

Commit Message

Marcin Dziegielewski May 23, 2018, 3:17 p.m. UTC
In some cases, users can want set write buffer size manually, e.g. to
adjust it to specific workload. This patch provides the possibility to set
write buffer size via module parameter feature.

Signed-off-by: Marcin Dziegielewski <marcin.dziegielewski@intel.com>
Signed-off-by: Igor Konopko <igor.j.konopko@intel.com>
---
 drivers/lightnvm/pblk-init.c | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

Comments

Matias Bjorling May 24, 2018, 8:19 a.m. UTC | #1
On 05/23/2018 05:17 PM, Marcin Dziegielewski wrote:
> In some cases, users can want set write buffer size manually, e.g. to
> adjust it to specific workload. This patch provides the possibility to set
> write buffer size via module parameter feature.
> 
> Signed-off-by: Marcin Dziegielewski <marcin.dziegielewski@intel.com>
> Signed-off-by: Igor Konopko <igor.j.konopko@intel.com>
> ---
>   drivers/lightnvm/pblk-init.c | 14 ++++++++++++--
>   1 file changed, 12 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/lightnvm/pblk-init.c b/drivers/lightnvm/pblk-init.c
> index d65d2f9..9a7213e 100644
> --- a/drivers/lightnvm/pblk-init.c
> +++ b/drivers/lightnvm/pblk-init.c
> @@ -20,6 +20,11 @@
>   
>   #include "pblk.h"
>   
> +unsigned int write_buffer_size;
> +
> +module_param(write_buffer_size, uint, 0644);
> +MODULE_PARM_DESC(write_buffer_size, "number of entries in a write buffer");
> +
>   static struct kmem_cache *pblk_ws_cache, *pblk_rec_cache, *pblk_g_rq_cache,
>   				*pblk_w_rq_cache;
>   static DECLARE_RWSEM(pblk_lock);
> @@ -172,10 +177,15 @@ static int pblk_rwb_init(struct pblk *pblk)
>   	struct nvm_tgt_dev *dev = pblk->dev;
>   	struct nvm_geo *geo = &dev->geo;
>   	struct pblk_rb_entry *entries;
> -	unsigned long nr_entries;
> +	unsigned long nr_entries, buffer_size;
>   	unsigned int power_size, power_seg_sz;
>   
> -	nr_entries = pblk_rb_calculate_size(pblk->pgs_in_buffer);
> +	if (write_buffer_size)
> +		buffer_size = write_buffer_size;
> +	else
> +		buffer_size = pblk->pgs_in_buffer;
> +
> +	nr_entries = pblk_rb_calculate_size(buffer_size);

Would it make sense to include a check to make sure that buffer size 
does not become less than pblk->pgs_in_buffer?

>   
>   	entries = vzalloc(nr_entries * sizeof(struct pblk_rb_entry));
>   	if (!entries)
>
Marcin Dziegielewski May 24, 2018, 12:06 p.m. UTC | #2
Thanks for the review, that’s good point. Improved patch is on its way.

Marcin Dzięgielewski

> -----Original Message-----

> From: Matias Bjørling [mailto:mb@lightnvm.io]

> Sent: Thursday, May 24, 2018 10:20 AM

> To: Dziegielewski, Marcin <marcin.dziegielewski@intel.com>

> Cc: linux-block@vger.kernel.org; Konopko, Igor J

> <igor.j.konopko@intel.com>

> Subject: Re: [PATCH 1/2] lightnvm: pblk: add possibility to set write buffer

> size manually

> 

> On 05/23/2018 05:17 PM, Marcin Dziegielewski wrote:

> > In some cases, users can want set write buffer size manually, e.g. to

> > adjust it to specific workload. This patch provides the possibility to

> > set write buffer size via module parameter feature.

> >

> > Signed-off-by: Marcin Dziegielewski <marcin.dziegielewski@intel.com>

> > Signed-off-by: Igor Konopko <igor.j.konopko@intel.com>

> > ---

> >   drivers/lightnvm/pblk-init.c | 14 ++++++++++++--

> >   1 file changed, 12 insertions(+), 2 deletions(-)

> >

> > diff --git a/drivers/lightnvm/pblk-init.c

> > b/drivers/lightnvm/pblk-init.c index d65d2f9..9a7213e 100644

> > --- a/drivers/lightnvm/pblk-init.c

> > +++ b/drivers/lightnvm/pblk-init.c

> > @@ -20,6 +20,11 @@

> >

> >   #include "pblk.h"

> >

> > +unsigned int write_buffer_size;

> > +

> > +module_param(write_buffer_size, uint, 0644);

> > +MODULE_PARM_DESC(write_buffer_size, "number of entries in a write

> > +buffer");

> > +

> >   static struct kmem_cache *pblk_ws_cache, *pblk_rec_cache,

> *pblk_g_rq_cache,

> >   				*pblk_w_rq_cache;

> >   static DECLARE_RWSEM(pblk_lock);

> > @@ -172,10 +177,15 @@ static int pblk_rwb_init(struct pblk *pblk)

> >   	struct nvm_tgt_dev *dev = pblk->dev;

> >   	struct nvm_geo *geo = &dev->geo;

> >   	struct pblk_rb_entry *entries;

> > -	unsigned long nr_entries;

> > +	unsigned long nr_entries, buffer_size;

> >   	unsigned int power_size, power_seg_sz;

> >

> > -	nr_entries = pblk_rb_calculate_size(pblk->pgs_in_buffer);

> > +	if (write_buffer_size)

> > +		buffer_size = write_buffer_size;

> > +	else

> > +		buffer_size = pblk->pgs_in_buffer;

> > +

> > +	nr_entries = pblk_rb_calculate_size(buffer_size);

> 

> Would it make sense to include a check to make sure that buffer size does

> not become less than pblk->pgs_in_buffer?

> 

> >

> >   	entries = vzalloc(nr_entries * sizeof(struct pblk_rb_entry));

> >   	if (!entries)

> >
diff mbox

Patch

diff --git a/drivers/lightnvm/pblk-init.c b/drivers/lightnvm/pblk-init.c
index d65d2f9..9a7213e 100644
--- a/drivers/lightnvm/pblk-init.c
+++ b/drivers/lightnvm/pblk-init.c
@@ -20,6 +20,11 @@ 
 
 #include "pblk.h"
 
+unsigned int write_buffer_size;
+
+module_param(write_buffer_size, uint, 0644);
+MODULE_PARM_DESC(write_buffer_size, "number of entries in a write buffer");
+
 static struct kmem_cache *pblk_ws_cache, *pblk_rec_cache, *pblk_g_rq_cache,
 				*pblk_w_rq_cache;
 static DECLARE_RWSEM(pblk_lock);
@@ -172,10 +177,15 @@  static int pblk_rwb_init(struct pblk *pblk)
 	struct nvm_tgt_dev *dev = pblk->dev;
 	struct nvm_geo *geo = &dev->geo;
 	struct pblk_rb_entry *entries;
-	unsigned long nr_entries;
+	unsigned long nr_entries, buffer_size;
 	unsigned int power_size, power_seg_sz;
 
-	nr_entries = pblk_rb_calculate_size(pblk->pgs_in_buffer);
+	if (write_buffer_size)
+		buffer_size = write_buffer_size;
+	else
+		buffer_size = pblk->pgs_in_buffer;
+
+	nr_entries = pblk_rb_calculate_size(buffer_size);
 
 	entries = vzalloc(nr_entries * sizeof(struct pblk_rb_entry));
 	if (!entries)