ut-osa / nightcore Goto Github PK
View Code? Open in Web Editor NEWNightcore: Efficient and Scalable Serverless Computing for Latency-Sensitive, Interactive Microservices [ASPLOS '21]
License: Apache License 2.0
Nightcore: Efficient and Scalable Serverless Computing for Latency-Sensitive, Interactive Microservices [ASPLOS '21]
License: Apache License 2.0
Hi!
I've been trying to execute simple functions with nightcore
. To that end, I followed the installation instructions, and I modified the example of a function to even a simpler one:
int faas_func_call(void* worker_handle, const char* input, size_t input_length) {
struct worker_context* context = (struct worker_context*)worker_handle;
context->append_output_fn(context->caller_context, input, input_length);
return 0;
}
[
{ "funcName": "Foo", "funcId": 1, "minWorkers": 1, "maxWorkers": 1 }
]
When deploying the controller and engine on one server, and using curl to send POST requests from another server, I measure latencies around ~100ms. The TCP/IP RTT between both machines is ~12us. When I increase the size of input JSON, the RTT quickly increases to over a second for an invocation on a 1 kB message. On the same cluster of machines, we've been able to deploy OpenWhisk and execute functions with a 1 kB payload with a latency of around ~100ms.
Is there are any other way to invoke nightcore functions that don't involve such high latencies? Is there a potential problem in our deployment that might cause such high latencies? Is there documentation on optimizing deployments?
Encountering the following error when running ./build_deps.sh
on Ubuntu 20.04. Any idea how I can get past this error?
CMake Error: The source directory "/home/<username>/nightcore/deps/abseil-cpp" does not appear to contain CMakeLists.txt.
Specify --help for usage, or press the help button on the CMake GUI.
make: *** No rule to make target 'clean'. Stop.
CMake Error: The source directory "/home/<username>/nightcore/deps/libuv" does not appear to contain CMakeLists.txt.
Specify --help for usage, or press the help button on the CMake GUI.
CMake Error: The source directory "/home/<username>/nightcore/deps/nghttp2" does not appear to contain CMakeLists.txt.
Specify --help for usage, or press the help button on the CMake GUI.
Hi, when I'm building nightcore, some compiling problems happen. So which version g++ should I use to compiling it? Thanks
Hi!
I'm trying to find out how to deploy a larger C++ function with several dependencies (shared libraries) with nightcore. The example demonstrates a single file compiled to a shared library. Similarly, Python examples demonstrate how a single Python function should be run.
How should Docker containers be deployed with nightcore? Looking at the paper, it seems that's the default way of deploying a function. It's unclear to us how the container should be built, and how the service should be launched?
I have 4 machines each with 12 CPU cores and 64GB RAM. I deploy the Nightcore gateway on one of them and on each of the other three, I deploy an instance of the engine and a launcher for a hello-world function.
I have 3 other machines which act as clients and invoke the hello-world function by sending http POST requests to the gateway. The segfault occurs only when there are a large number of client threads (10 or 14 client threads on each client machine). What happens is that in the middle of the experiment, the gateway returns the following error in the log:
When I first encountered the problem, the segfault happened at uv__count_bufs
but in my latest attempt to produce the error I got the following message from gdb:
Thread 3 "gateway" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7ffff7228700 (LWP 275299)]
__GI___libc_free (mem=0xffffffff00000000) at malloc.c:3102
and in the tail of the log, there was this message:
3102 malloc.c: No such file or directory.
Any ideas as to what causes this problem and how to resolve it?
Some more info that might be useful: When I deploy the engine and launcher on only 2 other machines (instead of 3), then this error does not show up regardless of the number of client threads I use to stress the system. The minWorkers and maxWorkers config parameters for the function are 20 and 80 respectively.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.