* [Bug 935] aesni_mb_pmd does not trigger parallel processing for multiple jobs
@ 2022-02-07 0:56 bugzilla
0 siblings, 0 replies; only message in thread
From: bugzilla @ 2022-02-07 0:56 UTC (permalink / raw)
To: dev
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.
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2022-02-07 0:56 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-02-07 0:56 [Bug 935] aesni_mb_pmd does not trigger parallel processing for multiple jobs bugzilla
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).