Giter Site home page Giter Site logo

platformlab / ramcloud Goto Github PK

View Code? Open in Web Editor NEW
481.0 52.0 140.0 13.67 MB

**No Longer Maintained** Official RAMCloud repo

Home Page: https://ramcloud.atlassian.net/wiki/spaces/RAM/overview

License: Other

Makefile 0.24% Shell 0.31% C++ 84.40% Java 1.47% Python 7.14% Lua 0.27% Perl 0.03% C 5.91% Gnuplot 0.05% R 0.18%
low-latency key-value storage dram fault-tolerance

ramcloud's Introduction

RAMCloud

Build Status

For up to date information on how to install and use RAMCloud, see the RAMCloud Wiki: https://ramcloud.atlassian.net/wiki/spaces/RAM/overview

What is RAMCloud?

note: the following is an excerpt copied from the RAMCloud wiki on 1/22/16.

RAMCloud is a new class of super-high-speed storage for large-scale datacenter applications. It is designed for applications in which a large number of servers in a datacenter need low-latency access to a large durable datastore. RAMCloud offers the following properties:

  • Low Latency: RAMCloud keeps all data in DRAM at all times, so applications can read RAMCloud objects remotely over a datacenter network in as little as 5μs. Writes take less than 15μs. Unlike systems such as memcached, applications never have to deal with cache misses or wait for disk/flash accesses. As a result, RAMCloud storage is 10-1000x faster than other available alternatives.
  • Large scale: RAMCloud aggregates the DRAM of thousands of servers to support total capacities of 1PB or more.
  • Durability: RAMCloud replicates all data on nonvolatile secondary storage such as disk or flash, so no data is lost if servers crash or the power fails. One of RAMCloud's unique features is that it recovers very quickly from server crashes (only 1-2 seconds) so the availability gaps after crashes are almost unnoticeable. As a result, RAMCloud combines the durability of replicated disk with the speed of DRAM. If you have used memcached, you have probably experienced the challenges of managing a second durable storage system and maintaining consistency between it and memcached. With RAMCloud, there is no need for a second storage system.
  • Powerful data model: RAMCloud's basic data model is a key-value store, but we have extended it with several additional features, such as:
    • Multiple tables, each with its own key space.
    • Transactional updates that span multiple objects in different tables.
    • Secondary indices.
    • Strong consistency: unlike other NoSQL storage systems, all updates in RAMCloud are consistent, immediately visible, and durable.
  • Easy deployment: RAMCloud is a software package that runs on commodity Intel servers with the Linux operating system. RAMCloud is available freely in open source form.

From a practical standpoint, RAMCloud enables a new class of applications that manipulate large data sets very intensively. Using RAMCloud, an application can combine tens of thousands of items of data in real time to provide instantaneous responses to user requests. Unlike traditional databases, RAMCloud scales to support very large applications, while still providing a high level of consistency. We believe that RAMCloud, or something like it, will become the primary storage system for structured data in cloud computing environments such as Amazon's AWS or Microsoft's Azure. We have built the system not as a research prototype, but as a production-quality software system, suitable for use by real applications.

RAMCloud is also interesting from a research standpoint. Its two most important attributes are latency and scale. The first goal is to provide the lowest possible end-to-end latency for applications accessing the system from within the same datacenter. We currently achieve latencies of around 5μs for reads and 15μs for writes, but hope to improve these in the future. In addition, the system must scale, since no single machine can store enough DRAM to meet the needs of large-scale applications. We have designed RAMCloud to support at least 10,000 storage servers; the system must automatically manage all the information across the servers, so that clients do not need to deal with any distributed systems issues. The combination of latency and scale has created a large number of interesting research issues, such as how to ensure data durability without sacrificing the latency of reads and writes, how to take advantage of the scale of the system to recover very quickly after crashes, how to manage storage in DRAM, and how to provide higher-level features such as secondary indexes and multiple-object transactions without sacrificing the latency or scalability of the system. Our solutions to these problems are described in a series of technical papers.

The RAMCloud project is based in the Department of Computer Science at Stanford University.

Learn More about RAMCloud

https://ramcloud.atlassian.net/wiki/spaces/RAM/overview

ramcloud's People

Contributors

adam-jensen avatar amordkov avatar anirajk avatar ankitak avatar asafcidon avatar ashgup avatar behnamm avatar cstlee avatar elliottslaughter avatar flexfl avatar greghill avatar jblomer avatar jdellithorpe avatar johnousterhout avatar jspeiser avatar junghans avatar junkumar avatar mashtizadeh avatar ofermania avatar ongardie avatar penguintoast avatar rstutsman avatar seojinpark avatar steverumble avatar syang0 avatar tgockel avatar tinnefeld avatar waldyrious avatar yilongli avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ramcloud's Issues

Running RamCloud client with java

hi all,
i have a running RamCloud instance on one node,
im trying to start a java client that can read and write data, i've been following these instructions to build and run the java client.
but when running sudo ./gradlew run -Plocator=build/install/ramcloud/bin/ramcloud
i get the following error

Exception in thread "main" java.lang.UnsatisfiedLinkError: /tmp/libramcloud_java759421568980880719.so: libramcloud.so: cannot open shared object file: No such file or directory
        at java.lang.ClassLoader$NativeLibrary.load(Native Method)
        at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1941)
        at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1824)
        at java.lang.Runtime.load0(Runtime.java:809)
        at java.lang.System.load(System.java:1086)
        at cz.adamh.utils.NativeUtils.loadLibraryFromJar(NativeUtils.java:116)
        at edu.stanford.ramcloud.Util.loadLibrary(Util.java:47)
        at edu.stanford.ramcloud.TestClient.<clinit>(TestClient.java:32)
:run FAILED

FAILURE: Build failed with an exception.

i tried running with the debug option and running ./runclient.sh i basically get the same output.
seems like it's looking for a ramcloud library file, but maybe it's looking in the wrong place ?
any one had this before ?
thanks.
Mheni.

RAMCloud depends on boost

When RAMCloud first started, many of the c++11 and beyond features weren't fully mature, so we took a dependence on the Boost libraries.

If anyone is interested in RAMCloud development, removing the use of Boost across the source would be a wonderful contribution.

some puzzles on RAMCloud setup

Hi. I compile RAMCloud and it's ok. When make install, there're some files generated in install folder. In bin folder, there're 3 executables files:

root@install (master *)$ ls bin
client  coordinator  ensureServers  server

What is ensureServers for ? I refer to https://ramcloud.atlassian.net/wiki/spaces/RAM/pages/6848532/Setting+Up+a+RAMCloud+Cluster, but part of docs seems obsolete and cannot find anything about ensureServers.

