All of lore.kernel.org
 help / color / mirror / Atom feed
From: Christoph Hellwig <hch@lst.de>
To: Ming Lei <ming.lei@redhat.com>
Cc: James Bottomley <James.Bottomley@HansenPartnership.com>,
	linux-scsi@vger.kernel.org,
	"Martin K . Petersen" <martin.petersen@oracle.com>,
	linux-block@vger.kernel.org, Christoph Hellwig <hch@lst.de>,
	Bart Van Assche <bvanassche@acm.org>,
	"Ewan D . Milne" <emilne@redhat.com>,
	Hannes Reinecke <hare@suse.com>
Subject: Re: [PATCH 2/2] scsi: core: avoid to pre-allocate big chunk for sg list
Date: Wed, 24 Apr 2019 07:53:17 +0200	[thread overview]
Message-ID: <20190424055317.GF12136@lst.de> (raw)
In-Reply-To: <20190423103240.29864-3-ming.lei@redhat.com>

On Tue, Apr 23, 2019 at 06:32:40PM +0800, Ming Lei wrote:
> big, the whole pre-allocation for sg list can consume huge memory.
> For example of lpfc, nr_hw_queues can be 70, each queue's depth
> can be 3781, so the pre-allocation for data sg list can be 70*3781*2k
> =517MB for single HBA.

We should probably limit the number of queues to something actually
useful, independent of your patch..

> +static bool scsi_use_inline_sg(struct scsi_cmnd *cmd)
> +{
> +	struct scatterlist *sg = (void *)cmd + sizeof(struct scsi_cmnd) +
> +		cmd->device->host->hostt->cmd_size;
> +
> +	return cmd->sdb.table.sgl == sg;
> +}

It might make more sense to have a helper to calculate the inline
sg address and use that for the comparism in scsi_mq_free_sgtables
and any other place that wants the address.

> +	if (cmd->sdb.table.nents && !scsi_use_inline_sg(cmd))
> +		sg_free_table_chained(&cmd->sdb.table, false);

This removes the last use of the first_chunk paramter to
sg_free_table_chained, please remove the paramter in an additional
patch.

> +	if (nr_segs <= SCSI_INLINE_SG_CNT)
> +		sdb->table.nents = sdb->table.orig_nents =
> +			SCSI_INLINE_SG_CNT;

Don't we need a sg_init_table here?

> +	else if (unlikely(sg_alloc_table_chained(&sdb->table, nr_segs,
> +					NULL)))
>  		return BLK_STS_RESOURCE;

We should probably also be able to drop the last parameter to
sg_alloc_table_chained now.

  parent reply	other threads:[~2019-04-24  5:53 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-04-23 10:32 [PATCH 0/2] scis: core: avoid big pre-allocation for sg list Ming Lei
2019-04-23 10:32 ` [PATCH 1/2] scsi: core: avoid to pre-allocate big chunk for protection meta data Ming Lei
2019-04-23 15:33   ` Bart Van Assche
2019-04-24  0:46     ` Ming Lei
2019-04-23 10:32 ` [PATCH 2/2] scsi: core: avoid to pre-allocate big chunk for sg list Ming Lei
2019-04-23 15:37   ` Bart Van Assche
2019-04-24  7:52     ` Ming Lei
2019-04-24 15:24       ` James Bottomley
2019-04-24 15:32         ` Bart Van Assche
2019-04-24 15:37           ` Jens Axboe
2019-04-24 15:49           ` James Bottomley
2019-04-24 16:09             ` Bart Van Assche
2019-04-24 16:17               ` James Bottomley
2019-04-24  5:53   ` Christoph Hellwig [this message]
2019-04-24  8:41     ` Ming Lei
2019-04-24 14:38       ` Christoph Hellwig
2019-04-25  0:45         ` Ming Lei

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=20190424055317.GF12136@lst.de \
    --to=hch@lst.de \
    --cc=James.Bottomley@HansenPartnership.com \
    --cc=bvanassche@acm.org \
    --cc=emilne@redhat.com \
    --cc=hare@suse.com \
    --cc=linux-block@vger.kernel.org \
    --cc=linux-scsi@vger.kernel.org \
    --cc=martin.petersen@oracle.com \
    --cc=ming.lei@redhat.com \
    /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.