Commit graph

228 commits

Author SHA1 Message Date
Bhargavi Hanumant Alandikar
3543960689 Elektron Logging library (#16)
switch to logrus for logging.

replaced old logging library with a wrapper around logrus.
We now just need to use the exported Log(...) and Logf(...) from the logging/
package that wraps around a set of loggers constituting a chain (following COR).
Loggers are configured using a YAML file that specifies the following.
1. enabled/disabled
2. whether the message should be logged on console.
3. filename extension.
4. minimum log level.

Retrofitted source code to now use the updated logging library.
Updated the documentation with information regarding the specification
of the log config file.

Currently, the log format in the config file is not adhered to. This is going to be
addressed in a future commit.
2019-12-09 20:15:33 -05:00
PRADYUMNA KAUSHIK
e3caa90c31
Refactor imports, Add vendor/ as submodule (#5)
refact imports to github.xxx. update go.mod + go.sum

* removed vendor/ folder

* Added vendor/ submodule.

Moved dependencies that need to be vendored into separate repository.
	- https://github.com/spdfg/elektron-vendor
Added vendor/ as a submodule using the below command.
	- git submodule add https://github.com/spdfg/elektron-vendor vendor
If wanting to use vendor, run the following commands after cloning
elektron.
1. git submodule init
2. git submodule update

* added instructions to clone vendor/ submodule.

* updated module to spdfg. Refactored imports
2019-10-31 14:32:46 -04:00
Pradyumna Kaushik
cfbb2f4bdd Fix: create log dir after validating cmdline args.
Initialization of the logger happens after all the command-line
arguments are validated. So, in case any of the command-line
arguments were invalid, the log directory is not created.
Retrofitted the driver code and the scheduler builder to only use
the language provided 'log' package as elektron's logger will not
yet be initialized.
2018-11-08 20:07:06 -05:00
Renan DelValle
291f4f3979
Adding GPLv3 Licensing. 2018-10-06 20:03:14 -07:00
Pradyumna Kaushik
4637355721 Reorganized code.
Building the scheduler in phases. To be able to do this, increased
visibility of schedulers/helpers.go#schedulerOptions.
Refactored dependent code.
2018-10-04 19:27:13 -04:00
Pradyumna Kaushik
8e87bcb439 Fixed import alias prefix.
Changed the prefix to import aliases to be 'elek' instead of 'elec'.
2018-10-04 13:45:31 -04:00
Renan DelValle
9554bf2666
Runing goimports on project as well as fixing README so that headers render correctly. 2018-09-30 18:23:38 -07:00
Renan DelValle
45f9efa578
Changing imports from bitbucket to gitlab. 2018-09-30 17:56:14 -07:00
Pradyumna Kaushik
1437979223 fixed import. 2018-09-23 19:28:06 -04:00
Pradyumna Kaushik
66c19b53c9 Merged in differentSwitchingMechanisms (pull request #14)
DifferentSwitchingMechanisms

Approved-by: Akash Kothawale <akothaw1@binghamton.edu>
2018-09-23 19:21:52 -04:00
Pradyumna Kaushik
1bee742588 fixed import. 2018-09-23 19:19:16 -04:00
Pradyumna Kaushik
8b27f5547d Merged in fixSchedWindowSize (pull request #13)
FixSchedWindowSize

Approved-by: Akash Kothawale <akothaw1@binghamton.edu>
2018-09-23 19:18:50 -04:00
Pradyumna Kaushik
f1c6adb05b Merged in measureClassificationOverhead (pull request #12)
MeasureClassificationOverhead

Approved-by: Akash Kothawale <akothaw1@binghamton.edu>
2018-09-23 19:18:30 -04:00
Pradyumna Kaushik
ae81125110 Merged in mapTaskDistrToSchedPolWhenSwitching (pull request #11)
MapTaskDistrToSchedPolWhenSwitching

Approved-by: Akash Kothawale <akothaw1@binghamton.edu>
2018-09-23 19:18:07 -04:00
Pradyumna Kaushik
0f305ab796 Merged in updateRunningOnTaskRunningStatus (pull request #9)
critical: baseScheduler#Running wasn't getting update properly.

Approved-by: Akash Kothawale <akothaw1@binghamton.edu>
2018-09-23 19:12:50 -04:00
Pradyumna Kaushik
b877d31cb8 Merged in schedPolSwitchConfigFile (pull request #8)
SchedPolSwitchConfigFile

Approved-by: Akash Kothawale <akothaw1@binghamton.edu>
2018-09-23 19:10:23 -04:00
Pradyumna Kaushik
b569bd3060 Merged in schedPolSwitchLogging-revert (pull request #7)
adding back the call to base#LogSchedPolicySwitch(...). Had removed this addition by mistake when resolving merge conflicts.

Approved-by: Akash Kothawale <akothaw1@binghamton.edu>
Approved-by: Pradyumna Kaushik <pkaushi1@binghamton.edu>
2018-09-23 19:07:44 -04:00
Pradyumna Kaushik
85383da550 Merged in scheduleOnlySchedWindowTasks (pull request #6)
ScheduleOnlySchedWindowTasks

Approved-by: Akash Kothawale <akothaw1@binghamton.edu>
2018-09-23 19:07:22 -04:00
Pradyumna Kaushik
25bf363d2c Merged in tasksToScheduleWindow (pull request #5)
TasksToScheduleWindow

Approved-by: Akash Kothawale <akothaw1@binghamton.edu>
2018-09-23 19:01:17 -04:00
Akash Kothawale
b1bd21f730 Merged in akash/LogPolicySwitch (pull request #4)
Scheduling Policy Switch Logger

Approved-by: Pradyumna Kaushik <pkaushi1@binghamton.edu>
2018-09-23 18:57:24 -04:00
Pradyumna Kaushik
6c77aa777e Merged in resourceUsageTracking (pull request #2)
ResourceUsageTracking

Approved-by: Akash Kothawale <akothaw1@binghamton.edu>
Approved-by: Pradyumna Kaushik <pkaushi1@binghamton.edu>
2018-09-23 18:36:07 -04:00
Pradyumna Kaushik
ec18b617da ignored error returned from LaunchTasks. Technically, this error shouldn't occur. Retrofitted scheduling policies to not receive an error when calling LaunchTasks(...) 2018-09-23 18:30:12 -04:00
Pradyumna Kaushik
f041e6668b added a baseSchedPolicyState struct in schedulers/schedPolicy.go. This struct would store information common to scheduling policies. Added member called numTasksScheduled to baseSchedPolicyState that would keep count of the number of tasks that the current scheduling policy has scheduled. Moved the logic to switch (currently performing a random switch) to baseSchedPolicyState#switchIfNecessary(...) and retrofitted all scheduling policies to call this instead of inlining the code in each of them. 2018-09-23 18:28:11 -04:00
Pradyumna Kaushik
5a28f8539a formatted code. 2018-09-23 18:23:37 -04:00
Akash Kothawale
3d5bb772fb Fix: Mutex lock handling issues with task running 2018-09-23 18:15:52 -04:00
Akash Kothawale
46be28ef8d pcp: CPU/MEM utilization & task share variance per node 2018-09-23 18:13:28 -04:00
Pradyumna Kaushik
b58ffdbdd6 formatted code 2018-09-23 18:10:31 -04:00
Pradyumna Kaushik
435c4ca1bc fixed bug in schedWindow resizing strategy, where earlier it was stopping after checking if the first task in the queue can be scheduled in the next offer cycle. Changed baseScheduler to store the schedWindowResizingStrategy instead of the criteria. Retrofitted the scheduling policies to use the scheduling window resizing strategy directly from baseSchedRef. 2018-09-23 18:10:02 -04:00
Pradyumna Kaushik
3ebd7b0c7e added utility to compute the scheduling window. Right now there's only criteria on which this is determined -- fillNextOfferCycle. So, the schedWindow is the max number of tasks, that aren't yet scheduled, whose aggregate resource requirement is as close as possible to the resource available in the next round of resource offers. To be able to make the most use of the next offer cycle, one would need to perform a non-polynomial search of the TaskQueue and as this is computationally expensive, a linear search is performed on the TaskQueue. Retrofitted scheduling policies to also call utilities.schedUtils#schedWindowResizingStrategy#Apply before switching to a new scheduling policy. 2018-09-23 18:03:14 -04:00
Akash Kothawale
6f0f3788b9 sched: Make baseScheduler publicly accessible 2018-09-23 17:55:12 -04:00
Pradyumna Kaushik
9599588fb5 formatted code. 2018-09-23 17:49:08 -04:00
Pradyumna Kaushik
c31bf8db01 BUG Fix1: taskID creation in taskUtils#initTaskResourceRequirements. BUG Fix2: Converted value in utilities/trackResourceUsage#TrackResourceUsage#perHostResourceAvailability to be a pointer to ResourceCount. 2018-09-23 17:46:38 -04:00
Pradyumna Kaushik
657dc8df93 Track resource usage across the cluster. Created utility in utilities/ to track the total and the unused resources for each host in the cluster. Added utility to def/taskUtils.go to retrieve the resource requirement for a given taskID. Decoupled the code, to launch a list of tasks on a set of offerIDs, to schedulers/helpers.go and updated all the scheduling policies to call this function instead of directly calling mesos.SchedulerDriver#LaunchTasks. The resource availability of the cluster is updated at 2 stages -- 1. When the tasks are about to be launched (in schedulers/helpers.go#LaunchTasks), the scheduling policy switching logic will be able to adhere to the update in the resource availability due to the JUST launched tasks and 2. when a terminal status update is received for a task (in schedulers/base.go#statusUpdate). 2018-09-23 17:44:36 -04:00
Pradyumna Kaushik
6cd61ed18b comment cleanup. 2018-09-23 17:33:34 -04:00
Akash Kothawale
3b80af6d8f Fix: mesos-go imports 2018-09-23 17:31:03 -04:00
Pradyumna Kaushik
065705d480 Merged in experimentation/schedPolicySwitcher (pull request #1)
Experimentation/schedPolicySwitcher
1. Initial commit for consolidated loggers using observer pattern.
2. class factory for schedulers.
3. Using the scheduling policy class factory in schedulers/store.go and the scheduler builder helpers in schedulers/helpers.go, feature to be able to be able to plug a scheduling policy of your choice from the command line (right now only first-fit and bin-packing are possible. Will be updating the class factory to include other scheduling policies as well.
4. Removed TODO for using generic task sorters. Modified TODO for a config file input to run electron.
5. Added other schedulers to the factory
6. Partially retrofitted the other scheduling policies to use the logging library.
7. Retrofitted extrema and progressive to use the consolidated logging library. Fixed parameter issue with s.base.Disconnected(). Formatted project
8. Move statusUpdate(...) into base.go to remove redundant code.
9. Converted the baseScheduler into a state machine where the state is a scheduling policy that defines an approach to consume resource offers.
10. Added another command line argument to be used to enable switching of scheduling policies. Retrofitted scheduling policies to switch only if the particular feature has been enabled.

changed argument to coLocated(...) to take base type rather than ElectronScheduler type. Also, prepended the prefix to the directory of the logs so that it would be easier to determine what the files in a directory correspond to without viewing the contents of the directory.
Defined methods in ElectronScheduler. Each of these methods corresponds to a type of log that an ElectronScheduler would make. Each of these methods would need to be implemented by the scheduling policy.

Electron has only one scheduler that implements the mesos scheduler interface. All the scheduling policies are just different implementations of ways to consume mesos resource offers. Retrofitted scheduling policies to now embed SchedPolicyState instead of baseScheduler.

Approved-by: Pradyumna Kaushik <pkaushi1@binghamton.edu>
2018-09-23 17:19:28 -04:00
Pradyumna Kaushik
cb71153362 Sorting the tasks in non-decreasing order of watts for max-greedymins and max-min. Had unintentionally removed the sorting of tasks for max-greedymins and max-mins. 2018-01-18 18:30:27 -05:00
Pradyumna Kaushik
ad9f67a2a0 moved documentation of scheduling policies and power-capping strategies into a documentation folder called docs/ 2017-09-28 15:53:36 -04:00
Pradyumna Kaushik
4051aa1fb3 changed the named of the scheduling policy documentation to SchedulingPolicies.md. Also, added a documentation for power-capping strategies called PowerCappingStrategies.md 2017-09-28 15:51:22 -04:00
Pradyumna Kaushik
b807625b78 Fixed the comments to be capitalized at the start and also terminate with a period. 2017-09-28 15:36:47 -04:00
Pradyumna Kaushik
971f6833c3 modified schedulers/README.md to now use Elektron instead of Electron. Also, changed the content to just display the contained scheduling policies with an explaination for each of them. 2017-09-26 13:43:23 -04:00
Pradyumna Kaushik
04f24beac5 scheduling policies pluggable from commandline 2017-09-26 13:17:47 -04:00
Pradyumna Kaushik
60e5e0ecc1 added max-min scheduling policy 2017-09-26 01:14:39 -04:00
Pradyumna Kaushik
3fa4f3d0e6 changed commandline argument descriptions. Changed the names of the scheduling policies and the structs. 2017-09-26 01:05:18 -04:00
Pradyumna Kaushik
59266d207d retrofitted to use the generic task sorter. 2017-09-26 00:37:12 -04:00
Pradyumna Kaushik
9897c983fe removed proactive-clusterwide power-capper. Retrofitted package names to use elektron and not electron 2017-09-26 00:18:35 -04:00
Pradyumna Kaushik
1c4b6f0f01 refined README and removed unwanted scheduling policies. 2017-09-26 00:05:19 -04:00
Pradyumna Kaushik
235ed189d5 Moved the TODO, for the refinement of the cluster sorting algorithm, to the main README file. 2017-08-22 13:09:05 -04:00
Pradyumna Kaushik
f4459c8cbf Consolidated the ClassifyTasks(...) functions from topHeavy and bottomHeavy and added the function to def/taskUtils.go. Added TODOs for refining the means by which the kmeans classified clusters were sorted. 2017-08-22 13:00:40 -04:00
Pradyumna Kaushik
1b15bb14e7 Resolved merge conflicts with the master. Also, added TODO in README to use Go1.8 techniques. 2017-04-21 17:17:22 -04:00