2017-10-30 114 views
6

Robię porównania wydajności ScyllaDB i Cassandry, szczególnie patrząc na wpływ pamięci. Maszyny, z których korzystam, mają 16 GB i 8 rdzeni. Na podstawie dokumentów, Cassandra będzie domyślnie 4 GB Xmx i wykorzysta pozostałe 12 GB jako pamięć podręczną systemu plików. https://docs.datastax.com/en/cassandra/3.0/cassandra/operations/opsTuneJVM.html ScyllaDB zamiast tego użyje wszystkich 16 GB dla siebie.
http://docs.scylladb.com/faq/#scylla-is-using-all-of-my-memory-why-is-that-what-if-the-server-runs-out-of-memoryCassandra Vs ScyllaDB Wykorzystanie pamięci

Co Zastanawiam się, czy jest to sprawiedliwe porównanie setup (4GB Xmx dla Cassandry vs 16GB za Scyllą)? Zdaję sobie sprawę, że to jest to, co każdy poleca, ale czy bardziej sprawiedliwym testem będzie 8GB Xmx dla Cassandry i --memory 8G dla ScyllaDB? Moje obciążenie głównie wymaga pisania i nie oczekuję, że buforowanie systemu plików zawsze będzie w stanie pomóc Cassandrze. To dla mnie dziwne, że ScyllaDB nie oczekuje prawie żadnego buforowania systemu plików w porównaniu z ogromnym zaufaniem Cassandry.

+0

Użyj co najmniej 8 gb dla Cassandry lub w ogóle nie będzie dobrze działać. Nigdy bym nie polecał iść niżej. Najprawdopodobniej uzyskasz lepszy wynik ogólny z 12 lub 14 gb dłuższym terminem niż nadzieja na dobre wykorzystanie pamięci podręcznej systemu. 4gb będzie jednak strasznie działać. dokument, który połączyłeś zalecany 'max (min (1/2 ram, 1024MB), min (1/4 bar, 8GB)' który jest całkiem niezły (min 8 gb) –

+0

Dzięki. Z moich testów to robi dużą różnicę dla Cassandry odejścia od 4 GB Xmx do 8 GB Xmx (również przeniesiony Xmn z 1GB do 2GB) .Ustabilne tryby są ~ 33MB zamiast ~ 19MB, co zmniejsza kompresję i procesor, prawdopodobnie lepiej też zwiększyć pamięć RAM systemu, ale z tego, co widziałem, mam tendencję do zgadzają się, że lepsze wykorzystanie pamięci RAM na urządzeniu 16 GB jest bardziej w stercie, a nie w pamięci podręcznej systemu Jedno wyjaśnienie, jednak dla maszyny 16 GB, nie max (min (1/2 pamięci RAM, 1024 MB), min (1/4 ram, 8 GB) = maks. (1 GB, 4 GB) = 4 GB, nie 8 GB To właśnie ustawia, jeśli nie zastąpię ustawień domyślnych –

Odpowiedz

11

Scylla użyje ~ 1/2 pamięci dla MemTable, a druga połowa dla pamięci podręcznej Key/Partition. Jeśli twoja praca jest w większości zapisana, więcej pamięci będzie miało mniejszy wpływ na wydajność i powinno być ograniczone przez I/O lub CPU.

Polecam lekturę: http://www.scylladb.com/2017/10/05/io-access-methods-scylla/

Aby zrozumieć sposób Scylla zapisuje informacje. I http://www.scylladb.com/2016/12/15/sswc-part1/ Aby zrozumieć sposób Scylla jest równoważenie obciążenia I/O

+1

Dzięki! Oba odnośniki są bardzo pomocne.Nie zdawałem sobie sprawy, że nie było używanie celowej pamięci podręcznej plików systemowych. "W ScyllaDB omijamy cały system buforowania systemu operacyjnego (znany jako strona cach e) i napisz bezpośrednio na dysk za pomocą Direct I/O, dzięki czemu jesteśmy w doskonałej pozycji, aby dokładnie wiedzieć, z jaką szybkością każdy bufor jest przepłukiwany do rzeczywistej pamięci. " –

13

Cassandra zawsze używać wszystkich pamięci systemowej; ustawienie wielkości sterty (-Xmx) określa, ile jest zużywane przez stertę i ile innych odbiorców pamięci (struktury stosu i pamięć podręczna strony). Więc jeśli ograniczysz użycie pamięci Scylli, będzie to w gorszej sytuacji niż Cassandra.

+0

Dzięki! Na podstawie artykułów z gutkinde rozumiem dlaczego teraz. –