Code Monkey home page Code Monkey logo

Comments (1)

dkogan avatar dkogan commented on June 9, 2024

I poked at this a bit more. In short, I wasn't setting the socket buffer size properly, and fixing that made it work.

Notes:

The socket buffer size can be set like this:

g_object_set (*stream,
              "socket-buffer",      ARV_GV_STREAM_SOCKET_BUFFER_FIXED,
              "socket-buffer-size", 20000000,
              NULL);

This sets the SO_RCVBUF setting on the socket. Described like this in
socket(7):

SO_RCVBUF
    Sets or gets the maximum socket receive buffer in bytes. The
    kernel doubles this value (to allow space for bookkeeping
    overhead) when it is set using setsockopt(2), and this doubled
    value is returned by getsockopt(2). The default value is set by
    the /proc/sys/net/core/rmem_default file, and the maximum allowed
    value is set by the /proc/sys/net/core/rmem_max file. The minimum
    (doubled) value for this option is 256.

The setting ends up in sk_rcvbuf in the kernel:

Which is used in multiple places in https://lxr.linux.no/#linux+v6.7.1/net/ipv4/udp.c

If the data comes in faster than it can be read, it's stored in this buffer; if
the buffer is too small, the packets are thrown away. The logic and available
diagnostics are in the udp.c file linked above. /proc/net/snmp records the
dropped packets and there's a udp_fail_queue_rcv_skb tracepoint to catch some
paths.

The buffer size should be set to a bit more than the ArvBuffer payload size probably. I would guess aravis already does that by default, but it wasn't working on my machine. I'm going to take a look to get more detail in a bit.

from aravis.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.