Hi Nick
we removed the libnuma dependency from pf_ring ZC, we wrote our own code for 
NUMA affinity in the ZC library.

Alfredo

> On 24 Aug 2015, at 17:14, Nick Allen <[email protected]> wrote:
> 
> I found that if I statically link the pcap and pfring libraries, the problem 
> does not exist.  Why is this?  Is there a better way to fix this?
> 
> FYI - To validate this I had to perform the following steps.
> 
> $ gcc -Wall -D_GNU_SOURCE numa.c -static -lpfring -lpcap -Wl,-Bdynamic -lnuma 
> -lpthread -o static-numa
> 
> $ sudo ln -sf /lib64/ld-linux-x86-64.so.2 /lib/ld64.so.1
> 
> $ sudo ./static-numa
> 
> check: found 4 cpu cores
> check: cpu 0 -> numa node 0
> check: cpu 1 -> numa node 0
> check: cpu 2 -> numa node 0
> check: cpu 3 -> numa node 0
> check: max packet length of 'wlan0' = 1518
> 
> Thanks
> 
> 
> On Mon, Aug 24, 2015 at 10:47 AM, Nick Allen <[email protected] 
> <mailto:[email protected]>> wrote:
> I created a small test program that isolates where this NUMA issue is coming 
> from.  The problem occurs when I call pfring_zc_create_cluster(...).  Once 
> inside pfring_zc_create_cluster(...) it is a black box to me.  Any thoughts 
> on what else I could try to resolve this issue?
> 
> $ gcc -Wall -D_GNU_SOURCE numa.c -lnuma -lpthread -lpfring -lpcap -o numa
> $ sudo ./numa
> check: found 4 cpu cores
> check: cpu 0 -> numa node 0
> check: cpu 1 -> numa node 0
> check: cpu 2 -> numa node 0
> check: cpu 3 -> numa node 0
> check: max packet length of 'wlan0' = 1518
> libnuma: Warning: node 6 not allowed
> numa_sched_setaffinity_v2_int() failed; abort
> : Invalid argument
> set_mempolicy: Invalid argument
> 
> Here is the test program that I created.
> 
> #include <numa.h>
> #include <stdio.h>
> #include <unistd.h>
> #include <pfring.h>
> #include <pfring_zc.h>
> #include <pfring_mod_sysdig.h>
> #include <numa.h>
> #include <pthread.h>
> 
> static int max_packet_len(char *device)
> {
>   pfring *ring;
>   pfring_card_settings settings;
> 
>   ring = pfring_open(device, 1536, PF_RING_PROMISC | 
> PF_RING_ZC_NOT_REPROGRAM_RSS);
>   if (ring == NULL)
>   {
>     return 1536;
>   }
> 
>   pfring_get_card_settings(ring, &settings);
>   pfring_close(ring);
>   return settings.max_packet_size;
> }
> 
> /**
>  * gcc -Wall -D_GNU_SOURCE numa.c -lnuma -lpthread -lpfring -lpcap -o numa
>  */
> int main(int argc, char *args[])
> {
>   int i;
>   int numa_id;
>   int num_cpu;
>   pfring_zc_cluster *zc;
> 
>   char *device = "wlan0";
>   int cluster_id = 1234;
>   int pkt_len;
>   int meta_len = 0;
>   int pkt_buffs = 4;
>   char *hugepg = "/mnt/huge";
> 
>   // how many cpu?
>   num_cpu = sysconf(_SC_NPROCESSORS_ONLN);
>   printf("check: found %i cpu cores \n", num_cpu);
> 
>   // which numa node for each cpu?
>   for(i = 0; i < num_cpu; i++)
>   {
>     numa_id = numa_node_of_cpu(i);
>     printf("check: cpu %i -> numa node %i \n", i, numa_id);
>   }
> 
>   pkt_len = max_packet_len(device);
>   printf("check: max packet length of '%s' = %i \n", device, pkt_len);
> 
>   // create the cluster
>   zc = pfring_zc_create_cluster(cluster_id, pkt_len, meta_len, pkt_buffs, 
> numa_id, hugepg);
>   if (NULL == zc)
>   {
>     printf("error: %s: check huge table mount?\n", strerror(errno));
>     return -1;
>   }
> 
>   return 0;
> }
> 
> On Fri, Aug 21, 2015 at 12:09 PM, Nick Allen <[email protected] 
> <mailto:[email protected]>> wrote:
> I have seen a few past references to issues like this on the list, but 
> nothing that helps resolve this issue for me.
> 
> libnuma: Warning: node 6 not allowed
> numa_sched_setaffinity_v2_int() failed; abort
> : Invalid argument
> set_mempolicy: Invalid argument
> 
> I am seeing this issue on both a server running CentOS 6.6 (libnuma 2.0.9, 
> Napatech NIC) and my development laptop running Ubuntu 15.04 (libnuma 2.0.10, 
> Intel NIC).
> 
> The numa_id that gets pased to 'pfring_zc_create_cluster' is 0.
> 
> $ numactl --show
> policy: default
> preferred node: current
> physcpubind: 0 1 2 3
> cpubind: 0
> nodebind: 0
> membind: 0
> 
> When I originally built PF_RING, the configure script was able to find the 
> NUMA library.  Attempted against just to be sure.
> 
> checking for numa_available in -lnuma... yes
> checking if libnuma is present... yes
> 
> What am I doing wrong?  What other information can I provide?
> 
> Mucho Gracias
> 
> 
> --
> Nick Allen <[email protected] <mailto:[email protected]>>
> 
> 
> 
> --
> Nick Allen <[email protected] <mailto:[email protected]>>
> 
> 
> 
> --
> Nick Allen <[email protected] <mailto:[email protected]>>
> _______________________________________________
> Ntop-misc mailing list
> [email protected] <mailto:[email protected]>
> http://listgateway.unipi.it/mailman/listinfo/ntop-misc 
> <http://listgateway.unipi.it/mailman/listinfo/ntop-misc>

Attachment: signature.asc
Description: Message signed with OpenPGP using GPGMail

_______________________________________________
Ntop-misc mailing list
[email protected]
http://listgateway.unipi.it/mailman/listinfo/ntop-misc

Reply via email to