[v3,03/16] app/crypto-perf: limit number of sessions
Checks
Commit Message
Instead of creating a fixed number of sessions,
calculate the necessary number based on number of devices
and queue pairs used.
Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
---
app/test-crypto-perf/main.c | 31 ++++++++++++++++++++++++++++---
1 file changed, 28 insertions(+), 3 deletions(-)
Comments
On 6/28/2018 6:22 AM, Pablo de Lara wrote:
> Instead of creating a fixed number of sessions,
> calculate the necessary number based on number of devices
> and queue pairs used.
>
> Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
> ---
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
On 6/28/2018 6:22 AM, Pablo de Lara wrote:
> Instead of creating a fixed number of sessions,
> calculate the necessary number based on number of devices
> and queue pairs used.
>
> Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
> ---
> app/test-crypto-perf/main.c | 31 ++++++++++++++++++++++++++++---
> 1 file changed, 28 insertions(+), 3 deletions(-)
>
> diff --git a/app/test-crypto-perf/main.c b/app/test-crypto-perf/main.c
> index 4ae14390b..b02d3f597 100644
> --- a/app/test-crypto-perf/main.c
> +++ b/app/test-crypto-perf/main.c
> @@ -21,7 +21,6 @@
> #include "cperf_test_verify.h"
> #include "cperf_test_pmd_cyclecount.h"
>
> -#define NUM_SESSIONS 2048
> #define SESS_MEMPOOL_CACHE_SIZE 64
>
> const char *cperf_test_type_strs[] = {
> @@ -149,15 +148,41 @@ cperf_initialize_cryptodev(struct cperf_options *opts, uint8_t *enabled_cdevs,
> .nb_descriptors = opts->nb_descriptors
> };
>
> + uint32_t dev_max_nb_sess = cdev_info.sym.max_nb_sessions;
> + /* Two sessions objects are required for each session
> + * (one for the header, one for the private data)
> + */
> + uint32_t sessions_needed = 2 * enabled_cdev_count *
> + opts->nb_qps;
> +#ifdef RTE_LIBRTE_PMD_CRYPTO_SCHEDULER
> + if (!strcmp((const char *)opts->device_type,
> + "crypto_scheduler")) {
> + uint32_t nb_slaves =
> + rte_cryptodev_scheduler_slaves_get(cdev_id,
> + NULL);
> +
> + sessions_needed = 2 * enabled_cdev_count *
> + opts->nb_qps * nb_slaves;
> + }
> +#endif
One minor. Can we have #else?
> + /*
> + * A single session is required per queue pair
> + * in each device
> + */
> + if (dev_max_nb_sess < opts->nb_qps) {
> + RTE_LOG(ERR, USER1,
> + "Device does not support at least "
> + "%u sessions\n", opts->nb_qps);
> + return -ENOTSUP;
> + }
> if (session_pool_socket[socket_id] == NULL) {
> char mp_name[RTE_MEMPOOL_NAMESIZE];
> struct rte_mempool *sess_mp;
>
> snprintf(mp_name, RTE_MEMPOOL_NAMESIZE,
> "sess_mp_%u", socket_id);
> -
> sess_mp = rte_mempool_create(mp_name,
> - NUM_SESSIONS,
> + sessions_needed,
> max_sess_size,
> SESS_MEMPOOL_CACHE_SIZE,
> 0, NULL, NULL, NULL,
@@ -21,7 +21,6 @@
#include "cperf_test_verify.h"
#include "cperf_test_pmd_cyclecount.h"
-#define NUM_SESSIONS 2048
#define SESS_MEMPOOL_CACHE_SIZE 64
const char *cperf_test_type_strs[] = {
@@ -149,15 +148,41 @@ cperf_initialize_cryptodev(struct cperf_options *opts, uint8_t *enabled_cdevs,
.nb_descriptors = opts->nb_descriptors
};
+ uint32_t dev_max_nb_sess = cdev_info.sym.max_nb_sessions;
+ /* Two sessions objects are required for each session
+ * (one for the header, one for the private data)
+ */
+ uint32_t sessions_needed = 2 * enabled_cdev_count *
+ opts->nb_qps;
+#ifdef RTE_LIBRTE_PMD_CRYPTO_SCHEDULER
+ if (!strcmp((const char *)opts->device_type,
+ "crypto_scheduler")) {
+ uint32_t nb_slaves =
+ rte_cryptodev_scheduler_slaves_get(cdev_id,
+ NULL);
+
+ sessions_needed = 2 * enabled_cdev_count *
+ opts->nb_qps * nb_slaves;
+ }
+#endif
+ /*
+ * A single session is required per queue pair
+ * in each device
+ */
+ if (dev_max_nb_sess < opts->nb_qps) {
+ RTE_LOG(ERR, USER1,
+ "Device does not support at least "
+ "%u sessions\n", opts->nb_qps);
+ return -ENOTSUP;
+ }
if (session_pool_socket[socket_id] == NULL) {
char mp_name[RTE_MEMPOOL_NAMESIZE];
struct rte_mempool *sess_mp;
snprintf(mp_name, RTE_MEMPOOL_NAMESIZE,
"sess_mp_%u", socket_id);
-
sess_mp = rte_mempool_create(mp_name,
- NUM_SESSIONS,
+ sessions_needed,
max_sess_size,
SESS_MEMPOOL_CACHE_SIZE,
0, NULL, NULL, NULL,