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


Groups > linux.kernel > #1484820

[PATCH 04/21] 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/21] blk-mq: Do not limit number of queues to 'nr_cpu_ids' in allocations
Date 2016-09-16 11:00 +0200
Message-ID <shXa3-2mV-71@gated-at.bofh.it> (permalink)
References <shXa1-2mV-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: Jens Axboe <axboe@kernel.dk>
CC: linux-nvme@lists.infradead.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 b6a7dee..0f0a01a 100644
--- a/block/blk-mq.c
+++ b/block/blk-mq.c
@@ -2064,8 +2064,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;
 
@@ -2339,7 +2339,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;
@@ -2362,7 +2362,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 RFC 00/21] blk-mq: Introduce combined hardware queues Alexander Gordeev <agordeev@redhat.com> - 2016-09-16 11:00 +0200
  [PATCH 13/21] blk-mq: Move hardware context init code into blk_mq_init_hctx() Alexander Gordeev <agordeev@redhat.com> - 2016-09-16 11:00 +0200
  [PATCH RFC 19/21] blk-mq: Enable combined hardware queues Alexander Gordeev <agordeev@redhat.com> - 2016-09-16 11:00 +0200
  [PATCH 11/21] blk-mq: Move duplicating code to blk_mq_exit_hctx() Alexander Gordeev <agordeev@redhat.com> - 2016-09-16 11:00 +0200
  [PATCH 09/21] blk-mq: Cleanup a loop exit condition Alexander Gordeev <agordeev@redhat.com> - 2016-09-16 11:00 +0200
  [PATCH 08/21] blk-mq: Cleanup hardware context data node selection Alexander Gordeev <agordeev@redhat.com> - 2016-09-16 11:00 +0200
  [PATCH 21/21] null_blk: Do not limit # of hardware queues to # of CPUs Alexander Gordeev <agordeev@redhat.com> - 2016-09-16 11:00 +0200
  [PATCH RFC 18/21] blk-mq: Enable tag numbers exceed hardware queue depth Alexander Gordeev <agordeev@redhat.com> - 2016-09-16 11:00 +0200
  [PATCH 14/21] blk-mq: Rework blk_mq_init_hctx() function Alexander Gordeev <agordeev@redhat.com> - 2016-09-16 11:00 +0200
  [PATCH 01/21] blk-mq: Fix memory leaks on a queue cleanup Alexander Gordeev <agordeev@redhat.com> - 2016-09-16 11:00 +0200
  [PATCH 15/21] blk-mq: Pair blk_mq_hctx_kobj_init() with blk_mq_hctx_kobj_put() Alexander Gordeev <agordeev@redhat.com> - 2016-09-16 11:00 +0200
  [PATCH 04/21] blk-mq: Do not limit number of queues to 'nr_cpu_ids' in allocations Alexander Gordeev <agordeev@redhat.com> - 2016-09-16 11:00 +0200
  [PATCH 06/21] block: Remove redundant blk_mq_ops::map_queue() interface Alexander Gordeev <agordeev@redhat.com> - 2016-09-16 11:00 +0200
  [PATCH RFC 17/21] blk-mq: Introduce a 1:N hardware contexts Alexander Gordeev <agordeev@redhat.com> - 2016-09-16 11:00 +0200
  Re: [PATCH RFC 00/21] blk-mq: Introduce combined hardware queues Christoph Hellwig <hch@infradead.org> - 2016-09-16 11:30 +0200
    Re: [PATCH RFC 00/21] blk-mq: Introduce combined hardware queues Alexander Gordeev <agordeev@redhat.com> - 2016-09-16 12:10 +0200
  Re: [PATCH RFC 00/21] blk-mq: Introduce combined hardware queues Keith Busch <keith.busch@intel.com> - 2016-09-16 23:00 +0200
    Re: [PATCH RFC 00/21] blk-mq: Introduce combined hardware queues Alexander Gordeev <agordeev@redhat.com> - 2016-09-19 12:40 +0200
      Re: [PATCH RFC 00/21] blk-mq: Introduce combined hardware queues Bart Van Assche <Bart.VanAssche@sandisk.com> - 2016-09-19 15:50 +0200
      Re: [PATCH RFC 00/21] blk-mq: Introduce combined hardware queues Keith Busch <keith.busch@intel.com> - 2016-09-20 16:50 +0200

csiph-web