neulab/tldr huggingface dataset:
-make-runtime Build a custom runtime system (in the file specified by option -o) incorporating the C object files and libraries given on the command line.  This custom runtime system can be used later to execute bytecode executables produced with the option ocamlc -use-runtime runtime-name.
-match-context-rows Set number of rows of context used during pattern matching compilation. Lower values cause faster compilation, but less optimized code. The default value is 32.
-no-alias-deps Do not record dependencies for module aliases.
-no-app-funct Deactivates the applicative behaviour of functors. With this option, each functor application generates new types in its result and applying the same functor twice to the same argument yields two incompatible structures.
-noassert Do not compile assertion checks.  Note that the special form assert false is always compiled because it is typed specially. This flag has no effect when linking already-compiled files.
-noautolink When linking .cma libraries, ignore -custom, -cclib and -ccopt options potentially contained in the libraries (if these options were given when building the libraries).  This can be useful if a library contains incorrect specifications of C libraries or C options; in this case, during linking, set -noautolink and pass the correct C libraries and options on the command line.
-nolabels Ignore non-optional labels in types. Labels cannot be used in applications, and parameter order becomes strict.
-nostdlib Do not automatically add the standard library directory to the list of directories searched for compiled interface files (.cmi), compiled object code files (.cmo), libraries (.cma), and C libraries specified with -cclib -lxxx .  See also option -I.
-o exec-file Specify the name of the output file produced by the linker. The default output name is a.out, in keeping with the Unix tradition. If the -a option is given, specify the name of the library produced.  If the -pack option is given, specify the name of the packed object file produced.  If the -output-obj option is given, specify the name of the output file produced.  This can also be used when compiling an interface or implementation file, without linking, in which case it sets the name of the cmi or cmo file, and also sets the module name to the file name up to the first dot.
-opaque Interface file compiled with this option are marked so that other compilation units depending on it will not rely on any implementation details of the compiled implementation. The native compiler will not access the .cmx file of this unit -- nor warn if it is absent. This can improve speed of compilation, for both initial and incremental builds, at the expense of performance of the generated code.
-open module Opens the given module before processing the interface or implementation files. If several -open options are given, they are processed in order, just as if the statements open! module1;; ... open! moduleN;; were added at the top of each file.
-output-obj Cause the linker to produce a C object file instead of a bytecode executable file. This is useful to wrap OCaml code as a C library, callable from any C program. The name of the output object file must be set with the -o option. This option can also be used to produce a C source file (.c extension) or a compiled shared/dynamic library (.so extension).
-pack  Build a bytecode object file (.cmo file) and its associated compiled interface (.cmi) that combines the object files given on the command line, making them appear as sub-modules of the output .cmo file.  The name of the output .cmo file must be given with the -o option.  For instance, ocamlc -pack -o p.cmo a.cmo b.cmo c.cmo generates compiled files p.cmo and p.cmi describing a compilation unit having three sub- modules A, B and C, corresponding to the contents of the object files a.cmo, b.cmo and c.cmo.  These contents can be referenced as P.A, P.B and P.C in the remainder of the program.
-pp command Cause the compiler to call the given command as a preprocessor for each source file. The output of command is redirected to an intermediate file, which is compiled. If there are no compilation errors, the intermediate file is deleted afterwards. The name of this file is built from the basename of the source file with the extension .ppi for an interface (.mli) file and .ppo for an implementation (.ml) file.
-ppx command After parsing, pipe the abstract syntax tree through the preprocessor command.  The module Ast_mapper(3) implements the external interface of a preprocessor.
-principal Check information path during type-checking, to make sure that all types are derived in a principal way.  When using labelled arguments and/or polymorphic methods, this flag is required to ensure future versions of the compiler will be able to infer types correctly, even if internal algorithms change.  All programs accepted in -principal mode are also accepted in the default mode with equivalent types, but different binary signatures, and this may slow down type checking; yet it is a good idea to use it once before publishing source code.
-rectypes Allow arbitrary recursive types during type-checking.  By default, only recursive types where the recursion goes through an object type are supported. Note that once you have created an interface using this flag, you must use it again for all dependencies.
-runtime-variant suffix Add suffix to the name of the runtime library that will be used by the program.  If OCaml was configured with option -with-debug-runtime, then the d suffix is supported and gives a debug version of the runtime.
-stop-after pass Stop compilation after the given compilation pass. The currently supported passes are: parsing, typing.
-safe-string Enforce the separation between types string and bytes, thereby making strings read-only. This is the default.
-short-paths When a type is visible under several module-paths, use the shortest one when printing the type's name in inferred interfaces and error and warning messages.
-strict-sequence Force the left-hand part of each sequence to have type unit.
-unboxed-types When a type is unboxable (i.e. a record with a single argument or a concrete datatype with a single constructor of one argument) it will be unboxed unless annotated with [@@ocaml.boxed].
-no-unboxed-types When a type is unboxable  it will be boxed unless annotated with [@@ocaml.unboxed].  This is the default.
-unsafe Turn bound checking off for array and string accesses (the v.(i)ands.[i] constructs). Programs compiled with -unsafe are therefore slightly faster, but unsafe: anything can happen if the program accesses an array or string outside of its bounds.
-unsafe-string Identify the types string and bytes, thereby making strings writable.  This is intended for compatibility with old source code and should not be used with new software.
-use-runtime runtime-name Generate a bytecode executable file that can be executed on the custom runtime system runtime-name, built earlier with ocamlc -make-runtime runtime-name.
-v     Print the version number of the compiler and the location of the standard library directory, then exit.
-verbose Print all external commands before they are executed, in particular invocations of the C compiler and linker in -custom mode.  Useful to debug C library problems.
-vnum or -version Print the version number of the compiler in short form (e.g. "3.11.0"), then exit.
-w warning-list Enable, disable, or mark as fatal the warnings specified by the argument warning-list.
Each warning can be enabled or disabled, and each warning can be fatal or non-fatal.  If a warning is disabled, it isn't displayed and doesn't affect compilation in any way (even if it is fatal). If a warning is enabled, it is displayed normally by the compiler whenever the source code triggers it.  If it is enabled and fatal, the compiler will also stop with an error after displaying it.
The warning-list argument is a sequence of warning specifiers, with no separators between them.  A warning specifier is one of the following:
+num   Enable warning number num.
-num   Disable warning number num.
@num   Enable and mark as fatal warning number num.
+num1..num2   Enable all warnings between num1 and num2 (inclusive).
-num1..num2   Disable all warnings between num1 and num2 (inclusive).
@num1..num2   Enable and mark as fatal all warnings between num1 and num2 (inclusive).
+letter   Enable the set of warnings corresponding to letter.  The letter may be uppercase or lowercase.
-letter   Disable the set of warnings corresponding to letter. The letter may be uppercase or lowercase.
@letter   Enable and mark as fatal the set of warnings corresponding to letter.  The letter may be uppercase or lowercase.
uppercase-letter   Enable the set of warnings corresponding to uppercase-letter.
lowercase-letter   Disable the set of warnings corresponding to lowercase-letter.
The warning numbers are as follows.
1    Suspicious-looking start-of-comment mark.
2    Suspicious-looking end-of-comment mark.
3    Deprecated feature.
4    Fragile pattern matching: matching that will remain complete even if additional constructors are added to one of the variant types matched.
5    Partially applied function: expression whose result has function type and is ignored.
6    Label omitted in function application.
7    Method overridden without using the "method!" keyword.
8    Partial match: missing cases in pattern-matching.
9    Missing fields in a record pattern.
10   Expression on the left-hand side of a sequence that doesn't have type unit (and that is not a function, see warning number 5).
11   Redundant case in a pattern matching (unused match case).
12   Redundant sub-pattern in a pattern-matching.
13   Override of an instance variable.
14   Illegal backslash escape in a string constant.
15   Private method made public implicitly.
16   Unerasable optional argument.
17   Undeclared virtual method.
18   Non-principal type.
19   Type without principality.
20   Unused function argument.
21   Non-returning statement.
22   Preprocessor warning.
23   Useless record with clause.
24   Bad module name: the source file name is not a valid OCaml module name.
25   Deprecated: now part of warning 8.
26   Suspicious unused variable: unused variable that is bound with let or as, and doesn't start with an underscore (_) character.
27   Innocuous unused variable: unused variable that is not bound with let nor as, and doesn't start with an underscore (_) character.
28   A pattern contains a constant constructor applied to the underscore (_) pattern.
29   A non-escaped end-of-line was found in a string constant. This may cause portability problems between Unix and Windows.
30   Two labels or constructors of the same name are defined in two mutually recursive types.
31   A module is linked twice in the same executable.
32   Unused value declaration.
33   Unused open statement.
34   Unused type declaration.
35   Unused for-loop index.
36   Unused ancestor variable.
37   Unused constructor.
38   Unused extension constructor.
39   Unused rec flag.
40   Constructor or label name used out of scope.
41   Ambiguous constructor or label name.
42   Disambiguated constructor or label name.
43   Nonoptional label applied as optional.
44   Open statement shadows an already defined identifier.
45   Open statement shadows an already defined label or constructor.
46   Error in environment variable.
47   Illegal attribute payload.
48   Implicit elimination of optional arguments.
49   Missing cmi file when looking up module alias.
50   Unexpected documentation comment.
59   Assignment on non-mutable value.
60   Unused module declaration.
61   Unannotated unboxable type in primitive declaration.
62   Type constraint on GADT type declaration.
63   Erroneous printed signature.
64   -unsafe used with a preprocessor returning a syntax tree.
65   Type declaration defining a new '()' constructor.
66   Unused open! statement.
67   Unused functor parameter.
68   Pattern-matching depending on mutable state prevents the remaining arguments from being uncurried.
The letters stand for the following sets of warnings.  Any letter not mentioned here corresponds to the empty set.
A  all warnings
C  1, 2
D  3
E  4
F  5
K  32, 33, 34, 35, 36, 37, 38, 39
L  6
M  7
P  8
R  9
S  10
U  11, 12
V  13
X  14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 30
Y  26
Z  27
The default setting is -w +a-4-6-7-9-27-29-30-32..42-44-45-48-50-60-66-67-68.  Note that warnings 5 and 10 are not always triggered, depending on the internals of the type checker.
-warn-error warning-list Mark as errors the warnings specified in the argument warning-list.  The compiler will stop with an error when one of these warnings is emitted.  The warning-list has the same meaning as for the -w option: a + sign (or an uppercase letter) marks the corresponding warnings as fatal, a - sign (or a lowercase letter) turns them back into non-fatal warnings, and a @ sign both enables and marks as fatal the corresponding warnings.
Note: it is not recommended to use the -warn-error option in production code, because it will almost certainly prevent compiling your program with later versions of OCaml when they add new warnings or modify existing warnings.
The default setting is -warn-error -a+31 (only warning 31 is fatal).
-warn-help Show the description of all available warning numbers.
-where Print the location of the standard library, then exit.
-with-runtime Include the runtime system in the generated program. This is the default.
-without-runtime The compiler does not include the runtime system (nor a reference to it) in the generated program; it must be supplied separately.
- file Process file as a file name, even if it starts with a dash (-) character.
-help or --help Display a short usage summary and exit.
ocamlopt(1), ocamlrun(1), ocaml(1). The OCaml user's manual, chapter "Batch compilation".
APLAY(1)                     General Commands Manual                    APLAY(1)
arecord, aplay - command-line sound recorder and player for ALSA soundcard driver
arecord [flags] [filename] aplay [flags] [filename [filename]] ...
arecord is a command-line soundfile recorder for the ALSA soundcard driver. It supports several file formats and multiple soundcards with multiple devices. If recording with interleaved mode samples the file is automatically split before the 2GB filesize.
aplay is much the same, only it plays instead of recording. For supported soundfile formats, the sampling rate, bit depth, and so forth can be automatically determined from the soundfile header.
If filename is not specified, the standard output or input is used. The aplay utility accepts multiple filenames.
-h, --help Help: show syntax.
--version Print current version.
-l, --list-devices List all soundcards and digital audio devices
-L, --list-pcms List all PCMs defined
-D, --device=NAME Select PCM by name
-q --quiet Quiet mode. Suppress messages (not sound :))
-t, --file-type TYPE File type (voc, wav, raw or au).  If this parameter is omitted the WAVE format is used.
-c, --channels=# The number of channels.  The default is one channel.  Valid values are 1 through 32.
-f --format=FORMAT Sample format Recognized sample formats are: S8 U8 S16_LE S16_BE U16_LE U16_BE S24_LE S24_BE U24_LE U24_BE S32_LE S32_BE U32_LE U32_BE FLOAT_LE FLOAT_BE FLOAT64_LE FLOAT64_BE IEC958_SUBFRAME_LE IEC958_SUBFRAME_BE MU_LAW A_LAW IMA_ADPCM MPEG GSM SPECIAL S24_3LE S24_3BE U24_3LE U24_3BE S20_3LE S20_3BE U20_3LE U20_3BE S18_3LE S18_3BE U18_3LE Some of these may not be available on selected hardware The available format shortcuts are: -f cd (16 bit little endian, 44100, stereo) [-f S16_LE -c2 -r44100] -f cdr (16 bit big endian, 44100, stereo) [-f S16_BE -c2 -r44100] -f dat (16 bit little endian, 48000, stereo) [-f S16_LE -c2 -r48000] If no format is given U8 is used.
-r, --rate=#<Hz> Sampling rate in Hertz. The default rate is 8000 Hertz.  If the value specified is less than 300, it is taken as the rate in kilohertz.  Valid values are 2000 through 192000 Hertz.
-d, --duration=# Interrupt after # seconds.  A value of zero means infinity.  The default is zero, so if this option is omitted then the record/playback process will run until it is killed.  Either '-d' or '-s' option is available exclusively.
-s, --samples=# Interrupt after transmission of # PCM frames.  A value of zero means infinity.  The default is zero, so if this options is omitted then the record/playback process will run until it is killed.  Either '-d' or '-s' option is available exclusively.
-M, --mmap Use memory-mapped (mmap) I/O mode for the audio stream.  If this option is not set, the read/write I/O mode will be used.
-N, --nonblock Open the audio device in non-blocking mode. If the device is busy the program will exit immediately.  If this option is not set the program will block until the audio device is available again.
-F, --period-time=# Distance between interrupts is # microseconds.  If no period time and no period size is given then a quarter of the buffer time is set.
-B, --buffer-time=# Buffer duration is # microseconds If no buffer time and no buffer size is given then the maximal allowed buffer time but not more than 500ms is set.
--period-size=# Distance between interrupts is # frames If no period size and no period time is given then a quarter of the buffer size is set.
--buffer-size=# Buffer duration is # frames If no buffer time and no buffer size is given then the maximal allowed buffer time but not more than 500ms is set.
-A, --avail-min=# Min available space for wakeup is # microseconds
-R, --start-delay=# Delay for automatic PCM start is # microseconds (relative to buffer size if <= 0)
-T, --stop-delay=# Delay for automatic PCM stop is # microseconds from xrun
-v, --verbose Show PCM structure and setup.  This option is accumulative.  The VU meter is displayed when this is given twice or three times.
-V, --vumeter=TYPE Specifies the VU-meter type, either stereo or mono.  The stereo VU-meter is available only for 2-channel stereo samples with interleaved format.
-I, --separate-channels One file for each channel.  This option disables max-file-time and use-strftime, and ignores SIGUSR1.  The stereo VU meter is not available with separate channels.
-P     Playback.  This is the default if the program is invoked by typing aplay.
-C     Record.  This is the default if the program is invoked by typing arecord.
-i, --interactive Allow interactive operation via stdin.  Currently only pause/resume via space or enter key is implemented.
-m, --chmap=ch1,ch2,... Give the channel map to override or follow.  Pass channel position strings like FL, FR, etc.
If a device supports the override of the channel map, aplay tries to pass the given channel map.  If it doesn't support the channel map override but still it provides the channel map information, aplay tries to rearrange the channel order in the buffer to match with the returned channel map from the device.
--disable-resample Disable automatic rate resample.
--disable-channels Disable automatic channel conversions.
--disable-format Disable automatic format conversions.
--disable-softvol Disable software volume control (softvol).
--test-position Test ring buffer position.
--test-coef=<coef> Test coefficient for ring buffer position; default is 8. Expression for validation is: coef * (buffer_size / 2).  Minimum value is 1.
--test-nowait Do not wait for the ring buffer ‐ eats the whole CPU.
--max-file-time While recording, when the output file has been accumulating sound for this long, close it and open a new output file.  Default is the maximum size supported by the file format: 2 GiB for WAV files.  This option has no effect if  --separate-channels is specified.
--process-id-file <file name> aplay writes its process ID here, so other programs can send signals to it.
--use-strftime When recording, interpret %-codes in the file name parameter using the strftime facility whenever the output file is opened.  The important strftime codes are: %Y is the year, %m month, %d day of the month, %H hour, %M minute and %S second.  In addition, %v is the file number, starting at 1.  When this option is specified, intermediate directories for the output file are created automatically.  This option has no effect if --separate-channels is specified.
--dump-hw-params Dump hw_params of the device preconfigured status to stderr. The dump lists capabilities of the selected device such as supported formats, sampling rates, numbers of channels, period and buffer bytes/sizes/times.  For raw device hw:X this option basically lists hardware capabilities of the soundcard.
--fatal-errors Disables recovery attempts when errors (e.g. xrun) are encountered; the aplay process instead aborts immediately.
When recording, SIGINT, SIGTERM and SIGABRT will close the output file and exit.  SIGUSR1 will close the output file, open a new one, and continue recording.  However, SIGUSR1 does not work with --separate-channels.
aplay -c 1 -t raw -r 22050 -f mu_law foobar will play the raw file "foobar" as a 22050-Hz, mono, 8-bit, Mu-Law .au file.
arecord -d 10 -f cd -t wav -D copy foobar.wav will record foobar.wav as a 10-second, CD-quality wave file, using the PCM "copy" (which might be defined in the user's .asoundrc file as: pcm.copy { type plug slave { pcm hw } route_policy copy }
arecord -t wav --max-file-time 30 mon.wav Record from the default audio source in monaural, 8,000 samples per second, 8 bits per sample.  Start a new file every 30 seconds. File names are mon-nn.wav, where nn increases from 01.  The file after mon-99.wav is mon-100.wav.
arecord -f cd -t wav --max-file-time 3600 --use-strftime %Y/%m/%d/listen-%H-%M-%v.wav Record in stereo from the default audio source.  Create a new file every hour.  The files are placed in directories based on their start dates and have names which include their start times and file numbers.
alsamixer(1), amixer(1)
Note that .aiff files are not currently supported.
arecord and aplay are by Jaroslav Kysela <perex@perex.cz> This document is by Paul Winkler <zarmzarm@erols.com>.  Updated for Alsa 0.9 by James Tappin <james@xena.uklinux.net>
CPUID(1)                     General Commands Manual                    CPUID(1)
cpuid - Dump CPUID information for each CPU
cpuid [options...]
cpuid dumps detailed information about the CPU(s) gathered from the CPUID instruction, and also determines the exact model of CPU(s) from that information.
It dumps all information available from the CPUID instruction.  The exact collection of information available varies between manufacturers and processors.  The following information is available consistently on all modern CPUs:
vendor_id version information (1/eax) miscellaneous (1/ebx) feature information (1/ecx)
It also produces synthetic fields based on information from multiple CPUID functions.  Currently, the synthetic fields are the exact model of each CPU (but see LIMITATIONS below) as (synth); the multiprocessing characteristics including the number of cores per chip (c) and the number of hyperthreads per core (t) as (multi-processing synth); and a decoding of the APIC physical ID as (APIC synth).
The determination of the model is based on the following information:
version information (1/eax), processor type version information (1/eax), family version information (1/eax), model version information (1/eax), stepping id version information (1/eax), extended family version information (1/eax), extended model feature information (1/ecx), virtual machine extensions brand id (1/ebx) brand (0x80000004) cache and TLB information (2) deterministic cache parameters (4/eax), extra processor cores AMD extended brand id (0x80000001/ebx) AMD extended processor signature (0x80000001/eax) Transmeta processor revision ID (0x80860001/ebx & ecx)
The determination of the multiprocessing characteristics and decoding of APIC physical ID is based on the following information:
feature information (1/edx), hyper-threading / multi-core supported miscellaneous (1/ebx), cpu count deterministic cache parameters (4/eax), extra processor cores on this die x2APIC features / processor topology (0xb) AMD feature flags (0x80000001/ecx) AMD Logical CPU cores (0x80000008/ecx), number of logical CPU cores - 1
In addition, a simpler and coarser determination of the CPU is performed using only the information listed above under version information (1/eax).  It is provided as (simple synth) under version information (1/eax).  However, it tends to be unable to distinguish between various modern CPUs.
cpuid accepts the following command line arguments:
-1, --one-cpu Display information only for the first CPU.  This cuts down on the output on a multiprocessor system, and is useful when certain that all CPUs are identical.
-f FILE, --file=FILE Read raw hex information from FILE instead of from executions of the cpuid instruction.  If the filename is '-', instead read from standard input.
-l LEAF, --leaf=LEAF Display information only for the specified LEAF.
-s SUBLEAF, --subleaf=SUBLEAF Display information only for the specified SUBLEAF.  It requires the -l or --leaf option to specify the LEAF.
-h, -H, --help Display help information.
-i, --inst Use the CPUID instruction.  The information it provides is reliable.  It is not necessary to be root to use this option. (This option is the default.)
-k, --kernel Use the CPUID kernel module.  The information does not seem to be reliable on all combinations of CPU type and kernel version. Typically, it is necessary to be root to use this option.
-r, --raw Display only raw hex information with no decoding.
-v, --version Display cpuid version.
There are numerous cases where there is no way to distinguish between various CPUs in the (synth) information.  In some cases, the sizes of caches, number of cores, brand strings, etc., can be used to distinguish multiple CPUs with the same family and model.  But there are cases where that information is insufficient.  Whenever cpuid is unable to distinguish between multiple CPUs, it will list all known possibilities.
If you believe that a certain processor should be distinguishable from another and it isn't, please inform the author of this tool.
The (multi-processing synth) information is unreliable on many processors.  It faithfully reports the information provided by the CPUID instruction and decodes it as recommended by the processor manufacturers, but often that information is incorrect.  The information seems to indicate the architecture's capabilities, rather than what the particular chip actually does.  In particular, it seems commonplace to claim the presence of multiple hyperthreads when there is only one.
Information on the CPUID instruction and on specific CPUs is available from the following documents from Intel Corporation <http://www.intel.com/support/processors/index.htm>, with the specified Document Numbers:
Information on the CPUID instruction and on specific CPUs is available from the following documents from Advanced Micro Devices, Inc. <http://www.amd.com/us-en/Processors/TechnicalResources>, with the specified Publication Numbers:
20734: AMD Processor Recognition Application Note 21266: AMD-K6 Processor Revision Guide Model 6 21641: AMD-K6-2 Processor Revision Guide Model 8 21846: AMD-K6 Processor Revision Guide Model 7 22473: AMD-K6-III Processor Revision Guide Model 9 23614: AMD Athlon Processor Model 4 Revision Guide 23865: AMD Duron Processor Model 3 Revision Guide 24332: AMD Athlon Processor Model 6 Revision Guide 24594: AMD64 Architecture Programmer's Manual Volume 3: General- Purpose and System Instructions 24806: AMD Duron Processor Model 7 Revision Guide 25481: CPUID Specification 25703: AMD Athlon Processor Model 8 Revision Guide 25759: Revision Guide for AMD Athlon 64 and AMD Opteron Processors 26094: BIOS and Kernel Developer's Guide for AMD Athlon 64 and AMD Opteron Processors 27532: AMD Athlon Processor Model 10 Revision Guide 31177H: AMD Geode NX Processors Data Book 31610: Revision Guide for AMD NPT Family 0Fh Processors 33234F: AMD Geode LX Processors Data Book 40332: AMD64 Architecture Programmer's Manual: Volumes 1-5 41322: Revision Guide for AMD Family 10h Processors 41788: Revision Guide for AMD Family 11h Processors 44739: Revision Guide for AMD Family 12h Processors 47534: Revision Guide for AMD Family 14h Models 00h-0Fh Processors 48063: Revision Guide for AMD Family 15h Models 00h-0Fh Processors 48931: Revision Guide for AMD Family 15h Models 10h-1Fh Processors 51603: Revision Guide for AMD Family 15h Models 30h-3Fh Processors 51810: Revision Guide for AMD Family 16h Models 00h-0Fh Processors 53072: Revision Guide for AMD Family 16h Models 30h-3Fh Processors 54945: Processor Programming Reference (PPR) for AMD Family 17h Models 01h,0h, Revision B2 Processors 54945: Processor Programming Reference (PPR) for AMD Family 17h Models 01h,08h Revision B2 Processors 55370: Revision Guide for AMD Family 15h Models 70h-7Fh Processors 55449: Revision Guide for AMD Family 17h Models 00h-0Fh processors 55570-B1: Processor Programming Reference (PPR) for AMD Family 17h Model 18h, Revision B1 Processors 55766: Secure Encrypted Virtualization API Version 0.16 Technical Preview 55772-A1: Processor Programming Reference (PPR) for AMD Family 17h Model 20h, Revision A1 Processors 55922-A1: Processor Programming Reference (PPR) for AMD Family 17h Model 60h, Revision A1 Processors 55803: Preliminary Processor Programming Reference (PPR) for AMD Family 17h Model 31h, Revision B0 Processors 56176: Processor Programming Reference (PPR) for AMD Family 17h Model 71h, Revision B0 Processors AMD64 Technology Indirect Branch Control Extension (White Paper), Revision 4.10.18 AMD64 Technology Speculative Store Bypass Disable (White Paper), Revision 5.21.18
Information on the CPUID instruction and on specific CPUs is available from the following documents from Transmeta Corporation <http://www.transmeta.com/crusoe_docs/Crusoe_CPUID_5-7-02.pdf>:
Processor Recognition, 2002/05/07
Information on the CPUID instruction and on specific CPUs is available from the following documents from Cyrix:
Application Note 112: Cyrix CPU Detection Guide Cyrix 6x86 Processor, Instruction Set
The linux kernel can be a source of information on CPUID flags, using X86_FEATURE_* definitions in arch/x86/include/asm/cpufeatures.h.  Also, it can be used to learn about Intel microarchitectures in arch/x86/include/asm/intel-family.h.
Information on generic hypervisor CPUID leaves is available from this proposal: <http://lwn.net/Articles/301888/>.
Information on KVM hypervisor CPUID leaves is available from the Linux kernel under Documentation/virtual/kvm/cpuid.txt.
Information on XEN hypervisor CPUID leaves is deduced from source inspection, mainly from xen's include/public/arch-x86/cpuid.h and arch/x86/traps.c.
Information on Microsoft hypervisor CPUID leaves is available from the following documents from Microsoft: <https://docs.microsoft.com/en- us/virtualization/hyper-v-on-windows/reference/tlfs> and <http://msdn.microsoft.com/en- us/library/windows/hardware/ff542428%28v=vs.85%29.aspx>.
Also, information is available from the following web sites:
<http://www.sandpile.org/x86/cpuid.htm> <http://instlatx64.atw.hu/> <http://en.wikipedia.org/wiki/List_of_Intel_CPU_microarchitectures> <http://en.wikipedia.org/wiki/List_of_AMD_CPU_microarchitectures> <http://en.wikipedia.org/wiki/List_of_Intel_microprocessors> <http://en.wikipedia.org/wiki/List_of_AMD_microprocessors> <http://en.wikipedia.org/wiki/Category:X86_microprocessors>
Todd Allen <cpuid@etallen.com>
NOHUP(1)                          User Commands                         NOHUP(1)
nohup - run a command immune to hangups, with output to a non-tty
nohup COMMAND [ARG]... nohup OPTION
Run COMMAND, ignoring hangup signals.
If standard input is a terminal, redirect it from an unreadable file.  If standard output is a terminal, append output to 'nohup.out' if possible, '$HOME/nohup.out' otherwise.  If standard error is a terminal, redirect it to standard output.  To save output to FILE, use 'nohup COMMAND > FILE'.
NOTE: your shell may have its own version of nohup, which usually supersedes the version described here.  Please refer to your shell's documentation for details about the options it supports.
Full documentation <https://www.gnu.org/software/coreutils/nohup> or available locally via: info '(coreutils) nohup invocation'
BTRFS-FILESYSTEM(8)               Btrfs Manual               BTRFS-FILESYSTEM(8)
btrfs-filesystem - command group that primarily does work on the whole filesystems
btrfs filesystem <subcommand> <args>
btrfs filesystem is used to perform several whole filesystem level tasks, including all the regular filesystem operations like resizing, space stats, label setting/getting, and defragmentation. There are other whole filesystem tasks like scrub or balance that are grouped in separate commands.
df [options] <path> Show a terse summary information about allocation of block group types of a given mount point. The original purpose of this command was a debugging helper. The output needs to be further interpreted and is not suitable for quick overview.
An example with description:
•   device size: 1.9TiB, one device, no RAID
•   filesystem size: 1.9TiB
•   created with: mkfs.btrfs -d single -m single
$ btrfs filesystem df /path Data, single: total=1.15TiB, used=1.13TiB System, single: total=32.00MiB, used=144.00KiB Metadata, single: total=12.00GiB, used=6.45GiB GlobalReserve, single: total=512.00MiB, used=0.00B
•   Data, System and Metadata are separate block group types. GlobalReserve is an artificial and internal emergency space, see below.
•   single — the allocation profile, defined at mkfs time
•   total — sum of space reserved for all allocation profiles of the given type, ie. all Data/single. Note that it’s not total size of filesystem.
•   used — sum of used space of the above, ie. file extents, metadata blocks
GlobalReserve is an artificial and internal emergency space. It is used eg. when the filesystem is full. Its total size is dynamic based on the filesystem size, usually not larger than 512MiB, used may fluctuate.
The GlobalReserve is a portion of Metadata. In case the filesystem metadata is exhausted, GlobalReserve/total + Metadata/used = Metadata/total. Otherwise there appears to be some unused space of Metadata.
-b|--raw raw numbers in bytes, without the B suffix
-h|--human-readable print human friendly numbers, base 1024, this is the default
-H print human friendly numbers, base 1000
--iec select the 1024 base for the following options, according to the IEC standard
--si select the 1000 base for the following options, according to the SI standard
-k|--kbytes show sizes in KiB, or kB with --si
-m|--mbytes show sizes in MiB, or MB with --si
-g|--gbytes show sizes in GiB, or GB with --si
-t|--tbytes show sizes in TiB, or TB with --si
If conflicting options are passed, the last one takes precedence.
defragment [options] <file>|<dir> [<file>|<dir>...] Defragment file data on a mounted filesystem. Requires kernel 2.6.33 and newer.
If -r is passed, files in dir will be defragmented recursively (not descending to subvolumes, mount points and directory symlinks). The start position and the number of bytes to defragment can be specified by start and length using -s and -l options below. Extents bigger than value given by -t will be skipped, otherwise this value is used as a target extent size, but is only advisory and may not be reached if the free space is too fragmented. Use 0 to take the kernel default, which is 256kB but may change in the future. You can also turn on compression in defragment operations.
Warning Defragmenting with Linux kernel versions < 3.9 or ≥ 3.14-rc2 as well as with Linux stable kernel versions ≥ 3.10.31, ≥ 3.12.12 or ≥ 3.13.4 will break up the reflinks of COW data (for example files copied with cp --reflink, snapshots or de-duplicated data). This may cause considerable increase of space usage depending on the broken up reflinks.
Note Directory arguments without -r do not defragment files recursively but will defragment certain internal trees (extent tree and the subvolume tree). This has been confusing and could be removed in the future. For start, len, size it is possible to append units designator: 'K', 'M', 'G', 'T', 'P', or 'E', which represent KiB, MiB, GiB, TiB, PiB, or EiB, respectively (case does not matter).
-c[<algo>] compress file contents while defragmenting. Optional argument selects the compression algorithm, zlib (default), lzo or zstd. Currently it’s not possible to select no compression. See also section EXAMPLES.
-r defragment files recursively in given directories, does not descend to subvolumes or mount points
-f flush data for each file before going to the next file.
This will limit the amount of dirty data to current file, otherwise the amount accumulates from several files and will increase system load. This can also lead to ENOSPC if there’s too much dirty data to write and it’s not possible to make the reservations for the new data (ie. how the COW design works).
-s <start>[kKmMgGtTpPeE] defragmentation will start from the given offset, default is beginning of a file
-l <len>[kKmMgGtTpPeE] defragment only up to len bytes, default is the file size
-t <size>[kKmMgGtTpPeE] target extent size, do not touch extents bigger than size, default: 32M
The value is only advisory and the final size of the extents may differ, depending on the state of the free space and fragmentation or other internal logic. Reasonable values are from tens to hundreds of megabytes.
-v (deprecated) alias for global -v option
du [options] <path> [<path>..] Calculate disk usage of the target files using FIEMAP. For individual files, it will report a count of total bytes, and exclusive (not shared) bytes. We also calculate a set shared value which is described below.
Each argument to btrfs filesystem du will have a set shared value calculated for it. We define each set as those files found by a recursive search of an argument (recursion descends to subvolumes but not mount points). The set shared value then is a sum of all shared space referenced by the set.
set shared takes into account overlapping shared extents, hence it isn’t as simple as adding up shared extents.
-s|--summarize display only a total for each argument
--raw raw numbers in bytes, without the B suffix.
--human-readable print human friendly numbers, base 1024, this is the default
--iec select the 1024 base for the following options, according to the IEC standard.
--si select the 1000 base for the following options, according to the SI standard.
--kbytes show sizes in KiB, or kB with --si.
--mbytes show sizes in MiB, or MB with --si.
--gbytes show sizes in GiB, or GB with --si.
--tbytes show sizes in TiB, or TB with --si.
label [<device>|<mountpoint>] [<newlabel>] Show or update the label of a filesystem. This works on a mounted filesystem or a filesystem image.
The newlabel argument is optional. Current label is printed if the argument is omitted.
Note the maximum allowable length shall be less than 256 chars and must not contain a newline. The trailing newline is stripped automatically.
resize [options] [<devid>:][+/-]<size>[kKmMgGtTpPeE]|[<devid>:]max <path> Resize a mounted filesystem identified by path. A particular device can be resized by specifying a devid.
Warning If path is a file containing a BTRFS image then resize does not work as expected and does not resize the image. This would resize the underlying filesystem instead. The devid can be found in the output of btrfs filesystem show and defaults to 1 if not specified. The size parameter specifies the new size of the filesystem. If the prefix + or - is present the size is increased or decreased by the quantity size. If no units are specified, bytes are assumed for size. Optionally, the size parameter may be suffixed by one of the following unit designators: 'K', 'M', 'G', 'T', 'P', or 'E', which represent KiB, MiB, GiB, TiB, PiB, or EiB, respectively (case does not matter).
If max is passed, the filesystem will occupy all available space on the device respecting devid (remember, devid 1 by default).
The resize command does not manipulate the size of underlying partition. If you wish to enlarge/reduce a filesystem, you must make sure you can expand the partition before enlarging the filesystem and shrink the partition after reducing the size of the filesystem. This can done using fdisk(8) or parted(8) to delete the existing partition and recreate it with the new desired size. When recreating the partition make sure to use the same starting partition offset as before.
Growing is usually instant as it only updates the size. However, shrinking could take a long time if there are data in the device area that’s beyond the new end. Relocation of the data takes time.
See also section EXAMPLES.
--enqueue wait if there’s another exclusive operation running, otherwise continue
show [options] [<path>|<uuid>|<device>|<label>] Show the btrfs filesystem with some additional info about devices and space allocation.
If no option none of path/uuid/device/label is passed, information about all the BTRFS filesystems is shown, both mounted and unmounted.
-m|--mounted probe kernel for mounted BTRFS filesystems
-d|--all-devices scan all devices under /dev, otherwise the devices list is extracted from the /proc/partitions file. This is a fallback option if there’s no device node manager (like udev) available in the system.
--raw raw numbers in bytes, without the B suffix
--kbytes show sizes in KiB, or kB with --si
--mbytes show sizes in MiB, or MB with --si
--gbytes show sizes in GiB, or GB with --si
--tbytes show sizes in TiB, or TB with --si
sync <path> Force a sync of the filesystem at path, similar to the sync(1) command. In addition, it starts cleaning of deleted subvolumes. To wait for the subvolume deletion to complete use the btrfs subvolume sync command.
usage [options] <path> [<path>...] Show detailed information about internal filesystem usage. This is supposed to replace the btrfs filesystem df command in the long run.
The level of detail can differ if the command is run under a regular or the root user (due to use of restricted ioctl). For both there’s a summary section with information about space usage:
$ btrfs filesystem usage /path WARNING: cannot read detailed chunk info, RAID5/6 numbers will be incorrect, run as root Overall: Device size:                   1.82TiB Device allocated:              1.17TiB Device unallocated:          669.99GiB Device missing:                  0.00B Used:                          1.14TiB Free (estimated):            692.57GiB      (min: 692.57GiB) Free (statfs, df)            692.57GiB Data ratio:                       1.00 Metadata ratio:                   1.00 Global reserve:              512.00MiB      (used: 0.00B) Multiple profiles:                  no
•   Device size — sum of raw device capacity available to the filesystem
•   Device allocated — sum of total space allocated for data/metadata/system profiles, this also accounts space reserved but not yet used for extents
•   Device unallocated — the remaining unallocated space for future allocations (difference of the above two numbers)
•   Device missing — sum of capacity of all missing devices
•   Used — sum of the used space of data/metadata/system profiles, not including the reserved space
•   Free (estimated) — approximate size of the remaining free space usable for data, including currently allocated space and estimating the usage of the unallocated space based on the block group profiles, the min is the lower bound of the estimate in case multiple profiles are present
•   Free (statfs, df) — the amount of space available for data as reported by the statfs syscall, also returned as Avail in the output of df. The value is calculated in a different way and may not match the estimate in some cases (eg. multiple profiles).
•   Data ratio — ratio of total space for data including redundancy or parity to the effectively usable data space, eg. single is 1.0, RAID1 is 2.0 and for RAID5/6 it depends on the number of devices
•   Metadata ratio — dtto, for metadata
•   Global reserve — portion of metadata currently used for global block reserve, used for emergency purposes (like deletion on a full filesystem)
•   Multiple profiles — what block group types (data, metadata) have more than one profile (single, raid1, ...), see btrfs(5) section FILESYSTEMS WITH MULTIPLE BLOCK GROUP PROFILES.
And on a zoned filesystem there are two more lines in the Device section:
Device zone unusable:          5.13GiB Device zone size:            256.00MiB
•   Device zone unusable — sum of of space that’s been used in the past but now is not due to COW and not referenced anymory, the chunks have to be reclaimed and zones reset to make it usable again
•   Device zone size — the reported zone size of the host-managed device, same for all devices
The root user will also see stats broken down by block group types:
Data,single: Size:1.15TiB, Used:1.13TiB (98.26%) /dev/sdb        1.15TiB
Metadata,single: Size:12.00GiB, Used:6.45GiB (53.75%) /dev/sdb       12.00GiB
System,single: Size:32.00MiB, Used:144.00KiB (0.44%) /dev/sdb       32.00MiB
Unallocated: /dev/sdb      669.99GiB
Data is block group type, single is block group profile, Size is total size occupied by this type, Used is the actually used space, the percent is ratio of Used/Size. The Unallocated is remaining space.
-T show data in tabular format
$ btrfs filesystem defrag -v -r dir/
Recursively defragment files under dir/, print files as they are processed. The file names will be printed in batches, similarly the amount of data triggered by defragmentation will be proportional to last N printed files. The system dirty memory throttling will slow down the defragmentation but there can still be a lot of IO load and the system may stall for a moment.
$ btrfs filesystem defrag -v -r -f dir/
Recursively defragment files under dir/, be verbose and wait until all blocks are flushed before processing next file. You can note slower progress of the output and lower IO load (proportional to currently defragmented file).
$ btrfs filesystem defrag -v -r -f -clzo dir/
Recursively defragment files under dir/, be verbose, wait until all blocks are flushed and force file compression.
$ btrfs filesystem defrag -v -r -t 64M dir/
Recursively defragment files under dir/, be verbose and try to merge extents to be about 64MiB. As stated above, the success rate depends on actual free space fragmentation and the final result is not guaranteed to meet the target even if run repeatedly.
$ btrfs filesystem resize -1G /path
$ btrfs filesystem resize 1:-1G /path
Shrink size of the filesystem’s device id 1 by 1GiB. The first syntax expects a device with id 1 to exist, otherwise fails. The second is equivalent and more explicit. For a single-device filesystem it’s typically not necessary to specify the devid though.
$ btrfs filesystem resize max /path
$ btrfs filesystem resize 1:max /path
Let’s assume that devid 1 exists and the filesystem does not occupy the whole block device, eg. it has been enlarged and we want to grow the filesystem. By simply using max as size we will achieve that.
Note There are two ways to minimize the filesystem on a given device. The btrfs inspect-internal min-dev-size command, or iteratively shrink in steps.
btrfs filesystem returns a zero exit status if it succeeds. Non zero is returned in case of failure.
btrfs is part of btrfs-progs. Please refer to the btrfs wiki http://btrfs.wiki.kernel.org for further details.
btrfs-subvolume(8), mkfs.btrfs(8),
guacd(8)                        Apache Guacamole                        guacd(8)
guacd - Guacamole proxy daemon
guacd [-b HOST] [-l PORT] [-p PID FILE] [-L LOG LEVEL] [-C CERTIFICATE FILE] [-K KEY FILE] [-f] [-v]
guacd is the Guacamole proxy daemon used by the Guacamole web application and framework. As JavaScript cannot handle binary protocols (like VNC and remote desktop) efficiently, a new text-based protocol was developed which would contain a common superset of the operations needed for efficient remote desktop access, but would be easy for JavaScript programs to process.  guacd is the proxy which translates between arbitrary protocols and the Guacamole protocol.
-b HOST Changes the host or address that guacd listens on.
-l PORT Changes the port that guacd listens on (the default is port 4822).
-p FILE Causes guacd to write the PID of the daemon process to the specified file. This is useful for init scripts and is used by the provided init script.
-L LEVEL Sets the maximum level at which guacd will log messages to syslog and, if running in the foreground, the console.  Legal values are trace, debug, info, warning, and error.  The default value is info.
-f     Causes guacd to run in the foreground, rather than automatically forking into the background.