From 93b73b064c663d6248bebfbbbd82989b5ca10fc5 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 21 Nov 2012 00:28:00 +0100 Subject: journal: by default do not decompress dat objects larger than 64K This introduces a new data threshold setting for sd_journal objects which controls the maximum size of objects to decompress. This is relieves the library from having to decompress full data objects even if a client program is only interested in the initial part of them. This speeds up "systemd-coredumpctl" drastically when invoked without parameters. --- man/sd_journal_get_data.xml | 58 ++++++++++++++++++++++++++++++++++++++--- man/sd_journal_query_unique.xml | 4 ++- 2 files changed, 57 insertions(+), 5 deletions(-) (limited to 'man') diff --git a/man/sd_journal_get_data.xml b/man/sd_journal_get_data.xml index 6470f19cc6..1259b0cdbe 100644 --- a/man/sd_journal_get_data.xml +++ b/man/sd_journal_get_data.xml @@ -47,6 +47,8 @@ sd_journal_enumerate_data sd_journal_restart_data SD_JOURNAL_FOREACH_DATA + sd_journal_set_data_threshold + sd_journal_get_data_threshold Read data fields from the current journal entry @@ -81,6 +83,17 @@ size_t length + + int sd_journal_set_data_threshold + sd_journal* j + size_t sz + + + + int sd_journal_get_data_threshold + sd_journal* j + size_t* sz + @@ -102,7 +115,11 @@ sd_journal_enumerate_data(), or the read pointer is altered. Note that the data returned will be prefixed with the field name and - '='. + '='. Also note that by default data fields larger than + 64K might get truncated to 64K. This threshold may be + changed and turned off with + sd_journal_set_data_threshold() (see + below). sd_journal_enumerate_data() may be used to iterate through all fields of the @@ -128,6 +145,32 @@ sd_journal_next3 (or related call) has been called at least once, in order to position the read pointer at a valid entry. + + sd_journal_set_data_threshold() + may be used to change the data field size threshold + for data returned by + sd_journal_get_data(), + sd_journal_enumerate_data() and + sd_journal_enumerate_unique(). This + threshold is a hint only: it indicates that the client + program is interested only in the initial parts of the + data fields, up to the threshold in size -- but the + library might still return larger data objects. That + means applications should not rely exclusively on this + setting to limit the size of the data fields returned, + but need to apply a explicit size limit on the + returned data as well. This threshold defaults to 64K + by default. To retrieve the complete data fields this + threshold should be turned off by setting it to 0, so + that the library always returns the complete data + objects. It is recommended to set this threshold as + low as possible since this relieves the library from + having to decompress large compressed data objects in + full. + + sd_journal_get_data_threshold() + returns the currently configured data field size + threshold. @@ -144,15 +187,22 @@ read, 0 when no more fields are known, or a negative errno-style error code. sd_journal_restart_data() - returns nothing. + returns + nothing. sd_journal_set_data_threshold() + and sd_journal_get_threshold() + return 0 on success or a negative errno-style error + code. Notes The sd_journal_get_data(), - sd_journal_enumerate_data() and - sd_journal_restart_data() + sd_journal_enumerate_data(), + sd_journal_restart_data(), + sd_journal_set_data_threshold() + and + sd_journal_get_data_threshold() interfaces are available as shared library, which can be compiled and linked to with the libsystemd-journal diff --git a/man/sd_journal_query_unique.xml b/man/sd_journal_query_unique.xml index f2f8af0eb5..502a7e08c2 100644 --- a/man/sd_journal_query_unique.xml +++ b/man/sd_journal_query_unique.xml @@ -113,7 +113,9 @@ invocation of sd_journal_enumerate_unique(). Note that the data returned will be prefixed with the field - name and '='. + name and '='. Note that this call is subject to the + data field size threshold as controlled by + sd_journal_set_data_threshold(). sd_journal_restart_unique() resets the data enumeration index to the beginning of -- cgit v1.2.3-54-g00ecf