I want to make a local cluster, but still don't know how to pass parameter. Could you tell how to setup service locator, how to pass parameter to binaries server/client/coordinator ?

the file hierarchy in src folder is confusing

Before creating this issue, I took a look at Peter Miller's paper mentioned in GNUmakefile. However, since it's written in 1998, is it still a better way today ? I mean, there're many powerful tools which can conveviently handle the c/c++ building process such as cmake, ninja, scons ? Why isn't RAMCloud using one of them now ? As far as I know, mongo uses scons, scylladb uses ninja, mysql uses cmake.

One big problem of placing many source files in one location is that people are easily confused with which source files contribute to which exectutables. It's not managable I think.

If a patch is created which refactors the dependency files of server , client , and coordinator and placing them into seperate folders, would it be acceptable ?

Linking issues for TestClient

I'm trying to compile TestClient as explained in the documentation, but I keep getting linking issues and I think maybe I am missing something.

For compiling RamCloud I used make -j12 and make install.

ramdb@ramdb:~/RAMCloud$ g++ -std=c++11 -Linstall/lib/ramcloud -lramcloud -Iinstall/include -o TestClient src/TestClient.cc 
/tmp/ccBWeMEh.o: In function `main':
TestClient.cc:(.text+0x77): undefined reference to `RAMCloud::RamCloud::RamCloud(char const*, char const*)'
TestClient.cc:(.text+0x90): undefined reference to `RAMCloud::RamCloud::createTable(char const*, unsigned int)'
TestClient.cc:(.text+0xcd): undefined reference to `RAMCloud::RamCloud::write(unsigned long, void const*, unsigned short, void const*, unsigned int, RAMCloud::RejectRules const*, unsigned long*, bool)'
TestClient.cc:(.text+0x13e): undefined reference to `RAMCloud::RamCloud::write(unsigned long, void const*, unsigned short, void const*, unsigned int, RAMCloud::RejectRules const*, unsigned long*, bool)'
TestClient.cc:(.text+0x151): undefined reference to `RAMCloud::Buffer::Buffer()'
TestClient.cc:(.text+0x185): undefined reference to `RAMCloud::RamCloud::read(unsigned long, void const*, unsigned short, RAMCloud::Buffer*, RAMCloud::RejectRules const*, unsigned long*, bool*)'
TestClient.cc:(.text+0x1bd): undefined reference to `RAMCloud::RamCloud::read(unsigned long, void const*, unsigned short, RAMCloud::Buffer*, RAMCloud::RejectRules const*, unsigned long*, bool*)'
TestClient.cc:(.text+0x1d5): undefined reference to `RAMCloud::RamCloud::dropTable(char const*)'
TestClient.cc:(.text+0x1e9): undefined reference to `RAMCloud::Buffer::~Buffer()'
TestClient.cc:(.text+0x1f8): undefined reference to `RAMCloud::RamCloud::~RamCloud()'
TestClient.cc:(.text+0x227): undefined reference to `RAMCloud::Buffer::~Buffer()'
TestClient.cc:(.text+0x23e): undefined reference to `RAMCloud::RamCloud::~RamCloud()'
TestClient.cc:(.text+0x2d0): undefined reference to `RAMCloud::ClientException::str() const'
/tmp/ccBWeMEh.o: In function `RAMCloud::CodeLocation::str() const':
TestClient.cc:(.text._ZNK8RAMCloud12CodeLocation3strEv[_ZNK8RAMCloud12CodeLocation3strEv]+0x38): undefined reference to `RAMCloud::CodeLocation::relativeFile() const'
TestClient.cc:(.text._ZNK8RAMCloud12CodeLocation3strEv[_ZNK8RAMCloud12CodeLocation3strEv]+0x5a): undefined reference to `RAMCloud::CodeLocation::qualifiedFunction() const'
TestClient.cc:(.text._ZNK8RAMCloud12CodeLocation3strEv[_ZNK8RAMCloud12CodeLocation3strEv]+0x85): undefined reference to `RAMCloud::format(char const*, ...)'
/tmp/ccBWeMEh.o: In function `RAMCloud::Exception::str() const':
TestClient.cc:(.text._ZNK8RAMCloud9Exception3strEv[_ZNK8RAMCloud9Exception3strEv]+0x63): undefined reference to `RAMCloud::demangle(char const*)'
/tmp/ccBWeMEh.o:(.gcc_except_table+0x40): undefined reference to `typeinfo for RAMCloud::ClientException'
collect2: error: ld returned 1 exit status

I also checked that symbols are there and I don't see any issue.. For example here is the output of nm for createTable

ramdb@ramdb:~/RAMCloud/install/bin$ nm ../lib/ramcloud/libramcloud.so | grep createTable
00000000002689b0 T rc_createTable
00000000002ce072 T _ZN8RAMCloud8RamCloud11createTableEPKcj
0000000000386940 r _ZZ14rc_createTableE19__PRETTY_FUNCTION__
0000000000386903 r _ZZ14rc_createTableE8__func__

Python version for ramcloud bindings

Hello everyone,

I'm using ramcloud bindings for python and i'm facing a problem. The ramcloud bindings are available only for python2. Is there a way to use it for python3 scripts ?

Cordially,

Error while lauching RAMCloud coordinator

Hello everyone, i'm working on 3 vmwares with ubuntu 19

After successfully install and launch zookeeper server and compile RAMCloud, when i type this command:

$ obj.master/coordinator -C tcp:host=192.168.242.132,port=11100 -x zk:192.168.242.132:2181

I'm getting some errors that i don't found anywhere on the internet:
image

The full error message is given below:

1583402719.815531678 CoordinatorMain.cc:96 in main NOTICE[1]: Command line: obj.master/coordinator -C tcp:host=192.168.242.132,port=11100 -x zk:192.168.242.132:2181
1583402719.815557674 CoordinatorMain.cc:97 in main NOTICE[1]: Coordinator process id: 96996
1583402719.815882562 Common.cc:221 in pinAllMemory WARNING[1]: Could not lock all memory pages (Cannot allocate memory), so the OS might swap memory later. Check your user's "ulimit -l" and adjust /etc/security/limits.conf as necessary.
2020-03-05 02:05:19,816:96996(0x7fb48c4fa940):ZOO_INFO@log_env@753: Client environment:zookeeper.version=zookeeper C client 3.4.13
2020-03-05 02:05:19,816:96996(0x7fb48c4fa940):ZOO_INFO@log_env@757: Client environment:host.name=ubuntu
2020-03-05 02:05:19,816:96996(0x7fb48c4fa940):ZOO_INFO@log_env@764: Client environment:os.name=Linux
2020-03-05 02:05:19,816:96996(0x7fb48c4fa940):ZOO_INFO@log_env@765: Client environment:os.arch=5.0.0-38-generic
2020-03-05 02:05:19,816:96996(0x7fb48c4fa940):ZOO_INFO@log_env@766: Client environment:os.version=#41-Ubuntu SMP Tue Dec 3 00:27:35 UTC 2019
2020-03-05 02:05:19,816:96996(0x7fb48c4fa940):ZOO_INFO@log_env@774: Client environment:user.name=openwhisk
2020-03-05 02:05:19,816:96996(0x7fb48c4fa940):ZOO_INFO@log_env@782: Client environment:user.home=/home/openwhisk
2020-03-05 02:05:19,816:96996(0x7fb48c4fa940):ZOO_INFO@log_env@794: Client environment:user.dir=/home/openwhisk/zookeeper/zookeeper-3.4.14/RAMCloud
2020-03-05 02:05:19,816:96996(0x7fb48c4fa940):ZOO_INFO@zookeeper_init@827: Initiating client connection, host=192.168.242.132:2181 sessionTimeout=1000000 watcher=(nil) sessionId=0 sessionPasswd=<null> context=(nil) flags=0
2020-03-05 02:05:19,816:96996(0x7fb47b7fe700):ZOO_INFO@check_events@1764: initiated connection to server [192.168.242.132:2181]
1583402719.816080256 CoordinatorMain.cc:108 in main NOTICE[1]: coordinator: Listening on tcp:host=192.168.242.132,port=11100
1583402719.816093491 CoordinatorMain.cc:111 in main NOTICE[1]: PortTimeOut=-1
1583402719.816094770 PortAlarm.cc:160 in setPortTimeout NOTICE[1]: Set PortTimeout to -1 (ms: -1 to disable.)
2020-03-05 02:05:19,820:96996(0x7fb47b7fe700):ZOO_INFO@check_events@1811: session establishment complete on server [192.168.242.132:2181], sessionId=0x100000348d70008, negotiated timeout=40000
1583402719.826794885 ZooStorage.cc:586 in open NOTICE[1]: ZooKeeper connection opened with 192.168.242.132:2181
1583402719.826818342 CoordinatorMain.cc:137 in main NOTICE[1]: Cluster name is 'main', external storage workspace is '/ramcloud/main/'
1583402720.828659856 ZooStorage.cc:465 in checkLeader NOTICE[1]: Became leader with version 22214 (old leader info was "tcp:host=192.168.242.132,port=11100")
1583402720.828983189 CoordinatorClusterClock.cc:162 in recoverClusterTime NOTICE[1]: initializing CoordinatorClusterClock: startingClusterTime = 11241027889137
1583402720.829227930 MemoryMonitor.cc:62 in handleTimerEvent NOTICE[8]: Memory usage now 13 MB (increased 13 MB)
1583402722.180326417 CoordinatorClusterClock.cc:62 in getTime WARNING[9]: Returning stale time. SafeTimeUpdater may be running behind.
1583402722.189681209 CoordinatorUpdateManager.cc:89 in init NOTICE[9]: initializing CoordinatorUpdateManager: lastFinished = 38990, firstAvailable = 39991
1583402722.192923193 CoordinatorServerList.cc:294 in recover NOTICE[9]: Recreated server 1.2 at tcp:host=openwhisk-invoker0,port=1101 with services MASTER_SERVICE, BACKUP_SERVICE, ADMIN_SERVICE, status UP
1583402722.195621594 CoordinatorServerList.cc:341 in recover NOTICE[9]: Rescheduling update for server 1.2, version 7, updateSequence 39991, status UP
1583402722.199104499 CoordinatorServerList.cc:396 in recover NOTICE[9]: CoordinatorServerList recovery completed: 1 master(s), 1 backup(s), 1 update(s) to disseminate, server list version is 7
1583402722.199851563 TableManager.cc:710 in recover NOTICE[9]: initializing TableManager: nextTableId = 2
1583402722.202509248 TableManager.cc:1588 in recreateTable NOTICE[9]: Recovered tablet 0x0-0xffffffffffffffff for table 'Trap' (id 2) on server 1.1
1583402722.202613351 TableManager.cc:763 in recover NOTICE[9]: Table recovery complete: 1 table(s)
1583402722.205592393 CoordinatorService.cc:111 in init NOTICE[9]: Coordinator state has been recovered from external storage; starting service
1583402722.213451968 CoordinatorServerList.cc:1098 in updateLoop ERROR[10]: Fatal error in CoordinatorServerList: RAMCloud::IpAddress::BadIpAddressException: Service locator 'tcp:host=openwhisk-invoker0,port=1101' couldn't be converted to IP address: couldn't find host 'openwhisk-invoker0', thrown at IpAddress at src/IpAddress.cc:64
1583402722.217098363 Logger.cc:911 in terminateHandler ERROR[10]: Backtrace:
1583402722.217112611 Logger.cc:911 in terminateHandler ERROR[10]: obj.master/coordinator(_ZN8RAMCloud6Logger12logBacktraceENS_9LogModuleENS_8LogLevelERKNS_12CodeLocationE+0x41) [0x55d834dadea1]
1583402722.217113853 Logger.cc:911 in terminateHandler ERROR[10]: obj.master/coordinator(+0x43e1e1) [0x55d834daf1e1]
1583402722.217114327 Logger.cc:911 in terminateHandler ERROR[10]: /lib/x86_64-linux-gnu/libstdc++.so.6(+0xa52b6) [0x7fb48ca2a2b6]
1583402722.217114727 Logger.cc:911 in terminateHandler ERROR[10]: /lib/x86_64-linux-gnu/libstdc++.so.6(+0xa5301) [0x7fb48ca2a301]
1583402722.217115116 Logger.cc:911 in terminateHandler ERROR[10]: /lib/x86_64-linux-gnu/libstdc++.so.6(__cxa_rethrow+0x49) [0x7fb48ca2a589]
1583402722.217115533 Logger.cc:911 in terminateHandler ERROR[10]: obj.master/coordinator(_ZN8RAMCloud21CoordinatorServerList10updateLoopEv+0x1c2) [0x55d834cb07da]
1583402722.217115982 Logger.cc:911 in terminateHandler ERROR[10]: obj.master/coordinator(_ZSt13__invoke_implIvMN8RAMCloud21CoordinatorServerListEFvvEPS1_JEET_St21__invoke_memfun_derefOT0_OT1_DpOT2_+0x66) [0x55d834cbb9c1]
1583402722.217116435 Logger.cc:911 in terminateHandler ERROR[10]: obj.master/coordinator(_ZSt8__invokeIMN8RAMCloud21CoordinatorServerListEFvvEJPS1_EENSt15__invoke_resultIT_JDpT0_EE4typeEOS6_DpOS7_+0x46) [0x55d834cb906a]
1583402722.217116884 Logger.cc:911 in terminateHandler ERROR[10]: obj.master/coordinator(_ZNSt6thread8_InvokerISt5tupleIJMN8RAMCloud21CoordinatorServerListEFvvEPS3_EEE9_M_invokeIJLm0ELm1EEEEDTcl8__invokespcl10_S_declvalIXT_EEEEESt12_Index_tupleIJXspT_EEE+0x43) [0x55d834cc021b]
1583402722.217117414 Logger.cc:911 in terminateHandler ERROR[10]: obj.master/coordinator(_ZNSt6thread8_InvokerISt5tupleIJMN8RAMCloud21CoordinatorServerListEFvvEPS3_EEEclEv+0x27) [0x55d834cc01c1]
1583402722.217117835 Logger.cc:911 in terminateHandler ERROR[10]: obj.master/coordinator(_ZNSt6thread11_State_implINS_8_InvokerISt5tupleIJMN8RAMCloud21CoordinatorServerListEFvvEPS4_EEAborted (core dumped)

I'm working on an urgent project. so if you can help me it will be kind

Questions on setting up RAMCloud server and client

Dear authors,

Thanks for the great work!
I can successfully start the coordinator using ./obj.master/coordinator -C tcp:host=`hostname -s`,port=11100.
However, I met issues when I tried to set up servers according to this document: https://ramcloud.atlassian.net/wiki/spaces/RAM/pages/6848532/Setting+Up+a+RAMCloud+Cluster.
When I use cmd sudo obj.master/server -L tcp:host=`hostname -s`,port=1101 --totalMasterMemory 16000 -f /dev/sda4 --segmentFrames 10000 -r 2 to start the server, it will continue reporting the below message. I am not sure whether there is something wrong.

1641665740.053968046 TransportManager.cc:503 in openSessionInternal WARNING[8]: No supported transport found for locator fast+udp:host=0.0.0.0,port=12246

Also, I don't know how to start a client based on this page: https://ramcloud.atlassian.net/wiki/spaces/RAM/pages/6848542/Creating+a+RAMCloud+Client.
When I just run ./apps/client, it reports the same warning message

1641666078.938049402 TransportManager.cc:503 in openSessionInternal WARNING[1]: No supported transport found for locator fast+udp:host=0.0.0.0,port=12246

I also don't know how to connect a server to the coordinator or connect a client to the server/coordinator.

Could you give some hints/instructions on these questions? Thanks a lot!

fatal error: boost/foreach.hpp: No such file or directory

i am trying to use RamCloud on Centos,
i've followed the instructions here
https://ramcloud.atlassian.net/wiki/spaces/RAM/pages/6848614/General+Information+for+Developers
and installed all the dependencies.

but when making the project i get the following error :

/home/mheni/RAMCloud/src/TransportManager.h:19:29: fatal error: boost/foreach.hpp: No such file or directory
#include <boost/foreach.hpp>

and this is in multiple files ( they are importing a file that does not exist )

any ideas ?

storage node : deadline exceeded

hey all.
i am running Ramcloud on only one node (zookeeper+coordinator+storage)
I'm following these instructions to set up RamCloud.

  1. i have started zookeeper server : sudo zookeeper-server start
    • and got this :
JMX enabled by default
Using config: /etc/zookeeper/conf/zoo.cfg
Starting zookeeper ... STARTED
  1. started the coordinator : ./coordinator -C basic+udp:host=localhost,port=11100 -x zk:localhost:2181
    • and i got this out put :
1519598438.915735579 CoordinatorMain.cc:96 in main NOTICE[1]: Command line: ./coordinator -C basic+udp:host=localhost,port=11100 -x zk:localhost:2181
1519598438.915770554 CoordinatorMain.cc:97 in main NOTICE[1]: Coordinator process id: 11541
1519598438.916377156 Common.cc:224 in pinAllMemory WARNING[1]: Could not lock all memory pages (Cannot allocate memory), so the OS might swap memory later. Check your user's "ulimit -l" and adjust /etc/security/limits.conf as necessary.
1519598438.916684853 UdpDriver.cc:86 in UdpDriver NOTICE[1]: UdpDriver bandwidth: 10 Gbits/sec, maxTransmitQueueSize: 2800 bytes
1519598438.919391285 UdpDriver.cc:123 in UdpDriver NOTICE[1]: Locator for UdpDriver: udp:host=localhost,port=11100
1519598438.919724415 BasicTransport.cc:126 in BasicTransport NOTICE[1]: BasicTransport parameters: maxDataPerPacket 1370, roundTripBytes 10960, grantIncrement 6850, pingIntervals 3, timeoutIntervals 40, timerInterval 2.00 ms
1519598438.919748807 CoordinatorMain.cc:108 in main NOTICE[1]: coordinator: Listening on basic+udp:host=localhost,port=11100
1519598438.919753112 CoordinatorMain.cc:111 in main NOTICE[1]: PortTimeOut=-1
1519598438.919755352 PortAlarm.cc:160 in setPortTimeout NOTICE[1]: Set PortTimeout to -1 (ms: -1 to disable.)
2018-02-25 17:40:38,919:11541(0x7f02e0607a40):ZOO_INFO@log_env@712: Client environment:zookeeper.version=zookeeper C client 3.4.5
2018-02-25 17:40:38,919:11541(0x7f02e0607a40):ZOO_INFO@log_env@716: Client environment:host.name=localhost.localdomain
2018-02-25 17:40:38,919:11541(0x7f02e0607a40):ZOO_INFO@log_env@723: Client environment:os.name=Linux
2018-02-25 17:40:38,919:11541(0x7f02e0607a40):ZOO_INFO@log_env@724: Client environment:os.arch=3.10.0-693.el7.x86_64
2018-02-25 17:40:38,919:11541(0x7f02e0607a40):ZOO_INFO@log_env@725: Client environment:os.version=#1 SMP Tue Aug 22 21:09:27 UTC 2017
2018-02-25 17:40:38,920:11541(0x7f02e0607a40):ZOO_INFO@log_env@733: Client environment:user.name=antd
2018-02-25 17:40:38,920:11541(0x7f02e0607a40):ZOO_INFO@log_env@741: Client environment:user.home=/home/antd
2018-02-25 17:40:38,920:11541(0x7f02e0607a40):ZOO_INFO@log_env@753: Client environment:user.dir=/home/antd/RAMCloud/obj.master
2018-02-25 17:40:38,920:11541(0x7f02e0607a40):ZOO_INFO@zookeeper_init@786: Initiating client connection, host=localhost:2181 sessionTimeout=1000000 watcher=(nil) sessionId=0 sessionPasswd=<null> context=(nil) flags=0
2018-02-25 17:40:38,922:11541(0x7f02cb7fe700):ZOO_INFO@check_events@1703: initiated connection to server [127.0.0.1:2181]
2018-02-25 17:40:38,994:11541(0x7f02cb7fe700):ZOO_INFO@check_events@1750: session establishment complete on server [127.0.0.1:2181], sessionId=0x161cee556da0001, negotiated timeout=40000
1519598439.001675026 ZooStorage.cc:586 in open NOTICE[1]: ZooKeeper connection opened with localhost:2181
1519598439.001698336 CoordinatorMain.cc:138 in main NOTICE[1]: Cluster name is 'main', external storage workspace is '/ramcloud/main/'
1519598440.016996021 ZooStorage.cc:465 in checkLeader NOTICE[1]: Became leader with version 623 (old leader info was "basic+udp:host=localhost,port=11100")
1519598440.017623434 CoordinatorClusterClock.cc:164 in recoverClusterTime NOTICE[1]: initializing CoordinatorClusterClock: startingClusterTime = 321099646459
1519598440.018034857 MemoryMonitor.cc:62 in handleTimerEvent NOTICE[8]: Memory usage now 10 MB (increased 10 MB)
1519598440.142775911 CoordinatorClusterClock.cc:62 in getTime WARNING[9]: Returning stale time. SafeTimeUpdater may be running behind.
1519598440.146859445 CoordinatorUpdateManager.cc:84 in init NOTICE[9]: initializing CoordinatorUpdateManager: lastFinished = 0, firstAvailable = 1000
1519598440.147054515 CoordinatorServerList.cc:401 in recover NOTICE[9]: CoordinatorServerList recovery completed: 0 master(s), 0 backup(s), 0 update(s) to disseminate, server list version is 0
1519598440.147314948 TableManager.cc:763 in recover NOTICE[9]: Table recovery complete: 0 table(s)
1519598440.157004352 CoordinatorService.cc:112 in init NOTICE[9]: Coordinator state has been recovered from external storage; starting service
1519598714.642223486 CoordinatorServerList.cc:148 in enlistServer NOTICE[7]: Enlisting server at basic+udp:host=localhost,port=1101 (server id 1.0) supporting services: MASTER_SERVICE, BACKUP_SERVICE, ADMIN_SERVICE
1519598714.642223486 CoordinatorClusterClock.cc:62 in getTime WARNING[9]: (999 duplicates of this message were skipped) Returning stale time. SafeTimeUpdater may be running behind.
  1. I started the storage server : sudo ./server -L basic+udp:host=localhost,port=1101 -x zk:localhost:2181 --totalMasterMemory 16000 -f /dev/sdb1 --segmentFrames 10000 -r 2
    • and got this output :
1519598625.828585169 ServerMain.cc:256 in main NOTICE[1]: Command line: ./server -L basic+udp:host=localhost,port=1101 -x zk:localhost:2181 --totalMasterMemory 16000 -f /dev/sdb1 --segmentFrames 10000 -r 2
1519598625.828612945 ServerMain.cc:257 in main NOTICE[1]: Server process id: 11762
1519598625.828960405 UdpDriver.cc:86 in UdpDriver NOTICE[1]: UdpDriver bandwidth: 10 Gbits/sec, maxTransmitQueueSize: 2800 bytes
1519598625.829383334 UdpDriver.cc:123 in UdpDriver NOTICE[1]: Locator for UdpDriver: udp:host=localhost,port=1101
1519598625.829464540 BasicTransport.cc:126 in BasicTransport NOTICE[1]: BasicTransport parameters: maxDataPerPacket 1370, roundTripBytes 10960, grantIncrement 6850, pingIntervals 3, timeoutIntervals 40, timerInterval 2.00 ms
1519598625.829516428 ServerMain.cc:289 in main NOTICE[1]: MASTER_SERVICE, BACKUP_SERVICE, ADMIN_SERVICE: Listening on basic+udp:host=localhost,port=1101
2018-02-25 17:43:45,829:11762(0x7f9254018a40):ZOO_INFO@log_env@712: Client environment:zookeeper.version=zookeeper C client 3.4.5
2018-02-25 17:43:45,829:11762(0x7f9254018a40):ZOO_INFO@log_env@716: Client environment:host.name=localhost.localdomain
2018-02-25 17:43:45,829:11762(0x7f9254018a40):ZOO_INFO@log_env@723: Client environment:os.name=Linux
2018-02-25 17:43:45,829:11762(0x7f9254018a40):ZOO_INFO@log_env@724: Client environment:os.arch=3.10.0-693.el7.x86_64
2018-02-25 17:43:45,829:11762(0x7f9254018a40):ZOO_INFO@log_env@725: Client environment:os.version=#1 SMP Tue Aug 22 21:09:27 UTC 2017
2018-02-25 17:43:45,829:11762(0x7f9254018a40):ZOO_INFO@log_env@733: Client environment:user.name=antd
2018-02-25 17:43:45,829:11762(0x7f9254018a40):ZOO_INFO@log_env@741: Client environment:user.home=/root
2018-02-25 17:43:45,829:11762(0x7f9254018a40):ZOO_INFO@log_env@753: Client environment:user.dir=/home/antd/RAMCloud/obj.master
2018-02-25 17:43:45,829:11762(0x7f9254018a40):ZOO_INFO@zookeeper_init@786: Initiating client connection, host=localhost:2181 sessionTimeout=1000000 watcher=(nil) sessionId=0 sessionPasswd=<null> context=(nil) flags=0
2018-02-25 17:43:45,830:11762(0x7f924e723700):ZOO_INFO@check_events@1703: initiated connection to server [::1:2181]
2018-02-25 17:43:45,837:11762(0x7f924e723700):ZOO_INFO@check_events@1750: session establishment complete on server [::1:2181], sessionId=0x161cee556da0004, negotiated timeout=40000
1519598625.840272026 ZooStorage.cc:586 in open NOTICE[1]: ZooKeeper connection opened with localhost:2181
1519598625.841115182 ServerMain.cc:329 in main NOTICE[1]: Using 2 backups
1519598625.841131845 ServerConfig.h:581 in setLogAndHashTableSize NOTICE[1]: Master to allocate 16777216000 bytes total, 1677721600 of which are for the hash table
1519598625.841135867 ServerConfig.h:583 in setLogAndHashTableSize NOTICE[1]: Master will have 1800 segments and 26214400 lines in the hash table
1519598625.841138836 ServerConfig.h:587 in setLogAndHashTableSize NOTICE[1]: Hash table will have one entry for every 72 bytes in the log
1519598625.841140916 ServerMain.cc:334 in main NOTICE[1]: PortTimeOut=-1
1519598625.841142961 PortAlarm.cc:160 in setPortTimeout NOTICE[1]: Set PortTimeout to -1 (ms: -1 to disable.)
2018-02-25 17:43:45,841:11762(0x7f9254018a40):ZOO_INFO@zookeeper_close@2509: Closing zookeeper sessionId=0x161cee556da0004 to [::1:2181]

1519598625.841570440 ZooStorage.cc:490 in close NOTICE[1]: ZooKeeper connection closed
2018-02-25 17:43:45,841:11762(0x7f9254018a40):ZOO_INFO@log_env@712: Client environment:zookeeper.version=zookeeper C client 3.4.5
2018-02-25 17:43:45,841:11762(0x7f9254018a40):ZOO_INFO@log_env@716: Client environment:host.name=localhost.localdomain
2018-02-25 17:43:45,841:11762(0x7f9254018a40):ZOO_INFO@log_env@723: Client environment:os.name=Linux
2018-02-25 17:43:45,841:11762(0x7f9254018a40):ZOO_INFO@log_env@724: Client environment:os.arch=3.10.0-693.el7.x86_64
2018-02-25 17:43:45,841:11762(0x7f9254018a40):ZOO_INFO@log_env@725: Client environment:os.version=#1 SMP Tue Aug 22 21:09:27 UTC 2017
2018-02-25 17:43:45,841:11762(0x7f9254018a40):ZOO_INFO@log_env@733: Client environment:user.name=antd
2018-02-25 17:43:45,841:11762(0x7f9254018a40):ZOO_INFO@log_env@741: Client environment:user.home=/root
2018-02-25 17:43:45,841:11762(0x7f9254018a40):ZOO_INFO@log_env@753: Client environment:user.dir=/home/antd/RAMCloud/obj.master
2018-02-25 17:43:45,841:11762(0x7f9254018a40):ZOO_INFO@zookeeper_init@786: Initiating client connection, host=localhost:2181 sessionTimeout=1000000 watcher=(nil) sessionId=0 sessionPasswd=<null> context=(nil) flags=0
2018-02-25 17:43:45,842:11762(0x7f924df22700):ZOO_INFO@check_events@1703: initiated connection to server [127.0.0.1:2181]
2018-02-25 17:43:45,854:11762(0x7f924df22700):ZOO_INFO@check_events@1750: session establishment complete on server [127.0.0.1:2181], sessionId=0x161cee556da0005, negotiated timeout=40000
1519598625.862219779 ZooStorage.cc:586 in open NOTICE[1]: ZooKeeper connection opened with localhost:2181
1519598625.862993831 Server.cc:86 in run NOTICE[1]: Starting services
1519598625.863010000 Server.cc:150 in createAndRegisterServices NOTICE[1]: Master is using 2 backups
1519598625.915364162 SegletAllocator.cc:162 in initializeEmergencyHeadReserve NOTICE[1]: Reserved 256 seglets for emergency head segments (16 MB). 230144 seglets (14384 MB) left in default pool.
1519598625.916520605 SegletAllocator.cc:197 in initializeCleanerReserve NOTICE[1]: Reserved 1920 seglets for the cleaner (120 MB). 228224 seglets (14264 MB) left in default pool.
1519598625.916552771 LogCleaner.cc:806 in TombstoneRatioBalancer NOTICE[1]: Using tombstone ratio balancer with ratio = 0.400000
1519598625.917733848 Server.cc:155 in createAndRegisterServices NOTICE[1]: Starting backup service
1519598625.930213724 MultiFileStorage.cc:1021 in MultiFileStorage NOTICE[1]: Backup storage opened with 83886080000 bytes available; allocated 10000 frame(s) across 1 file(s) with 8388608 bytes per frame
1519598627.668025145 BackupStorage.cc:68 in benchmark NOTICE[1]: Backup storage speeds (min): 20 MB/s read
1519598627.668032601 BackupStorage.cc:69 in benchmark NOTICE[1]: Backup storage speeds (avg): 84 MB/s read,
1519598627.668034102 BackupStorage.cc:75 in benchmark NOTICE[1]: RANDOM_REFINE_AVG BackupStrategy selected
1519598627.685774135 MultiFileStorage.cc:1514 in tryLoadSuperblock NOTICE[1]: Stored superblock had a bad checksum: stored checksum was 0, but stored data had checksum 88a5c087
1519598627.686369074 MultiFileStorage.cc:1514 in tryLoadSuperblock NOTICE[1]: Stored superblock had a bad checksum: stored checksum was 0, but stored data had checksum 7562ad4e
1519598627.686378598 MultiFileStorage.cc:1300 in loadSuperblock WARNING[1]: Backup couldn't find existing superblock; starting as fresh backup.
1519598627.686399698 BackupService.cc:96 in BackupService NOTICE[1]: Backup storing replicas with clusterName 'main'. Future backups must be restarted with the same clusterName for replicas stored on this backup to be reused.
1519598627.686408247 BackupService.cc:111 in BackupService NOTICE[1]: Replicas stored on disk have a different clusterName ('__unnamed__'). Scribbling storage to ensure any stale replicas left behind by old backups aren't used by future backups
2018-02-25 17:43:59,188:11762(0x7f924df22700):ZOO_WARN@zookeeper_interest@1557: Exceeded deadline by 13ms
2018-02-25 17:44:12,535:11762(0x7f924df22700):ZOO_WARN@zookeeper_interest@1557: Exceeded deadline by 13ms
2018-02-25 17:44:25,882:11762(0x7f924df22700):ZOO_WARN@zookeeper_interest@1557: Exceeded deadline by 13ms
2018-02-25 17:44:39,228:11762(0x7f924df22700):ZOO_WARN@zookeeper_interest@1557: Exceeded deadline by 13ms
2018-02-25 17:44:52,575:11762(0x7f924df22700):ZOO_WARN@zookeeper_interest@1557: Exceeded deadline by 13ms
2018-02-25 17:45:05,922:11762(0x7f924df22700):ZOO_WARN@zookeeper_interest@1557: Exceeded deadline by 13ms
1519598708.602906658 Server.cc:159 in createAndRegisterServices NOTICE[1]: Backup service started
1519598708.602931611 Server.cc:88 in run NOTICE[1]: Services started
1519598708.602935184 Server.cc:93 in run NOTICE[1]: Pinning memory
1519598714.640267292 Server.cc:95 in run NOTICE[1]: Memory pinned
1519598714.640412232 MemoryMonitor.cc:62 in handleTimerEvent NOTICE[8]: Memory usage now 16600 MB (increased 16600 MB)
1519598714.640424792 Server.cc:192 in enlist NOTICE[8]: Enlisting with cooordinator
1519598714.641249617 CoordinatorSession.cc:105 in getSession NOTICE[8]: Opened session with coordinator at basic+udp:host=localhost,port=11100
1519598714.686751763 Server.cc:199 in enlist NOTICE[8]: Enlisted; serverId 1.0
1519598714.686759212 MasterService.cc:823 in initOnceEnlisted NOTICE[8]: My server ID is 1.0
1519598714.689723789 ServerList.cc:188 in applyServerList NOTICE[7]: Server 1.0 is up (server list version 1)
1519598714.691048272 BackupService.cc:323 in initOnceEnlisted NOTICE[8]: My server ID is 1.0
1519598714.691089085 LogCleaner.cc:199 in cleanerThreadEntry NOTICE[9]: LogCleaner thread started
1519598714.741413013 BackupService.cc:330 in initOnceEnlisted NOTICE[8]: Backup 1.0 will store replicas under cluster name 'main'
1519598714.743965936 FailureDetector.cc:104 in detectorThreadEntry NOTICE[10]: Failure detector thread started
2018-02-25 17:45:27,987:11762(0x7f924df22700):ZOO_WARN@zookeeper_interest@1557: Exceeded deadline by 13ms
2018-02-25 17:45:41,334:11762(0x7f924df22700):ZOO_WARN@zookeeper_interest@1557: Exceeded deadline by 13ms
2018-02-25 17:45:54,680:11762(0x7f924df22700):ZOO_WARN@zookeeper_interest@1557: Exceeded deadline by 13ms
2018-02-25 17:46:08,027:11762(0x7f924df22700):ZOO_WARN@zookeeper_interest@1557: Exceeded deadline by 13ms

My problem is that it keeps printing that last line exceeded deadline by 13 ms and i'm not sure what that means.
is it running correctly and waiting for read and write requests, or is something off ?
any hints are appreciated.
thank you.
Mheni

Compilation Error: Undefined reference to protobuf

Hy all,
i am trying to install RamCloud on Ubuntu Release:18.04 and when i try to sudo make -j20 i get the following protobuf error

...
/home/antd/RAMCloud/obj.master/TableConfig.pb.cc:1222: undefined reference to `google::protobuf::internal::ArenaStringPtr::AssignWithDefault(std::string const*, google::protobuf::internal::ArenaStringPtr)'
/home/antd/RAMCloud/obj.master/TableConfig.pb.cc:1229: undefined reference to `google::protobuf::internal::ArenaStringPtr::AssignWithDefault(std::string const*, google::protobuf::internal::ArenaStringPtr)'
obj.master/TableConfig.pb.o:(.data.rel.ro._ZTVN8RAMCloud8ProtoBuf11TableConfigE[_ZTVN8RAMCloud8ProtoBuf11TableConfigE]+0x20): undefined reference to `google::protobuf::Message::GetTypeName() const'
obj.master/TableConfig.pb.o:(.data.rel.ro._ZTVN8RAMCloud8ProtoBuf11TableConfigE[_ZTVN8RAMCloud8ProtoBuf11TableConfigE]+0x58): undefined reference to `google::protobuf::Message::InitializationErrorString() const'
obj.master/TableConfig.pb.o:(.data.rel.ro._ZTVN8RAMCloud8ProtoBuf17TableConfig_IndexE[_ZTVN8RAMCloud8ProtoBuf17TableConfig_IndexE]+0x20): undefined reference to `google::protobuf::Message::GetTypeName() const'
obj.master/TableConfig.pb.o:(.data.rel.ro._ZTVN8RAMCloud8ProtoBuf17TableConfig_IndexE[_ZTVN8RAMCloud8ProtoBuf17TableConfig_IndexE]+0x58): undefined reference to `google::protobuf::Message::InitializationErrorString() const'
obj.master/TableConfig.pb.o:(.data.rel.ro._ZTVN8RAMCloud8ProtoBuf26TableConfig_Index_IndexletE[_ZTVN8RAMCloud8ProtoBuf26TableConfig_Index_IndexletE]+0x20): undefined reference to `google::protobuf::Message::GetTypeName() const'
obj.master/TableConfig.pb.o:(.data.rel.ro._ZTVN8RAMCloud8ProtoBuf26TableConfig_Index_IndexletE[_ZTVN8RAMCloud8ProtoBuf26TableConfig_Index_IndexletE]+0x58): undefined reference to `google::protobuf::Message::InitializationErrorString() const'
obj.master/TableConfig.pb.o:(.data.rel.ro._ZTVN8RAMCloud8ProtoBuf18TableConfig_TabletE[_ZTVN8RAMCloud8ProtoBuf18TableConfig_TabletE]+0x20): undefined reference to `google::protobuf::Message::GetTypeName() const'
obj.master/TableConfig.pb.o:(.data.rel.ro._ZTVN8RAMCloud8ProtoBuf18TableConfig_TabletE[_ZTVN8RAMCloud8ProtoBuf18TableConfig_TabletE]+0x58): undefined reference to `google::protobuf::Message::InitializationErrorString() const'
obj.master/CoordinatorMain.o: In function `main':
/home/antd/RAMCloud/src/CoordinatorMain.cc:58: undefined reference to `boost::program_options::options_description::options_description(std::string const&, unsigned int, unsigned int)'
collect2: error: ld returned 1 exit status
src/MakefragCoordinator:26: recipe for target 'obj.master/coordinator' failed
make: *** [obj.master/coordinator] Error 1

this is my environment

  • Kernel version uname -a ==> 4.15.0-22-generic
  • Protobuf version protoc --version ==> libprotoc 3.0.0
  • gcc version gcc --version ==> gcc (Ubuntu 7.3.0-16ubuntu3) 7.3.0
  • protobuf location
    • ls /usr/include/google/ ==> protobuf protobuf-c
    • ls /usr/include/google/protobuf ==> give the all header files
...
any.h                  empty.pb.h                      map_field_lite.h      stubs
any.pb.h               empty.proto                     map.h                 text_format.h
any.proto              extension_set.h                 map_type_handler.h    timestamp.pb.h
api.pb.h               field_mask.pb.h                 message.h             timestamp.proto
api.proto              field_mask.proto                message_lite.h        type.pb.h
arena.h                generated_enum_reflection.h     metadata.h            type.proto
arenastring.h          generated_enum_util.h           reflection.h          unknown_field_set.h

i'm not sure what's the problem, is RamCloud linking to a different location ? do i have a bad version ?
any help is appreciated thank you.
Mheni

Using Python Binding

Hi all,

I tried to deploy RAMCloud, and I believe I have started a coordinator and a master on a single machine successfully. However, I have some issue using Python binding.

At coordinator:
obj.master/coordinator -C tcp:host=hostname -s,port=11000 -x zk:127.0.0.1:2181
image

At master:
obj.master/server -L tcp:host=hostname -s,port=11001 -x zk:127.0.0.1:2181 --totalMasterMemory 16000 -f /dev/sda1 --segmentFrames 100 -r 0
image

Also, I have the following env variables:
export LD_LIBRARY_PATH=~/RAMCloud/obj.master/
export PYTHONPATH=~/RAMCloud/bindings/python/

However, at a Python terminal, when I run the fourth line of the script at https://ramcloud.atlassian.net/wiki/spaces/RAM/pages/6848598/Python+Bindings, it gives me the error below, and it won't stop.

image

Any help on this issue? Did I setup RAMCloud successfully?

Also, when I check top, the server and coordinator always take up 100% CPU each, why is that?

image

Another question, does RAMCloud has a shell interpreter, like Cassandra and Redis?

Best wishes,
Roger

Any progress or testing version for numVClients?

Hi RAMCloud developers,

I'm curious if you have a testing version for the client parameter numVClients which specifies the number of virtual clients each physical client should simulate. This parameter is extremely useful when the number of available machines is limited.

trouble when starting the coordinator

hy all,
i have finally built Ramcloud on Centos without any errors using make -j12 following this tutorial
the output does not show any errors, but it doesn't say successfully built either. you can find the output file here
object files and executable were created in the obj.master folder as expected.
My problem now is how to start using RamCloud, i'm following the instructions here
this is what i have done so far :

  1. starting zookeeper
    • initialize zookeeper : sudo zookeeper-server-initialize --force
    • and this is the output i get :
Force enabled, data/txnlog directories will be re-initialized
No myid provided, be sure to specify it in /var/lib/zookeeper/myid if using non-standalone
  • Start the zookeeper server : sudo zookeeper-server start
  • output :
JMX enabled by default
Using config: /etc/zookeeper/conf/zoo.cfg
Starting zookeeper ... STARTED
  1. starting the coordinator
    • obj.master/coordinator -C infrc:host=hostname -s,port=11100 -x zk:127.0.0.1:2181
    • i get this error
1518711218.867120094 CoordinatorMain.cc:154 in main ERROR[1]: Fatal error in coordinator at ???: character conversion failed

i keep getting this error even when i try a simple ./coordinator --help
any help ?
thank you.
Mheni.

Request for (Very) High Level Status on Two Features + Memory

As RAMCloud has evolved over time, where did this code REPO land with respect to these features:

  • Linearizability: I'm not seeing any references to RIFL in code here. And in an early (great) paper, it was pointed out the early architecture didn't quite do full linearizability. Is linearizability in this code base?

  • Durability: An early RAMCloud paper writes "RAMCloud currently assumes that servers can continue operating for a short period after an impending power failure is detected so that buffered data can be flushed to secondary storage." Therefore RAMCloud actually doesn't do full durability unless () there's battery backup for the server rack or per server () and/or the data that would be written to disk is first staged to NVM then to disk. Is this where things still stand?

  • Memory: Are there any known memory leaks in this code?

Much appreciated.

protobuf related errors while building RAMcloud

i am trtying to get RAMcloud up and running on Centos.
and after dealing with some dependency problems, that you can check here https://github.com/PlatformLab/RAMCloud/issues/11
i have encoutered a protobuf related error that looks like this :

/home/antd/RAMCloud/obj.master/ServerList.pb.h:618:20: error: base class ‘struct google::protobuf::internal::integral_constant<bool, true>’ has a non-virtual destructor [-Werror=effc++]
template <> struct is_proto_enum< ::RAMCloud::ProtoBuf::ServerList_Type> : ::google::protobuf::internal::true_type {};

any one had this ?

Request for (Very) High Level Status on RAMCloud v. RAFT

Hi,

I am trying to get up to speed with distributed systems focusing on linearizable KV stores for which RAMCloud is exemplar particularly for my own application needs. However, I am little lost on the following very high level feature sets.

RAFT demonstrates a single-leader consensus system for finite-state-machines. So if one was to implement RAFT as part of a KV all-in-DRAM store, one high level consequence is that the total storage capacity would be limited to a single server, and just as importantly, all client requests would have to be directed to the current leader. The leader could conceivably become I/O or CPU bound if otherwise operational. In section 6 of Ongaro's RAFT paper he touches on this and linearizability noting that LogCabin does not support read-only requests on followers. However, he does discuss stratagems for reading on replicas but no client writes are entertained. So linearizability, if it reasonably includes writes, cannot be implemented in RAFT whereby the client is free to interact with any server in the RAFT cluster.

While RAMCloud uses RAFT via LogCabin as a consensus system and log replication implementation, I gather that RAMCloud supercede all these limitations. Indeed, from you paper:

"For a single coordinator to manage a large cluster without becoming a performance bottleneck, it must not be involved in high-frequency operations such as those that read and write RAMCloud objects. Each client library maintains a cache of configuration information for recently accessed tables, which allows it to identify the appropriate server for a read or write request without involving the coordinator."

And it's in this way that RAMCloud is able to claim linearizability e.g. to treat the reading and writing of a value of a key by making the total storage of all servers appear like a CPU register running on a single-core i.e. atomic changes with a recency guarantee. As just explained, client requests are redirected to a single server where the client operation (read, write, increment, CAS) are done in a linearizable manner. Thus linearizability is in effect regardless of where the client request came
because it depends on key partitioning sort-of, kind-of reducing to RAFT.

This clarification is important because it deals with potential confusion on consistency: there is no eventual consistency in RAMCloud ... it's linearizable and thus always consistent.

With this in mind a RAMCloud cluster could still become I/O or CPU bound if the keys are not well distributed and many client requests are parked on the same server as with the RAFT implementation.

Is this more or less how things work? Are there more conceptual gaps between RAFT and RAMCloud insofar as the overall system promises it implements?

Regards

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.