diff --git a/docs/doctrees/environment.pickle b/docs/doctrees/environment.pickle index 19f222c..481861d 100644 Binary files a/docs/doctrees/environment.pickle and b/docs/doctrees/environment.pickle differ diff --git a/docs/doctrees/modules.doctree b/docs/doctrees/modules.doctree index f0d7215..da9630e 100644 Binary files a/docs/doctrees/modules.doctree and b/docs/doctrees/modules.doctree differ diff --git a/docs/html/_sources/write_scheduler.txt b/docs/html/_sources/write_scheduler.txt index 8773838..e4ab882 100644 --- a/docs/html/_sources/write_scheduler.txt +++ b/docs/html/_sources/write_scheduler.txt @@ -130,7 +130,7 @@ Then the Scheduler can be initialized like this:: class P_EDF(PartitionedScheduler): def init(self): - PartitionedScheduler.init(self, SchedulerInfo("EDF_mono", EDF_mono)) + PartitionedScheduler.init(self, SchedulerInfo("simso.schedulers.EDF_mono")) Defining the packing @@ -170,7 +170,7 @@ Complete source code:: class P_EDF(PartitionedScheduler): def init(self): - PartitionedScheduler.init(self, SchedulerInfo("EDF_mono", EDF_mono)) + PartitionedScheduler.init(self, SchedulerInfo("simso.schedulers.EDF_mono")) def packer(self): # First Fit diff --git a/docs/html/genindex.html b/docs/html/genindex.html index 27920a2..ac7cae1 100644 --- a/docs/html/genindex.html +++ b/docs/html/genindex.html @@ -87,6 +87,10 @@
activation_date (Job attribute)
+ +
actual_computation_time (Job attribute) +
+
@@ -142,16 +146,24 @@ -
Configuration (class in simso.configuration.Configuration) +
computation_time (Job attribute)
-
cpu (Job attribute) +
computation_time_cycles (Job attribute) +
+ + +
Configuration (class in simso.configuration.Configuration)
+
cpu (Job attribute) +
+ +
create_job() (GenericTask method)
@@ -378,16 +390,20 @@
-
log() (Logger method) +
laxity (Job attribute)
-
Logger (class in simso.core.Logger) +
log() (Logger method)
+
Logger (class in simso.core.Logger) +
+ +
logs (Logger attribute)
diff --git a/docs/html/modules.html b/docs/html/modules.html index 1f2e534..d352978 100644 --- a/docs/html/modules.html +++ b/docs/html/modules.html @@ -485,6 +485,13 @@ date + the relative deadline.

+
+actual_computation_time
+

Computation time in ms as if the processor speed was 1.0 during the +whole execution.

+
+ +
actual_computation_time_cycles

Computation time as if the processor speed was 1.0 during the whole @@ -492,6 +499,18 @@ execution.

+
+computation_time
+

Time spent executing the job in ms.

+
+ +
+
+computation_time_cycles
+

Time spent executing the job.

+
+ +
cpu

The processor on which the @@ -547,6 +566,12 @@ Equivalent to self.cpu.running

+
+laxity
+

Dynamic laxity of the job in ms.

+
+ +
period

Period in milliseconds. Equivalent to self.task.period.

@@ -555,7 +580,7 @@ Equivalent to self.cpu.running
ret
-

Remaining execution time.

+

Remaining execution time in ms.

@@ -859,7 +884,7 @@ processors.

-add_task(name, identifier, task_type='Periodic', abort_on_miss=False, period=10, activation_date=0, n_instr=0, mix=0.5, stack_file='', wcet=0, acet=0, et_stddev=0, deadline=10, base_cpi=1.0, followed_by=None, list_activation_dates=[], preemption_cost=0, data=None)
+add_task(name, identifier, task_type='Periodic', abort_on_miss=True, period=10, activation_date=0, n_instr=0, mix=0.5, stack_file='', wcet=0, acet=0, et_stddev=0, deadline=10, base_cpi=1.0, followed_by=None, list_activation_dates=[], preemption_cost=0, data=None)

Helper method to create a TaskInfo and add it to the list of tasks.

