On 12/28/2016 09:46 PM, Rune Torgersen wrote:
> What will cause a sendto() call to a Tipc RDM socket to return a ENOMEM?
> I am sending a roughly 30K message, and occasionally get that error.
> (Ubuntu 16.04 LTS kernel)

If your message receiver is the same local node, then tipc will try 
avoid fragmentation/reassembly by allocating an skb large enough to fix 
the message.

The memory (if not cached) will be allocated from the buddy pool. The 
current memory situation for the buddypool can be listed using:
cat /proc/buddyinfo

When the system runs out of buffers of size >= 32K (2^3 => 8 * 4K page 
size) in buddypool, the memory allocation will fail for intranode.

To fix this, we need to send this message chaining several smaller 
buffers without inserting the fragment header only for intranode.

This will surely impact the latency and throughputs for intra-node 
communication for sizes > MTU.

/Partha

>
> ------------------------------------------------------------------------------
> Check out the vibrant tech community on one of the world's most
> engaging tech sites, SlashDot.org! http://sdm.link/slashdot
> _______________________________________________
> tipc-discussion mailing list
> tipc-discussion@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/tipc-discussion
>

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most 
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
tipc-discussion mailing list
tipc-discussion@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/tipc-discussion

Reply via email to