44
55/default parameters
66
7- scalingdetails : ([] time : `timestamp $ (); procname : ` $ (); dir : ` $ (); totalnumofinstances : `int $ (); lowerlimit : `int $ (); upperlimit : `int $ ()); /table for tracking scaling
7+ scalingdetails : ([] time : `timestamp $ (); procname : ` $ (); dir : ` $ (); instancecreated : ` $ (); instanceremoved : ` $ (); totalnumofinstances : `int $ (); lowerlimit : `int $ (); upperlimit : `int $ ()); /table for tracking scaling
88
99processlimitscsv : hsym first .proc.getconfigfile "processlimits.csv" ; /location of csv file
1010limits : 1 ! ("SII" ;enlist "," )0: processlimitscsv ; /table of scalable processes and the max number of instances allowed for each
@@ -21,25 +21,36 @@ getscaleprocsinstances[];
2121
2222/function to scale up a process
2323scaleup : {[procname ]
24- $ [.orch. scaleprocsinstances [procname ;`instances ]<.orch. limits [procname ;`upper ];
25- [system "bash addproc.sh " , string procname ;
24+ $ [scaleprocsinstances [procname ;`instances ]<limits [procname ;`upper ];
25+ [system "bash ${TORQHOME}/ addproc.sh " , string procname ;
2626 /update number of process instances
2727 getscaleprocsinstances [];
2828 /update table with record for scaling up
29- `.orch.scalingdetails upsert (.z.p ;procname ;`up ;.orch. scaleprocsinstances [procname ;`instances ];.orch. limits [procname ;`lower ];.orch. limits [procname ;`upper ])];
29+ `.orch.scalingdetails upsert (.z.p ;procname ;`up ;` $ ( last procs where procs like string [ procname ] , "*" ); ` ; scaleprocsinstances [procname ;`instances ];limits [procname ;`lower ];limits [procname ;`upper ])];
3030 .lg.o [`scale ;"upper limit hit for " , string procname ]
3131 ];
3232 }
3333
3434/function to scale down a process
3535scaledown : {[procname ]
36- $ [.orch. scaleprocsinstances [procname ;`instances ]>.orch. limits [procname ;`lower ];
37- [latestinstance : last .orch. procs where .orch. procs like string [procname ], "*" ;
38- system "bash removeproc.sh " , latestinstance ;
36+ $ [scaleprocsinstances [procname ;`instances ]>limits [procname ;`lower ];
37+ [latestinstance : last procs where procs like string [procname ], "*" ;
38+ system "bash ${TORQHOME}/ removeproc.sh " , latestinstance ;
3939 /update number of process instances
4040 getscaleprocsinstances [];
4141 /update table with record for scaling down
42- `.orch.scalingdetails upsert (.z.p ;procname ;`down ;.orch. scaleprocsinstances [procname ;`instances ];.orch. limits [procname ;`lower ];.orch. limits [procname ;`upper ])];
42+ `.orch.scalingdetails upsert (.z.p ;procname ;`down ;` ; ` $ latestinstance ; scaleprocsinstances [procname ;`instances ];limits [procname ;`lower ];limits [procname ;`upper ])];
4343 .lg.o [`scale ;"lower limit hit for " , string procname ]
4444 ];
4545 }
46+
47+
48+ /function to ensure all processes have been scaled up to meet lower limit
49+ initialscaling : {[procname ]
50+ if [scaleprocsinstances [procname ;`instances ]<limits [procname ;`lower ];
51+ reqinstances : limits [procname ;`lower ]-scaleprocsinstances [procname ;`instances ];
52+ do [reqinstances ;scaleup [procname ]];
53+ ];
54+ }
55+
56+ initialscaling @/: scaleprocslist ;
0 commit comments