lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20200914141041.570370fd@kicinski-fedora-pc1c0hjn.dhcp.thefacebook.com>
Date:   Mon, 14 Sep 2020 14:10:41 -0700
From:   Jakub Kicinski <kuba@...nel.org>
To:     Shannon Nelson <snelson@...sando.io>
Cc:     netdev@...r.kernel.org, davem@...emloft.net
Subject: Re: [PATCH net-next] ionic: dynamic interrupt moderation

On Sun, 13 Sep 2020 14:28:13 -0700 Shannon Nelson wrote:
> Use the dim library to manage dynamic interrupt
> moderation in ionic.
> 
> Signed-off-by: Shannon Nelson <snelson@...sando.io>

Let me advertise my people.kernel entry ;)

https://people.kernel.org/finqi53erl

My somewhat short production experience leads me to question the value
of DIM on real life workloads, but I know customers like to benchmark
adapters using ping and iperf, so do what you gotta do :(

> diff --git a/drivers/net/ethernet/pensando/ionic/ionic_lif.c b/drivers/net/ethernet/pensando/ionic/ionic_lif.c
> index 895e2113bd6b..f1c8ab439080 100644
> --- a/drivers/net/ethernet/pensando/ionic/ionic_lif.c
> +++ b/drivers/net/ethernet/pensando/ionic/ionic_lif.c
> @@ -42,6 +42,19 @@ static int ionic_start_queues(struct ionic_lif *lif);
>  static void ionic_stop_queues(struct ionic_lif *lif);
>  static void ionic_lif_queue_identify(struct ionic_lif *lif);
>  
> +static void ionic_dim_work(struct work_struct *work)
> +{
> +	struct dim *dim = container_of(work, struct dim, work);
> +	struct dim_cq_moder cur_moder =
> +		net_dim_get_rx_moderation(dim->mode, dim->profile_ix);

Could you move this out of the variable init? Make things hard to read.

> +	struct ionic_qcq *qcq = container_of(dim, struct ionic_qcq, dim);
> +	u32 new_coal;
> +
> +	new_coal = ionic_coal_usec_to_hw(qcq->q.lif->ionic, cur_moder.usec);
> +	qcq->intr.dim_coal_hw = new_coal ? new_coal : 1;
> +	dim->state = DIM_START_MEASURE;
> +}

Interesting, it seem that you don't actually talk to FW to update 
the parameters? DIM causes noticeable increase in scheduler pressure
with those work entries it posts. I'd be tempted to not use a work
entry if you don't have to sleep.

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