mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-02-01 11:01:46 +00:00
DIET/MINOR: proxy: rearrange a few fields in struct proxy to save 16 bytes
Turn the proxy state to a packed enum (1 char), same for the proxy mode, and store the capabitilies as a char. These 3 ints can now fill the hole after obj_type and save 8 bytes in the proxy struct. Moving the maxconn value just after, which is frequently accessed and was in a block of 3 ints saved another 8 bytes.
This commit is contained in:
parent
f6502c5062
commit
8379c17adf
@ -50,19 +50,21 @@
|
||||
#include <types/stick_table.h>
|
||||
|
||||
/* values for proxy->state */
|
||||
enum {
|
||||
enum pr_state {
|
||||
PR_STNEW = 0, /* proxy has not been initialized yet */
|
||||
PR_STREADY, /* proxy has been initialized and is ready */
|
||||
PR_STFULL, /* frontend is full (maxconn reached) */
|
||||
PR_STPAUSED, /* frontend is paused (during hot restart) */
|
||||
PR_STSTOPPED, /* proxy is stopped (end of a restart) */
|
||||
PR_STERROR, /* proxy experienced an unrecoverable error */
|
||||
};
|
||||
} __attribute__((packed));
|
||||
|
||||
/* values for proxy->mode */
|
||||
#define PR_MODE_TCP 0
|
||||
#define PR_MODE_HTTP 1
|
||||
#define PR_MODE_HEALTH 2
|
||||
enum pr_mode {
|
||||
PR_MODE_TCP = 0,
|
||||
PR_MODE_HTTP,
|
||||
PR_MODE_HEALTH,
|
||||
} __attribute__((packed));
|
||||
|
||||
/* flag values for proxy->cap. This is a bitmask of capabilities supported by the proxy */
|
||||
#define PR_CAP_NONE 0x0000
|
||||
@ -198,14 +200,17 @@ struct error_snapshot {
|
||||
|
||||
struct proxy {
|
||||
enum obj_type obj_type; /* object type == OBJ_TYPE_PROXY */
|
||||
int state; /* proxy state */
|
||||
enum pr_state state; /* proxy state, one of PR_* */
|
||||
enum pr_mode mode; /* mode = PR_MODE_TCP, PR_MODE_HTTP or PR_MODE_HEALTH */
|
||||
char cap; /* supported capabilities (PR_CAP_*) */
|
||||
unsigned int maxconn; /* max # of active sessions on the frontend */
|
||||
|
||||
int options; /* PR_O_REDISP, PR_O_TRANSP, ... */
|
||||
int options2; /* PR_O2_* */
|
||||
struct in_addr mon_net, mon_mask; /* don't forward connections from this net (network order) FIXME: should support IPv6 */
|
||||
unsigned int ck_opts; /* PR_CK_* (cookie options) */
|
||||
unsigned int fe_req_ana, be_req_ana; /* bitmap of common request protocol analysers for the frontend and backend */
|
||||
unsigned int fe_rsp_ana, be_rsp_ana; /* bitmap of common response protocol analysers for the frontend and backend */
|
||||
int mode; /* mode = PR_MODE_TCP, PR_MODE_HTTP or PR_MODE_HEALTH */
|
||||
unsigned int http_needed; /* non-null if HTTP analyser may be used */
|
||||
union {
|
||||
struct proxy *be; /* default backend, or NULL if none set */
|
||||
@ -281,7 +286,6 @@ struct proxy {
|
||||
struct freq_ctr fe_conn_per_sec; /* received connections per second on the frontend */
|
||||
struct freq_ctr fe_sess_per_sec; /* accepted sessions per second on the frontend (after tcp rules) */
|
||||
struct freq_ctr be_sess_per_sec; /* sessions per second on the backend */
|
||||
unsigned int maxconn; /* max # of active sessions on the frontend */
|
||||
unsigned int fe_sps_lim; /* limit on new sessions per second on the frontend */
|
||||
unsigned int fullconn; /* #conns on backend above which servers are used at full load */
|
||||
struct in_addr except_net, except_mask; /* don't x-forward-for for this address. FIXME: should support IPv6 */
|
||||
@ -299,7 +303,6 @@ struct proxy {
|
||||
time_t last_change; /* last time, when the state was changed */
|
||||
|
||||
int conn_retries; /* maximum number of connect retries */
|
||||
int cap; /* supported capabilities (PR_CAP_*) */
|
||||
int (*accept)(struct session *s); /* application layer's accept() */
|
||||
struct conn_src conn_src; /* connection source settings */
|
||||
struct proxy *next;
|
||||
|
Loading…
Reference in New Issue
Block a user