Snapchat / KeyDB

A Multithreaded Fork of Redis
https://keydb.dev
BSD 3-Clause "New" or "Revised" License
11.02k stars 564 forks source link

Async flash #781

Open JohnSully opened 5 months ago

keithchew commented 3 months ago

Hi @JohnSully

I have started testing this branch with fastsync enabled, up to your latest commit:

https://github.com/Snapchat/KeyDB/pull/781/commits/f886fce2d138084dfeeabc0d77338e844ea9e1d5

Just a few observations, please ignore if there are irrelevant as I understand this branch is still work in progress:

Transfer speed is very slow

On master, I see these in the logs:

7:71:M 06 Apr 2024 03:48:12.584 * Starting fast full sync with target: disk
7:59:M 06 Apr 2024 03:49:24.193 * Replication status: Transferred 105MB (0.01Gbit/s)
NOTICE: Detuning locks due to high load per core: 93.62%
7:59:M 06 Apr 2024 03:50:35.126 * Replication status: Transferred 129MB (0.00Gbit/s)
NOTICE: Detuning locks due to high load per core: 91.63%
...

With RDB, the size is 4GB and completes pretty quick, so likely something is not quite configured correctly on my instance.

Loading flag

Is it possible to set the loading flag after the replica flushes the data? For RDB, when the loading flag is set, the replica will reject commands during loading so the client can handle this condition, without the loading flag the client will think the incomplete data is correct and handles this case differently.