2016-11-29 5:13 GMT-08:00 Kevin Traynor <[email protected]>: > On 11/29/2016 10:24 AM, [email protected] wrote: >> From: billyom <[email protected]> >> >> pmd-cpu-mask is interpreted as a hex bit mask. So it should be written >> with a leading 0x to indicate this. But if this is done, while the value >> is interpreted correctly and the PMDs pinned as expected, a confusing >> warning message is also issued. >> >> This patch allows but does not require a leading 0x or 0X to be used >> without a warning. Existing functionality is not affected. Relevant DPDK >> docs also updated. > > works for me, > > Tested-by: Kevin Traynor <[email protected]>
Thanks, I added the 0x prefix in some of the tests and pushed this to master > >> >> Signed-off-by: Billy O'Mahony <[email protected]> >> --- >> INSTALL.DPDK-ADVANCED.rst | 13 +++++++------ >> INSTALL.DPDK.rst | 6 +++--- >> lib/ovs-numa.c | 11 +++++++++-- >> 3 files changed, 19 insertions(+), 11 deletions(-) >> >> diff --git a/INSTALL.DPDK-ADVANCED.rst b/INSTALL.DPDK-ADVANCED.rst >> index 9b2895b..1c2437d 100644 >> --- a/INSTALL.DPDK-ADVANCED.rst >> +++ b/INSTALL.DPDK-ADVANCED.rst >> @@ -175,10 +175,11 @@ core shared by two logical cores, run:: >> where ``N`` is the logical core number. >> >> In this example, it would show that cores ``1`` and ``21`` share the same >> -physical core., thus, the ``pmd-cpu-mask`` can be used to enable these two >> pmd >> -threads running on these two logical cores (one physical core) is:: >> +physical core. As cores are counted from 0, the ``pmd-cpu-mask`` can be used >> +to enable these two pmd threads running on these two logical cores (one >> +physical core) is:: >> >> - $ ovs-vsctl set Open_vSwitch . other_config:pmd-cpu-mask=100002 >> + $ ovs-vsctl set Open_vSwitch . other_config:pmd-cpu-mask=0x200002 >> >> Isolate Cores >> ~~~~~~~~~~~~~ >> @@ -239,7 +240,7 @@ affinitized accordingly. >> By setting a bit in the mask, a pmd thread is created and pinned to the >> corresponding CPU core. e.g. to run a pmd thread on core 2:: >> >> - $ ovs-vsctl set Open_vSwitch . other_config:pmd-cpu-mask=4 >> + $ ovs-vsctl set Open_vSwitch . other_config:pmd-cpu-mask=0x4 >> >> .. note:: >> pmd thread on a NUMA node is only created if there is at least one DPDK >> @@ -269,7 +270,7 @@ is done automatically. >> A set bit in the mask means a pmd thread is created and pinned to the >> corresponding CPU core. For example, to run pmd threads on core 1 and 2:: >> >> - $ ovs-vsctl set Open_vSwitch . other_config:pmd-cpu-mask=6 >> + $ ovs-vsctl set Open_vSwitch . other_config:pmd-cpu-mask=0x6 >> >> When using dpdk and dpdkvhostuser ports in a bi-directional VM loopback as >> shown below, spreading the workload over 2 or 4 pmd threads shows >> significant >> @@ -436,7 +437,7 @@ guide`_ to create and initialize the database, start >> ovs-vswitchd and add >> of rx queues at vhost-user interface gets automatically configured after >> virtio device connection and doesn't need manual configuration:: >> >> - $ ovs-vsctl set Open_vSwitch . other_config:pmd-cpu-mask=c >> + $ ovs-vsctl set Open_vSwitch . other_config:pmd-cpu-mask=0xC >> $ ovs-vsctl set Interface dpdk0 options:n_rxq=2 >> $ ovs-vsctl set Interface dpdk1 options:n_rxq=2 >> >> diff --git a/INSTALL.DPDK.rst b/INSTALL.DPDK.rst >> index a078093..c50b7a3 100644 >> --- a/INSTALL.DPDK.rst >> +++ b/INSTALL.DPDK.rst >> @@ -223,10 +223,10 @@ NUMA node 0, run:: >> >> Similarly, if you wish to better scale the workloads across cores, then >> multiple pmd threads can be created and pinned to CPU cores by explicity >> -specifying ``pmd-cpu-mask``. For example, to spawn two pmd threads and pin >> -them to cores 1,2, run:: >> +specifying ``pmd-cpu-mask``. Cores are numbered from 0, so to spawn two pmd >> +threads and pin them to cores 1,2, run:: >> >> - $ ovs-vsctl set Open_vSwitch . other_config:pmd-cpu-mask=6 >> + $ ovs-vsctl set Open_vSwitch . other_config:pmd-cpu-mask=0x6 >> >> For details on using ivshmem with DPDK, refer to `the advanced installation >> guide <INSTALL.DPDK-ADVANCED.rst>`__. >> diff --git a/lib/ovs-numa.c b/lib/ovs-numa.c >> index c8173e0..95a3f68 100644 >> --- a/lib/ovs-numa.c >> +++ b/lib/ovs-numa.c >> @@ -535,6 +535,7 @@ ovs_numa_set_cpu_mask(const char *cmask) >> { >> int core_id = 0; >> int i; >> + int end_idx; >> >> if (!found_numa_and_core) { >> return; >> @@ -551,7 +552,13 @@ ovs_numa_set_cpu_mask(const char *cmask) >> return; >> } >> >> - for (i = strlen(cmask) - 1; i >= 0; i--) { >> + /* Ignore leading 0x. */ >> + end_idx = 0; >> + if (strncmp(cmask, "0x", 2) == 0 || strncmp(cmask, "0X", 2) == 0) { >> + end_idx = 2; >> + } >> + >> + for (i = strlen(cmask) - 1; i >= end_idx; i--) { >> char hex = toupper((unsigned char)cmask[i]); >> int bin, j; >> >> @@ -575,7 +582,7 @@ ovs_numa_set_cpu_mask(const char *cmask) >> if (core_id >= hmap_count(&all_cpu_cores)) { >> return; >> } >> - } >> + } >> } >> >> /* For unspecified cores, sets 'available' to false. */ >> > > _______________________________________________ > dev mailing list > [email protected] > https://mail.openvswitch.org/mailman/listinfo/ovs-dev _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
