- tune.buffers.limit
- tune.buffers.reserve
- tune.bufsize
+ - tune.cache.zero-copy-forwarding
- tune.comp.maxlevel
- tune.disable-fast-forward
- tune.disable-zero-copy-forwarding
value set using this parameter will automatically be rounded up to the next
multiple of 8 on 32-bit machines and 16 on 64-bit machines.
+tune.cache.zero-copy-forwarding { on | off }
+ Enables ('on') of disabled ('off') the zero-copy forwarding of data for the
+ cache applet, when objects are served from the cache to clients. It is
+ enabled by default.
+
+ See also: tune.disable-zero-copy-forwarding.
+
tune.comp.maxlevel <number>
Sets the maximum compression level. The compression level affects CPU
usage during compression. This value affects CPU usage during compression.
Thanks to this directive, it is possible to disable this optimization. Note
it also disable any kernel tcp splicing.
- See also: tune.pt.zero-copy-forwarding,
+ See also: tune.pt.zero-copy-forwarding, tune.cache.zero-copy-forwarding,
tune.h1.zero-copy-fwd-recv, tune.h1.zero-copy-fwd-send,
tune.h2.zero-copy-fwd-send, tune.quic.zero-copy-fwd-send
applet_have_more_data(appctx);
- if (!(global.tune.no_zero_copy_fwd & NO_ZERO_COPY_FWD) &&
+ if (!(global.tune.no_zero_copy_fwd & (NO_ZERO_COPY_FWD|NO_ZERO_COPY_FWD_CACHE)) &&
sc_ep_test(sc, SE_FL_MAY_FASTFWD) &&
res->to_forward &&
ctx->data_sent != cache_ptr->body_size) {
return -1;
}
+/* config parser for global "tune.cache.zero-copy-forwarding" */
+static int cfg_parse_cache_zero_copy_fwd(char **args, int section_type, struct proxy *curpx,
+ const struct proxy *defpx, const char *file, int line,
+ char **err)
+{
+ if (too_many_args(1, args, err, NULL))
+ return -1;
+
+ if (strcmp(args[1], "on") == 0)
+ global.tune.no_zero_copy_fwd &= ~NO_ZERO_COPY_FWD_CACHE;
+ else if (strcmp(args[1], "off") == 0)
+ global.tune.no_zero_copy_fwd |= NO_ZERO_COPY_FWD_CACHE;
+ else {
+ memprintf(err, "'%s' expects 'on' or 'off'.", args[0]);
+ return -1;
+ }
+ return 0;
+}
+
+
/* It reserves a struct show_cache_ctx for the local variables */
static int cli_parse_show_cache(char **args, char *payload, struct appctx *appctx, void *private)
{
.release = http_cache_applet_release,
};
+/* config keyword parsers */
+static struct cfg_kw_list cfg_kws = {ILH, {
+ { CFG_GLOBAL, "tune.cache.zero-copy-forwarding", cfg_parse_cache_zero_copy_fwd },
+ { 0, NULL, NULL }
+}};
+
+INITCALL1(STG_REGISTER, cfg_register_keywords, &cfg_kws);
+
+
/* config parsers for this section */
REGISTER_CONFIG_SECTION("cache", cfg_parse_cache, cfg_post_parse_section_cache);
REGISTER_POST_CHECK(post_check_cache);