Giter Club home page Giter Club logo

redis's Issues

Building failure with MEMKIND

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

Segmentation fault when starting redis server with non existent path to pmfile

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

can't pass compilation with the latest pmdk

[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’:

bitfield unit tests failed

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

Why does SET operation have slower performance than GET on redis-benchmark?

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.
2018-02-07 12 56 43

I execute redis-benchmark for pmem/redis. Then I could see that SET operation has worse performance than GET operation.
2018-02-07 1 03 18

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.
2018-02-07 1 18 51

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, ...)

Crash consistency bug in 3.2-nvml

redis/src/server.c

Lines 4015 to 4019 in 4e622e7

if (server.pm_pool == NULL) {
/* Open the existing PMEM pool file. */
server.pm_pool = pmemobj_open(server.pm_file_path, PM_LAYOUT_NAME);
server.pm_rootoid = POBJ_ROOT(server.pm_pool, struct redis_pmem_root);
server.pm_reconstruct_required = true;

  • If the pool is corrupted or is otherwise unopenable, pmemobj_open(...) will return NULL, causing a SEGFAULT during initialization (i.e., at POBJ_ROOT).

redis-nvml with multithreading I/O support

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!

Issue when using only PMEMs

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)

Redis-server is linked twice with memkind jemalloc

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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.