4447. [tuning] Allow the fstrm_iothr_init() options to be set using

named.conf to control how dnstap manages the data
                        flow. [RT #42974]
This commit is contained in:
Mark Andrews
2016-08-18 11:16:06 +10:00
parent 0967d759de
commit 934837913f
33 changed files with 709 additions and 26 deletions

View File

@@ -4396,6 +4396,14 @@ badresp:1,adberr:0,findfail:0,valfail:0]
<optional> dnstap-output ( <literal>file</literal> | <literal>unix</literal> ) <replaceable>path_name</replaceable>; </optional>
<optional> dnstap-identity ( <replaceable>string</replaceable> | <literal>hostname</literal> | <literal>none</literal> ); </optional>
<optional> dnstap-version ( <replaceable>string</replaceable> | <literal>none</literal> ); </optional>
<optional> fstrm-set-buffer-hint <replaceable>number</replaceable> ; </optional>
<optional> fstrm-set-flush-timeout <replaceable>number</replaceable> ; </optional>
<optional> fstrm-set-input-queue-size <replaceable>number</replaceable> ; </optional>
<optional> fstrm-set-output-notify-threshold <replaceable>number</replaceable> ; </optional>
<optional> fstrm-set-output-queue-model ( <replaceable>mpsc</replaceable> |
<replaceable>spsc</replaceable> ) ; </optional>
<optional> fstrm-set-output-queue-size <replaceable>number</replaceable> ; </optional>
<optional> fstrm-set-reopen-interval <replaceable>number</replaceable> ; </optional>
<optional> geoip-directory <replaceable>path_name</replaceable>; </optional>
<optional> key-directory <replaceable>path_name</replaceable>; </optional>
<optional> managed-keys-directory <replaceable>path_name</replaceable>; </optional>
@@ -4870,6 +4878,81 @@ badresp:1,adberr:0,findfail:0,valfail:0]
For more information on <command>dnstap</command>, see
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://dnstap.info">http://dnstap.info</link>.
</para>
<para>
The fstrm library has a number of tunables that are exposed
in <filename>named.conf</filename>, and can be modified
if necessary to improve performance or prevent loss of data.
These are:
</para>
<itemizedlist>
<listitem>
<simpara>
<command>fstrm-set-buffer-hint</command>: The
threshold number of bytes to accumulate in the output
buffer before forcing a buffer flush. The minimum is
1K, the maximum is 64K, and the default is 8K.
</simpara>
</listitem>
<listitem>
<simpara>
<command>fstrm-set-flush-timeout</command>: The number
of seconds to allow unflushed data to remain in the
output buffer. The minimum is 1 second, the maximum is
600 seconds (10 minutes), and the default is 1 second.
</simpara>
</listitem>
<listitem>
<simpara>
<command>fstrm-set-output-notify-threshold</command>:
The number of outstanding queue entries to allow on
an input queue before waking the I/O thread.
The minimum is 1 and the default is 32.
</simpara>
</listitem>
<listitem>
<simpara>
<command>fstrm-set-output-queue-model</command>:
Controls the queuing semantics to use for queue
objects. The default is <literal>mpsc</literal>
(multiple producer, single consumer); the other
option is <literal>spsc</literal> (single producer,
single consumer).
</simpara>
</listitem>
<listitem>
<simpara>
<command>fstrm-set-input-queue-size</command>: The
number of queue entries to allocate for each
input queue. The minimum is 2, the maximum is 16384,
and the default is 512.
</simpara>
</listitem>
<listitem>
<simpara>
<command>fstrm-set-output-queue-size</command>:
The number of queue entries to allocate for each
output queue. The minimum is 2, the maximum is
system-dependent and based on <option>IOV_MAX</option>,
and the default is 64.
</simpara>
</listitem>
<listitem>
<simpara>
<command>fstrm-set-reopen-interval</command>:
The number of seconds to wait between attempts to
reopen a closed output stream. The minimum is 1 second,
the maximum is 600 seconds (10 minutes), and the default
is 5 seconds.
</simpara>
</listitem>
</itemizedlist>
<para>
Note that all of the above minimum, maximum, and default
values are set by the <command>libfstrm</command> library,
and may be subject to change in future versions of the
library. See the <command>libfstrm</command> documentation
for more information.
</para>
</listitem>
</varlistentry>