Skip to content

Commit

Permalink
[Change] Removed the memory mapped file.
Browse files Browse the repository at this point in the history
Using the system paging file to implement COW.
  • Loading branch information
enricogior committed Oct 12, 2015
1 parent 45c654c commit f679f72
Show file tree
Hide file tree
Showing 7 changed files with 38 additions and 237 deletions.
48 changes: 9 additions & 39 deletions msvs/setups/documentation/redis.windows-service.conf
Original file line number Diff line number Diff line change
Expand Up @@ -422,47 +422,17 @@ slave-priority 100
# mechanism, the master-slave synchronization and clustering features are
# dependent on this behavior of fork(). In order for the Windows version to
# perform like the Linux version we had to simulate this aspect of fork().
# Doing so meant moving the Redis heap into a memory mapped file that can
# be shared with a child process.
#
# *** There must be disk space available for this file in order for Redis
# to launch. *** The default configuration places this file in the local
# appdata directory. If you wish to move this file to another local disk,
# use the heapdir flag as described below.
#
# The maxheap flag controls the maximum size of this memory mapped file,
# as well as the total usable space for the Redis heap. Running Redis
# without either maxheap or maxmemory will result in a memory mapped file
# being created that is equal to the size of physical memory. During
# fork() operations the total page file commit will max out at around:
#
# (size of physical memory) + (2 * size of maxheap)
#
# For instance, on a machine with 8GB of physical RAM, the max page file
# commit with the default maxheap size will be (8)+(2*8) GB , or 24GB. The
# default page file sizing of Windows will allow for this without having
# to reconfigure the system. Larger heap sizes are possible, but the maximum
# page file size will have to be increased accordingly.
#
# The Redis heap must be larger than the value specified by the maxmemory
# flag, as the heap allocator has its own memory requirements and
# fragmentation of the heap is inevitable. If only the maxmemory flag is
# specified, maxheap will be set at 1.5*maxmemory. If the maxheap flag is
# specified along with maxmemory, the maxheap flag will be automatically
# increased if it is smaller than 1.5*maxmemory.
# The system paging file is used to share memory between the parent process
# and the child (aka forked) process.
#
# maxheap <bytes>

# The heap memory mapped file must reside on a local path for heap sharing
# between processes to work. A UNC path will not suffice here. For maximum
# performance this should be located on the fastest local drive available.
# This value defaults to the local application data folder(e.g.,
# "%USERPROFILE%\AppData\Local"). Since this file can be very large, you
# may wish to place this on a drive other than the one the operating system
# is installed on.
# The maxheap flag controls the total usable space for the Redis heap.
# Running Redis without either maxheap or maxmemory will result in a max
# usable heap equal to 1.5 * physical memory. If only the maxmemory flag is
# specified, maxheap will be set at 1.5 * maxmemory.
# If the maxheap flag is specified along with maxmemory, the maxheap flag
# will be automatically increased if it is smaller than 1.5*maxmemory.
#
# Note that you must specify a directory here, not a file name.
# heapdir <directory path(absolute or relative)>
# maxheap <bytes>

# If Redis is to be used as an in-memory-only cache without any kind of
# persistence, then the fork() mechanism used by the background AOF/RDB
Expand Down
54 changes: 12 additions & 42 deletions msvs/setups/documentation/redis.windows.conf
Original file line number Diff line number Diff line change
Expand Up @@ -419,50 +419,20 @@ slave-priority 100

# The Linux version of Redis relies on the system call fork() to perform
# point-in-time snapshots of the heap. In addition to the AOF and RDB backup
# mechanism, the master-slave synchronization and clustering features are
# dependent on this behavior of fork(). In order for the Windows version to
# mechanism, the master-slave synchronization and clustering features are
# dependent on this behavior of fork(). In order for the Windows version to
# perform like the Linux version we had to simulate this aspect of fork().
# Doing so meant moving the Redis heap into a memory mapped file that can
# be shared with a child process.
#
# *** There must be disk space available for this file in order for Redis
# to launch. *** The default configuration places this file in the local
# appdata directory. If you wish to move this file to another local disk,
# use the heapdir flag as described below.
#
# The maxheap flag controls the maximum size of this memory mapped file,
# as well as the total usable space for the Redis heap. Running Redis
# without either maxheap or maxmemory will result in a memory mapped file
# being created that is equal to the size of physical memory. During
# fork() operations the total page file commit will max out at around:
#
# (size of physical memory) + (2 * size of maxheap)
#
# For instance, on a machine with 8GB of physical RAM, the max page file
# commit with the default maxheap size will be (8)+(2*8) GB , or 24GB. The
# default page file sizing of Windows will allow for this without having
# to reconfigure the system. Larger heap sizes are possible, but the maximum
# page file size will have to be increased accordingly.
#
# The Redis heap must be larger than the value specified by the maxmemory
# flag, as the heap allocator has its own memory requirements and
# fragmentation of the heap is inevitable. If only the maxmemory flag is
# specified, maxheap will be set at 1.5*maxmemory. If the maxheap flag is
# specified along with maxmemory, the maxheap flag will be automatically
# increased if it is smaller than 1.5*maxmemory.
#
# maxheap <bytes>

# The heap memory mapped file must reside on a local path for heap sharing
# between processes to work. A UNC path will not suffice here. For maximum
# performance this should be located on the fastest local drive available.
# This value defaults to the local application data folder(e.g.,
# "%USERPROFILE%\AppData\Local"). Since this file can be very large, you
# may wish to place this on a drive other than the one the operating system
# is installed on.
# The system paging file is used to share memory between the parent process
# and the child (aka forked) process.
#
# Note that you must specify a directory here, not a file name.
# heapdir <directory path(absolute or relative)>
# The maxheap flag controls the total usable space for the Redis heap.
# Running Redis without either maxheap or maxmemory will result in a max
# usable heap equal to 1.5 * physical memory. If only the maxmemory flag is
# specified, maxheap will be set at 1.5 * maxmemory.
# If the maxheap flag is specified along with maxmemory, the maxheap flag
# will be automatically increased if it is smaller than 1.5*maxmemory.
#
# maxheap <bytes>

# If Redis is to be used as an in-memory-only cache without any kind of
# persistence, then the fork() mechanism used by the background AOF/RDB
Expand Down
1 change: 0 additions & 1 deletion src/Win32_Interop/Win32_CommandLine.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -351,7 +351,6 @@ static RedisParamterMapper g_redisArgMap =
// QFork flags
{ cQFork, &fp2 }, // qfork [QForkControlMemoryMap handle] [parent process id]
{ cMaxHeap, &fp1 }, // maxheap [number]
{ cHeapDir, &fp1 }, // heapdir [path]
{ cPersistenceAvailable, &fp1 }, // persistence-available [yes/no]

// service commands
Expand Down
1 change: 0 additions & 1 deletion src/Win32_Interop/Win32_CommandLine.h
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,6 @@ const string cSyslogIdent= "syslog-ident";
const string cLogfile = "logfile";
const string cInclude = "include";
const string cDir = "dir";
const string cHeapDir = "heapdir";
const string cPersistenceAvailable = "persistence-available";

const string cMaxHeap = "maxheap";
Expand Down
Loading

0 comments on commit f679f72

Please sign in to comment.