Giter VIP home page Giter VIP logo

real-time-containers's People

Contributors

anandtodkar avatar flhofer avatar francescobleve avatar ianno avatar margaretharp avatar martinsehrsiemens avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

real-time-containers's Issues

Orchdata and Dockerlink tests fail with DEBUG=0

test/lib/orchdata.c:183:F:orchdata_memory:orchdata_ndpop3:0: Assertion '!p->psig' failed
make: *** [check] Error 1
test/lib/dockerlink.c:80:E:dockerlink_json:dockerlink_err_json:4: (after this point) Received signal 6 (Aborted)
test/lib/dockerlink.c:80:E:dockerlink_json:dockerlink_err_json:5: (after this point) Received signal 6 (Aborted)

FIFO scheduling with real-time monitoring

Use real-time execution data to predict periodicity (if available) of FIFO or RR based tasks, to better fit resources.

The estimated period has to be approximated to find a better fit as it usually features numbers in nanoseconds.

Orchestrator: Change `-k` management - removed PIDs

Negative PIDs in list may cause clash after all numbers are though (long running experiments)
Move negative PIDs to the end of the list and break at the first occurrence <0. However, I need a guard for the list to not get too big.

Orchestrator: Function to restore CPUs and settings at next startup after erroneous halt

if startup is stopped, the system might remain in a state where many CPUs are disabled and configuration is err. Fix with startup option to force configuration reset.

For example, here..

... Trying to push CPU's interrupts
... CPU7 off-line
... CPU6 off-line
... CPU5 off-line
... CPU4 off-line
... CPU3 off-line
... CPU2 off-line
... CPU1 off-line
... CPU1 online
... CPU2 online

If this phase is halted, the software assumes 2 CPUs only at next startup

Track I/O requests and throughout for scheduling

Gather information on I/O behavior of tasks to allow inferring on the rate of interruption and how instable a task may be.
These statistics should be updated in real-time and help to group tasks with similar behavior to different resources.

Fix PolenaRT install script

the download path of the patch is not correct for older patches, the reference config of the system should also be updated. Using 4.4.x

Add numa support to detect node architecture

actually this defines NUMA

	char * numastr = "0"; // default numa string
	if (-1 != numa_available()) {
		int numanodes = numa_max_node();
		if (!(numastr = malloc (5)))
			err_exit("could not allocate memory!");

		sprintf(numastr, "0-%d", numanodes);
	}
	else
		warn("Numa not enabled, defaulting to memory node '0'");

Extend to find NUMA nodes and corresponding association

fTrace switching detection

Improve monitoring resolution by changing to fTrace kernel monitoring.
fTrace functions are present but a parser is needed.

  • Implement fTrace setup and call
  • fTrace parsing of values
  • implementation of statistics
  • speed test and reliability comparison

Fix: thread creation, signalling and cancellation issues due to per process management

The number of threads gets high, so I might need to change the configuration of threads.

First:

  • cleanup sigaction and sigblock for all threads

  • simplify thread commands to 1-2 signals and volatile, atomic variables
    then:

  • consider pthread_cancel and pthread_cleanup for CPU monitoring threads

  • possible review libtracer for invocation hooks. Relates to #3.

  • review external/plugin relation for, e.g., dockerlink.

Add NUMA configuration options for setup and CGroups

Add NUMA options to the slice configuation, including memory sizes and limits

  • NUMA as Cpu assignments
  • Memory allocation management in configuration
  • Memory limit settings per slice
  • JSON setting tests and validations

Fix R script parsing

Apply some performance fixes such as comment.char = "#", fore read.table to avoid further processing

Automation - CI/CD

Implement automatic build and deploy with actions

  • integrate dependencies in repo/build script (downloads)
  • create CI pipeline for build and test
  • create AWS instance with use case and orchestrator
  • test access to AWS instance/ ssh keys?
  • create test run scripts
  • deploy binaries automatically with actions

depends on #14

Review graphs and prints for better readability

To ease graph readability, recheck the following points for data evaluation

  • Data overlapping and comparison. Merged worker results should be summed not an overlapped print
  • Add feature to script to rework all test result directories
  • Add frame latency results to stats.csv output for both test batches
  • Test and implement overlapping graphs, to better represent a group of results in one view
  • Check for Tikz output from R data for vector scalability in PDF
  • Review bug messages of script

Depends on #18

Parser for usecase output

Write a parser to display the performance data of the use cases. Preferably in R, sh, or python

Printing formats have been revised, and use cases are now ready for review on bm

  • create parser for UC1 (event - FIFO)
  • create parser for UC2 (poll - DL)
  • create parser for data generator
  • create parser for data distributor
  • implement newest test parsing only -> print to STDOUT
  • implement combined metric print / out

Test: reorganize tests in modules and includes

Reorganize test modules so to avoid duplicate namespaces.

  • create header files and connect them into a suite
  • create includes for common functions, such as config load
  • update makescript to build all c functions to .o automatically

Functions for :- Automatic extension of CGroup Slice

Implement functions to change CPU/MEM assignments of slice automatically so to be able to claim or release resources dynamically when needed, changing the burden to the system
No best effort influence this way

Can not create threads in user mode

Can not create threads if no sudo is used. Thread creation fails with error EAGAIN

ERROR: could not start update thread: Resource temporarily unavailable
ERROR: could not start management thread: Resource temporarily unavailable

Unify structures of Pid, Container and Images with union

Combine as follows for a single memory structure, avoiding casts

	typedef struct c_parm {
		struct c_parm *next; 
		char *id;  // matching signatures -> Psing, Image or container IDs
		struct sched_attr *attr;// standard Linux PID attributes
		struct sched_rscs *rscs;// additional resource settings 
		union {
			struct c_parm  *cont;// pointer to the container settings, PID
			struct cs_parm  *pids;// linked list pointing to the pids, Container and Image	
		}
		union {
			struct c_parm   *img; // pointer to the image settings. PID and Container
			struct cs_parm *conts;// linked list pointing to the containers, Image
		}
	} cparm_t;

	typedef struct cs_parm {
		struct cs_parm *next; // list to next entry
		struct c_parm *parm; // matching entry
	} csparm_t;

Docker containers - Fix permission requirements

Try to setup scripts and configuration to be able to run most of the tests and simulations in user level. CAP - SYS_NICE fore a process, how to give that to a container without being root all the script? sudo?

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.