You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by jr...@apache.org on 2016/10/19 16:44:12 UTC
[trafficserver] branch master updated: TS-4957: Make the use of
madvise() with MADV_DONTDUMP configurable.
This is an automated email from the ASF dual-hosted git repository.
jrushford pushed a commit to branch master
in repository https://git-dual.apache.org/repos/asf/trafficserver.git
The following commit(s) were added to refs/heads/master by this push:
new 514d3fd TS-4957: Make the use of madvise() with MADV_DONTDUMP configurable.
514d3fd is described below
commit 514d3fd7de5841b8a74cd32bed001db9b479764f
Author: John J. Rushford <jr...@apache.org>
AuthorDate: Tue Oct 11 21:37:01 2016 +0000
TS-4957: Make the use of madvise() with MADV_DONTDUMP configurable.
---
doc/admin-guide/files/records.config.en.rst | 6 ++++++
iocore/eventsystem/EventSystem.cc | 13 ++++++++++++-
iocore/eventsystem/IOBuffer.cc | 9 ++-------
iocore/eventsystem/I_IOBuffer.h | 2 +-
mgmt/RecordsConfig.cc | 2 ++
5 files changed, 23 insertions(+), 9 deletions(-)
diff --git a/doc/admin-guide/files/records.config.en.rst b/doc/admin-guide/files/records.config.en.rst
index 3f7d3b5..da887d5 100644
--- a/doc/admin-guide/files/records.config.en.rst
+++ b/doc/admin-guide/files/records.config.en.rst
@@ -3547,6 +3547,12 @@ Sockets
For more information on the implications of enabling huge pages, see
`Wikipedia <http://en.wikipedia.org/wiki/Page_%28computer_memory%29#Page_size_trade-off>_`.
+.. ts:cv:: CONFIG proxy.config.allocator.dontdump_iobuffers INT 1
+
+ Enable (1) the exclusion of IO buffers from core files when ATS crashes on supported
+ platforms. (Currently only linux). IO buffers are allocated with the MADV_DONTDUMP
+ with madvise() on linux platforms that support MADV_DONTDUMP. Enabled by default.
+
.. ts:cv:: CONFIG proxy.config.http.enabled INT 1
Turn on or off support for HTTP proxying. This is rarely used, the one
diff --git a/iocore/eventsystem/EventSystem.cc b/iocore/eventsystem/EventSystem.cc
index d63440b..1cb3613 100644
--- a/iocore/eventsystem/EventSystem.cc
+++ b/iocore/eventsystem/EventSystem.cc
@@ -35,6 +35,7 @@ ink_event_system_init(ModuleVersion v)
{
ink_release_assert(!checkModuleVersion(v, EVENT_SYSTEM_MODULE_VERSION));
int config_max_iobuffer_size = DEFAULT_MAX_BUFFER_SIZE;
+ int iobuffer_advice = 0;
// For backwards compatability make sure to allow thread_freelist_size
// This needs to change in 6.0
@@ -51,5 +52,15 @@ ink_event_system_init(ModuleVersion v)
if (default_large_iobuffer_size > max_iobuffer_size) {
default_large_iobuffer_size = max_iobuffer_size;
}
- init_buffer_allocators();
+
+#ifdef MADV_DONTDUMP // This should only exist on Linux 3.4 and higher.
+ RecBool dont_dump_enabled = true;
+ RecGetRecordBool("proxy.config.allocator.dontdump_iobuffers", &dont_dump_enabled, false);
+
+ if (dont_dump_enabled) {
+ iobuffer_advice |= MADV_DONTDUMP;
+ }
+#endif
+
+ init_buffer_allocators(iobuffer_advice);
}
diff --git a/iocore/eventsystem/IOBuffer.cc b/iocore/eventsystem/IOBuffer.cc
index 1efb8af..c2aa910 100644
--- a/iocore/eventsystem/IOBuffer.cc
+++ b/iocore/eventsystem/IOBuffer.cc
@@ -43,14 +43,9 @@ int64_t max_iobuffer_size = DEFAULT_BUFFER_SIZES - 1;
// Initialization
//
void
-init_buffer_allocators()
+init_buffer_allocators(int iobuffer_advice)
{
char *name;
- int advice = 0;
-
-#ifdef MADV_DONTDUMP // This should only exist on Linux 3.4 and higher.
- advice = MADV_DONTDUMP;
-#endif
for (int i = 0; i < DEFAULT_BUFFER_SIZES; i++) {
int64_t s = DEFAULT_BUFFER_BASE_SIZE * (((int64_t)1) << i);
@@ -61,7 +56,7 @@ init_buffer_allocators()
name = new char[64];
snprintf(name, 64, "ioBufAllocator[%d]", i);
- ioBufAllocator[i].re_init(name, s, n, a, advice);
+ ioBufAllocator[i].re_init(name, s, n, a, iobuffer_advice);
}
}
diff --git a/iocore/eventsystem/I_IOBuffer.h b/iocore/eventsystem/I_IOBuffer.h
index 26414ab..e071775 100644
--- a/iocore/eventsystem/I_IOBuffer.h
+++ b/iocore/eventsystem/I_IOBuffer.h
@@ -125,7 +125,7 @@ enum AllocType {
inkcoreapi extern Allocator ioBufAllocator[DEFAULT_BUFFER_SIZES];
-void init_buffer_allocators();
+void init_buffer_allocators(int iobuffer_advice);
/**
A reference counted wrapper around fast allocated or malloced memory.
diff --git a/mgmt/RecordsConfig.cc b/mgmt/RecordsConfig.cc
index f6183c3..4f8d4bc 100644
--- a/mgmt/RecordsConfig.cc
+++ b/mgmt/RecordsConfig.cc
@@ -1454,6 +1454,8 @@ static const RecordElement RecordsConfig[] =
,
{RECT_CONFIG, "proxy.config.allocator.hugepages", RECD_INT, "0", RECU_RESTART_TS, RR_NULL, RECC_NULL, "[0-1]", RECA_NULL}
,
+ {RECT_CONFIG, "proxy.config.allocator.dontdump_iobuffers", RECD_INT, "1", RECU_RESTART_TS, RR_NULL, RECC_NULL, "[0-1]", RECA_NULL}
+ ,
//############
//#
--
To stop receiving notification emails like this one, please contact
['"commits@trafficserver.apache.org" <co...@trafficserver.apache.org>'].