aboutsummaryrefslogtreecommitdiffstats
path: root/searchcore
diff options
context:
space:
mode:
authorHåvard Pettersen <havardpe@oath.com>2022-04-05 11:18:18 +0000
committerHåvard Pettersen <havardpe@oath.com>2022-04-05 11:18:18 +0000
commitd8ba82ed32f017750977b64b4b4308f1ddbad56a (patch)
treec74ab16185b298f2d3ba6552534795ca24026193 /searchcore
parentf74bc96c0b4693305d32f17a28f0ae32e791fa04 (diff)
move default fadvise setup
Diffstat (limited to 'searchcore')
-rw-r--r--searchcore/src/apps/proton/proton.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/searchcore/src/apps/proton/proton.cpp b/searchcore/src/apps/proton/proton.cpp
index ab273fd2660..27ecbd08917 100644
--- a/searchcore/src/apps/proton/proton.cpp
+++ b/searchcore/src/apps/proton/proton.cpp
@@ -12,9 +12,11 @@
#include <vespa/config/common/configcontext.h>
#include <vespa/fnet/transport.h>
#include <vespa/fastos/thread.h>
+#include <vespa/fastos/file.h>
#include <vespa/fastos/app.h>
#include <iostream>
#include <thread>
+#include <fcntl.h>
#include <vespa/log/log.h>
LOG_SETUP("proton");
@@ -42,6 +44,7 @@ class App : public FastOS_Application
{
private:
static void setupSignals();
+ static void setup_fadvise();
Params parseParams();
void startAndRun(FastOS_ThreadPool & threadPool, FNET_Transport & transport);
public:
@@ -56,6 +59,23 @@ App::setupSignals()
SIG::TERM.hook();
}
+void
+App::setup_fadvise()
+{
+#ifdef __linux__
+ char * fadvise = getenv("VESPA_FADVISE_OPTIONS");
+ if (fadvise != nullptr) {
+ int fadviseOptions(0);
+ if (strstr(fadvise, "SEQUENTIAL")) { fadviseOptions |= POSIX_FADV_SEQUENTIAL; }
+ if (strstr(fadvise, "RANDOM")) { fadviseOptions |= POSIX_FADV_RANDOM; }
+ if (strstr(fadvise, "WILLNEED")) { fadviseOptions |= POSIX_FADV_WILLNEED; }
+ if (strstr(fadvise, "DONTNEED")) { fadviseOptions |= POSIX_FADV_DONTNEED; }
+ if (strstr(fadvise, "NOREUSE")) { fadviseOptions |= POSIX_FADV_NOREUSE; }
+ FastOS_FileInterface::setDefaultFAdviseOptions(fadviseOptions);
+ }
+#endif
+}
+
Params
App::parseParams()
{
@@ -247,6 +267,7 @@ App::Main()
{
try {
setupSignals();
+ setup_fadvise();
FastOS_ThreadPool threadPool(128_Ki);
FNET_Transport transport(buildTransportConfig());
transport.Start(&threadPool);