diff --git a/docs/html/objects.inv b/docs/html/objects.inv index 5287d47..2c04062 100644 Binary files a/docs/html/objects.inv and b/docs/html/objects.inv differ diff --git a/docs/html/searchindex.js b/docs/html/searchindex.js index 9d80bcc..2ebc39c 100644 --- a/docs/html/searchindex.js +++ b/docs/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({envversion:42,terms:{all:[0,5,4],code:[2,5,6,3,4],edf:[],reproduc:[6,4],scratch:[],edh:2,global:2,affect_task_to_processor:5,is_act:4,worst_fit:4,subclass:[5,4],kato:[2,4],follow:[0,2,6,5,4],hyperperiod:4,llf:2,abid:6,millisecond:4,whose:6,decid:4,procur:4,depend:[],specif:[6,4],send:[5,3],init:[0,5,4],program:6,decis:[2,4],under:[2,6,4],set_stack_fil:4,aris:4,stafford:4,neglig:4,adapt:[2,4],merchant:4,sourc:[2,5,6,3,4],lre:2,risk:6,fals:[5,4],account:2,util:[],worst:[2,4],whether:4,govern:6,veri:[0,2,5,4],appar:[],four:5,computation_tim:0,observation_window:4,complic:6,button:[],list:[5,3,4],factori:4,"try":0,schedulerinfo:[5,4],team:[],quick:2,evt:0,pleas:[3,4],impli:4,direct:4,rate:2,pass:[0,5,4],download:[],howev:[3,4],click:[],append:5,compat:[2,3],index:1,what:[],stack_fil:4,sum:0,abl:4,invok:[5,4],current:[2,4],experiment:0,encourag:6,"new":[0,3,4],abort_on_miss:4,method:[0,5,4],laxiti:2,xml:3,full:5,utilis:4,deriv:[],chang:[0,4],french:6,dpfair:2,met:4,lgpl:6,modif:4,free:[5,6],ubuntu:3,path:[],modifi:[2,6],interpret:4,wait:4,search:1,convers:2,overhead_termin:4,ekg:2,precis:4,prior:4,amount:4,overriden:[5,4],action:4,implement:[],uunifast:4,overrid:4,taskr:[0,4],via:2,extra:4,appli:5,modul:[],put:4,heurist:[2,4],task_typ:4,instal:[],total:4,unit:4,from:[],proceed:2,distinct:4,pred:4,doubl:[],cho:2,websit:2,few:[0,2,6],handler:4,overhead:[2,5,6,4],taken:[],prev:0,type:[2,4],more:[],sort:4,list_activation_d:4,notic:4,start_dat:4,warn:4,exce:4,prototyp:2,particular:[2,4],decreasing_next_fit:4,cach:[2,4],must:[2,5,3,4],none:[0,5,4],graphic:[2,6,3],retriev:4,left:[],setup:2,uniqu:4,histori:0,remain:4,minimum:4,purpos:[6,4],exceeded_deadlin:4,def:[0,5],control:[3,4],give:5,process:[6,4],lock:4,add_processor:[0,4],accept:6,had:6,abort:4,umin:4,everi:[0,4],occur:[5,4],delai:4,cours:0,multipl:2,ripol:4,anoth:4,write:[],pair:4,cur_dir:4,instead:4,voltag:2,config:0,sim:4,updat:[2,5],suffer:4,product:[],resourc:2,max:4,decreasing_first_fit:4,after:4,laa:6,befor:[0,5,4],mac:3,attent:6,mai:6,end:4,law:6,associ:[6,4],alloc:5,bini:4,third:[],is_run:4,light:6,secur:6,explicit:[],caus:4,callback:4,"switch":[0,2],allow:[2,3,4],mechan:4,lambda:5,order:[0,2,3,4,5],gen_periods_discret:4,help:5,softwar:[2,6,4],offici:4,gen_uunifastdiscard:4,cxtsave:4,through:[0,2,5,4],is_period:[],affect:5,base_cpi:4,still:[5,4],mainli:4,dynam:[2,4],busi:4,group:[0,4],obviou:[],fit:[2,5,4],chosen:[5,4],fix:[2,4],et_stddev:4,cla:[0,4],late:2,platform:2,matlabcentr:4,main:[],non:4,good:[2,5,4],"return":[5,4],greater:4,cea:6,python:[2,5,6,3,4],epdf:2,inria:6,simpi:[],interrupt:4,now:4,nor:[],introduct:[],choic:3,term:6,somewher:4,name:[0,5,4],generictask:4,edit:[],simpl:[2,4],easili:3,mode:[],each:[0,5,3,4],fulli:3,complet:[],truncat:4,mean:6,monoton:2,ensur:6,contributor:4,redistribut:[6,4],finish:[5,4],"static":2,p_edf:5,our:5,happen:0,reduct:2,special:4,out:4,fileexchang:4,matrix:4,space:[5,4],profit:4,miss:5,robert:4,ret:4,profil:4,uunifastdiscard:[],suitabl:6,rel:4,print:[0,5],correct:[0,4],statist:2,prioriti:[2,5],advanc:4,migrat:4,manipul:6,given:4,argv:0,reason:5,base:[2,6,4],theori:4,dictionari:4,releas:[2,6,4],earliest:[2,5],could:[0,5,3],llref:2,counterpart:6,thing:5,place:4,outsid:4,retain:4,interact:4,end_dat:4,first:[],origin:4,endors:[],major:4,simulation_fil:4,internal_id:4,onc:4,csdp:4,number:[0,4],proc_info:4,restrict:6,date:[5,3,4],task_info:4,done:[0,5,3,4],least:[2,5,4],owner:[],round_to_int:4,open:2,gpl:[2,6],differ:[0,4],script:[],data:[6,4],licens:[],anderson:2,messag:[5,4],stack:4,attach:4,atask:4,too:4,termin:4,white:[],"final":0,store:4,schema:3,juli:3,copi:6,specifi:[3,4],pyqt4:2,mathwork:4,cxtload:4,exactli:0,holder:[6,4],than:4,mllf:2,wide:[0,4],erickson:2,slack:4,instanc:4,provid:[0,2,3,4,5,6],andersson:2,second:5,structur:5,project:[],matter:4,reus:6,redifin:5,str:0,deadlin:[0,2,5,4],randomli:4,"function":[3,4],comput:[0,6,4],max_:4,robdavi:4,arg:[0,4],argument:[0,4],packag:3,expir:4,have:[0,6,4],reserv:[6,4],need:[5,4],cecil:[2,6],loguniform:4,get_cl:4,techniqu:2,zero:2,inform:[0,4],self:[5,4],euromicro:2,now_m:4,contact:4,also:[0,2,3,4,5,6],discret:[2,6],take:[2,4],which:[5,4],min_:4,tasks_ev:4,tool:4,singl:[5,4],even:4,sure:5,distribut:[6,4],n_instr:4,though:3,object:[0,6,4],reach:4,decreasing_best_fit:4,phase:4,followed_bi:4,everyth:2,schedulerr:4,url:6,doc:4,declar:4,resch:[5,4],usual:[5,4],fact:6,run_model:[0,4],preemption_count:0,gen_periods_uniform:4,shot:4,show:5,text:2,random:4,prid:2,directli:[0,5,4],permiss:[],find:[2,5],impact:2,absolut:[5,4],onli:[5,6,4],just:[],facil:4,iep:[],explain:5,next_fit:4,activ:[5,3,4],written:3,should:[2,5,4],configur:[],version:[2,6],analyz:4,info:6,variou:4,get:[0,4],express:4,stop:4,decreas:2,aim:2,ptask:4,procev:0,report:4,on_termin:[5,4],event:[0,2,6,5,4],neither:[],requir:[0,2,6,4],first_fit:4,overhead_activ:4,add_task:[0,4],bar:4,enabl:6,emb:4,yield:4,migration_overhead:4,roger:4,decreasing_worst_fit:4,partit:[],contain:[2,4],where:[0,5,4],remov:[5,4],view:4,user:[2,6,3],kernel:4,fair:2,packer:[5,4],knowledg:6,see:[2,4],mandatori:5,respons:[5,4],fail:5,close:4,best:[2,4],subject:[],statu:6,flexibl:[0,2],preemption_cost:4,kei:[5,4],someth:0,pd2:2,cs_overhead:4,enough:4,between:4,progress:4,ready_list:5,approach:5,best_fit:4,attribut:[0,4],accord:4,pretti:5,jobr:[0,4],extend:4,nelissen:2,cycl:4,job:[],spare:4,here:[5,4],nset:4,problem:2,monitor:[0,4],disclaim:4,last:[2,5],cycles_per_m:[0,4],mono:5,uniprocessor:[],incident:4,contract:4,len:[0,5],polici:[],tutori:[0,5],present:6,context:[0,2],logic:[5,4],get_hyperperiod:4,whole:4,etm:4,load:[],among:5,cxt:0,author:[6,4],point:[5,4],instanti:[0,5,4],priorit:5,pfair:2,scheduler_info:[0,4],period:[0,2,5,4],exemplari:4,linux:3,respect:[5,6],damag:4,liabil:[6,4],coupl:4,tort:4,numpi:[],window:[3,4],been:4,compon:4,accumul:4,much:2,valu:4,basic:0,calc_load:4,gen_kato_util:4,"abstract":4,partial:0,on_activ:[5,4],field:4,emberson:4,fire:4,consequenti:4,ani:[2,5,4],understand:2,input:4,those:4,"case":4,ident:5,look:5,gnu:6,servic:4,durat:[0,4],lesser:6,defin:[],"while":5,abov:4,error:4,edzl:2,observ:4,pack:[],earli:2,helper:4,readi:[5,4],metric:[0,4],therefor:6,them:5,nvnlf:2,kwarg:4,gen_randfixedsum:4,"__init__":4,scienc:[],parent:4,develop:[2,5,6],thei:5,grant:6,parti:[],make:4,econom:6,same:[0,6,4],check:[0,4],binari:[2,4],tovar:2,funk:2,largest:4,probabl:4,taskinfo:4,edf_mono:5,archiv:2,closest:5,optim:[2,4],target_util:4,permit:4,upon:4,moment:4,rais:0,initi:[],extern:3,typic:4,funaoka:2,redefin:4,kept:5,equival:4,com:4,sporadictask:4,min:[5,4],itself:6,inherit:[5,4],without:[0,4],exampl:[],thi:[0,2,3,4,5,6],model:[],propos:4,twent:[],distanc:4,identifi:[0,4],fast:2,execut:[0,5,3,4],unfair:2,paul:4,speed:[3,4],yet:5,languag:6,york:4,gen_periods_loguniform:4,easi:[2,5,4],mix:4,baruah:2,character:4,except:0,add:[0,4],other:[2,4],els:[0,5],save:4,task_list:[0,5,4],bin:5,cherami:6,advis:4,minimalist:5,read:[0,6,4],arriv:3,realist:4,know:0,librairi:2,characterist:[0,3],get_observation_window:4,like:[2,5],loss:4,success:6,semi:2,arbitrari:5,delta_preempt:4,manual:0,pillai:2,necessari:[2,5],either:4,xsd:3,page:1,actual_computation_time_cycl:4,www:[6,4],right:[6,4],often:2,simplifi:4,in_m:4,some:[0,2],maxim:6,intern:4,wcet:[0,5,4],guarante:[5,4],indirect:4,librari:[0,2,3],u_i:4,scale:2,cnr:6,remind:5,avoid:4,shall:4,per:[0,4],substitut:4,select:5,condit:[6,4],proc:4,core:[],set_nam:[],previou:[0,4],run:[0,2,5,4],randfixedsum:4,check_al:[0,4],processorr:4,confer:2,step:[],nutshel:5,promot:[],taskset:4,drawn:6,about:4,materi:4,http:[6,4],simul:[],includ:4,constructor:[0,5,4],discard:4,univers:[],real:[2,6,4],cl_overhead:4,"float":[5,4],profession:6,automat:0,invers:4,warranti:[6,4],bsd:[6,4],one_shot:4,empti:0,liabl:4,lieu:4,wrap:2,"import":[0,5],next:[2,4],your:3,preemption:[0,2,4],log:[0,4],wai:[2,5,4],"long":4,custom:0,avail:[],start:[5,4],reli:6,interfac:[2,6,3],editor:[],call:[5,4],strict:4,etc:[0,4],analysi:[0,4],form:4,tupl:4,regard:[6,4],proc_info_list:4,msg:4,multiprocessor:[2,5,6,4],low:2,gen_ripol:4,eas:5,highest:5,"true":[5,4],conclus:4,count:[0,4],zhu:2,consist:5,possibl:[0,2,3,4,5],"default":4,levin:2,access:[0,6],maximum:[0,2,4],release_lock:4,limit:[6,4],otherwis:[3,4],embed:[0,2],similar:4,dvf:2,procinfo:4,creat:[],certain:4,dure:4,filenam:[0,4],repres:4,incomplet:3,circul:6,file:[],behavior:4,umax:4,ship:3,simplest:5,acet:4,again:4,when:[0,2,5,4],detail:[],virtual:4,orient:6,power:2,gen_taskset:4,create_job:4,yang:2,bool:4,copyright:[6,4],task_info_list:4,test:[2,6,4],regnier:2,davi:4,staffordrandfixedsum:4,task_migr:4,architectur:[2,5,4],"class":[0,5,4],souc:2,absolute_deadlin:[5,4],get_lock:4,debian:3,reduc:2,set_observation_window:4,experienc:6,faster:4,algorithm:[2,5,4],directori:[],temporarli:4,pseudo:2,indirectli:5,rule:6,goe:4,depth:6,activation_d:[0,4],time:[0,2,6,3,4],rapitasystem:4,licensor:6,cpu:[0,5,4],oop:5},objtypes:{"0":"py:module","1":"py:attribute","2":"py:method","3":"py:function","4":"py:class"},objnames:{"0":["py","module","Python module"],"1":["py","attribute","Python attribute"],"2":["py","method","Python method"],"3":["py","function","Python function"],"4":["py","class","Python class"]},filenames:["text_mode","index","introduction","faq","modules","write_scheduler","licenses"],titles:["Using SimSo in script mode","SimSo documentation","Introduction","Frequently Asked Questions","Main modules","How to write a scheduling policy","Licenses"],objects:{"simso.utils":{PartitionedScheduler:[4,0,0,"-"]},"simso.core.Scheduler.SchedulerInfo":{get_cls:[4,2,1,""],instantiate:[4,2,1,""]},"simso.core.Model.Model":{run_model:[4,2,1,""],logs:[4,1,1,""],cycles_per_ms:[4,1,1,""],task_list:[4,1,1,""],duration:[4,1,1,""],etm:[4,1,1,""],processors:[4,1,1,""]},"simso.configuration":{Configuration:[4,0,0,"-"]},"simso.generator.task_generator":{gen_periods_uniform:[4,3,1,""],gen_periods_loguniform:[4,3,1,""],gen_uunifastdiscard:[4,3,1,""],gen_kato_utilizations:[4,3,1,""],gen_tasksets:[4,3,1,""],gen_periods_discrete:[4,3,1,""],gen_randfixedsum:[4,3,1,""],gen_ripoll:[4,3,1,""],StaffordRandFixedSum:[4,3,1,""]},"simso.core.Task.GenericTask":{jobs:[4,1,1,""],monitor:[4,1,1,""],followed_by:[4,1,1,""],period:[4,1,1,""],create_job:[4,2,1,""],deadline:[4,1,1,""],wcet:[4,1,1,""],identifier:[4,1,1,""],data:[4,1,1,""]},"simso.core.Task.TaskInfo":{csdp:[4,1,1,""],stack_file:[4,1,1,""],set_stack_file:[4,2,1,""]},"simso.core.Timer.Timer":{start:[4,2,1,""],stop:[4,2,1,""]},"simso.generator":{task_generator:[4,0,0,"-"]},"simso.configuration.Configuration.Configuration":{save:[4,2,1,""],add_task:[4,2,1,""],check_all:[4,2,1,""],scheduler_info:[4,1,1,""],add_processor:[4,2,1,""],proc_info_list:[4,1,1,""],task_info_list:[4,1,1,""],get_hyperperiod:[4,2,1,""]},"simso.core.Logger":{Logger:[4,4,1,""]},"simso.utils.PartitionedScheduler.PartitionedScheduler":{init:[4,2,1,""]},"simso.core":{Task:[4,0,0,"-"],results:[4,0,0,"-"],Timer:[4,0,0,"-"],Processor:[4,0,0,"-"],Job:[4,0,0,"-"],Scheduler:[4,0,0,"-"],Model:[4,0,0,"-"],Logger:[4,0,0,"-"]},"simso.core.results.Results":{set_observation_window:[4,2,1,""],tasks_event:[4,2,1,""],calc_load:[4,2,1,""],get_observation_window:[4,2,1,""],observation_window:[4,1,1,""]},"simso.core.Scheduler.Scheduler":{add_task:[4,2,1,""],schedule:[4,2,1,""],on_terminated:[4,2,1,""],add_processor:[4,2,1,""],init:[4,2,1,""],release_lock:[4,2,1,""],on_activate:[4,2,1,""],get_lock:[4,2,1,""]},"simso.core.Scheduler":{SchedulerInfo:[4,4,1,""],Scheduler:[4,4,1,""]},"simso.core.Job.Job":{task:[4,1,1,""],end_date:[4,1,1,""],is_running:[4,2,1,""],start_date:[4,1,1,""],is_active:[4,2,1,""],period:[4,1,1,""],ret:[4,1,1,""],exceeded_deadline:[4,1,1,""],abort:[4,2,1,""],deadline:[4,1,1,""],wcet:[4,1,1,""],aborted:[4,1,1,""],activation_date:[4,1,1,""],absolute_deadline:[4,1,1,""],data:[4,1,1,""],cpu:[4,1,1,""],actual_computation_time_cycles:[4,1,1,""]},"simso.core.Logger.Logger":{logs:[4,1,1,""],log:[4,2,1,""]},"simso.core.Job":{Job:[4,4,1,""]},"simso.core.Processor":{Processor:[4,4,1,""]},"simso.core.Processor.Processor":{running:[4,1,1,""],resched:[4,2,1,""],is_running:[4,2,1,""],internal_id:[4,1,1,""]},"simso.configuration.Configuration":{Configuration:[4,4,1,""]},"simso.utils.PartitionedScheduler":{PartitionedScheduler:[4,4,1,""],decreasing_first_fit:[4,3,1,""],next_fit:[4,3,1,""],decreasing_best_fit:[4,3,1,""],worst_fit:[4,3,1,""],decreasing_worst_fit:[4,3,1,""],decreasing_next_fit:[4,3,1,""],best_fit:[4,3,1,""],first_fit:[4,3,1,""]},simso:{core:[4,0,0,"-"],configuration:[4,0,0,"-"]},"simso.core.Task":{Task:[4,3,1,""],GenericTask:[4,4,1,""],SporadicTask:[4,4,1,""],PTask:[4,4,1,""],ATask:[4,4,1,""],TaskInfo:[4,4,1,""]},"simso.core.Model":{Model:[4,4,1,""]},"simso.core.results":{TaskR:[4,4,1,""],Results:[4,4,1,""],ProcessorR:[4,4,1,""],SchedulerR:[4,4,1,""],JobR:[4,4,1,""]},"simso.core.Timer":{Timer:[4,4,1,""]}},titleterms:{oper:3,load:0,set:[],edf:5,skeleton:5,creat:0,can:3,schedul:[2,5,4],modul:4,creation:5,indic:1,system:3,sporad:3,result:4,file:[0,5],tabl:[0,1,5,4],download:2,instal:2,doe:3,partitionedschedul:4,avail:2,what:2,processor:[3,4],depend:[2,6],script:0,polici:5,parti:[],support:3,configur:[0,4],question:3,detail:0,pyqt:6,uniform:3,content:[0,5,4],how:5,exampl:[0,5],explan:5,scratch:0,simpi:6,you:3,main:4,complet:5,core:4,handl:3,gener:[3,4],first:[0,2],initi:5,model:[0,4],util:4,step:2,numpi:6,ask:3,from:0,heterogen:3,logger:4,introduct:2,task:[3,4],simso:[0,1,2,3,4,6],third:[],document:1,uniprocessor:5,work:3,job:4,timer:4,simul:0,defin:5,codeeditor:[],write:5,mode:0,partit:5,own:3,implement:5,more:0,licens:6,frequent:3,pack:5}}) \ No newline at end of file +Search.setIndex({envversion:42,terms:{"default":4,all:[0,5,4],code:[2,5,6,3,4],edf:[],scratch:[],edh:2,global:2,affect_task_to_processor:5,is_act:4,worst_fit:4,per:[0,4],kato:[2,4],follow:[0,2,6,5,4],hyperperiod:4,llf:2,abid:6,millisecond:4,whose:6,decid:4,procur:4,depend:[],send:[5,3],init:[0,5,4],program:6,decis:[2,4],under:[2,6,4],set_stack_fil:4,aris:4,stafford:4,neglig:4,adapt:[2,4],merchant:4,sourc:[2,5,6,3,4],lre:2,risk:6,fals:[5,4],account:2,util:[],worst:[2,4],gen_uunifastdiscard:4,veri:[0,2,5,4],appar:[],four:5,computation_tim:[0,4],observation_window:4,proc:4,button:[],list:[5,3,4],factori:4,"try":0,schedulerinfo:[5,4],computation_time_cycl:4,team:[],quick:2,evt:0,pleas:[3,4],impli:4,version:[2,6],direct:4,rate:2,pass:[0,5,4],download:[],click:[],append:5,compat:[2,3],index:1,what:[],stack_fil:4,sum:0,abl:4,"while":5,current:[2,4],experiment:0,"new":[0,3,4],abort_on_miss:4,method:[0,5,4],laxiti:[2,4],impact:2,full:5,deriv:[],absolut:[5,4],french:6,dpfair:2,met:4,lgpl:6,modif:4,argv:0,ubuntu:3,path:[],modifi:[2,6],interpret:4,wait:4,search:1,convers:2,overhead_termin:4,ekg:2,observ:4,precis:4,prior:4,amount:4,overriden:[5,4],action:4,implement:[],uunifast:4,orient:6,overrid:4,taskr:[0,4],via:2,extra:4,appli:5,modul:[],releas:[2,6,4],heurist:[2,4],task_typ:4,instal:[],total:4,unit:4,from:[],proceed:2,distinct:4,pred:4,doubl:[],dure:4,cho:2,websit:2,few:[0,2,6],handler:4,overhead:[2,5,6,4],taken:[],prev:0,type:[2,4],more:[],sort:4,list_activation_d:4,notic:4,start_dat:4,warn:4,exce:4,prototyp:2,particular:[2,4],decreasing_next_fit:4,editor:[],cach:[2,4],must:[2,5,3,4],none:[0,5,4],graphic:[2,6,3],retriev:4,setup:2,uniqu:4,histori:0,remain:4,minimum:4,purpos:[6,4],exceeded_deadlin:4,def:[0,5],control:[3,4],complic:6,give:5,process:[6,4],lock:4,add_processor:[0,4],accept:6,abort:4,umin:4,everi:[0,4],occur:[5,4],declar:4,delai:4,cours:0,multipl:2,ripol:4,anoth:4,write:[],pair:4,cur_dir:4,simpi:[],voltag:2,simpl:[2,4],sim:4,updat:[2,5],product:[],resourc:2,max:4,decreasing_first_fit:4,after:4,laa:6,befor:[0,5,4],llref:2,attent:6,mai:6,end:4,law:6,data:[6,4],alloc:5,bini:4,third:[],tutori:[0,5],is_run:4,light:6,secur:6,explicit:[],caus:4,callback:4,"switch":[0,2],allow:[2,3,4],mechan:4,lambda:5,order:[0,2,3,4,5],gen_periods_discret:4,help:5,endors:[],offici:4,govern:6,cxtsave:4,through:[0,2,5,4],is_period:[],affect:5,still:[5,4],mainli:4,dynam:[2,4],group:[0,4],obviou:[],fit:[2,5,4],chosen:[5,4],fix:[2,4],cl_overhead:4,cla:[0,4],late:2,platform:2,matlabcentr:4,bin:5,main:[],non:4,good:[2,5,4],"return":[5,4],greater:4,cea:6,python:[2,5,6,3,4],epdf:2,inria:6,lesser:6,instead:4,interrupt:4,now:4,nor:[],introduct:[],choic:3,term:6,somewher:4,name:[0,5,4],delta_preempt:4,edit:[],config:0,easili:3,mode:[],each:[0,5,3,4],fulli:3,taskinfo:4,truncat:4,mean:6,monoton:2,ensur:6,contributor:4,redistribut:[6,4],edf_mono:5,"static":2,p_edf:5,our:5,happen:0,reduct:2,special:4,out:4,fileexchang:4,matrix:4,space:[5,4],profit:4,miss:5,robert:4,semi:2,ret:4,profil:4,uunifastdiscard:[],suitabl:6,rel:4,print:[0,5],correct:[0,4],decreasing_worst_fit:4,prioriti:[2,5],advanc:4,migrat:4,manipul:6,given:4,free:[5,6],reason:5,base:[2,6,4],theori:4,dictionari:4,put:4,earliest:[2,5],could:[0,5,3],mac:3,counterpart:6,thing:5,place:4,propos:4,outsid:4,retain:4,typic:4,interact:4,end_dat:4,first:[],origin:4,softwar:[2,6,4],major:4,simulation_fil:4,internal_id:4,onc:4,csdp:4,number:[0,4],proc_info:4,restrict:6,date:[5,3,4],task_info:4,done:[0,5,3,4],messag:[5,4],owner:[],round_to_int:4,open:2,gpl:[2,6],differ:[0,4],"long":4,script:[],associ:[6,4],licens:[],reli:6,least:[2,5,4],attach:4,atask:4,too:4,which:[5,4],termin:4,white:[],"final":0,store:4,schema:3,knowledg:6,grant:6,juli:3,copi:6,specifi:[3,4],pyqt4:2,mathwork:4,kept:5,exactli:0,holder:[6,4],than:4,character:4,wide:[0,4],erickson:2,slack:4,provid:[0,2,3,4,5,6],andersson:2,second:5,structur:5,exampl:[],project:[],matter:4,reus:6,redifin:5,str:0,mandatori:5,initi:[],randomli:4,analysi:[0,4],comput:[0,6,4],max_:4,robdavi:4,respons:[5,4],argument:[0,4],packag:3,expir:4,have:[0,6,4],close:4,need:[5,4],"import":[0,5],cecil:[2,6],loguniform:4,get_cl:4,techniqu:2,zero:2,inform:[0,4],self:[5,4],euromicro:2,now_m:4,also:[0,2,3,4,5,6],discret:[2,6],take:[2,4],advis:4,min_:4,tasks_ev:4,tool:4,singl:[5,4],even:4,sure:5,distribut:[6,4],n_instr:4,though:3,object:[0,6,4],reach:4,decreasing_best_fit:4,phase:4,followed_bi:4,model:[],equival:4,schedulerr:4,url:6,doc:4,yang:2,resch:[5,4],usual:[5,4],fact:6,run_model:[0,4],preemption_count:0,gen_periods_uniform:4,shot:4,show:5,text:2,random:4,prid:2,directli:[0,5,4],permiss:[],find:[2,5],xml:3,access:[0,6],onli:[5,6,4],execut:[0,5,3,4],facil:4,iep:[],explain:5,next_fit:4,activ:[5,3,4],enough:4,should:[2,5,4],configur:[],busi:4,analyz:4,flexibl:[0,2],count:[0,4],variou:4,get:[0,4],express:4,stop:4,decreas:2,ptask:4,procev:0,report:4,on_termin:[5,4],ready_list:5,requir:[0,2,6,4],first_fit:4,overhead_activ:4,add_task:[0,4],bar:4,enabl:6,emb:4,yield:4,migration_overhead:4,roger:4,statist:2,partit:[],contain:[2,4],where:[0,5,4],remov:[5,4],view:4,kernel:4,fair:2,packer:[5,4],actual_computation_tim:4,see:[2,4],deadlin:[0,2,5,4],arg:[0,4],fail:5,reserv:[6,4],best:[2,4],subject:[],statu:6,suffer:4,preemption_cost:4,extend:4,someth:0,pd2:2,cs_overhead:4,written:3,between:4,progress:4,neither:[],approach:5,best_fit:4,attribut:[0,4],accord:4,pretti:5,jobr:[0,4],kei:[5,4],nelissen:2,cycl:4,job:[],spare:4,here:[5,4],nset:4,embed:[0,2],monitor:[0,4],disclaim:4,last:[2,5],cycles_per_m:[0,4],mono:5,uniprocessor:[],incident:4,contract:4,len:[0,5],polici:[],tovar:2,present:6,context:[0,2],logic:[5,4],get_hyperperiod:4,whole:4,etm:4,load:[],among:5,cxt:0,point:[5,4],instanti:[0,5,4],priorit:5,pfair:2,scheduler_info:[0,4],period:[0,2,5,4],exemplari:4,linux:3,respect:[5,6],damag:4,liabil:[6,4],coupl:4,tort:4,numpi:[],window:[3,4],been:4,compon:4,accumul:4,much:2,valu:4,basic:0,calc_load:4,gen_kato_util:4,"abstract":4,partial:0,on_activ:[5,4],gen_taskset:4,emberson:4,fire:4,consequenti:4,ani:[2,5,4],understand:2,els:[0,5],those:4,"case":4,ident:5,look:5,gnu:6,servic:4,durat:[0,4],aim:2,defin:[],invok:[5,4],abov:4,error:4,edzl:2,howev:[3,4],pack:[],earli:2,helper:4,readi:[5,4],metric:[0,4],therefor:6,them:5,kwarg:4,gen_randfixedsum:4,"__init__":4,scienc:[],parent:4,develop:[2,5,6],thei:5,author:[6,4],parti:[],make:4,econom:6,same:[0,6,4],binari:[2,4],instanc:4,funk:2,largest:4,set_nam:[],success:6,acet:4,complet:[],finish:[5,4],archiv:2,closest:5,optim:[2,4],target_util:4,permit:4,upon:4,moment:4,rais:0,user:[2,6,3],extern:3,stack:4,funaoka:2,redefin:4,cxtload:4,mllf:2,com:4,sporadictask:4,min:[5,4],itself:6,spent:4,inherit:[5,4],without:[0,4],contact:4,thi:[0,2,3,4,5,6],everyth:2,left:[],twent:[],distanc:4,identifi:[0,4],just:[],unfair:2,paul:4,speed:[3,4],yet:5,languag:6,york:4,gen_periods_loguniform:4,easi:[2,5,4],mix:4,baruah:2,had:6,except:0,add:[0,4],input:4,save:4,task_list:[0,5,4],real:[2,6,4],cherami:6,nvnlf:2,minimalist:5,read:[0,6,4],arriv:3,know:0,librairi:2,characterist:[0,3],get_observation_window:4,loss:4,like:[2,5],specif:[6,4],arbitrari:5,generictask:4,manual:0,pillai:2,necessari:[2,5],either:4,xsd:3,page:1,actual_computation_time_cycl:4,www:[6,4],right:[6,4],often:2,simplifi:4,in_m:4,some:[0,2],maxim:6,intern:4,wcet:[0,5,4],guarante:[5,4],indirect:4,librari:[0,2,3],u_i:4,scale:2,cnr:6,remind:5,avoid:4,shall:4,subclass:[5,4],substitut:4,select:5,condit:[6,4],reproduc:[6,4],core:[],encourag:6,previou:[0,4],run:[0,2,5,4],randfixedsum:4,check_al:[0,4],processorr:4,confer:2,step:[],nutshel:5,promot:[],taskset:4,drawn:6,about:4,simplest:5,materi:4,http:[6,4],simul:[],constructor:[0,5,4],discard:4,univers:[],base_cpi:4,et_stddev:4,"float":[5,4],profession:6,automat:0,invers:4,warranti:[6,4],bsd:[6,4],one_shot:4,empti:0,liabl:4,lieu:4,wrap:2,chang:[0,4],next:[2,4],your:3,preemption:[0,2,4],log:[0,4],wai:[2,5,4],fast:2,custom:0,avail:[],start:[5,4],anderson:2,interfac:[2,6,3],includ:4,call:[5,4],strict:4,etc:[0,4],"function":[3,4],form:4,tupl:4,regard:[6,4],proc_info_list:4,msg:4,multiprocessor:[2,5,6,4],low:2,gen_ripol:4,eas:5,highest:5,"true":[5,4],conclus:4,info:6,zhu:2,consist:5,possibl:[0,2,3,4,5],whether:4,levin:2,realist:4,maximum:[0,2,4],release_lock:4,limit:[6,4],otherwis:[3,4],problem:2,similar:4,temporarli:4,procinfo:4,creat:[],certain:4,utilis:4,filenam:[0,4],repres:4,incomplet:3,circul:6,file:[],behavior:4,umax:4,ship:3,check:[0,4],probabl:4,again:4,when:[0,2,5,4],detail:[],virtual:4,event:[0,2,6,5,4],power:2,field:4,create_job:4,other:[2,4],bool:4,copyright:[6,4],task_info_list:4,test:[2,6,4],regnier:2,davi:4,staffordrandfixedsum:4,task_migr:4,architectur:[2,5,4],"class":[0,5,4],souc:2,absolute_deadlin:[5,4],get_lock:4,debian:3,reduc:2,set_observation_window:4,experienc:6,faster:4,algorithm:[2,5,4],directori:[],dvf:2,pseudo:2,indirectli:5,rule:6,goe:4,depth:6,activation_d:[0,4],time:[0,2,6,3,4],rapitasystem:4,licensor:6,cpu:[0,5,4],oop:5},objtypes:{"0":"py:module","1":"py:attribute","2":"py:method","3":"py:function","4":"py:class"},objnames:{"0":["py","module","Python module"],"1":["py","attribute","Python attribute"],"2":["py","method","Python method"],"3":["py","function","Python function"],"4":["py","class","Python class"]},filenames:["text_mode","index","introduction","faq","modules","write_scheduler","licenses"],titles:["Using SimSo in script mode","SimSo documentation","Introduction","Frequently Asked Questions","Main modules","How to write a scheduling policy","Licenses"],objects:{"simso.utils":{PartitionedScheduler:[4,0,0,"-"]},"simso.core.Scheduler.SchedulerInfo":{get_cls:[4,2,1,""],instantiate:[4,2,1,""]},"simso.core.Model.Model":{run_model:[4,2,1,""],logs:[4,1,1,""],cycles_per_ms:[4,1,1,""],task_list:[4,1,1,""],duration:[4,1,1,""],etm:[4,1,1,""],processors:[4,1,1,""]},"simso.configuration":{Configuration:[4,0,0,"-"]},"simso.generator.task_generator":{gen_periods_uniform:[4,3,1,""],gen_periods_loguniform:[4,3,1,""],gen_uunifastdiscard:[4,3,1,""],gen_kato_utilizations:[4,3,1,""],gen_tasksets:[4,3,1,""],gen_periods_discrete:[4,3,1,""],gen_randfixedsum:[4,3,1,""],gen_ripoll:[4,3,1,""],StaffordRandFixedSum:[4,3,1,""]},"simso.core.Task.GenericTask":{jobs:[4,1,1,""],monitor:[4,1,1,""],followed_by:[4,1,1,""],period:[4,1,1,""],create_job:[4,2,1,""],deadline:[4,1,1,""],wcet:[4,1,1,""],identifier:[4,1,1,""],data:[4,1,1,""]},"simso.core.Task.TaskInfo":{csdp:[4,1,1,""],stack_file:[4,1,1,""],set_stack_file:[4,2,1,""]},"simso.core.Timer.Timer":{start:[4,2,1,""],stop:[4,2,1,""]},"simso.generator":{task_generator:[4,0,0,"-"]},"simso.configuration.Configuration.Configuration":{save:[4,2,1,""],add_task:[4,2,1,""],check_all:[4,2,1,""],scheduler_info:[4,1,1,""],add_processor:[4,2,1,""],proc_info_list:[4,1,1,""],task_info_list:[4,1,1,""],get_hyperperiod:[4,2,1,""]},"simso.core.Logger":{Logger:[4,4,1,""]},"simso.utils.PartitionedScheduler.PartitionedScheduler":{init:[4,2,1,""]},"simso.core":{Task:[4,0,0,"-"],results:[4,0,0,"-"],Timer:[4,0,0,"-"],Processor:[4,0,0,"-"],Job:[4,0,0,"-"],Scheduler:[4,0,0,"-"],Model:[4,0,0,"-"],Logger:[4,0,0,"-"]},"simso.core.results.Results":{set_observation_window:[4,2,1,""],tasks_event:[4,2,1,""],calc_load:[4,2,1,""],get_observation_window:[4,2,1,""],observation_window:[4,1,1,""]},"simso.core.Scheduler.Scheduler":{add_task:[4,2,1,""],schedule:[4,2,1,""],on_terminated:[4,2,1,""],add_processor:[4,2,1,""],init:[4,2,1,""],release_lock:[4,2,1,""],on_activate:[4,2,1,""],get_lock:[4,2,1,""]},"simso.core.Scheduler":{SchedulerInfo:[4,4,1,""],Scheduler:[4,4,1,""]},"simso.core.Job.Job":{computation_time_cycles:[4,1,1,""],task:[4,1,1,""],actual_computation_time:[4,1,1,""],end_date:[4,1,1,""],is_running:[4,2,1,""],start_date:[4,1,1,""],computation_time:[4,1,1,""],is_active:[4,2,1,""],period:[4,1,1,""],ret:[4,1,1,""],laxity:[4,1,1,""],exceeded_deadline:[4,1,1,""],abort:[4,2,1,""],deadline:[4,1,1,""],wcet:[4,1,1,""],aborted:[4,1,1,""],activation_date:[4,1,1,""],absolute_deadline:[4,1,1,""],data:[4,1,1,""],cpu:[4,1,1,""],actual_computation_time_cycles:[4,1,1,""]},"simso.core.Logger.Logger":{logs:[4,1,1,""],log:[4,2,1,""]},"simso.core.Job":{Job:[4,4,1,""]},"simso.core.Processor":{Processor:[4,4,1,""]},"simso.core.Processor.Processor":{running:[4,1,1,""],resched:[4,2,1,""],is_running:[4,2,1,""],internal_id:[4,1,1,""]},"simso.configuration.Configuration":{Configuration:[4,4,1,""]},"simso.utils.PartitionedScheduler":{PartitionedScheduler:[4,4,1,""],decreasing_first_fit:[4,3,1,""],next_fit:[4,3,1,""],decreasing_best_fit:[4,3,1,""],worst_fit:[4,3,1,""],decreasing_worst_fit:[4,3,1,""],decreasing_next_fit:[4,3,1,""],best_fit:[4,3,1,""],first_fit:[4,3,1,""]},simso:{core:[4,0,0,"-"],configuration:[4,0,0,"-"]},"simso.core.Task":{Task:[4,3,1,""],GenericTask:[4,4,1,""],SporadicTask:[4,4,1,""],PTask:[4,4,1,""],ATask:[4,4,1,""],TaskInfo:[4,4,1,""]},"simso.core.Model":{Model:[4,4,1,""]},"simso.core.results":{TaskR:[4,4,1,""],Results:[4,4,1,""],ProcessorR:[4,4,1,""],SchedulerR:[4,4,1,""],JobR:[4,4,1,""]},"simso.core.Timer":{Timer:[4,4,1,""]}},titleterms:{oper:3,load:0,set:[],edf:5,skeleton:5,creat:0,schedul:[2,5,4],modul:4,creation:5,indic:1,detail:0,sporad:3,implement:5,result:4,file:[0,5],tabl:[0,1,5,4],download:2,instal:2,simul:0,pack:5,partitionedschedul:4,content:[0,5,4],what:2,defin:5,depend:[2,6],script:0,polici:5,parti:[],support:3,configur:[0,4],question:3,system:3,pyqt:6,uniform:3,avail:2,how:5,write:5,explan:5,scratch:0,simpi:6,you:3,main:4,complet:5,core:4,handl:3,gener:[3,4],licens:6,initi:5,util:4,step:2,numpi:6,ask:3,from:0,mode:0,logger:4,introduct:2,task:[3,4],third:[],simso:[0,1,2,3,4,6],document:1,uniprocessor:5,work:3,job:4,timer:4,doe:3,heterogen:3,codeeditor:[],exampl:[0,5],can:3,partit:5,own:3,model:[0,4],more:0,processor:[3,4],frequent:3,first:[0,2]}}) \ No newline at end of file diff --git a/setup.py b/setup.py index 50581f1..f98b0dd 100644 --- a/setup.py +++ b/setup.py @@ -7,7 +7,8 @@ setup( description='Simulation of Multiprocessor Real-Time Scheduling with Overheads', author='Maxime Cheramy', author_email='maxime.cheramy@laas.fr', - url='http://homepages.laas.fr/mcheramy/simso/', + url='http://projects.laas.fr/simso/', + download_url='https://github.com/MaximeCheramy/simso', classifiers=[ 'Programming Language :: Python', 'Programming Language :: Python :: 3', diff --git a/simso/__init__.py b/simso/__init__.py index ef72cc0..4ca39e7 100644 --- a/simso/__init__.py +++ b/simso/__init__.py @@ -1 +1 @@ -__version__ = '0.8.1' +__version__ = '0.8.2' diff --git a/simso/schedulers/EDHS.py b/simso/schedulers/EDHS.py index 59e7505..c539d3e 100644 --- a/simso/schedulers/EDHS.py +++ b/simso/schedulers/EDHS.py @@ -80,8 +80,7 @@ class EDHS(Scheduler): cpus.append([cpu, Fraction(0)]) # Instantiate a scheduler. - sched = EDF_modified(self.sim, SchedulerInfo("EDF_modified", - EDF_modified)) + sched = EDF_modified(self.sim, SchedulerInfo()) sched.add_processor(cpu) sched.init() diff --git a/simso/schedulers/EKG.py b/simso/schedulers/EKG.py index 0476424..cc5496a 100644 --- a/simso/schedulers/EKG.py +++ b/simso/schedulers/EKG.py @@ -108,8 +108,7 @@ class EKG(Scheduler): cpus = [] for i, cpu in enumerate(self.processors): # Instantiate a scheduler. - sched = Modified_EDF(self.sim, SchedulerInfo("Modified_EDF", - Modified_EDF)) + sched = Modified_EDF(self.sim, SchedulerInfo()) sched.add_processor(cpu) sched.init() diff --git a/simso/schedulers/LB_P_EDF.py b/simso/schedulers/LB_P_EDF.py index ffc9152..e9de06c 100644 --- a/simso/schedulers/LB_P_EDF.py +++ b/simso/schedulers/LB_P_EDF.py @@ -9,7 +9,7 @@ from simso.utils import PartitionedScheduler class LB_P_EDF(PartitionedScheduler): def init(self): - PartitionedScheduler.init(self, SchedulerInfo("EDF_mono", EDF_mono)) + PartitionedScheduler.init(self, SchedulerInfo("simso.schedulers.EDF_mono")) def packer(self): # First Fit diff --git a/simso/schedulers/P_EDF.py b/simso/schedulers/P_EDF.py index 3ef6068..bd80161 100644 --- a/simso/schedulers/P_EDF.py +++ b/simso/schedulers/P_EDF.py @@ -2,7 +2,6 @@ Partitionned EDF using PartitionedScheduler. """ from simso.core.Scheduler import SchedulerInfo -from simso.schedulers.EDF_mono import EDF_mono from simso.utils import PartitionedScheduler from simso.utils.PartitionedScheduler import decreasing_first_fit @@ -10,4 +9,4 @@ from simso.utils.PartitionedScheduler import decreasing_first_fit class P_EDF(PartitionedScheduler): def init(self): PartitionedScheduler.init( - self, SchedulerInfo("EDF_mono", EDF_mono), decreasing_first_fit) + self, SchedulerInfo("simso.schedulers.EDF_mono"), decreasing_first_fit) diff --git a/simso/schedulers/P_EDF2.py b/simso/schedulers/P_EDF2.py index 35da3f1..f672559 100644 --- a/simso/schedulers/P_EDF2.py +++ b/simso/schedulers/P_EDF2.py @@ -21,7 +21,7 @@ class P_EDF2(Scheduler): cpus.append([cpu, 0]) # Instantiate a scheduler. - sched = EDF_mono(self.sim, SchedulerInfo("EDF_mono", EDF_mono)) + sched = EDF_mono(self.sim, SchedulerInfo("simso.schedulers.EDF_mono")) sched.add_processor(cpu) sched.init() diff --git a/simso/schedulers/P_EDF_WF.py b/simso/schedulers/P_EDF_WF.py index c9112a6..19abf43 100644 --- a/simso/schedulers/P_EDF_WF.py +++ b/simso/schedulers/P_EDF_WF.py @@ -10,4 +10,4 @@ from simso.utils.PartitionedScheduler import decreasing_worst_fit class P_EDF_WF(PartitionedScheduler): def init(self): PartitionedScheduler.init( - self, SchedulerInfo("EDF_mono", EDF_mono), decreasing_worst_fit) + self, SchedulerInfo("simso.schedulers.EDF_mono"), decreasing_worst_fit) diff --git a/simso/schedulers/P_RM.py b/simso/schedulers/P_RM.py index 1e1e1ca..e03a27d 100644 --- a/simso/schedulers/P_RM.py +++ b/simso/schedulers/P_RM.py @@ -2,14 +2,13 @@ Partitionned EDF using PartitionedScheduler. """ from simso.core.Scheduler import SchedulerInfo -from simso.schedulers.RM_mono import RM_mono from simso.utils import PartitionedScheduler class P_RM(PartitionedScheduler): def init(self): PartitionedScheduler.init( - self, SchedulerInfo("RM_mono", RM_mono)) + self, SchedulerInfo("simso.schedulers.RM_mono")) def packer(self): # First Fit