1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
|
commit 86c0692ecff8abad6d1bbb86596384a1a2bf3e8d
Author: francois.trahay <francois.trahay@telecom-sudparis.eu>
Date: Wed Aug 16 10:21:21 2017 +0200
fix the compilation of litl on non-linux machines
diff --git a/src/litl_write.c b/src/litl_write.c
index 77b8f0b..ce39079 100644
--- a/src/litl_write.c
+++ b/src/litl_write.c
@@ -538,11 +538,15 @@ static void __litl_write_allocate_buffer(litl_write_trace_t* trace) {
that makes sure the page table is populated. This way, the page faults
caused by litl are sensibly reduced.
*/
+#ifdef __linux__
+ /* some mmap options (eg. MAP_POPULATE) are linux specific. Use malloc on the other platforms */
#define USE_MMAP
+#endif
+
#ifdef USE_MMAP
size_t length = trace->buffer_size + __litl_get_reg_event_size(LITL_MAX_PARAMS) + __litl_get_reg_event_size(1);
-
- trace->buffers[thread_id]->buffer_ptr = mmap(NULL,
+
+ trace->buffers[thread_id]->buffer_ptr = mmap(NULL,
length,
PROT_READ|PROT_WRITE,
MAP_SHARED|MAP_ANONYMOUS|MAP_POPULATE,
commit e6b49bbd2e3b54f7cad5e5a1e06034940e968f5f
Author: francois.trahay <francois.trahay@telecom-sudparis.eu>
Date: Wed Aug 16 10:50:55 2017 +0200
improve mmap usage on non-linux machines
diff --git a/src/litl_write.c b/src/litl_write.c
index ce39079..50673a4 100644
--- a/src/litl_write.c
+++ b/src/litl_write.c
@@ -538,31 +538,39 @@ static void __litl_write_allocate_buffer(litl_write_trace_t* trace) {
that makes sure the page table is populated. This way, the page faults
caused by litl are sensibly reduced.
*/
-#ifdef __linux__
- /* some mmap options (eg. MAP_POPULATE) are linux specific. Use malloc on the other platforms */
#define USE_MMAP
-#endif
#ifdef USE_MMAP
size_t length = trace->buffer_size + __litl_get_reg_event_size(LITL_MAX_PARAMS) + __litl_get_reg_event_size(1);
+ int mmap_flags = MAP_SHARED|MAP_ANONYMOUS;
+
+#ifdef MAP_POPULATE
+ /* make sure the pages are in the page table. This should reduce page faults when recording events */
+ mmap_flags |= MAP_POPULATE;
+#endif
+
trace->buffers[thread_id]->buffer_ptr = mmap(NULL,
- length,
- PROT_READ|PROT_WRITE,
- MAP_SHARED|MAP_ANONYMOUS|MAP_POPULATE,
- -1,
- 0);
+ length,
+ PROT_READ|PROT_WRITE,
+ flags,
+ -1,
+ 0);
if(trace->buffers[thread_id]->buffer_ptr == MAP_FAILED) {
perror("mmap");
}
+
+#ifdef MAP_POPULATE
/* touch the first pages */
if(length> 1024*1024)
length=1024*1024;
+#endif /* if MAP_POPULATE is not available, touch the whole buffer to avoid future page faults */
memset(trace->buffers[thread_id]->buffer_ptr, 0, length);
-#else
+
+#else /* USE_MMAP */
size_t length = trace->buffer_size + __litl_get_reg_event_size(LITL_MAX_PARAMS) + __litl_get_reg_event_size(1);
trace->buffers[thread_id]->buffer_ptr = malloc(length);
-#endif
+#endif /* USE_MMAP */
if (!trace->buffers[thread_id]->buffer_ptr) {
perror("Could not allocate memory buffer for the thread\n!");
commit 386f1ed5837b5de6c38aacc5e0d90b8911700462
Author: francois.trahay <francois.trahay@telecom-sudparis.eu>
Date: Wed Aug 16 11:15:23 2017 +0200
fix previous commit
diff --git a/src/litl_write.c b/src/litl_write.c
index 50673a4..fab3c0c 100644
--- a/src/litl_write.c
+++ b/src/litl_write.c
@@ -553,7 +553,7 @@ static void __litl_write_allocate_buffer(litl_write_trace_t* trace) {
trace->buffers[thread_id]->buffer_ptr = mmap(NULL,
length,
PROT_READ|PROT_WRITE,
- flags,
+ mmap_flags,
-1,
0);
if(trace->buffers[thread_id]->buffer_ptr == MAP_FAILED) {
|