You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by sh...@apache.org on 2017/01/04 16:36:18 UTC
[trafficserver] branch master updated: TS-5085 `posix_fadvise` is
incorrectly used in traffic_logcat
This is an automated email from the ASF dual-hosted git repository.
shinrich 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 be24334 TS-5085 `posix_fadvise` is incorrectly used in traffic_logcat
be24334 is described below
commit be2433438974f4e6cbdec7bc4330ed83aa09235a
Author: Daniel Xu <dl...@yahoo.com>
AuthorDate: Wed Dec 7 15:20:05 2016 -0600
TS-5085 `posix_fadvise` is incorrectly used in traffic_logcat
`traffic_logcat` was not using `posix_fadvise` correctly. This
patch corrects the original poor usage as well as adds some more
`posix_fadvise` calls that should help with performance.
---
proxy/logcat.cc | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/proxy/logcat.cc b/proxy/logcat.cc
index f6fcab4..836ca82 100644
--- a/proxy/logcat.cc
+++ b/proxy/logcat.cc
@@ -259,7 +259,14 @@ main(int /* argc ATS_UNUSED */, const char *argv[])
error = DATA_PROCESSING_ERROR;
} else {
#if HAVE_POSIX_FADVISE
- posix_fadvise(in_fd, 0, 0, POSIX_FADV_DONTNEED);
+ // If we don't plan on following the log file, we should let the kernel know
+ // that we plan on reading the entire file so the kernel can do
+ // some fancy optimizations.
+ if (!follow_flag)
+ posix_fadvise(in_fd, 0, 0, POSIX_FADV_WILLNEED);
+
+ // We're always reading the file sequentially so this will always help
+ posix_fadvise(in_fd, 0, 0, POSIX_FADV_SEQUENTIAL);
#endif
if (auto_filenames) {
// change .blog to .log
@@ -300,6 +307,11 @@ main(int /* argc ATS_UNUSED */, const char *argv[])
}
}
}
+#if HAVE_POSIX_FADVISE
+ // Now that we're done reading a potentially large log file, we can tell the kernel that it's OK to evict
+ // the associated log file pages from cache
+ posix_fadvise(in_fd, 0, 0, POSIX_FADV_DONTNEED);
+#endif
}
} else {
// read from stdin, allow STDIN to go EOF a few times until we get synced
--
To stop receiving notification emails like this one, please contact
['"commits@trafficserver.apache.org" <co...@trafficserver.apache.org>'].