pmem / redis Goto Github PK
View Code? Open in Web Editor NEWThis project forked from redis/redis
Redis adapted to use Persistent Memory
Home Page: http://pmem.io
License: BSD 3-Clause "New" or "Revised" License
This project forked from redis/redis
Redis adapted to use Persistent Memory
Home Page: http://pmem.io
License: BSD 3-Clause "New" or "Revised" License
createStringObjectFromLongLongA - there should be a memkind allocation for embedded string/int
Hi!
I would like to use REDIS on a centos 7 machine with only PMEM but unfortunately I cannot build the software.
Here are the commands that I run:
yum -y install memkind-devel
git clone https://github.com/pmem/redis.git && cd redis/
make MALLOC=memkind
Here are the errors:
error: ‘MEMKIND_DAX_KMEM’ undeclared
error: ‘MEMKIND_STAT_TYPE_RESIDENT’ undeclared
error: ‘MEMKIND_STAT_TYPE_ACTIVE’ undeclared
error: ‘MEMKIND_STAT_TYPE_ALLOCATED’ undeclared
I also tried with the following make command and I got the same errors:
make USE_PMDK=yes STD=-std=gnu99 MALLOC=memkind
Any suggestions?
Thanks a lot
Having myconfig.conf file with following registration:
pmfile /mnt/non-existent-dir/redis.pm 3gb
and starting redis-server:
./redis-server myconfig.conf
we get:
760:C 07 Feb 18:02:52.638 * Start init Persistent memory file /mnt/non-existent-dir/redis.pm size 3.00G
Segmentation fault (core dumped)
The same situation is when starting two processes of redis-server with two config files pointing to the same pmfile path (which exists in this case)
Redis version: 3.2.7-25-g1e7aa59
Pmdk version: 1.3+b2-614-g1bc6897
git clone https://github.com/pmem/redis.git
git checkout 5.0-poc_cow
make
-> fail: linker don't see symbol zmalloc_pmem
[root@shz23f_aep_nc04 redis]# make USE_PMDK=yes STD=-std=gnu99
cd src && make all
make[1]: Entering directory '/root/yazhan/redis/src'
CC dict.o
In file included from dict.c:49:0:
server.h:744:29: error: ‘POBJ_MAX_ACTIONS_TYPE’ undeclared here (not in a function); did you mean ‘POBJ_MAX_ACTION_TYPE’?
struct pobj_action actions[POBJ_MAX_ACTIONS_TYPE];
^~~~~~~~~~~~~~~~~~~~~
POBJ_MAX_ACTION_TYPE
dict.c: In function ‘dictReplacePM’:
I am executing with make test
the redis tests inside a CentOS Stream VM, all the others passed but the bitfield one fails with the following messages:
!!! WARNING The following tests failed:
*** [err]: BITFIELD overflow detection fuzzing in tests/unit/bitfield.tcl
OW not detected where needed: i64 -9223372036854775808+-9223372036854775808
*** [err]: BITFIELD overflow wrap fuzzing in tests/unit/bitfield.tcl
WRAP error: i64 -9223372036854775808+-9223372036854775808 = 9223372036854775807, should be 0
Cleanup: may take some time... OK
make[1]: *** [Makefile:327: test] Error 1
make[1]: Leaving directory '/home/redis/src'
make: *** [Makefile:6: test] Error 2
I configured emulation version of pmem referring official blog.
link
And than, build & configure pmem/redis to use pmem.
# Build pmem/redis
$ make USE_PMDK=yes STD=-std=gnu99
# Set pmfile to our mounted pmem(emulation) in redis.conf
$ vim redis.conf
# pmfile /path/to/pmem-mount/redis.pm 1gb
...and run redis-server by this command.
$ ./src/redis-server redis.conf
then, server is executed well like this.
I execute redis-benchmark for pmem/redis. Then I could see that SET operation has worse performance than GET operation.
evaluated time to complete 100000 SET operation: 16.72 sec
evaluated time to complete 100000 GET operation: 0.63 sec
This is result of redis-benchmark on pmem/redis without using pmem.
evaluated time to complete 100000 SET operation: 0.63 sec
evaluated time to complete 100000 GET operation: 0.63 sec
Without pmem, benchmark show that evaluated time to operation is same both GET and SET.
I just wonder why SET has worse performance than GET on pmem.
Is there any additional configuration for pmem/redis? (ex. CPU setup, cache setup, ...)
Lines 4015 to 4019 in 4e622e7
Hi experts,
The current redis-nvml is based on v3.2 and it does not support the multithreading I/O that is the new feature introduced since redis 6 (e.g., 1. https://www.i-programmer.info/news/197-data-mining/13682-redis-6-adds-multithreading-io.html;
2. https://www.infoworld.com/article/3541356/redis-6-arrives-with-multithreading-for-faster-io.html#:~:text=With%20I%2FO%20threading%20enabled,a%20single%20instance%2C%20say%20creators&text=Redis%206%2C%20the%20newest%20version,moved%20to%20general%20availability%20today.)
Is there any open-source redis-nvml version that supports the multithreading I/O feature? Or is there any ongoing plan to support the multithreading I/O feature in redis-nvml?
Thanks!
Hi!
I'm trying to use only the PMEMs but when I change the configuration file (redis.conf) to "only-pmem" at line 1788 I get the following error. Have you encountered this issue before?
I built the project on a centos 8 machine using the memkind allocator.
Thanks
Adam
=== REDIS BUG REPORT START: Cut & paste starting from here ===
191495:M 16 Jul 2020 11:38:21.300 # Redis 5.9.102 crashed by signal: 11
191495:M 16 Jul 2020 11:38:21.300 # Crashed running the instruction at: 0x7ff622b8cb1d
191495:M 16 Jul 2020 11:38:21.300 # Accessing address: (nil)
191495:M 16 Jul 2020 11:38:21.300 # Failed assertion: (:0)
------ STACK TRACE ------
EIP:
/lib64/libc.so.6(vsnprintf+0x7d)[0x7ff622b8cb1d]
Backtrace:
./redis-server 127.0.0.1:6379(logStackTrace+0x2e)[0x46e93e]
./redis-server 127.0.0.1:6379(sigsegvHandler+0x96)[0x46efb6]
/lib64/libpthread.so.0(+0x12dd0)[0x7ff622ee7dd0]
/lib64/libc.so.6(vsnprintf+0x7d)[0x7ff622b8cb1d]
/lib64/libc.so.6(__snprintf+0x93)[0x7ff622b6c2e3]
./redis-server 127.0.0.1:6379(redisAsciiArt+0xc9)[0x431ac9]
./redis-server 127.0.0.1:6379(main+0x3c6)[0x4254f6]
/lib64/libc.so.6(__libc_start_main+0xf3)[0x7ff622b366a3]
./redis-server 127.0.0.1:6379(_start+0x2e)[0x42583e]
------ INFO OUTPUT ------
Segmentation fault (core dumped)
should s/USE_MEMKING/USE_MEMKIND ?
https://github.com/pmem/redis/blob/5.0-poc_cow/src/object.c#L517
libjemalloc should be linked from jemalloc, not memkind. This can cause some problems in statistics, stability etc.
src/Makefile:204
$(MEMKIND_PATH)/.libs/libmemkind.a $(MEMKIND_PATH)/jemalloc/obj/lib/libjemalloc.a
Investigate places, described by:
#144 (review)
#147 (review)
#147 (review)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.