Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1485713

[PATCH 04/14] blk-mq: Do not limit number of queues to 'nr_cpu_ids' in allocations

From Alexander Gordeev <agordeev@redhat.com>
Newsgroups linux.kernel
Subject [PATCH 04/14] blk-mq: Do not limit number of queues to 'nr_cpu_ids' in allocations
Date 2016-09-18 09:40 +0200
Message-ID <siERH-5bE-11@gated-at.bofh.it> (permalink)
References <siERH-5bE-3@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


Currently maximum number of used hardware queues is limited to
number of CPUs in the system. However, using 'nr_cpu_ids' as
the limit for (de-)allocations of data structures instead of
existing data structures' counters (a) worsens readability and
(b) leads to unused memory when number of hardware queues is
less than number of CPUs.

CC: linux-block@vger.kernel.org
Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
---
 block/blk-mq.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/block/blk-mq.c b/block/blk-mq.c
index 276ec7b..2c77b68 100644
--- a/block/blk-mq.c
+++ b/block/blk-mq.c
@@ -2054,8 +2054,8 @@ struct request_queue *blk_mq_init_allocated_queue(struct blk_mq_tag_set *set,
 	if (!q->queue_ctx)
 		goto err_exit;
 
-	q->queue_hw_ctx = kzalloc_node(nr_cpu_ids * sizeof(*(q->queue_hw_ctx)),
-						GFP_KERNEL, set->numa_node);
+	q->queue_hw_ctx = kzalloc_node(set->nr_hw_queues *
+			sizeof(*(q->queue_hw_ctx)), GFP_KERNEL, set->numa_node);
 	if (!q->queue_hw_ctx)
 		goto err_percpu;
 
@@ -2319,7 +2319,7 @@ int blk_mq_alloc_tag_set(struct blk_mq_tag_set *set)
 	if (set->nr_hw_queues > nr_cpu_ids)
 		set->nr_hw_queues = nr_cpu_ids;
 
-	set->tags = kzalloc_node(nr_cpu_ids * sizeof(struct blk_mq_tags *),
+	set->tags = kzalloc_node(set->nr_hw_queues * sizeof(*set->tags),
 				 GFP_KERNEL, set->numa_node);
 	if (!set->tags)
 		return -ENOMEM;
@@ -2360,7 +2360,7 @@ void blk_mq_free_tag_set(struct blk_mq_tag_set *set)
 {
 	int i;
 
-	for (i = 0; i < nr_cpu_ids; i++) {
+	for (i = 0; i < set->nr_hw_queues; i++) {
 		if (set->tags[i])
 			blk_mq_free_rq_map(set, set->tags[i], i);
 	}
-- 
1.8.3.1

Back to linux.kernel | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

[PATCH 00/14] blk-mq: Minor fixes and cleanups Alexander Gordeev <agordeev@redhat.com> - 2016-09-18 09:40 +0200
  [PATCH 14/14] blk-mq: Set flush_start_tag to BLK_MQ_MAX_DEPTH Alexander Gordeev <agordeev@redhat.com> - 2016-09-18 09:40 +0200
  [PATCH 01/14] blk-mq: Fix memory leaks on queue cleanup Alexander Gordeev <agordeev@redhat.com> - 2016-09-18 09:40 +0200
    Re: [PATCH 01/14] blk-mq: Fix memory leaks on queue cleanup Christoph Hellwig <hch@infradead.org> - 2016-09-19 16:00 +0200
  [PATCH 04/14] blk-mq: Do not limit number of queues to 'nr_cpu_ids' in allocations Alexander Gordeev <agordeev@redhat.com> - 2016-09-18 09:40 +0200
    Re: [PATCH 04/14] blk-mq: Do not limit number of queues to  'nr_cpu_ids' in allocations Omar Sandoval <osandov@osandov.com> - 2016-09-19 19:50 +0200
      Re: [PATCH 04/14] blk-mq: Do not limit number of queues to  'nr_cpu_ids' in allocations Alexander Gordeev <agordeev@redhat.com> - 2016-09-20 13:40 +0200
        Re: [PATCH 04/14] blk-mq: Do not limit number of queues to  'nr_cpu_ids' in allocations Omar Sandoval <osandov@osandov.com> - 2016-09-20 19:30 +0200
  [PATCH 11/14] blk-mq: Move hardware context init code into single location Alexander Gordeev <agordeev@redhat.com> - 2016-09-18 09:40 +0200
  [PATCH 02/14] blk-mq: Fix a potential NULL pointer assignment to hctx tags Alexander Gordeev <agordeev@redhat.com> - 2016-09-18 09:40 +0200
    Re: [PATCH 02/14] blk-mq: Fix a potential NULL pointer assignment to  hctx tags Omar Sandoval <osandov@osandov.com> - 2016-09-19 20:40 +0200
  [PATCH 03/14] block: Get rid of unused request_queue::nr_queues member Alexander Gordeev <agordeev@redhat.com> - 2016-09-18 09:40 +0200
    Re: [PATCH 03/14] block: Get rid of unused request_queue::nr_queues  member Omar Sandoval <osandov@osandov.com> - 2016-09-19 20:40 +0200
  [PATCH 05/14] blk-mq: Remove a redundant assignment Alexander Gordeev <agordeev@redhat.com> - 2016-09-18 09:50 +0200
    Re: [PATCH 05/14] blk-mq: Remove a redundant assignment Omar Sandoval <osandov@osandov.com> - 2016-09-19 20:40 +0200
  [PATCH 07/14] blk-mq: Cleanup a loop exit condition Alexander Gordeev <agordeev@redhat.com> - 2016-09-18 09:50 +0200
    Re: [PATCH 07/14] blk-mq: Cleanup a loop exit condition Omar Sandoval <osandov@osandov.com> - 2016-09-19 21:10 +0200
      Re: [PATCH 07/14] blk-mq: Cleanup a loop exit condition Alexander Gordeev <agordeev@redhat.com> - 2016-09-20 13:30 +0200
  [PATCH 08/14] blk-mq: Get rid of unnecessary blk_mq_free_hw_queues() Alexander Gordeev <agordeev@redhat.com> - 2016-09-18 09:50 +0200
  [PATCH 09/14] blk-mq: Move duplicating code to blk_mq_exit_hctx() Alexander Gordeev <agordeev@redhat.com> - 2016-09-18 09:50 +0200
    Re: [PATCH 09/14] blk-mq: Move duplicating code to blk_mq_exit_hctx() Omar Sandoval <osandov@osandov.com> - 2016-09-19 20:00 +0200
  [PATCH 12/14] blk-mq: Rework blk_mq_init_hctx() function Alexander Gordeev <agordeev@redhat.com> - 2016-09-18 09:50 +0200
  [PATCH 06/14] blk-mq: Fix hardware context data node selection Alexander Gordeev <agordeev@redhat.com> - 2016-09-18 09:50 +0200
    Re: [PATCH 06/14] blk-mq: Fix hardware context data node selection Omar Sandoval <osandov@osandov.com> - 2016-09-19 21:00 +0200
  [PATCH 13/14] blk-mq: Pair blk_mq_hctx_kobj_init() with blk_mq_hctx_kobj_put() Alexander Gordeev <agordeev@redhat.com> - 2016-09-18 09:50 +0200

csiph-web