lizhimins opened a new issue, #5300:
URL: https://github.com/apache/rocketmq/issues/5300

   #3825,Is it correct to use default buffer value in remoting module
   
   > Setting the per-socket buffers to zero generally will not increase 
performance because the extra memory copy can be avoided as long as there are 
always enough overlapped send and receive operations posted. Disabling the 
socket’s send buffer has less of a performance impact than disabling the 
receive buffer because the application’s send buffer will always be locked 
until it can be passed down to TCP for processing. However, if the receive 
buffer is set to zero and there are no outstanding overlapped receive calls, 
any incoming data can be buffered only at the TCP level. The TCP driver will 
buffer only up to the receive window size, which is 17 KB—TCP will increase 
these buffers as needed to this limit; normally the buffers are much smaller.
   These TCP buffers (one per connection) are allocated out of non-paged pool, 
which means if the server has 1000 connections and no receives posted at all, 
17 MB of the non- paged pool will be consumed!
   The non-paged pool is a limited resource, and unless the server can 
guarantee there are always receives posted for a connection, the per-socket 
receive buffer should be left intact.
   Only in a few specific cases will leaving the receive buffer intact lead to 
decreased performance. Consider the situation in which a server handles many 
thousands of connections and cannot have a receive posted on each connection 
(this can become very expensive, as you’ll see in the next section). In 
addition, the clients send data sporadically. Incoming data will be buffered in 
the per-socket receive buffer and when the server does issue an overlapped 
receive, it is performing unnecessary work. The overlapped operation issues an 
I/O request packet (IRP) that completes, immediately after which notification 
is sent to the completion port. In this case, the server cannot keep enough 
receives posted, so it is better off performing simple non-blocking receive 
calls.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: dev-unsubscr...@rocketmq.apache.org.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to