e594b6a08a45e5bdb0281fe6b23d45221020c633
[vpp.git] / docs / gettingstarted / users / configuring / startup.rst
1 .. _startup:
2
3 ==========================================
4 VPP Configuration - CLI and 'startup.conf'
5 ==========================================
6
7 After a successful installation, VPP installs a startup config file named
8 *startup.conf* in the */etc/vpp/* directory. This file can be tailored to
9 make VPP run as desired, but contains default values for typical installations.
10
11 Below are more details about this file and some of the the parameters and values
12 it contains.
13
14 Command-line Arguments
15 ----------------------
16
17 Before we describe details of the startup configuration file (startup.conf) it
18 should be mentioned that VPP can be started without a startup configuration
19 file.
20
21 Parameters are grouped by a section name. When providing more than one
22 parameter to a section, all parameters for that section must be wrapped in
23 curly braces. For example, to start VPP with configuration data via the
24 command line with the section name *'unix'*:
25
26 .. code-block:: console
27
28     $ sudo /usr/bin/vpp unix { interactive cli-listen 127.0.0.1:5002 }
29
30 The command line can be presented as a single string or as several; anything
31 given on the command line is concatenated with spaces into a single string
32 before parsing. VPP applications must be able to locate their own executable
33 images. The simplest way to ensure this will work is to invoke a VPP
34 application by giving its absolute path. For example:
35 *'/usr/bin/vpp <options>'*  At startup, VPP applications parse through their
36 own ELF-sections [primarily] to make lists of init, configuration, and exit
37 handlers.
38
39 When developing with VPP, in gdb it's often sufficient to start an application
40 like this:
41
42 .. code-block:: console
43
44     (gdb) run unix interactive
45
46
47 Startup Configuration File (startup.conf)
48 -----------------------------------------
49
50 The more typical way to specify the startup configuration to VPP is with the
51 startup configuration file (startup.conf).
52
53 The path of the file is provided to the VPP application on the command line.
54 This is typically at /etc/vpp/startup.conf. If VPP is installed as a package
55 a default startup.conf file is provided at this location.
56
57 The format of the configuration file is a simple text file with the same content
58 as the command line.
59
60 **A very simple startup.conf file:**
61
62 .. code-block:: console
63
64     $ cat /etc/vpp/startup.conf
65     unix {
66       nodaemon
67       log /var/log/vpp/vpp.log
68       full-coredump
69       cli-listen localhost:5002
70     }
71
72     api-trace {
73       on
74     }
75
76     dpdk {
77       dev 0000:03:00.0
78     }
79
80 VPP is instructed to load this file with the -c option. For example:
81
82 .. code-block:: console
83
84     $ sudo /usr/bin/vpp -c /etc/vpp/startup.conf
85
86 Configuration Parameters
87 ------------------------
88
89 Below is the list of some section names and their associated parameters.
90 This is not an exhaustive list, but should give you an idea of how VPP can be configured.
91
92 For all of the configuration parameters search the source code for instances of
93 **VLIB_CONFIG_FUNCTION** and **VLIB_EARLY_CONFIG_FUNCTION**.
94
95 For example, the invocation *'VLIB_CONFIG_FUNCTION (foo_config, "foo")'* will
96 cause the function *'foo_config'* to receive all parameters given in a
97 parameter block named "foo": "foo { arg1 arg2 arg3 ... }".
98
99 The unix section
100 ----------------
101
102 Configures VPP startup and behavior type attributes, as well and any OS based
103 attributes.
104
105 .. code-block:: console
106
107   unix {
108     nodaemon
109     log /var/log/vpp/vpp.log
110     full-coredump
111     cli-listen /run/vpp/cli.sock
112     gid vpp
113   }
114
115 nodaemon
116 ^^^^^^^^
117
118 Do not fork / background the vpp process. Typical when invoking VPP
119 applications from a process monitor. Set by default in the default
120 *'startup.conf'* file.
121
122 .. code-block:: console
123
124    nodaemon
125
126 nosyslog
127 ^^^^^^^^
128
129 Disable syslog and log errors to stderr instead. Typical when invoking
130 VPP applications from a process monitor like runit or daemontools that
131 pipe service's output to a dedicated log service, which will typically
132 attach a timestamp and rotate the logs as necessary.
133
134 .. code-block:: console
135
136    nosyslog
137
138 interactive
139 ^^^^^^^^^^^
140
141 Attach CLI to stdin/out and provide a debugging command line interface.
142
143 .. code-block:: console
144
145    interactive
146
147 log <filename>
148 ^^^^^^^^^^^^^^
149
150 Logs the startup configuration and all subsequent CLI commands in filename.
151 Very useful in situations where folks don't remember or can't be bothered
152 to include CLI commands in bug reports. The default *'startup.conf'* file
153 is to write to *'/var/log/vpp/vpp.log'*.
154
155 In VPP 18.04, the default log file location was moved from '/tmp/vpp.log'
156 to '/var/log/vpp/vpp.log' . The VPP code is indifferent to the file location.
157 However, if SELinux is enabled, then the new location is required for the file
158 to be properly labeled. Check your local *'startup.conf'* file for the log file
159 location on your system.
160
161 .. code-block:: console
162
163    log /var/log/vpp/vpp-debug.log
164
165 exec | startup-config <filename>
166 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
167
168 Read startup operational configuration from filename. The contents of the file
169 will be performed as though entered at the CLI. The two keywords are aliases
170 for the same function; if both are specified, only the last will have an effect.
171
172 A file of CLI commands might look like:
173
174 .. code-block:: console
175
176    $ cat /usr/share/vpp/scripts/interface-up.txt
177    set interface state TenGigabitEthernet1/0/0 up
178    set interface state TenGigabitEthernet1/0/1 up
179
180 Parameter Example:
181
182 .. code-block:: console
183
184      startup-config /usr/share/vpp/scripts/interface-up.txt
185
186 gid <number | name>
187 ^^^^^^^^^^^^^^^^^^^
188
189 Sets the effective group ID to the input group ID or group name of the calling
190 process.
191
192 .. code-block:: console
193
194    gid vpp
195
196 full-coredump
197 ^^^^^^^^^^^^^
198
199 Ask the Linux kernel to dump all memory-mapped address regions, instead of
200 just text+data+bss.
201
202 .. code-block:: console
203
204    full-coredump
205
206 coredump-size unlimited | <n>G | <n>M | <n>K | <n>
207 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
208
209      Set the maximum size of the coredump file. The input value can be set in
210      GB, MB, KB or bytes, or set to *'unlimited'*.
211
212 .. code-block:: console
213
214    coredump-size unlimited
215
216 cli-listen <ipaddress:port> | <socket-path>
217 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
218
219      Bind the CLI to listen at address localhost on TCP port 5002. This will
220      accept an ipaddress:port pair or a filesystem path; in the latter case a
221      local Unix socket is opened instead. The default *'startup.conf'* file
222      is to open the socket *'/run/vpp/cli.sock'*.
223
224 .. code-block:: console
225
226      cli-listen localhost:5002
227      cli-listen /run/vpp/cli.sock
228
229 cli-line-mode
230 ^^^^^^^^^^^^^
231
232      Disable character-by-character I/O on stdin. Useful when combined with,
233      for example, emacs M-x gud-gdb.
234
235 .. code-block:: console
236
237    cli-line-mode
238
239 cli-prompt <string>
240 ^^^^^^^^^^^^^^^^^^^
241
242      Configure the CLI prompt to be string.
243
244 .. code-block:: console
245
246      cli-prompt vpp-2
247
248 cli-history-limit <n>
249 ^^^^^^^^^^^^^^^^^^^^^
250
251      Limit command history to <n> lines. A value of 0 disables command history.
252      Default value: 50
253
254 .. code-block:: console
255
256      cli-history-limit 100
257
258 cli-no-banner
259 ^^^^^^^^^^^^^
260
261      Disable the login banner on stdin and Telnet connections.
262
263 .. code-block:: console
264
265      cli-no-banner
266
267 cli-no-pager
268 ^^^^^^^^^^^^
269
270      Disable the output pager.
271
272 .. code-block:: console
273
274      cli-no-pager
275
276 cli-pager-buffer-limit <n>
277 ^^^^^^^^^^^^^^^^^^^^^^^^^^
278
279      Limit pager buffer to <n> lines of output. A value of 0 disables the
280      pager. Default value: 100000
281
282 .. code-block:: console
283
284      cli-pager-buffer-limit 5000
285
286 runtime-dir <dir>
287 ^^^^^^^^^^^^^^^^^
288
289      Set the runtime directory, which is the default location for certain
290      files, like socket files. Default is based on User ID used to start VPP.
291      Typically it is *'root'*, which defaults to *'/run/vpp/'*. Otherwise,
292      defaults to *'/run/user/<uid>/vpp/'*.
293
294 .. code-block:: console
295
296      runtime-dir /tmp/vpp
297
298 poll-sleep-usec <n>
299 ^^^^^^^^^^^^^^^^^^^
300
301      Add a fixed-sleep between main loop poll. Default is 0, which is not to
302      sleep.
303
304 .. code-block:: console
305
306      poll-sleep-usec 100
307
308 pidfile <filename>
309 ^^^^^^^^^^^^^^^^^^
310
311      Writes the pid of the main thread in the given filename.
312
313 .. code-block:: console
314
315      pidfile /run/vpp/vpp1.pid
316
317
318 The api-trace Section
319 ---------------------
320
321 The ability to trace, dump, and replay control-plane API traces makes all the
322 difference in the world when trying to understand what the control-plane has
323 tried to ask the forwarding-plane to do.
324
325 Typically, one simply enables the API message trace scheme:
326
327 .. code-block:: console
328
329    api-trace {
330      api-trace on
331    }
332
333 on | enable
334 ^^^^^^^^^^^
335
336      Enable API trace capture from the beginning of time, and arrange for a
337      post-mortem dump of the API trace if the application terminates abnormally.
338      By default, the (circular) trace buffer will be configured to capture
339      256K traces. The default *'startup.conf'* file has trace enabled by default,
340      and unless there is a very strong reason, it should remain enabled.
341
342 .. code-block:: console
343
344     on
345
346 nitems <n>
347 ^^^^^^^^^^
348
349      Configure the circular trace buffer to contain the last <n> entries. By
350      default, the trace buffer captures the last 256K API messages received.
351
352 .. code-block:: console
353
354     nitems 524288
355
356 save-api-table <filename>
357 ^^^^^^^^^^^^^^^^^^^^^^^^^
358
359      Dumps the API message table to /tmp/<filename>.
360
361 .. code-block:: console
362
363     save-api-table apiTrace-07-04.txt
364
365
366 The api-segment Section
367 -----------------------
368
369 These values control various aspects of the binary API interface to VPP.
370
371 The default looks like the following:
372
373 .. code-block:: console
374
375    api-segment {
376      gid vpp
377    }
378
379
380 prefix <path>
381 ^^^^^^^^^^^^^
382
383      Sets the prefix prepended to the name used for shared memory (SHM)
384      segments. The default is empty, meaning shared memory segments are created
385      directly in the SHM directory *'/dev/shm'*. It is worth noting that on
386      many systems *'/dev/shm'* is a symbolic link to somewhere else in the file
387      system; Ubuntu links it to *'/run/shm'*.
388
389 .. code-block:: console
390
391     prefix /run/shm
392
393 uid <number | name>
394 ^^^^^^^^^^^^^^^^^^^
395
396      Sets the user ID or name that should be used to set the ownership of the
397      shared memory segments. Defaults to the same user that VPP is started
398      with, probably root.
399
400 .. code-block:: console
401
402     uid root
403
404 gid <number | name>
405 ^^^^^^^^^^^^^^^^^^^
406
407      Sets the group ID or name that should be used to set the ownership of the
408      shared memory segments. Defaults to the same group that VPP is started
409      with, probably root.
410
411 .. code-block:: console
412
413     gid vpp
414
415 **The following parameters should only be set by those that are familiar with the
416 interworkings of VPP.**
417
418 baseva <x>
419 ^^^^^^^^^^
420
421      Set the base address for SVM global region. If not set, on AArch64, the
422      code will try to determine the base address. All other default to
423      0x30000000.
424
425 .. code-block:: console
426
427     baseva 0x20000000
428
429 global-size <n>G | <n>M | <n>
430 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
431
432      Set the global memory size, memory shared across all router instances,
433      packet buffers, etc. If not set, defaults to 64M. The input value can be
434      set in GB, MB or bytes.
435
436 .. code-block:: console
437
438     global-size 2G
439
440 global-pvt-heap-size <n>M | size <n>
441 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
442
443      Set the size of the global VM private mheap. If not set, defaults to 128k.
444      The input value can be set in MB or bytes.
445
446 .. code-block:: console
447
448     global-pvt-heap-size size 262144
449
450 api-pvt-heap-size <n>M | size <n>
451 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
452
453      Set the size of the api private mheap. If not set, defaults to 128k.
454      The input value can be set in MB or bytes.
455
456 .. code-block:: console
457
458     api-pvt-heap-size 1M
459
460 api-size <n>M | <n>G | <n>
461 ^^^^^^^^^^^^^^^^^^^^^^^^^^
462
463      Set the size of the API region. If not set, defaults to 16M. The input
464      value can be set in GB, MB or bytes.
465
466 .. code-block:: console
467
468     api-size 64M
469
470 The socksvr Section
471 -------------------
472
473 Enables a Unix domain socket which processes binary API messages. See
474 .../vlibmemory/socket_api.c.  If this parameter is not set, vpp
475 won't process binary API messages over sockets.
476
477 .. code-block:: console
478
479    socksvr {
480       # Explicitly name a socket file
481       socket-name /run/vpp/api.sock
482       or
483       # Use defaults as described below
484       default
485    }
486
487 The "default" keyword instructs vpp to use /run/vpp/api.sock when
488 running as root, otherwise to use /run/user/<uid>/api.sock.
489
490 The cpu Section
491 ---------------
492
493 In the VPP there is one main thread and optionally the user can create worker(s)
494 The main thread and worker thread(s) can be pinned to CPU core(s) manually or automatically
495
496 .. code-block:: console
497
498    cpu {
499       main-core 1
500       corelist-workers 2-3,18-19
501    }
502
503
504 Manual pinning of thread(s) to CPU core(s)
505 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
506
507 main-core
508 ^^^^^^^^^
509
510 Set logical CPU core where main thread runs, if main core is not set VPP will use
511 core 1 if available
512
513 .. code-block:: console
514
515    main-core 1
516
517 corelist-workers
518 ^^^^^^^^^^^^^^^^
519
520 Set logical CPU core(s) where worker threads are running
521
522 .. code-block:: console
523
524    corelist-workers 2-3,18-19
525
526 Automatic pinning of thread(s) to CPU core(s)
527 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
528
529 skip-cores number
530 ^^^^^^^^^^^^^^^^^
531
532 Sets number of CPU core(s) to be skipped (1 ... N-1), Skipped CPU core(s) are
533 not used for pinning main thread and working thread(s).
534
535 The main thread is automatically pinned to the first available CPU core and worker(s)
536 are pinned to next free CPU core(s) after core assigned to main thread
537
538 .. code-block:: console
539
540    skip-cores 4
541
542 workers number
543 ^^^^^^^^^^^^^^
544
545 Specify a number of workers to be created Workers are pinned to N consecutive
546 CPU cores while skipping "skip-cores" CPU core(s) and main thread's CPU core
547
548 .. code-block:: console
549
550    workers 2
551
552 scheduler-policy other | batch | idle | fifo | rr
553 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
554
555 Set scheduling policy and priority of main and worker threads
556
557 Scheduling policy options are: other (SCHED_OTHER), batch (SCHED_BATCH)
558 idle (SCHED_IDLE), fifo (SCHED_FIFO), rr (SCHED_RR)
559
560 .. code-block:: console
561
562    scheduler-policy fifo
563
564 scheduler-priority number
565 ^^^^^^^^^^^^^^^^^^^^^^^^^
566
567 Scheduling priority is used only for "real-time policies (fifo and rr),
568 and has to be in the range of priorities supported for a particular policy
569
570 .. code-block:: console
571
572    scheduler-priority 50
573
574 The buffers Section
575 -------------------
576
577 .. code-block:: console
578
579    buffers {
580       buffers-per-numa 128000
581       default data-size 2048
582       page-size default-hugepage
583    }
584
585 buffers-per-numa number
586 ^^^^^^^^^^^^^^^^^^^^^^^
587
588 Increase number of buffers allocated, needed only in scenarios with
589 large number of interfaces and worker threads. Value is per numa node.
590 Default is 16384 (8192 if running unpriviledged)
591
592 .. code-block:: console
593
594    buffers-per-numa 128000
595
596 default data-size number
597 ^^^^^^^^^^^^^^^^^^^^^^^^
598
599 Size of buffer data area, default is 2048
600
601 .. code-block:: console
602
603    default data-size 2048
604
605 page-size number
606 ^^^^^^^^^^^^^^^^
607
608 Set the page size for buffer allocation
609
610 .. code-block:: console
611
612    page-size 4K
613    page-size 2M
614    page-size 1G
615    page-size default
616    page-size default-hugepage
617
618
619 The dpdk Section
620 ----------------
621
622 .. code-block:: console
623
624    dpdk {
625       dev default {
626          num-rx-desc 512
627          num-tx-desc 512
628       }
629
630       dev 0000:02:00.1 {
631          num-rx-queues 2
632          name eth0
633       }
634    }
635
636 dev <pci-dev> | default { .. }
637 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
638
639 White-list [as in, attempt to drive] a specific PCI device. PCI-dev is a
640 string of the form "DDDD:BB:SS.F" where:
641
642 * DDDD = Domain
643 * BB = Bus Number
644 * SS = Slot number
645 * F = Function
646
647 If the keyword **default** is used the values will apply to all the devices.
648
649 This is the same format used in the linux sysfs tree (i.e./sys/bus/pci/devices)
650 for PCI device directory names.
651
652 .. code-block:: console
653
654    dpdk {
655       dev default {
656          num-rx-desc 512
657          num-tx-desc 512
658       }
659
660 dev <pci-dev> { .. }
661 ^^^^^^^^^^^^^^^^^^^^
662
663 Whitelist specific interface by specifying PCI address. When whitelisting specific
664 interfaces by specifying PCI address, additional custom parameters can also be
665 specified. Valid options include:
666
667 .. code-block:: console
668
669    dev 0000:02:00.0
670    dev 0000:03:00.0
671
672 blacklist <pci-dev>
673 ^^^^^^^^^^^^^^^^^^^
674
675 Blacklist specific device type by specifying PCI vendor:device Whitelist entries
676 take precedence
677
678 .. code-block:: console
679
680    blacklist 8086:10fb
681
682 name interface-name
683 ^^^^^^^^^^^^^^^^^^^
684
685 Set interface name
686
687 .. code-block:: console
688
689    dev 0000:02:00.1 {
690       name eth0
691    }
692
693 num-rx-queues <n>
694 ^^^^^^^^^^^^^^^^^
695
696 Number of receive queues. Also enables RSS. Default value is 1.
697
698 .. code-block:: console
699
700    dev 0000:02:00.1 {
701       num-rx-queues <n>
702    }
703
704 num-tx-queues <n>
705 ^^^^^^^^^^^^^^^^^
706
707 Number of transmit queues. Default is equal to number of worker threads
708 or 1 if no workers treads.
709
710 .. code-block:: console
711
712    dev 000:02:00.1 {
713       num-tx-queues <n>
714    }
715
716 num-rx-desc <n>
717 ^^^^^^^^^^^^^^^
718
719 Number of descriptors in receive ring. Increasing or reducing number
720 can impact performance. Default is 1024.
721
722 .. code-block:: console
723
724    dev 000:02:00.1 {
725       num-rx-desc <n>
726    }
727
728 vlan-strip-offload on | off
729 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
730
731 VLAN strip offload mode for interface. VLAN stripping is off by default
732 for all NICs except VICs, using ENIC driver, which has VLAN stripping on
733 by default.
734
735 .. code-block:: console
736
737    dev 000:02:00.1 {
738       vlan-strip-offload on|off
739    }
740
741 uio-driver driver-name
742 ^^^^^^^^^^^^^^^^^^^^^^
743
744 Change UIO driver used by VPP, Options are: igb_uio, vfio-pci, uio_pci_generic
745 or auto (default)
746
747
748 .. code-block:: console
749
750    uio-driver vfio-pci
751
752 no-multi-seg
753 ^^^^^^^^^^^^
754
755 Disable multi-segment buffers, improves performance but disables Jumbo MTU support
756
757 .. code-block:: console
758
759    no-multi-seg
760
761 socket-mem <n>
762 ^^^^^^^^^^^^^^
763
764 Change hugepages allocation per-socket, needed only if there is need for
765 larger number of mbufs. Default is 256M on each detected CPU socket
766
767 .. code-block:: console
768
769    socket-mem 2048,2048
770
771 no-tx-checksum-offload
772 ^^^^^^^^^^^^^^^^^^^^^^
773
774 Disables UDP / TCP TX checksum offload. Typically needed for use faster
775 vector PMDs (together with no-multi-seg)
776
777 .. code-block:: console
778
779    no-tx-checksum-offload
780
781 enable-tcp-udp-checksum
782 ^^^^^^^^^^^^^^^^^^^^^^^
783
784 Enable UDP / TCP TX checksum offload This is the reversed option of
785 'no-tx-checksum-offload'
786
787 .. code-block:: console
788
789    enable-tcp-udp-checksum
790
791 The plugins Section
792 -------------------
793
794 Configure VPP plugins.
795
796 .. code-block:: console
797
798    plugins {
799       path /ws/vpp/build-root/install-vpp-native/vpp/lib/vpp_plugins
800       plugin dpdk_plugin.so enable
801    }
802
803 path pathname
804 ^^^^^^^^^^^^^
805
806 Adjust the plugin path depending on where the VPP plugins are.
807
808 .. code-block:: console
809
810    path /ws/vpp/build-root/install-vpp-native/vpp/lib/vpp_plugins
811
812 plugin plugin-name | default enable | disable
813 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
814
815 Disable all plugins by default and then selectively enable specific plugins
816
817 .. code-block:: console
818
819    plugin default disable
820    plugin dpdk_plugin.so enable
821    plugin acl_plugin.so enable
822
823 Enable all plugins by default and then selectively disable specific plugins
824
825 .. code-block:: console
826
827    plugin dpdk_plugin.so disable
828    plugin acl_plugin.so disable
829
830 Th statseg Section
831 ^^^^^^^^^^^^^^^^^^
832
833 .. code-block:: console
834
835    statseg {
836       per-node-counters on
837     }
838
839 socket-name <filename>
840 ^^^^^^^^^^^^^^^^^^^^^^
841
842 Name of the stats segment socket defaults to /run/vpp/stats.sock.
843
844 .. code-block:: console
845
846    socket-name /run/vpp/stats.sock
847
848 size <nnn>[KMG]
849 ^^^^^^^^^^^^^^^
850
851 The size of the stats segment, defaults to 32mb
852
853 .. code-block:: console
854
855    size 1024M
856
857 per-node-counters on | off
858 ^^^^^^^^^^^^^^^^^^^^^^^^^^
859
860 Defaults to none
861
862 .. code-block:: console
863
864    per-node-counters on
865
866 update-interval <f64-seconds>
867 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
868
869 Sets the segment scrape / update interval
870
871 .. code-block:: console
872
873    update-interval 300
874
875
876 Some Advanced Parameters:
877 -------------------------
878
879
880 acl-plugin Section
881 ------------------
882
883 These parameters change the configuration of the ACL (access control list) plugin,
884 such as how the ACL bi-hash tables are initialized.
885
886 They should only be set by those that are familiar with the interworkings of VPP
887 and the ACL Plugin.
888
889 The first three parameters, *connection hash buckets*, *connection hash memory*,
890 and *connection count max*, set the **connection table per-interface parameters**
891 for modifying how the two bounded-index extensible hash tables for
892 IPv6 (40\*8 bit key and 8\*8 bit value pairs) and IPv4
893 (16\*8 bit key and 8\*8 bit value pairs) **ACL plugin FA interface sessions**
894 are initialized.
895
896 connection hash buckets <n>
897 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
898
899 Sets the number of hash buckets (rounded up to a power of 2) in each
900 of the two bi-hash tables. Defaults to 64\*1024 (65536) hash buckets.
901
902 .. code-block:: console
903
904    connection hash buckets 65536
905
906 connection hash memory <n>
907 ^^^^^^^^^^^^^^^^^^^^^^^^^^
908
909 Sets the allocated memory size (in bytes) for each of the two bi-hash tables.
910 Defaults to 1073741824 bytes.
911
912 .. code-block:: console
913
914    connection hash memory 1073741824
915
916 connection count max <n>
917 ^^^^^^^^^^^^^^^^^^^^^^^^
918
919 Sets the maximum number of pool elements when allocating each per-worker
920 pool of sessions for both bi-hash tables. Defaults to 500000 elements in each pool.
921
922 .. code-block:: console
923
924    connection count max 500000
925
926 main heap size <n>G | <n>M | <n>K | <n>
927 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
928
929 Sets the size of the main memory heap that holds all the ACL module related
930 allocations (other than hash.) Default size is 0, but during
931 ACL heap initialization is equal to
932 *per_worker_size_with_slack * tm->n_vlib_mains + bihash_size + main_slack*.
933 Note that these variables are partially based on the
934 **connection table per-interface parameters** mentioned above.
935
936 .. code-block:: console
937
938    main heap size 3G
939
940 The next three parameters, *hash lookup heap size*, *hash lookup hash buckets*,
941 and *hash lookup hash memory*, modify the initialization of the bi-hash lookup
942 table used by the ACL plugin. This table is initialized when attempting to apply
943 an ACL to the existing vector of ACLs looked up during packet processing
944 (but it is found that the table does not exist / has not been initialized yet.)
945
946 hash lookup heap size  <n>G | <n>M | <n> K | <n>
947 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
948
949 Sets the size of the memory heap that holds all the miscellaneous allocations
950 related to hash-based lookups. Default size is 67108864 bytes.
951
952 .. code-block:: console
953
954    hash lookup heap size 70M
955
956 hash lookup hash buckets <n>
957 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
958
959 Sets the number of hash buckets (rounded up to a power of 2) in the bi-hash
960 lookup table. Defaults to 65536 hash buckets.
961
962 .. code-block:: console
963
964    hash lookup hash buckets 65536
965
966 hash lookup hash memory <n>
967 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
968
969 Sets the allocated memory size (in bytes) for the bi-hash lookup table.
970 Defaults to 67108864 bytes.
971
972 .. code-block:: console
973
974    hash lookup hash memory 67108864
975
976 use tuple merge <n>
977 ^^^^^^^^^^^^^^^^^^^
978
979 Sets a boolean value indicating whether or not to use TupleMerge
980 for hash ACL's. Defaults to 1 (true), meaning the default implementation
981 of hashing ACL's does use TupleMerge.
982
983 .. code-block:: console
984
985    use tuple merge 1
986
987 tuple merge split threshold <n>
988 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
989
990 Sets the maximum amount of rules (ACE's) that can collide in a bi-hash
991 lookup table before the table is split into two new tables. Splitting ensures
992 less rule collisions by hashing colliding rules based on their common tuple
993 (usually their maximum common tuple.) Splitting occurs when the
994 *length of the colliding rules vector* is greater than this threshold amount.
995 Defaults to a maximum of 39 rule collisions per table.
996
997 .. code-block:: console
998
999    tuple merge split threshold 30
1000
1001 reclassify sessions <n>
1002 ^^^^^^^^^^^^^^^^^^^^^^^
1003
1004 Sets a boolean value indicating whether or not to take the epoch of the session
1005 into account when dealing with re-applying ACL's or changing already applied ACL's.
1006 Defaults to 0 (false), meaning the default implementation does NOT take the
1007 epoch of the session into account.
1008
1009 .. code-block:: console
1010
1011    reclassify sessions 1
1012
1013 .. _api-queue:
1014
1015 api-queue Section
1016 -----------------
1017
1018 length  <n>
1019 ^^^^^^^^^^^
1020
1021 Sets the api queue length. Minimum valid queue length is 1024, which is
1022 also the default.
1023
1024 .. code-block:: console
1025
1026    length 2048
1027
1028 .. _cj:
1029
1030 cj Section
1031 ----------
1032
1033 The circular journal (CJ) thread-safe circular log buffer scheme is
1034 occasionally useful when chasing bugs. Calls to it should not be checked in.
1035 See .../vlib/vlib/unix/cj.c. The circular journal is disables by default.
1036 When enabled, the number of records must be provided, there is no default
1037 value.
1038
1039 records <n>
1040 ^^^^^^^^^^^
1041
1042 Configure the number of circular journal records in the circular buffer.
1043 The number of records should be a power of 2.
1044
1045 .. code-block:: console
1046
1047    records 131072
1048
1049 on
1050 ^^
1051
1052 Turns on logging at the earliest possible moment.
1053
1054 .. code-block:: console
1055
1056    on
1057
1058 dns Section
1059 -----------
1060
1061 max-cache-size <n>
1062 ^^^^^^^^^^^^^^^^^^
1063
1064 Set the maximum number of active elements allowed in the pool of
1065 dns cache entries. When resolving an expired entry or adding a new
1066 static entry and the max number of active entries is reached,
1067 a random, non-static entry is deleted. Defaults to 65535 entries.
1068
1069 .. code-block:: console
1070
1071    max-cache-size 65535
1072
1073
1074 ethernet Section
1075 -----------------
1076
1077 default-mtu <n>
1078 ^^^^^^^^^^^^^^^
1079
1080 Specifies the default MTU size for Ethernet interfaces.  Must be in
1081 the range of 64-9000.  The default is 9000.
1082
1083 .. code-block:: console
1084
1085    default-mtu 1500
1086
1087 heapsize Section
1088 -----------------
1089
1090 Heapsize configuration controls the size of the main heap. The heap size is
1091 configured very early in the boot sequence, before loading plug-ins or doing
1092 much of anything else.
1093
1094 heapsize <n>M | <n>G
1095 ^^^^^^^^^^^^^^^^^^^^
1096
1097 Specifies the size of the heap in MB or GB. The default is 1GB.
1098
1099 .. code-block:: console
1100
1101    heapsize 2G
1102
1103 ip Section
1104 ----------
1105
1106 IPv4 heap configuration. he heap size is configured very early in the boot
1107 sequence, before loading plug-ins or doing much of anything else.
1108
1109 heap-size <n>G | <n>M | <n>K | <n>
1110 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1111
1112 Set the IPv4 mtrie heap size, which is the amount of memory dedicated to
1113 the destination IP lookup table. The input value can be set in GB, MB, KB
1114 or bytes. The default value is 32MB.
1115
1116 .. code-block:: console
1117
1118    heap-size 64M
1119
1120 ip6 Section
1121 -----------
1122
1123 IPv6 heap configuration. he heap size is configured very early in the boot
1124 sequence, before loading plug-ins or doing much of anything else.
1125
1126
1127 heap-size <n>G | <n>M | <n>K | <n>
1128 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1129
1130 Set the IPv6 forwarding table heap size. The input value can be set in GB,
1131 MB, KB or bytes. The default value is 32MB.
1132
1133 .. code-block:: console
1134
1135    heap-size 64M
1136
1137 hash-buckets <n>
1138 ^^^^^^^^^^^^^^^^
1139
1140 Set the number of IPv6 forwarding table hash buckets. The default value is
1141 64K (65536).
1142
1143 .. code-block:: console
1144
1145    hash-buckets 131072
1146
1147 l2learn Section
1148 ---------------
1149
1150 Configure Layer 2 MAC Address learning parameters.
1151
1152 limit <n>
1153 ^^^^^^^^^
1154
1155 Configures the number of L2 (MAC) addresses in the L2 FIB at any one time,
1156 which limits the size of the L2 FIB to <n> concurrent entries.  Defaults to
1157 4M entries (4194304).
1158
1159 .. code-block:: console
1160
1161    limit 8388608
1162
1163 l2tp Section
1164 ------------
1165
1166 IPv6 Layer 2 Tunnelling Protocol Version 3 (IPv6-L2TPv3) configuration controls
1167 the method used to locate a specific IPv6-L2TPv3 tunnel. The following settings
1168 are mutually exclusive:
1169
1170 lookup-v6-src
1171 ^^^^^^^^^^^^^
1172
1173 Lookup tunnel by IPv6 source address.
1174
1175 .. code-block:: console
1176
1177    lookup-v6-src
1178
1179 lookup-v6-dst
1180 ^^^^^^^^^^^^^
1181
1182 Lookup tunnel by IPv6 destination address.
1183
1184 .. code-block:: console
1185
1186    lookup-v6-dst
1187
1188 lookup-session-id
1189 ^^^^^^^^^^^^^^^^^
1190
1191 Lookup tunnel by L2TPv3 session identifier.
1192
1193 .. code-block:: console
1194
1195    lookup-session-id
1196
1197 logging Section
1198 ---------------
1199
1200 size <n>
1201 ^^^^^^^^
1202
1203 Number of entries in the global logging buffer. Defaults to 512.
1204
1205 .. code-block:: console
1206
1207    size 512
1208
1209 nthrottle-time <n>
1210 ^^^^^^^^^^^^^^^^^^
1211
1212 Set the global value for the time to wait (in seconds) before resuming
1213 logging of a log subclass that exceeded the per-subclass message-per-second
1214 threshold.  Defaults to 3.
1215
1216 .. code-block:: console
1217
1218    unthrottle-time 3
1219
1220 default-log-level emerg|alert | crit | err | warn | notice | info | debug | disabled
1221 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1222
1223 Set the default logging level of the system log.  Defaults to notice.
1224
1225 .. code-block:: console
1226
1227    default-log-level notice
1228
1229 default-syslog-log-level emerg|alert | crit | err | warn | notice | info | debug | disabled
1230 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1231
1232 Set the default logging level of the syslog target.  Defaults to warning.
1233
1234 .. code-block:: console
1235
1236    default-syslog-log-level warning
1237
1238 mactime Section
1239 ---------------
1240
1241 lookup-table-buckets <n>
1242 ^^^^^^^^^^^^^^^^^^^^^^^^
1243
1244 Sets the number of hash buckets in the mactime bi-hash lookup table.
1245 Defaults to 128 buckets.
1246
1247 .. code-block:: console
1248
1249    lookup-table-buckets 128
1250
1251 lookup-table-memory <n>G | <n>M | <n>K | <n>
1252 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1253
1254 Sets the allocated memory size (in bytes) for the mactime bi-hash lookup table.
1255 The input value can be set in GB, MB, KB or bytes. The default value is 262144
1256 (256 << 10) bytes or roughly 256KB.
1257
1258 .. code-block:: console
1259
1260    lookup-table-memory 300K
1261
1262 timezone_offset <n>
1263 ^^^^^^^^^^^^^^^^^^^
1264
1265 Sets the timezone offset from UTC. Defaults to an offset of -5 hours
1266 from UTC (US EST / EDT.)
1267
1268 .. code-block:: console
1269
1270    timezone_offset -5
1271
1272 "map" Parameters
1273 ----------------
1274
1275 customer edge
1276 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
1277
1278 Sets a boolean true to indicate that the MAP node is a Customer Edge (CE)
1279 router. The boolean defaults to false, meaning the MAP node is not treated
1280 as a CE router.
1281
1282 .. code-block:: console
1283
1284    customer edge
1285
1286 nat Section
1287 -----------
1288
1289 These parameters change the configuration of the NAT (Network address translation)
1290 plugin, such as how the NAT & NAT64 bi-hash tables are initialized, if the NAT is
1291 endpoint dependent, or if the NAT is deterministic.
1292
1293 For each NAT per thread data, the following 4 parameters change how certain
1294 bi-hash tables are initialized.
1295
1296 translation hash buckets <n>
1297 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1298
1299 Sets the number of hash buckets in each of the two in/out NAT bi-hash lookup
1300 tables. Defaults to 1024 buckets.
1301
1302 If the NAT is indicated to be endpoint dependent, which can be set with the
1303 :ref:`endpoint-dependent parameter <endpointLabel>`, then this parameter sets
1304 the number of hash buckets in each of the two endpoint dependent sessions
1305 NAT bi-hash lookup tables.
1306
1307 .. code-block:: console
1308
1309    translation hash buckets 1024
1310
1311 translation hash memory <n>
1312 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
1313
1314 Sets the allocated memory size (in bytes) for each of the two in/out NAT
1315 bi-hash tables. Defaults to 134217728 (128 << 20) bytes, which is roughly 128 MB.
1316
1317 If the NAT is indicated to be endpoint dependent, which can be set with the
1318 :ref:`endpoint-dependent parameter <endpointLabel>`, then this parameter sets the
1319 allocated memory size for each of the two endpoint dependent sessions NAT bi-hash
1320 lookup tables.
1321
1322 .. code-block:: console
1323
1324    translation hash memory 134217728
1325
1326 user hash buckets <n>
1327 ^^^^^^^^^^^^^^^^^^^^^
1328
1329 Sets the number of hash buckets in the user bi-hash lookup table
1330 (src address lookup for a user.) Defaults to 128 buckets.
1331
1332 .. code-block:: console
1333
1334    user hash buckets 128
1335
1336 user hash memory <n>
1337 ^^^^^^^^^^^^^^^^^^^^
1338
1339 Sets the allocated memory size (in bytes) for the user bi-hash lookup table
1340 (src address lookup for a user.) Defaults to 67108864 (64 << 20) bytes,
1341 which is roughly 64 MB.
1342
1343 .. code-block:: console
1344
1345    user hash memory 67108864
1346
1347 max translations per user <n>
1348 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1349
1350 Sets the maximum amount of dynamic and/or static NAT sessions each user can have.
1351 Defaults to 100. When this limit is reached, the least recently used translation
1352 is recycled.
1353
1354 .. code-block:: console
1355
1356    max translations per user 50
1357
1358 deterministic
1359 ^^^^^^^^^^^^^
1360
1361 Sets a boolean value to 1 indicating that the NAT is deterministic. Defaults to 0,
1362 meaning the NAT is not deterministic.
1363
1364 .. code-block:: console
1365
1366    deterministic
1367
1368 nat64 bib hash buckets <n>
1369 ^^^^^^^^^^^^^^^^^^^^^^^^^^
1370
1371 Sets the number of hash buckets in each of the two in/out NAT64 BIB bi-hash
1372 tables. Defaults to 1024 buckets.
1373
1374 .. code-block:: console
1375
1376    nat64 bib hash buckets 1024
1377
1378 nat64 bib hash memory <n>
1379 ^^^^^^^^^^^^^^^^^^^^^^^^^
1380
1381 Sets the allocated memory size (in bytes) for each of the two in/out NAT64
1382 BIB bi-hash tables. Defaults to 134217728 (128 << 20) bytes,
1383 which is roughly 128 MB.
1384
1385 .. code-block:: console
1386
1387    nat64 bib hash memory 134217728
1388
1389 nat64 st hash buckets <n>
1390 ^^^^^^^^^^^^^^^^^^^^^^^^^
1391
1392 Sets the number of hash buckets in each of the two in/out NAT64 session table
1393 bi-hash tables. Defaults to 2048 buckets.
1394
1395 .. code-block:: console
1396
1397    nat64 st hash buckets 2048
1398
1399 nat64 st hash memory <n>
1400 ^^^^^^^^^^^^^^^^^^^^^^^^
1401
1402 Sets the allocated memory size (in bytes) for each of the two in/out NAT64 session
1403 table bi-hash tables. Defaults to 268435456 (256 << 20) bytes, which is roughly
1404 256 MB.
1405
1406 .. code-block:: console
1407
1408    nat64 st hash memory 268435456
1409
1410 .. _endpointLabel:
1411
1412 endpoint-dependent
1413 ^^^^^^^^^^^^^^^^^^
1414
1415 Sets a boolean value to 1, indicating that the NAT is endpoint dependent.
1416 Defaults to 0, meaning the NAT is not endpoint dependent.
1417
1418 .. code-block:: console
1419
1420    endpoint-dependent
1421
1422 oam Section
1423 -----------
1424
1425 OAM configuration controls the (ip4-icmp) interval, and number of misses
1426 allowed before reporting an oam target down to any registered listener.
1427
1428 interval <n.n>
1429 ^^^^^^^^^^^^^^
1430
1431 Interval, floating-point seconds, between sending OAM IPv4 ICMP messages.
1432 Default is 2.04 seconds.
1433
1434 .. code-block:: console
1435
1436    interval 3.5
1437
1438 physmem Section
1439 ---------------
1440
1441 Configuration parameters used to specify base address and maximum size of
1442 the memory allocated for the pmalloc module in VPP. pmalloc is a NUMA-aware,
1443 growable physical memory allocator. pmalloc allocates memory for the DPDK
1444 memory pool.
1445
1446 base-addr <address>
1447 ^^^^^^^^^^^^^^^^^^^
1448
1449 Specify the base address for pmalloc memory space.
1450
1451 .. code-block:: console
1452
1453     base-addr 0xfffe00000000
1454
1455 max-size <n>G | <n>M | <n>K | <n>
1456 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1457
1458 Set the memory size for pmalloc memory space. The default is 16G.
1459
1460 .. code-block:: console
1461
1462     max-size 4G
1463
1464 tapcli Section
1465 --------------
1466
1467 Configuration parameters for TAPCLI (dynamic tap interface hookup.)
1468
1469 mtu <n>
1470 ^^^^^^^
1471
1472 Sets interface MTU (maximum transmission unit) size in bytes. This size
1473 is also related to the number of MTU buffers. Defaults to 1500 bytes.
1474
1475 .. code-block:: console
1476
1477    mtu 1500
1478
1479 disable
1480 ^^^^^^^
1481
1482 Disables TAPCLI. Default is that TAPCLI is enabled.
1483
1484 .. code-block:: console
1485
1486    disable
1487
1488
1489 tcp Section
1490 -----------
1491
1492 Configuration parameters for TCP host stack utilities. The following
1493 preallocation parameters are related to the initialization of fixed-size,
1494 preallocation pools.
1495
1496 preallocated-connections <n>
1497 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1498
1499 Sets the number of preallocated TCP connections. Defaults to 0.
1500 The preallocated connections per thread is related to this value,
1501 equal to (preallocated_connections / (num_threads - 1)).
1502
1503 .. code-block:: console
1504
1505    preallocated-connections 5
1506
1507 preallocated-half-open-connections <n>
1508 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1509
1510 Sets the number of preallocated TCP half-open connections. Defaults to 0.
1511
1512 .. code-block:: console
1513
1514    preallocated-half-open-connections 5
1515
1516 buffer-fail-fraction <n.n>
1517 ^^^^^^^^^^^^^^^^^^^^^^^^^^
1518
1519 Sets the TCP buffer fail fraction (a float) used for fault-injection
1520 when debugging TCP buffer allocation. Its use is found in *tcp_debug.h*.
1521 Defaults to 0.0.
1522
1523 .. code-block:: console
1524
1525    buffer-fail-fraction 0.0
1526
1527
1528 tls Section
1529 -----------
1530
1531 Configures TLS parameters, such as enabling the use of test certificates.
1532 These parameters affect the tlsmbedtls and tlsopenssl plugins.
1533
1534 use-test-cert-in-ca
1535 ^^^^^^^^^^^^^^^^^^^
1536
1537 Sets a boolean value to 1 to indicate during the initialization of a
1538 TLS CA chain to attempt to parse and add test certificates to the chain.
1539 Defaults to 0, meaning test certificates are not used.
1540
1541 .. code-block:: console
1542
1543    use-test-cert-in-ca
1544
1545 ca-cert-path <filename>
1546 ^^^^^^^^^^^^^^^^^^^^^^^
1547
1548 Sets the filename path of the location of TLS CA certificates, used when
1549 initializing and loading TLS CA certificates during the initialization
1550 of a TLS CA chain. If not set, the default filename path is
1551 */etc/ssl/certs/ca-certificates.crt*.
1552
1553 .. code-block:: console
1554
1555    ca-cert-path /etc/ssl/certs/ca-certificates.crt
1556
1557
1558 tuntap Section
1559 --------------
1560
1561 The "tuntap" driver configures a point-to-point interface between the vpp
1562 engine and the local Linux kernel stack. This allows e.g. users to ssh to the
1563 host | VM | container via vpp "revenue" interfaces. It's marginally useful, and
1564 is currently disabled by default. To [dynamically] create TAP interfaces - the
1565 preferred scheme - see the "tap_connect" binary API. The Linux network stack
1566 "vnet" interface needs to manually configure, and VLAN and other settings if
1567 desired.
1568
1569
1570 enable|disable
1571 ^^^^^^^^^^^^^^
1572
1573 Enable or disable the tun/tap driver.
1574
1575 .. code-block:: console
1576
1577    enable
1578
1579 ethernet|ether
1580 ^^^^^^^^^^^^^^
1581
1582 Create a tap device (ethernet MAC) instead of a tun device (point-to-point
1583 tunnel). The two keywords are aliases for the same function.
1584
1585 .. code-block:: console
1586
1587    ethernet
1588
1589 have-normal-interface|have-normal
1590 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1591
1592 Treat the host Linux stack as a routing peer instead of programming VPP
1593 interface L3 addresses onto the tun/tap devices. The two keywords are
1594 aliases for the same function.
1595
1596 .. code-block:: console
1597
1598    have-normal-interface
1599
1600 name <name>
1601 ^^^^^^^^^^^
1602
1603 Assign name to the tun/tap device.
1604
1605 .. code-block:: console
1606
1607    name vpp1
1608
1609
1610 vhost-user Section
1611 ------------------
1612
1613 Vhost-user configuration parameters control the vhost-user driver.
1614
1615 coalesce-frames <n>
1616 ^^^^^^^^^^^^^^^^^^^
1617
1618 Subject to deadline-timer expiration - see next item - attempt to transmit
1619 at least <n> packet frames. Default is 32 frames.
1620
1621 .. code-block:: console
1622
1623    coalesce-frames 64
1624
1625 coalesce-time <seconds>
1626 ^^^^^^^^^^^^^^^^^^^^^^^
1627
1628 Hold packets no longer than (floating-point) seconds before transmitting
1629 them. Default is 0.001 seconds
1630
1631 .. code-block:: console
1632
1633    coalesce-time 0.002
1634
1635 dont-dump-memory
1636 ^^^^^^^^^^^^^^^^
1637
1638 vhost-user shared-memory segments can add up to a large amount of memory, so
1639 it's handy to avoid adding them to corefiles when using a significant number
1640 of such interfaces.
1641
1642 .. code-block:: console
1643
1644    dont-dump-memory
1645
1646
1647 vlib Section
1648 ------------
1649
1650 These parameters configure VLIB, such as allowing you to choose whether to
1651 enable memory traceback or a post-mortem elog dump.
1652
1653 memory-trace
1654 ^^^^^^^^^^^^
1655
1656 Enables memory trace (mheap traceback.) Defaults to 0, meaning memory
1657 trace is disabled.
1658
1659 .. code-block:: console
1660
1661    memory-trace
1662
1663 elog-events <n>
1664 ^^^^^^^^^^^^^^^
1665
1666 Sets the number of elements/events (the size) of the event ring
1667 (a circular buffer of events.) This number rounds to a power of 2.
1668 Defaults to 131072 (128 << 10) elements.
1669
1670 .. code-block:: console
1671
1672    elog-events 4096
1673
1674 elog-post-mortem-dump
1675 ^^^^^^^^^^^^^^^^^^^^^
1676
1677 Enables the attempt of a post-mortem elog dump to
1678 */tmp/elog_post_mortem.<PID_OF_CALLING_PROCESS>* if os_panic or
1679 os_exit is called.
1680
1681 .. code-block:: console
1682
1683    elog-post-mortem-dump