flexnbd: Add more madvise() hints, both for mirroring out and normal operation.
This is hopefully going to reduce flexnbd rss
This commit is contained in:
@@ -551,6 +551,12 @@ void* client_serve(void* client_uncast)
|
|||||||
),
|
),
|
||||||
"Couldn't open/mmap file %s: %s", client->serve->filename, strerror( errno )
|
"Couldn't open/mmap file %s: %s", client->serve->filename, strerror( errno )
|
||||||
);
|
);
|
||||||
|
|
||||||
|
FATAL_IF_NEGATIVE(
|
||||||
|
madvise( client->mapped, client->serve->size, MADV_SEQUENTIAL ),
|
||||||
|
SHOW_ERRNO( "Failed to madvise() %s", client->serve->filename )
|
||||||
|
);
|
||||||
|
|
||||||
debug( "Opened client file fd %d", client->fileno);
|
debug( "Opened client file fd %d", client->fileno);
|
||||||
debug("client: sending hello");
|
debug("client: sending hello");
|
||||||
client_send_hello(client);
|
client_send_hello(client);
|
||||||
|
@@ -89,6 +89,11 @@ void mirror_init( struct mirror * mirror, const char * filename )
|
|||||||
filename
|
filename
|
||||||
);
|
);
|
||||||
|
|
||||||
|
FATAL_IF_NEGATIVE(
|
||||||
|
madvise( mirror->mapped, size, MADV_SEQUENTIAL ),
|
||||||
|
SHOW_ERRNO( "Failed to madvise() %s", filename )
|
||||||
|
);
|
||||||
|
|
||||||
mirror->dirty_map = bitset_alloc(size, 4096);
|
mirror->dirty_map = bitset_alloc(size, 4096);
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -193,8 +198,8 @@ int mirror_pass(struct server * serve, int is_last_pass, uint64_t *written)
|
|||||||
0,
|
0,
|
||||||
serve->mirror->mapped + current,
|
serve->mirror->mapped + current,
|
||||||
MS_REQUEST_LIMIT_SECS);
|
MS_REQUEST_LIMIT_SECS);
|
||||||
madvise( serve->mirror->mapped + current,
|
madvise( serve->mirror->mapped + current,
|
||||||
run,
|
run,
|
||||||
MADV_DONTNEED );
|
MADV_DONTNEED );
|
||||||
|
|
||||||
/* now mark it clean */
|
/* now mark it clean */
|
||||||
|
Reference in New Issue
Block a user