From: bugzilla@dpdk.org
To: dev@dpdk.org
Subject: [Bug 935] aesni_mb_pmd does not trigger parallel processing for multiple jobs
Date: Mon, 07 Feb 2022 00:56:12 +0000 [thread overview]
Message-ID: <bug-935-3@http.bugs.dpdk.org/> (raw)
https://bugs.dpdk.org/show_bug.cgi?id=935
Bug ID: 935
Summary: aesni_mb_pmd does not trigger parallel processing for
multiple jobs
Product: DPDK
Version: 20.11
Hardware: x86
OS: Linux
Status: UNCONFIRMED
Severity: major
Priority: Normal
Component: cryptodev
Assignee: dev@dpdk.org
Reporter: changchun.zhang@oracle.com
Target Milestone: ---
The issue exists in DPDK 20.11 and later.
The intel-ipsec-mb library supports gathering multiple jobs and process the
multi-jobs in parallel. However in the current aesni_mb_pmd, the
aesni_mb_dequeue_burst() has a bug which leads to the intel-ipsec-mb does not
run in parallel mode at all. Each time the a crypto op is dequeued from the
ring, the aes_mb_dequeu_burst() will call the flush_mb_mgr directly to finish
this job processing.
In detail:
static uint16_t
aesni_mb_dequeue_burst(void *queue_pair, struct rte_crypto_op **ops,
uint16_t nb_ops)
{
struct ipsec_mb_qp *qp = queue_pair;
IMB_MGR *mb_mgr = qp->mb_mgr;
struct rte_crypto_op *op;
IMB_JOB *job;
int retval, processed_jobs = 0;
if (unlikely(nb_ops == 0 || mb_mgr == NULL))
return 0;
uint8_t digest_idx = qp->digest_idx;
do {
/* Get next free mb job struct from mb manager */
job = IMB_GET_NEXT_JOB(mb_mgr);
......
retval = rte_ring_dequeue(qp->ingress_queue, (void **)&op);
......
job = IMB_SUBMIT_JOB(mb_mgr);
......
if (job)
processed_jobs += handle_completed_jobs(qp, mb_mgr,
job, &ops[processed_jobs],
nb_ops - processed_jobs);
} while (processed_jobs < nb_ops);
if (processed_jobs < 1)
processed_jobs += flush_mb_mgr(qp, mb_mgr,
&ops[processed_jobs],
nb_ops - processed_jobs);
return processed_jobs;
}
After submit the first job, the intel-mb-ipsec library does process this job as
it is waiting enough jobs submitted, however, in this pmd, it triggers the
flush_mb_mgr() if the first submitted job is not processed. Consequently, the
parallel processing is always not happening. We are actually processing the
packet in single buffer mode.
During the debug test, I have to disable below code
if (processed_jobs < 1)
processed_jobs += flush_mb_mgr(qp, mb_mgr,
&ops[processed_jobs],
nb_ops - processed_jobs);
for intel-mb-ipsec to gather enough jobs to launch prarallel processing.
--
You are receiving this mail because:
You are the assignee for the bug.
reply other threads:[~2022-02-07 0:56 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
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=bug-935-3@http.bugs.dpdk.org/ \
--to=bugzilla@dpdk.org \
--cc=dev@dpdk.org \
/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.