Any suggestion? any idea about this behaviour?

Il 08/08/2018 11:56, Matteo Lanzuisi ha scritto:
Hi all,

recently I began using "dpdk-17.11-11.el7.x86_64" rpm (RedHat rpm) on RedHat 7.5 kernel 3.10.0-862.6.3.el7.x86_64 as a porting of an application from RH6 to RH7. On RH6 I used dpdk-2.2.0.

This application is made up by one or more threads (each one on a different logical core) reading packets from i40e interfaces.

Each thread can call the following code lines when receiving a specific packet:

RTE_LCORE_FOREACH(lcore_id)
{
        result = rte_mempool_get(cea_main_lcore_conf[lcore_id].de_conf.cmd_pool, (VOID_P *) &new_work);        // mempools are created one for each logical core
        if (((uint64_t)(new_work)) < 0x7f0000000000)
            printf("Result %d, lcore di partenza %u, lcore di ricezione %u, pointer %p\n", result, rte_lcore_id(), lcore_id, new_work);    // debug print, on my server it should never happen but with multi-thread happens always on the last logical core!!!!
        if (result == 0)
        {
            new_work->command = command; // usage of the memory gotten from the mempool... <<<<<- here is where the application crashes!!!!             result = rte_ring_enqueue(cea_main_lcore_conf[lcore_id].de_conf.cmd_ring, (VOID_P) new_work);    // enqueues the gotten buffer on the rings of all lcores
            // check on result value ...
        }
        else
        {
            // do something if result != 0 ...
        }
}

This code worked perfectly (never had an issue) on dpdk-2.2.0, while if I use more than 1 thread doing these operations on dpdk-17.11 it happens that after some times the "new_work" pointer is not a good one, and the application crashes when using that pointer.

It seems that these lines cannot be used by more than one thread simultaneously. I also used many 2017 and 2018 dpdk versions without success.

Is this code possible on the new dpdk versions? Or have I to change my application so that this code is called just by one lcore at a time?

Matteo




--


Descrizione: resi.gif

*Matteo Lanzuisi*

/Business Unit ICT/

/
/RESI Informatica S.p.A.
Via Pontina Km 44,044
04011 Aprilia (LT) - Italy
*Tel:*+39 06 92710339
*Mobile:*+39 3355686712
*Fax:*+39 06 92710208

*Email:*m.lanzu...@resi.it
*Web:*www.resi.it <blocked::http://www.resi.it/>**

Descrizione: resi-group.gif width= <http://www.resi-group.com/>

_ _ _ _ _ _ _ _ _ _ _ _

*Nota di riservatezza:*Ai sensi del Decreto Legislativo n. 196/2003, "Codice in materia di Protezione dei dati personali", si precisa che le informazioni contenute in questo messaggio e negli eventuali allegati sono riservate e per uso esclusivo del destinatario. Persone diverse dallo stesso non possono copiare o distribuire il messaggio a terzi. Chiunque riceva questo messaggio per errore è pregato di distruggerlo e di informare immediatamente il mittente. Grazie.


*Confidentiality Notice:* Accordingly to Italian legislative decree n. 196/2003 concerning privacy, the information contained in this e-mail is intended for the named recipients only. It may contain privileged and confidential information and if you are not an intended recipient, you must not copy, distribute or take any action in reliance on it. If you have received this e-mail in error, please notify the sender by e-mail and delete the e-mail and any copies of it. Thank you.

*P*****Please consider the environment before printing this mail. Rispettate l’ambiente e stampate questa email solo in caso di reale necessità

Reply via email to