Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/97050/?format=api
http://patches.dpdk.org/api/patches/97050/?format=api", "web_url": "http://patches.dpdk.org/project/dpdk/patch/1629294247-5207-6-git-send-email-navasile@linux.microsoft.com/", "project": { "id": 1, "url": "http://patches.dpdk.org/api/projects/1/?format=api", "name": "DPDK", "link_name": "dpdk", "list_id": "dev.dpdk.org", "list_email": "dev@dpdk.org", "web_url": "http://core.dpdk.org", "scm_url": "git://dpdk.org/dpdk", "webscm_url": "http://git.dpdk.org/dpdk", "list_archive_url": "https://inbox.dpdk.org/dev", "list_archive_url_format": "https://inbox.dpdk.org/dev/{}", "commit_url_format": "" }, "msgid": "<1629294247-5207-6-git-send-email-navasile@linux.microsoft.com>", "list_archive_url": "https://inbox.dpdk.org/dev/1629294247-5207-6-git-send-email-navasile@linux.microsoft.com", "date": "2021-08-18T13:44:06", "name": "[v3,5/6] eal: set affinity and priority attributes", "commit_ref": null, "pull_url": null, "state": "superseded", "archived": true, "hash": "e6b000f1206511b34299b3309e92504d4aa716c2", "submitter": { "id": 1668, "url": "http://patches.dpdk.org/api/people/1668/?format=api", "name": "Narcisa Ana Maria Vasile", "email": "navasile@linux.microsoft.com" }, "delegate": { "id": 1, "url": "http://patches.dpdk.org/api/users/1/?format=api", "username": "tmonjalo", "first_name": "Thomas", "last_name": "Monjalon", "email": "thomas@monjalon.net" }, "mbox": "http://patches.dpdk.org/project/dpdk/patch/1629294247-5207-6-git-send-email-navasile@linux.microsoft.com/mbox/", "series": [ { "id": 18329, "url": "http://patches.dpdk.org/api/series/18329/?format=api", "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=18329", "date": "2021-08-18T13:44:02", "name": "Enable the internal EAL thread API", "version": 3, "mbox": "http://patches.dpdk.org/series/18329/mbox/" } ], "comments": "http://patches.dpdk.org/api/patches/97050/comments/", "check": "success", "checks": "http://patches.dpdk.org/api/patches/97050/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<dev-bounces@dpdk.org>", "X-Original-To": "patchwork@inbox.dpdk.org", "Delivered-To": "patchwork@inbox.dpdk.org", "Received": [ "from mails.dpdk.org (mails.dpdk.org [217.70.189.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 6053CA0C43;\n\tWed, 18 Aug 2021 15:45:02 +0200 (CEST)", "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 3F895411F8;\n\tWed, 18 Aug 2021 15:44:22 +0200 (CEST)", "from linux.microsoft.com (linux.microsoft.com [13.77.154.182])\n by mails.dpdk.org (Postfix) with ESMTP id 9D6CB40142\n for <dev@dpdk.org>; Wed, 18 Aug 2021 15:44:15 +0200 (CEST)", "by linux.microsoft.com (Postfix, from userid 1059)\n id 35A1620C3321; Wed, 18 Aug 2021 06:44:14 -0700 (PDT)" ], "DKIM-Filter": "OpenDKIM Filter v2.11.0 linux.microsoft.com 35A1620C3321", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com;\n s=default; t=1629294254;\n bh=qP4aecO1oe/EmTahtZBqyK46HxsCvOpCa4j/g5NOjaQ=;\n h=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n b=exYmDB1LJM/lSl5ttf+6cZCM7sVAz8xjQ1X9PZsF1wCPbf0rxEsK7PxRtZdqGAfbu\n ygSuZugqDko2Nrq+ODtQ7OXBP4TW604NVrQ1XJG+xZ+T7hEeA4H+FNoDPeibIGhN2l\n pNZlTjd7xop543hWHk4Pm9Ievvjp2Iz+bGAc0G9A=", "From": "Narcisa Ana Maria Vasile <navasile@linux.microsoft.com>", "To": "dev@dpdk.org, thomas@monjalon.net, dmitry.kozliuk@gmail.com,\n khot@microsoft.com, navasile@microsoft.com, dmitrym@microsoft.com,\n roretzla@microsoft.com, talshn@nvidia.com, ocardona@microsoft.com", "Cc": "bruce.richardson@intel.com, david.marchand@redhat.com,\n pallavi.kadam@intel.com", "Date": "Wed, 18 Aug 2021 06:44:06 -0700", "Message-Id": "<1629294247-5207-6-git-send-email-navasile@linux.microsoft.com>", "X-Mailer": "git-send-email 1.8.3.1", "In-Reply-To": "<1629294247-5207-1-git-send-email-navasile@linux.microsoft.com>", "References": "<1624067878-2130-1-git-send-email-navasile@linux.microsoft.com>\n <1629294247-5207-1-git-send-email-navasile@linux.microsoft.com>", "Subject": "[dpdk-dev] [PATCH v3 5/6] eal: set affinity and priority attributes", "X-BeenThere": "dev@dpdk.org", "X-Mailman-Version": "2.1.29", "Precedence": "list", "List-Id": "DPDK patches and discussions <dev.dpdk.org>", "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>", "List-Archive": "<http://mails.dpdk.org/archives/dev/>", "List-Post": "<mailto:dev@dpdk.org>", "List-Help": "<mailto:dev-request@dpdk.org?subject=help>", "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>", "Errors-To": "dev-bounces@dpdk.org", "Sender": "\"dev\" <dev-bounces@dpdk.org>" }, "content": "From: Narcisa Vasile <navasile@microsoft.com>\n\nIf the user doesn't specify the priority through the command\nline arguments, initialize the thread priority to 'normal'.\nSet thread priority for eal threads.\n\nSigned-off-by: Narcisa Vasile <navasile@microsoft.com>\n---\n lib/eal/common/eal_common_thread.c | 11 ++++++++\n lib/eal/common/eal_thread.h | 6 ++++\n lib/eal/freebsd/eal.c | 41 +++++++++++++++++++++++-----\n lib/eal/linux/eal.c | 39 +++++++++++++++++++++-----\n lib/eal/windows/eal.c | 44 ++++++++++++++++++++++++++++--\n 5 files changed, 125 insertions(+), 16 deletions(-)", "diff": "diff --git a/lib/eal/common/eal_common_thread.c b/lib/eal/common/eal_common_thread.c\nindex 62d28e7b28..fa537db7ac 100644\n--- a/lib/eal/common/eal_common_thread.c\n+++ b/lib/eal/common/eal_common_thread.c\n@@ -388,3 +388,14 @@ rte_thread_unregister(void)\n \t\tRTE_LOG(DEBUG, EAL, \"Unregistered non-EAL thread (was lcore %u).\\n\",\n \t\t\tlcore_id);\n }\n+\n+void rte_thread_priority_init(void)\n+{\n+\tstruct internal_config *internal_conf =\n+\t\teal_get_internal_configuration();\n+\n+\t/* If the user doesn't specify the priority through the command\n+\t * line arguments, the default 'normal' value will be used.\n+\t */\n+\tinternal_conf->thread_priority = RTE_THREAD_PRIORITY_NORMAL;\n+}\ndiff --git a/lib/eal/common/eal_thread.h b/lib/eal/common/eal_thread.h\nindex 4a49117be8..7b3b884463 100644\n--- a/lib/eal/common/eal_thread.h\n+++ b/lib/eal/common/eal_thread.h\n@@ -58,4 +58,10 @@ eal_thread_dump_affinity(rte_cpuset_t *cpuset, char *str, unsigned int size);\n int\n eal_thread_dump_current_affinity(char *str, unsigned int size);\n \n+/**\n+ * Set the initial thread priority in the internal configuration\n+ * to the default value of RTE_THREAD_PRIORITY_NORMAL.\n+ */\n+void rte_thread_priority_init(void);\n+\n #endif /* EAL_THREAD_H */\ndiff --git a/lib/eal/freebsd/eal.c b/lib/eal/freebsd/eal.c\nindex c92fdaa598..1570da2a36 100644\n--- a/lib/eal/freebsd/eal.c\n+++ b/lib/eal/freebsd/eal.c\n@@ -678,6 +678,8 @@ rte_eal_init(int argc, char **argv)\n \tstruct internal_config *internal_conf =\n \t\teal_get_internal_configuration();\n \n+\trte_thread_priority_init();\n+\n \t/* checks if the machine is adequate */\n \tif (!rte_cpu_is_supported()) {\n \t\trte_eal_init_alert(\"unsupported cpu type.\");\n@@ -856,6 +858,14 @@ rte_eal_init(int argc, char **argv)\n \n \teal_check_mem_on_local_socket();\n \n+\tret = rte_thread_set_priority(rte_thread_self(),\n+\t\t\tinternal_conf->thread_priority);\n+\tif (ret != 0) {\n+\t\trte_eal_init_alert(\"Cannot set thread priority\");\n+\t\trte_errno = ret;\n+\t\treturn -1;\n+\t}\n+\n \tif (rte_thread_set_affinity_by_id(rte_thread_self(),\n \t\t\t&lcore_config[config->main_lcore].cpuset) != 0) {\n \t\trte_eal_init_alert(\"Cannot set affinity\");\n@@ -871,6 +881,22 @@ rte_eal_init(int argc, char **argv)\n \t\tconfig->main_lcore, (void *)thread_id.opaque_id, cpuset,\n \t\tret == 0 ? \"\" : \"...\");\n \n+\trte_thread_attr_t thread_attr;\n+\tret = rte_thread_attr_init(&thread_attr);\n+\tif (ret != 0) {\n+\t\trte_eal_init_alert(\"Cannot initialize thread attributes\");\n+\t\trte_errno = ret;\n+\t\treturn -1;\n+\t}\n+\n+\tret = rte_thread_attr_set_priority(&thread_attr,\n+\t\t\tinternal_conf->thread_priority);\n+\tif (ret != 0) {\n+\t\trte_eal_init_alert(\"Cannot set thread priority attribute\");\n+\t\trte_errno = ret;\n+\t\treturn -1;\n+\t}\n+\n \tRTE_LCORE_FOREACH_WORKER(i) {\n \n \t\t/*\n@@ -884,9 +910,15 @@ rte_eal_init(int argc, char **argv)\n \n \t\tlcore_config[i].state = WAIT;\n \n+\t\tret = rte_thread_attr_set_affinity(&thread_attr,\n+\t\t\t\t\t &lcore_config[i].cpuset);\n+\n+\t\tif (ret != 0)\n+\t\t\trte_panic(\"Cannot set affinity\\n\");\n+\n \t\t/* create a thread for each lcore */\n-\t\tret = rte_thread_create(&lcore_config[i].thread_id, NULL,\n-\t\t\t\t eal_thread_loop, NULL);\n+\t\tret = rte_thread_create(&lcore_config[i].thread_id,\n+\t\t\t\t&thread_attr, eal_thread_loop, NULL);\n \t\tif (ret != 0)\n \t\t\trte_panic(\"Cannot create thread\\n\");\n \n@@ -894,11 +926,6 @@ rte_eal_init(int argc, char **argv)\n \t\tsnprintf(thread_name, sizeof(thread_name),\n \t\t\t\t\"lcore-worker-%d\", i);\n \t\trte_thread_name_set(lcore_config[i].thread_id, thread_name);\n-\n-\t\tret = rte_thread_set_affinity_by_id(lcore_config[i].thread_id,\n-\t\t\t\t&lcore_config[i].cpuset);\n-\t\tif (ret != 0)\n-\t\t\trte_panic(\"Cannot set affinity\\n\");\n \t}\n \n \t/*\ndiff --git a/lib/eal/linux/eal.c b/lib/eal/linux/eal.c\nindex cd5e9953d0..c02390ed58 100644\n--- a/lib/eal/linux/eal.c\n+++ b/lib/eal/linux/eal.c\n@@ -977,6 +977,8 @@ rte_eal_init(int argc, char **argv)\n \tstruct internal_config *internal_conf =\n \t\teal_get_internal_configuration();\n \n+\trte_thread_priority_init();\n+\n \t/* checks if the machine is adequate */\n \tif (!rte_cpu_is_supported()) {\n \t\trte_eal_init_alert(\"unsupported cpu type.\");\n@@ -1221,6 +1223,14 @@ rte_eal_init(int argc, char **argv)\n \n \teal_check_mem_on_local_socket();\n \n+\tret = rte_thread_set_priority(rte_thread_self(),\n+\t\t\tinternal_conf->thread_priority);\n+\tif (ret != 0) {\n+\t\trte_eal_init_alert(\"Cannot set thread priority\");\n+\t\trte_errno = ret;\n+\t\treturn -1;\n+\t}\n+\n \tif (rte_thread_set_affinity_by_id(rte_thread_self(),\n \t\t\t&lcore_config[config->main_lcore].cpuset) != 0) {\n \t\trte_eal_init_alert(\"Cannot set affinity\");\n@@ -1235,6 +1245,23 @@ rte_eal_init(int argc, char **argv)\n \t\tconfig->main_lcore, (void *)thread_id.opaque_id, cpuset,\n \t\tret == 0 ? \"\" : \"...\");\n \n+\trte_thread_attr_t thread_attr;\n+\tret = rte_thread_attr_init(&thread_attr);\n+\tif (ret != 0) {\n+\t\tRTE_LOG(DEBUG, EAL, \"Cannot initialize thread attributes,\"\n+\t\t\t\"ret = %d\\n\", ret);\n+\t\trte_errno = ret;\n+\t\treturn -1;\n+\t}\n+\tret = rte_thread_attr_set_priority(&thread_attr,\n+\t\t\t\t\t internal_conf->thread_priority);\n+\tif (ret != 0) {\n+\t\tRTE_LOG(DEBUG, EAL, \"Cannot set thread priority attribute,\"\n+\t\t\t\"ret = %d\\n\", ret);\n+\t\trte_errno = ret;\n+\t\treturn -1;\n+\t}\n+\n \tRTE_LCORE_FOREACH_WORKER(i) {\n \n \t\t/*\n@@ -1248,9 +1275,12 @@ rte_eal_init(int argc, char **argv)\n \n \t\tlcore_config[i].state = WAIT;\n \n+\t\trte_thread_attr_set_affinity(&thread_attr,\n+\t\t\t\t\t &lcore_config[i].cpuset);\n+\n \t\t/* create a thread for each lcore */\n-\t\tret = rte_thread_create(&lcore_config[i].thread_id, NULL,\n-\t\t\t\t eal_thread_loop, NULL);\n+\t\tret = rte_thread_create(&lcore_config[i].thread_id,\n+\t\t\t\t\t&thread_attr, eal_thread_loop, NULL);\n \t\tif (ret != 0)\n \t\t\trte_panic(\"Cannot create thread\\n\");\n \n@@ -1262,11 +1292,6 @@ rte_eal_init(int argc, char **argv)\n \t\tif (ret != 0)\n \t\t\tRTE_LOG(DEBUG, EAL,\n \t\t\t\t\"Cannot set name for lcore thread\\n\");\n-\n-\t\tret = rte_thread_set_affinity_by_id(lcore_config[i].thread_id,\n-\t\t\t\t&lcore_config[i].cpuset);\n-\t\tif (ret != 0)\n-\t\t\trte_panic(\"Cannot set affinity\\n\");\n \t}\n \n \t/*\ndiff --git a/lib/eal/windows/eal.c b/lib/eal/windows/eal.c\nindex d90c635ddc..4eca6a3ab6 100644\n--- a/lib/eal/windows/eal.c\n+++ b/lib/eal/windows/eal.c\n@@ -278,6 +278,8 @@ rte_eal_init(int argc, char **argv)\n \t\teal_get_internal_configuration();\n \tint ret;\n \n+\trte_thread_priority_init();\n+\n \teal_log_init(NULL, 0);\n \n \teal_log_level_parse(argc, argv);\n@@ -379,6 +381,36 @@ rte_eal_init(int argc, char **argv)\n \t\treturn -1;\n \t}\n \n+\tif (rte_thread_set_affinity_by_id(rte_thread_self(),\n+\t\t\t&lcore_config[config->main_lcore].cpuset) != 0) {\n+\t\trte_eal_init_alert(\"Cannot set affinity\");\n+\t\trte_errno = EINVAL;\n+\t\treturn -1;\n+\t}\n+\n+\tret = rte_thread_set_priority(rte_thread_self(),\n+\t\t\t\t internal_conf->thread_priority);\n+\tif (ret != 0) {\n+\t\trte_eal_init_alert(\"Cannot set thread priority\");\n+\t\trte_errno = ret;\n+\t\treturn -1;\n+\t}\n+\n+\trte_thread_attr_t thread_attr;\n+\tret = rte_thread_attr_init(&thread_attr);\n+\tif (ret != 0) {\n+\t\trte_eal_init_alert(\"Cannot initialize thread attributes\");\n+\t\trte_errno = ret;\n+\t\treturn -1;\n+\t}\n+\tret = rte_thread_attr_set_priority(&thread_attr,\n+\t\t\t\t\t internal_conf->thread_priority);\n+\tif (ret != 0) {\n+\t\trte_eal_init_alert(\"Cannot set thread priority attribute\");\n+\t\trte_errno = ret;\n+\t\treturn -1;\n+\t}\n+\n \tRTE_LCORE_FOREACH_WORKER(i) {\n \n \t\t/*\n@@ -394,9 +426,17 @@ rte_eal_init(int argc, char **argv)\n \n \t\tlcore_config[i].state = WAIT;\n \n+\t\tret = rte_thread_attr_set_affinity(&thread_attr,\n+\t\t\t\t&lcore_config[i].cpuset);\n+\t\tif (ret != 0) {\n+\t\t\trte_eal_init_alert(\"Cannot set thread affinity attribute\");\n+\t\t\trte_errno = ret;\n+\t\t\treturn -1;\n+\t\t}\n+\n \t\t/* create a thread for each lcore */\n-\t\tret = rte_thread_create(&lcore_config[i].thread_id, NULL,\n-\t\t\t\teal_thread_loop, NULL);\n+\t\tret = rte_thread_create(&lcore_config[i].thread_id,\n+\t\t\t\t&thread_attr, eal_thread_loop, NULL);\n \t\tif (ret != 0)\n \t\t\trte_panic(\"Cannot create thread\\n\");\n \t}\n", "prefixes": [ "v3", "5/6" ] }{ "id": 97050, "url": "