Dear Ole,

 

I have a quick/easy request for the Python language binding. See 
pneum_connect(...). We need to make the client input queue size configurable, 
with a default size of 32. See below. 

 

Seems like a simple change to vpp_papi.py:connect(...) -> 
pneum_wrap.c:wrap_connect(...) -> pneum.c:pneum_connect(...). I hate to make 
work for other people, but I’m pretty sure that I’ll foul up the 
PyArg_ParseTuple(...) bit.

 

Why do we care? When run at scale, Wojciech’s test code bumps against its input 
queue size. 

 

Vpp deals with the situation reasonably gracefully, but [especially in 
single-core cases] the data plane is forced to turf vpp->client messages 
[stats, interface event notifications, etc.] to avoid gross packet loss 
[especially when an API client dies]. We can’t let the data-plane wait for a 
[possibly dead] client to clean up its input queue.

 

Thanks... Dave

 

int

pneum_connect (char * name, char * chroot_prefix, pneum_callback_t cb)

{

  int rv = 0;

  pneum_main_t *pm = &pneum_main;

 

  if (chroot_prefix != NULL)

    vl_set_memory_root_path (chroot_prefix);

 

  if ((rv = vl_client_api_map("/vpe-api"))) {

    clib_warning ("vl_client_api map rv %d", rv);

    return rv;

  }

 

  if (vl_client_connect(name, 0, 32) < 0) { /* Python code must be able to set 
this parameter */

    vl_client_api_unmap();

    return (-1);

  }

 

  if (cb) {

    /* Start the rx queue thread */

    rv = pthread_create(&pm->rx_thread_handle, NULL, pneum_rx_thread_fn, 0);

    if (rv) {

      clib_warning("pthread_create returned %d", rv);

      vl_client_api_unmap();

      return (-1);

    }

    pneum_callback = cb;

  }

 

  pm->connected_to_vlib = 1;

 

  return (0);

}

Attachment: smime.p7s
Description: S/MIME cryptographic signature

_______________________________________________
vpp-dev mailing list
vpp-dev@lists.fd.io
https://lists.fd.io/mailman/listinfo/vpp-dev

Reply via email to