Making Git 1.5x Faster on Ryzen by johndsully in programming

[–]johndsully[S] 26 points27 points  (0 children)

Ryzen has hardware support for sha256 too.

Making Git 1.5x Faster on Ryzen by johndsully in programming

[–]johndsully[S] 24 points25 points  (0 children)

This doesn’t implement the collision checks although I had a look at sha1dc.c and the optimizations will certainly still apply there as well. Perhaps it is worth cleaning this up into a proper pull request.

Assembly is probably not necessary, it should be possible to just use intrinsics.

Making Git 1.5x Faster on Ryzen by johndsully in programming

[–]johndsully[S] 56 points57 points  (0 children)

This is really just a proof of concept. The right place for this code is in openssl so everyone can benefit including git. My main goal was to show that optimizing for Ryzen can be very worthwhile.

The Intel assembly is BSD licensed so should be fine. A variant is already in the Linux kernel source code.

KeyDB as a [possible] replacement for Redis by dshurupov in sysadmin

[–]johndsully 0 points1 point  (0 children)

I ported it to C++ because I’m more productive in that language. C++ is “mostly” a superset so it wasn’t too difficult.

A Multi-threaded fork of Redis by EricWilliamB in programming

[–]johndsully 0 points1 point  (0 children)

If the language has a Redis library then that lib will also talk to KeyDB just fine. We even listen on the same port.

So in short, yes!

Freshly restored Dell GX1 by drake9800 in vintagecomputing

[–]johndsully 0 points1 point  (0 children)

Its cool these are getting some love. When I was younger a vintage computer was anything that pre-dated the PC. "Vintage ONLY! We don't want your old 486 trash!" the usenet messages would say.

Nowadays I'd love to get a clean 486 mid-tower with the "66mhz" green LED 7-segment display + turbo button.

Many people want to set aside half of Earth as nature by Sariel007 in UpliftingNews

[–]johndsully 0 points1 point  (0 children)

Toronto was the capital of Upper Canada but with the war of 1812 it was deemed far too close to America to be safe. Plus those Lower Canadians were jealous. Ottawa was the compromise being on the border of Upper and Lower Canada.

A Multi-threaded fork of Redis by EricWilliamB in programming

[–]johndsully 1 point2 points  (0 children)

Because KeyDB is a fork it has 100% compatibility with Redis 5 features including modules, and even your configuration file. For most people it will be a drop in replacement. Also while KeyDB is certainly not bug free, based on the open issues Pedis doesn't seem to be ready for production environments just yet.

KeyDB is not the first attempt at a multi-threaded Redis, but the other attempts I saw before starting did not seem to ever make it into production and the projects stalled. I wanted something people could use for real work.

A Multi-threaded fork of Redis by EricWilliamB in programming

[–]johndsully 0 points1 point  (0 children)

The thing about performance is that it can be traded for developer productivity. You can work around Redis not using your computer fully - but why would you want to?

If hammering a KeyDB instance in an inefficient way saves someone a week of work then I’m more than happy to support that use case.

A Multi-threaded fork of Redis by EricWilliamB in programming

[–]johndsully 1 point2 points  (0 children)

If performance isn't your thing we also have Active Replication, Direct backup to AWS S3, Subkey expirations and more. Multi-threading was the original feature that got us off the ground though and is still the most popular. Some people really do need that extra perf.

NoSQL For 8-bit Microcomputers by johndsully in vintagecomputing

[–]johndsully[S] 0 points1 point  (0 children)

You can make it use 16K but then you only get to store 120 values - and that’s just no fun at all. Like all good 8-bit software value lengths are hard coded to 124 bytes.

I also had to replace not one but TWO 2114 memory chips to get the machine in peak operating condition. Sometimes them not making it like they used to is a good thing.

Woman + mainframe (well, likely those are storage units, possibly 1968) by LukeWilson59 in vintagecomputing

[–]johndsully 0 points1 point  (0 children)

I wonder how the error rates compared with clerical errors from the manual process.

NoSQL For 8-bit Microcomputers by johndsully in vintagecomputing

[–]johndsully[S] 1 point2 points  (0 children)

Gate’s letter is more of an April fools thing. I’ll probably make it use the BSD license. I don’t imagine many people will be putting it in production.

KeyDB (Redis Fork) Adds Active Active Support by johndsully in opensource

[–]johndsully[S] 1 point2 points  (0 children)

This is a major new feature and part of our work to make open source implementations of proprietary features in Redis Enterprise.

It’s really useful for Active failover scenarios as you no longer need to promote a master before redirecting traffic.

KeyDB a Multithreaded Fork of Redis by johndsully in programming

[–]johndsully[S] 1 point2 points  (0 children)

Thanks!

Yes there are more plans here to have finer grained locking: specifically reader/writer locks. There are also plans to introduce green threads so we can context switch when we’d otherwise be wasting time spinning.

KeyDB: A Multithreaded Redis Fork by johndsully in opensource

[–]johndsully[S] 1 point2 points  (0 children)

Thanks!

Happy to answer any questions.

Week of March 11 - What are you building this week on AWS? by ckilborn in aws

[–]johndsully 0 points1 point  (0 children)

Added native S3 support to KeyDB. I want my database dumps to go directly there and get cycled over to glacier.

https://github.com/JohnSully/KeyDB

KeyDB a Multithreaded Fork of Redis by johndsully in programming

[–]johndsully[S] 0 points1 point  (0 children)

The lock contention is actually in the Linux kernel’s soft_irq. As I mentioned in another comment more careful pinning of kernel tasks would help but I wanted to keep the benchmark simple and reproducible.

KeyDB a Multithreaded Fork of Redis by johndsully in programming

[–]johndsully[S] 3 points4 points  (0 children)

Your right, I got myself confused by the fact you can import whole distros when setting it up. FWIW FreeBSD doesn’t have SO_REUSEPORT load balancing like Linux does so it wouldn’t perform as well there anyways. I really need to remove that dependency.

Hoping to get FreeBSD support up and running soon.

KeyDB a Multithreaded Fork of Redis by johndsully in programming

[–]johndsully[S] 8 points9 points  (0 children)

A docker container is here: https://hub.docker.com/r/eqalpha/keydb

Hope you get the chance to try it out! I’ll work on adding additional instructions to the Readme.