Giter Site home page Giter Site logo

ubc-cirrus-lab / unfaasener Goto Github PK

View Code? Open in Web Editor NEW
25.0 0.0 5.0 142.59 MB

A lightweight framework that enables serverless users to reduce their bills by harvesting non-serverless compute resources such as their VMs, on-premise servers, or personal computers.

License: Apache License 2.0

Python 52.25% C++ 4.06% Shell 0.85% Dockerfile 0.24% Julia 1.24% Jupyter Notebook 41.35%
serverless offloading cloud google-cloud-function offloading-framework faas dag-scheduling pubsub serverless-workflow task-offloading

unfaasener's Introduction

unfaasener's People

Contributors

azxyxza avatar dependabot[bot] avatar engshahrad avatar ghazalsdn avatar joehattori avatar mfouadga avatar mfouadga2 avatar mohamed-elsakhawy avatar mohannashahrad avatar pjavanrood 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

unfaasener's Issues

Error in vmModule (when having invocation rate of greater than 1)

Traceback (most recent call last):

File "/home/ghazal/.local/lib/python3.10/site-packages/docker/api/client.py", line 268, in _raise_for_status

response.raise_for_status()

File "/home/ghazal/.local/lib/python3.10/site-packages/requests/models.py", line 1021, in raise_for_status

raise HTTPError(http_error_msg, response=self)

requests.exceptions.HTTPError: 500 Server Error: Internal Server Error for url: http+docker://localhost/v1.41/exec/31e0cc791ad6c49458f8186917ffc52c0f21ac104a1e1d3053a431b11742ee28/start

The above exception was the direct cause of the following exception:

Traceback (most recent call last):

File "/home/ghazal/de-serverlessization/vm-agent/execution-agent/vmModule.py", line 263, in

streaming_pull_future.result()

File "/usr/lib/python3.10/concurrent/futures/_base.py", line 439, in result

return self.__get_result()

File "/usr/lib/python3.10/concurrent/futures/_base.py", line 391, in __get_result

raise self._exception

File "/home/ghazal/de-serverlessization/vm-agent/execution-agent/vmModule.py", line 259, in

streaming_pull_future.result()

File "/usr/lib/python3.10/concurrent/futures/_base.py", line 446, in result

return self.__get_result()

File "/usr/lib/python3.10/concurrent/futures/_base.py", line 391, in __get_result

raise self._exception

File "/home/ghazal/.local/lib/python3.10/site-packages/google/cloud/pubsub_v1/subscriber/_protocol/streaming_pull_manager.py", line 126, in _wrap_callback_errors

callback(message)

File "/home/ghazal/de-serverlessization/vm-agent/execution-agent/vmModule.py", line 205, in callback

cont.exec_run("python3 /app/main.py '"+  str(jsonfile).replace('\'','"') + "' " + reqID,detach=False )

File "/home/ghazal/.local/lib/python3.10/site-packages/docker/models/containers.py", line 198, in exec_run

exec_output = self.client.api.exec_start(

File "/home/ghazal/.local/lib/python3.10/site-packages/docker/utils/decorators.py", line 19, in wrapped

return f(self, resource_id, *args, **kwargs)

File "/home/ghazal/.local/lib/python3.10/site-packages/docker/api/exec_api.py", line 167, in exec_start

return self._read_from_socket(res, stream, tty=tty, demux=demux)

File "/home/ghazal/.local/lib/python3.10/site-packages/docker/api/client.py", line 409, in _read_from_socket

socket = self._get_raw_response_socket(response)

File "/home/ghazal/.local/lib/python3.10/site-packages/docker/api/client.py", line 318, in _get_raw_response_socket

self._raise_for_status(response)

File "/home/ghazal/.local/lib/python3.10/site-packages/docker/api/client.py", line 270, in _raise_for_status

raise create_api_error_from_http_exception(e) from e

File "/home/ghazal/.local/lib/python3.10/site-packages/docker/errors.py", line 39, in create_api_error_from_http_exception

raise cls(e, response=response, explanation=explanation) from e

docker.errors.APIError: 500 Server Error for http+docker://localhost/v1.41/exec/31e0cc791ad6c49458f8186917ffc52c0f21ac104a1e1d3053a431b11742ee28/start: Internal Server Error ("Container 8957a6657d56082b51d2c51968472492824111eb48d644ddd00ff157e9137d19 is not running: Exited (137) Less than a second ago")

Excluding offloaded functions resource usage from monitoring/prediction

From the solver's viewpoint, available resources on VMs includes anything that is not used by host's original workload. In this design, 1) the resources used by offloaded serverless functions should not be counted by the monitoring/prediction agent, and 2) offloaded serverless functions should be capped to not use more resources than what is predicted to be available. I think our current implementation violates this model. Creating this issue for us to think about this more carefully and to fix it.

Exploring docker SDK

Exploring whether docker SDK would be faster/more efficient that the syscalls

Porting the benchmarks to Google Cloud Workflows

@mohannashahrad has volunteered to port our benchmarks to Google Cloud Workflows. She should have access to the necessary cloud resources.

@mohannashahrad please use this issue to provide updates on this front in the coming weeks. This is not on our critical path and you can take your time. If you run into problems about the benchmarks you can let myself or @GhazalSdn know.

Thanks for your help.

Modify the serverless logging parser

  • Include the last n observations
  • Store the observations in a proper datastore
  • Keep the timestamp for the last observation, and be able to append new logs to the previously stored logs

Exec time buffer

A buffer needed to keep the record of recent execution times on the VM side before they are submitted. The submission will be taken care of by #11

Readme for Benchmarks

We need to add a README.md file under benchmarks. This README should include a table with each benchmark application in a row and should have the following columns:

  • Application name
  • Brief explanation of the application
  • A diagram showing the function dependency graph (workflow)
  • Language of the application
  • Link to the original source (if this is an application developed by others)

Error in the middle of test for vmModule

At some point after executing the tests, I got this error for the vmModule, but after that it was working.

Exception in thread Thread-2 (threaded_function):

Traceback (most recent call last):

File "/usr/lib/python3.10/threading.py", line 1009, in _bootstrap_inner

self.run()

File "/usr/lib/python3.10/threading.py", line 946, in run

self._target(*self._args, **self._kwargs)

File "/home/ghazal/de-serverlessization/vm-agent/execution-agent/vmModule.py", line 81, in threaded_function

for key in lastexectimestamps:

RuntimeError: dictionary changed size during iteration

Multi-VM support

  • Reporting available resources (instead of writing to local file)
  • Leader election for VM hosting the scheduler
  • Triggering the solver (scheduler) on remote VM

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.