haproxy/src
Willy Tarreau 0dc1cc93b6 MAJOR: fd: grab the tgid before manipulating running
We now grab a reference to the FD's tgid before manipulating the
running_mask so that we're certain it corresponds to our own group
(hence bits), and we drop it once we've set the bit. For now there's
no measurable performance impact in doing this, which is great. The
lock can be observed by perf top as taking a small share of the time
spent in fd_update_events(), itself taking no more than 0.28% of CPU
under 8 threads.

However due to the fact that the thread groups are not yet properly
spread across the pollers and the thread masks are still wrong, this
will trigger some BUG_ON() in fd_insert() after a few tens of thousands
of connections when threads other than those of group 1 are reached,
and this is expected.
2022-07-15 20:16:30 +02:00
..
acl.c
action.c
activity.c MINOR: thread: only use atomic ops to touch the flags 2022-07-01 19:15:14 +02:00
applet.c MINOR: applet: always use task_new_on() on applet creation 2022-07-01 19:15:14 +02:00
arg.c
auth.c
backend.c MEDIUM: conn: make conn_backend_get always scan the same group 2022-07-15 19:43:10 +02:00
base64.c
cache.c CLEANUP: applet: rename appctx_cs() to appctx_sc() 2022-05-27 19:33:35 +02:00
calltrace.c
cbuf.c CLEANUP: pool/tree-wide: remove suffix "_pool" from certain pool names 2022-06-23 11:49:09 +02:00
cfgcond.c
cfgdiag.c
cfgparse-global.c MEDIUM: cpu-map: replace the process number with the thread group number 2022-07-15 19:43:10 +02:00
cfgparse-listen.c MEDIUM: config: remove deprecated "bind-process" directives from frontends 2022-07-15 19:41:26 +02:00
cfgparse-quic.c MINOR: quic: Connection TX buffer setting renaming. 2022-05-30 09:59:26 +02:00
cfgparse-ssl.c MINOR: listener/ssl: set the SSL xprt layer only once the whole config is known 2022-05-20 18:41:55 +02:00
cfgparse-tcp.c CLEANUP: tree-wide: remove 25 occurrences of unneeded fcntl.h 2022-04-26 10:59:48 +02:00
cfgparse-unix.c CLEANUP: tree-wide: remove 25 occurrences of unneeded fcntl.h 2022-04-26 10:59:48 +02:00
cfgparse.c BUG/MINOR: peers: fix possible NULL dereferences at config parsing 2022-07-06 14:40:11 +02:00
channel.c CLEANUP: conn_stream: tree-wide rename to stconn (stream connector) 2022-05-27 19:33:34 +02:00
check.c MINOR: task: replace task_set_affinity() with task_set_thread() 2022-07-01 19:15:14 +02:00
chunk.c CLEANUP: chunks: release trash also in deinit 2022-04-27 17:55:41 +02:00
cli.c MINOR: cli/fd: show fd's tgid and refcount in "show fd" 2022-07-15 19:58:06 +02:00
clock.c MINOR: clock: use ltid_bit in clock_report_idle() 2022-07-01 19:15:15 +02:00
compression.c CLEANUP: compression: move the default setting of maxzlibmem to defaults 2022-04-25 19:42:43 +02:00
connection.c MINOR: connection: support HTTP/3.0 for smp_*_http_major fetch 2022-06-07 12:04:12 +02:00
cpuset.c MEDIUM: cpu-map: replace the process number with the thread group number 2022-07-15 19:43:10 +02:00
debug.c DEBUG: cli: add a new "debug dev deadlock" expert command 2022-07-15 19:41:26 +02:00
dgram.c
dict.c
dns.c MEDIUM: fd: add the tgid to the fd and pass it to fd_insert() 2022-07-15 19:58:06 +02:00
dynbuf.c
eb32sctree.c
eb32tree.c
eb64tree.c
ebimtree.c
ebistree.c
ebmbtree.c
ebpttree.c
ebsttree.c
ebtree.c
errors.c CLEANUP: ring: pass the ring watch flags to ring_attach_cli(), not in ctx.cli 2022-05-06 18:13:36 +02:00
ev_epoll.c MEDIUM: fd/poller: make the update-list per-group 2022-07-15 19:57:28 +02:00
ev_evports.c MEDIUM: fd/poller: make the update-list per-group 2022-07-15 19:57:28 +02:00
ev_kqueue.c MEDIUM: fd/poller: make the update-list per-group 2022-07-15 19:57:28 +02:00
ev_poll.c MEDIUM: fd/poller: make the update-list per-group 2022-07-15 19:57:28 +02:00
ev_select.c MEDIUM: fd/poller: make the update-list per-group 2022-07-15 19:57:28 +02:00
extcheck.c MINOR: task: replace task_set_affinity() with task_set_thread() 2022-07-01 19:15:14 +02:00
fcgi-app.c MEDIUM: http-ana: Add a proxy option to restrict chars in request header names 2022-05-16 16:00:26 +02:00
fcgi.c
fd.c MAJOR: fd: grab the tgid before manipulating running 2022-07-15 20:16:30 +02:00
filters.c
fix.c
flt_bwlim.c CLEANUP: bwlim: Set pointers to NULL when memory is released 2022-07-06 09:34:54 +02:00
flt_http_comp.c
flt_spoe.c CLEANUP: applet: rename appctx_cs() to appctx_sc() 2022-05-27 19:33:35 +02:00
flt_trace.c
freq_ctr.c MINOR: freq_ctr: Add a function to get events excess over the current period 2022-06-22 18:33:27 +02:00
frontend.c REORG: rename cs_utils.h to sc_strm.h 2022-05-27 19:33:35 +02:00
h1_htx.c BUG/MEDIUM: http: Properly reject non-HTTP/1.x protocols 2022-05-24 15:38:05 +02:00
h1.c BUG/MEDIUM: h1: Improve authority validation for CONNCET request 2022-07-07 09:35:58 +02:00
h2.c
h3_stats.c MINOR: h3: Add a statistics module for h3 2022-05-30 09:59:26 +02:00
h3.c MINOR: h3: implement graceful shutdown with GOAWAY 2022-07-15 15:56:13 +02:00
haproxy.c MEDIUM: cpu-map: replace the process number with the thread group number 2022-07-15 19:43:10 +02:00
hash.c
hlua_fcn.c CLEANUP: Add missing header to hlua_fcn.c 2022-05-17 11:40:33 +02:00
hlua.c CLEANUP: task: remove thread_mask from the struct task 2022-07-01 19:15:14 +02:00
hpack-dec.c
hpack-enc.c
hpack-huff.c
hpack-tbl.c
hq_interop.c MINOR: mux-quic/h3: adjust demuxing function return values 2022-06-07 18:15:47 +02:00
http_acl.c
http_act.c BUG/MINOR: http-act: Properly generate 103 responses when several rules are used 2022-07-06 09:37:43 +02:00
http_ana.c BUG/MEDIUM: http-ana: Don't wait to have an empty buf to switch in TUNNEL state 2022-07-08 16:37:31 +02:00
http_client.c MEDIUM: httpclient: Don't close CLI applet at the end of a response 2022-06-01 17:20:57 +02:00
http_conv.c
http_fetch.c BUILD: http: silence an uninitialized warning affecting gcc-5 2022-07-10 14:13:48 +02:00
http_htx.c MINOR: http-htx: Use new HTTP functions for the scheme based normalization 2022-07-07 09:35:58 +02:00
http_rules.c BUILD: http: remove the two unused constructors in rules and ana 2022-04-25 19:26:26 +02:00
http.c MINOR: http: Add function to detect default port 2022-07-06 17:54:03 +02:00
htx.c
init.c
jwt.c
lb_chash.c
lb_fas.c
lb_fwlc.c
lb_fwrr.c
lb_map.c
listener.c MINOR: fd/thread: get rid of thread_mask() 2022-07-15 19:43:10 +02:00
log.c BUG/MINOR: log: Properly test connection retries to fix dontlog-normal option 2022-06-17 14:53:21 +02:00
lru.c
mailers.c BUG/MEDIUM: mailers: Set the object type for check attached to an email alert 2022-06-08 15:28:38 +02:00
map.c CLEANUP: applet: rename appctx_cs() to appctx_sc() 2022-05-27 19:33:35 +02:00
mjson.c
mqtt.c
mux_fcgi.c BUILD: htx: use the unchecked version of htx_get_head_blk() where needed 2022-05-30 16:27:48 +02:00
mux_h1.c BUG/MEDIUM: mux-h1: Handle connection error after a synchronous send 2022-07-08 16:37:31 +02:00
mux_h2.c CLEANUP: h2: Typo fix in h2_unsubcribe() traces 2022-06-30 14:34:32 +02:00
mux_pt.c CLEANUP: mux-pt: rename the "endp" field to "sd" 2022-05-27 19:33:35 +02:00
mux_quic.c MINOR: mux-quic: send one last time before release 2022-07-15 15:56:13 +02:00
mworker-prog.c
mworker.c CLEANUP: mworker: rename mworker_pipe to mworker_sockpair 2022-07-05 09:06:04 +02:00
namespace.c
ncbuf.c MINOR: ncbuf: implement ncb_is_fragmented() 2022-07-01 15:54:23 +02:00
pattern.c
payload.c CLEANUP: check: rename all occurrences of stconn "cs" to "sc" 2022-05-27 19:33:35 +02:00
peers.c MAJOR: task: use t->tid instead of ffsl(t->thread_mask) to take the thread ID 2022-07-01 19:15:14 +02:00
pipe.c
pool.c REORG: stconn: rename conn_stream.{c,h} to stconn.{c,h} 2022-05-27 19:33:35 +02:00
proto_quic.c CLEANUP: pool/tree-wide: remove suffix "_pool" from certain pool names 2022-06-23 11:49:09 +02:00
proto_sockpair.c MEDIUM: fd: add the tgid to the fd and pass it to fd_insert() 2022-07-15 19:58:06 +02:00
proto_tcp.c MINOR: protocol: replace ctrl_type with xprt_type and clarify it 2022-05-20 18:39:43 +02:00
proto_udp.c MINOR: protocol: replace ctrl_type with xprt_type and clarify it 2022-05-20 18:39:43 +02:00
proto_uxdg.c MINOR: protocol: replace ctrl_type with xprt_type and clarify it 2022-05-20 18:39:43 +02:00
proto_uxst.c MINOR: protocol: replace ctrl_type with xprt_type and clarify it 2022-05-20 18:39:43 +02:00
protocol.c MINOR: protocol: replace ctrl_type with xprt_type and clarify it 2022-05-20 18:39:43 +02:00
proxy.c MEDIUM: proto: stop protocols under thread isolation during soft stop 2022-07-15 19:43:10 +02:00
qpack-dec.c MINOR: qpack: properly handle invalid dynamic table references 2022-06-30 11:51:06 +02:00
qpack-enc.c BUG/MINOR: qpack: support bigger prefix-integer encoding 2022-05-30 14:30:05 +02:00
qpack-tbl.c
queue.c MEDIUM: queue: revert to regular inter-task wakeups 2022-07-01 19:15:14 +02:00
quic_cc_newreno.c
quic_cc.c
quic_frame.c BUILD: quic+h3: 32-bit compilation errors fixes 2022-06-24 12:13:53 +02:00
quic_loss.c MINOR: quic_stats: Add transport new counters (lost, stateless reset, drop) 2022-05-30 09:59:26 +02:00
quic_sock.c MINOR: quic: Improvements for the datagrams receipt 2022-06-30 14:34:27 +02:00
quic_stats.c MINOR: quic: Add new stats counter to diagnose RX buffer overrun 2022-06-30 14:24:04 +02:00
quic_stream.c CLEANUP: quic: drop the name "conn_stream" from the pool variable names 2022-05-27 19:33:35 +02:00
quic_tls.c CLEANUP: quic: Remove any reference to boringssl 2022-06-16 15:58:48 +02:00
quic_tp.c MINOR: quic: Dump version_information transport parameter 2022-06-21 11:07:39 +02:00
raw_sock.c MINOR: tree-wide: always consider EWOULDBLOCK in addition to EAGAIN 2022-04-25 20:32:15 +02:00
regex.c
resolvers.c BUG/MINOR: server: do not enable DNS resolution on disabled proxies 2022-06-10 11:17:27 +02:00
ring.c CLEANUP: applet: rename appctx_cs() to appctx_sc() 2022-05-27 19:33:35 +02:00
sample.c BUG/MEDIUM: sample: Fix adjusting size in word converter 2022-05-27 19:33:34 +02:00
server_state.c
server.c MINOR: server: indicate when no address was expected for a server 2022-05-31 09:25:34 +02:00
session.c
sha1.c
shctx.c
signal.c
sink.c CLEANUP: applet: rename appctx_cs() to appctx_sc() 2022-05-27 19:33:35 +02:00
slz.c
sock_inet.c MEDIUM: fd: add the tgid to the fd and pass it to fd_insert() 2022-07-15 19:58:06 +02:00
sock_unix.c MEDIUM: fd: add the tgid to the fd and pass it to fd_insert() 2022-07-15 19:58:06 +02:00
sock.c MEDIUM: fd: add the tgid to the fd and pass it to fd_insert() 2022-07-15 19:58:06 +02:00
ssl_ckch.c BUG/MINOR: ssl: Do not look for key in extra files if already in pem 2022-06-22 10:45:47 +02:00
ssl_crtlist.c BUG/MEDIUM: ssl/cli: crash when crt inserted into a crt-list 2022-06-20 17:27:49 +02:00
ssl_sample.c CLEANUP: check: rename all occurrences of stconn "cs" to "sc" 2022-05-27 19:33:35 +02:00
ssl_sock.c MEDIUM: fd: add the tgid to the fd and pass it to fd_insert() 2022-07-15 19:58:06 +02:00
ssl_utils.c CLEANUP: Add missing header to ssl_utils.c 2022-05-17 11:40:33 +02:00
stats.c BUG/MINOR: cli/stats: add missing trailing LF after "show info json" 2022-06-10 15:12:21 +02:00
stconn.c CLEANUP: stconn: Don't expect to have no sedesc on detach 2022-06-17 13:25:02 +02:00
stick_table.c CLEANUP: applet: rename appctx_cs() to appctx_sc() 2022-05-27 19:33:35 +02:00
stream.c CLEANUP: applet: remove the obsolete command context from the appctx 2022-07-15 19:41:26 +02:00
task.c MINOR: task: move the niced_tasks counter to the thread group context 2022-07-15 19:43:10 +02:00
tcp_act.c REORG: rename cs_utils.h to sc_strm.h 2022-05-27 19:33:35 +02:00
tcp_rules.c BUG/MINOR: tcp-rules: Make action call final on read error and delay expiration 2022-06-13 08:04:10 +02:00
tcp_sample.c CLEANUP: check: rename all occurrences of stconn "cs" to "sc" 2022-05-27 19:33:35 +02:00
tcpcheck.c BUG/MINOR: http-check: Preserve headers if not redefined by an implicit rule 2022-07-06 09:35:13 +02:00
thread.c MEDIUM: cpu-map: replace the process number with the thread group number 2022-07-15 19:43:10 +02:00
time.c
tools.c MINOR: intops: add a function to return a valid bit position from a mask 2022-06-21 20:29:57 +02:00
trace.c BUG/MINOR: trace: Test server existence for health-checks to get proxy 2022-06-08 15:28:38 +02:00
uri_auth.c
uri_normalizer.c
vars.c
version.c
wdt.c MINOR: wdt: do not rely on threads_to_dump anymore 2022-07-01 19:26:35 +02:00
xprt_handshake.c CLEANUP: pool/tree-wide: remove suffix "_pool" from certain pool names 2022-06-23 11:49:09 +02:00
xprt_quic.c MEDIUM: quic: send CONNECTION_CLOSE on released MUX 2022-07-15 15:56:13 +02:00