Sat, 17 Jul 2021 14:54:48 +0200 net.server_epoll: Ensure timeouts match epoll flags
Kim Alvefur <zash@zash.se> [Sat, 17 Jul 2021 14:54:48 +0200] rev 11706
net.server_epoll: Ensure timeouts match epoll flags Read and write timeouts should usually match whether we want to read or write.
Sat, 17 Jul 2021 14:51:50 +0200 net.server_epoll: Skip reset of read timeout when not reading
Kim Alvefur <zash@zash.se> [Sat, 17 Jul 2021 14:51:50 +0200] rev 11705
net.server_epoll: Skip reset of read timeout when not reading Should avoid rare but needless timer interactions
Sat, 17 Jul 2021 14:06:57 +0200 net.server_epoll: Reduce timer churn during TLS handshake
Kim Alvefur <zash@zash.se> [Sat, 17 Jul 2021 14:06:57 +0200] rev 11704
net.server_epoll: Reduce timer churn during TLS handshake Instead of removing and readding the timer, keep it and adjust it instead. Should reduce garbage production a bit.
Fri, 16 Jul 2021 17:10:09 +0200 net.server_epoll: Use only fatal "write" timeout during TLS negotiation
Kim Alvefur <zash@zash.se> [Fri, 16 Jul 2021 17:10:09 +0200] rev 11703
net.server_epoll: Use only fatal "write" timeout during TLS negotiation Only real difference between the read and write timeouts is that the former has a callback that allows the higher levels to keep the connection alive, while hitting the later is immediately fatal. We want the later behavior for TLS negotiation.
Fri, 16 Jul 2021 15:40:08 +0200 net.server_epoll: Optimize concatenation of exactly 2 buffer chunks
Kim Alvefur <zash@zash.se> [Fri, 16 Jul 2021 15:40:08 +0200] rev 11702
net.server_epoll: Optimize concatenation of exactly 2 buffer chunks Saves a function call. I forget if I measured this kind of thing but IIRC infix concatenation is faster than a function call up to some number of items, but let's stop at 2 here.
Fri, 16 Jul 2021 15:38:38 +0200 net.server_epoll: Avoid allocating a buffer table for single writes
Kim Alvefur <zash@zash.se> [Fri, 16 Jul 2021 15:38:38 +0200] rev 11701
net.server_epoll: Avoid allocating a buffer table for single writes writebuffer is now string | { string } Saves the allocation of a buffer table until the second write, which could be rare, especially with opportunistic writes.
Fri, 16 Jul 2021 02:28:32 +0200 net.server_epoll: Optionally let go of buffers
Kim Alvefur <zash@zash.se> [Fri, 16 Jul 2021 02:28:32 +0200] rev 11700
net.server_epoll: Optionally let go of buffers Reusing an already existing buffer table would reduce garbage, but keeping it while idle is a waste.
Fri, 16 Jul 2021 01:21:05 +0200 net.server_epoll: Propagate returns from opportunistic writes
Kim Alvefur <zash@zash.se> [Fri, 16 Jul 2021 01:21:05 +0200] rev 11699
net.server_epoll: Propagate returns from opportunistic writes So that if a write ends up writing directly to the socket, it gets the actual return value
Thu, 15 Jul 2021 01:38:44 +0200 net.server_epoll: Set minimum wait time to 1ms, matching epoll
Kim Alvefur <zash@zash.se> [Thu, 15 Jul 2021 01:38:44 +0200] rev 11698
net.server_epoll: Set minimum wait time to 1ms, matching epoll A timeout value less than 0.001 gets turned into zero on the C side, so epoll_wait() returns instantly and essentially busy-loops up to 1ms, e.g. when a timer event ends up scheduled (0, 0.001)ms into the future. Unsure if this has much effect in practice, but it may waste a small amount of CPU time. How much would depend on how often this ends up happening and how fast the CPU gets trough main loop iterations.
Thu, 15 Jul 2021 00:38:27 +0200 prosodyctl: Add a note about checking the order of listed commands
Kim Alvefur <zash@zash.se> [Thu, 15 Jul 2021 00:38:27 +0200] rev 11697
prosodyctl: Add a note about checking the order of listed commands Should Plugin really be first? What order makes the most sense?
(0) -10000 -3000 -1000 -300 -100 -10 +10 +100 +300 +1000 tip