Redis在AIX上的内存分配

Redis on AIX memory allocation

我已经使用 gcc 将 Redis 3.0.6 编译到 AIX 6.1 ppc 系统中,但是当数据库试图超过 2GB RAM 时它会崩溃。

编译器标志和环境变量是:

alias make="gmake"

export CC=gcc
export CFLAGS="-DAIX64 -DBIT64 -maix64 -D_AIX -D_AIX53 -D_AIX61 -I/opt/freeware/include -I/usr/include${CFLAGS_XTRA}"
export CXX=g++
export CXXFLAGS=$CFLAGS
export LDFLAGS="-DAIX64 -DBIT64 -maix64 -L/opt/freeware/lib64 -L/opt/freeware/lib -Wl,-blibpath:/opt/freeware/lib64:/opt/freeware/lib/pthread/ppc64:/opt/freeware/lib:/usr/lib:/lib,-bmaxdata:0x80000000"

export AR="ar -X64"
export LIBPATH=.:/opt/freeware/lib64:/opt/freeware/lib:/usr/lib:/lib
export OBJECT_MODE=64
echo Gcc environment variables \(CC,CFLAGS,LDFLAGS,LIBPATH,etc\) are set.

但是当它达到 2GB RAM 时它会崩溃并显示以下日志:

41680910:M 12 Jan 12:46:13.056 # Out Of Memory allocating 102709 bytes! 
41680910:M 12 Jan 12:46:13.056 # === REDIS BUG REPORT START: Cut & paste starting from here === 
41680910:M 12 Jan 12:46:13.056 # ------------------------------------------------ 
41680910:M 12 Jan 12:46:13.056 # !!! Software Failure. Press left mouse button to continue
41680910:M 12 Jan 12:46:13.057 # Guru Meditation: "Redis aborting for OUT OF MEMORY" #redis.c:3572 
41680910:M 12 Jan 12:46:13.057 # ------------------------------------------------

它也在我尝试执行时崩溃

redis-server --test-memory 2048

但如果我执行就不会

redis-server --test-memory 2047

很明显它必须有 2GB 的限制,但我找不到。

需要任何想法或更多信息吗?

尝试省略 -bmaxdata:0x80000000。在 64 位构建中,此参数将堆大小限制为 2GB。在 32 位版本上,它会将低默认值增加到 2GB。