Change OBS Worker scheduling scheme 30/162930/1
authorhyokeun <hyokeun.jeon@samsung.com>
Wed, 6 Dec 2017 08:12:29 +0000 (17:12 +0900)
committerhyokeun <hyokeun.jeon@samsung.com>
Wed, 6 Dec 2017 08:12:29 +0000 (17:12 +0900)
Change-Id: I6e98682ebd1c44ee6b233be5cfd11ae413c09ae7

job_obs_worker_auto_scailing.py

index 8fce2b0..95f790c 100644 (file)
@@ -141,11 +141,21 @@ def main():
 
     need_new_worker = worker_status['waiting'] - worker_status['idle_normal'] - worker_status['idle_power']
 
+    #TODO: scheduling
+    # 3 packages per 1 instance for 5 minutes
+    # number of packages can be handled with existing instances
+    num_can_handle_now = 3 * (worker_status['idle_normal'] \
+                            + worker_status['idle_power'] \
+                            + worker_status['building_normal'] \
+                            + worker_status['building_power'])
+    # number of packages need workers
+    num_need_more = int((need_new_worker - num_can_handle_now) / 10)
+
     if os.getenv('OBS_WORKER_NORMAL_AUTO_SCAILING_ENABLED', '0') == '0':
         return
 
-    if need_new_worker > 0:
-        print "\"TitleDisplay\": \"+ %d\"" % need_new_worker
+    if num_need_more > 0:
+        print "\"TitleDisplay\": \"+ %d\"" % num_need_more
         request_workers(need_new_worker)
     elif worker_status['waiting'] <= 0 and len(worker_status['normal_slots_idle']) > 0:
         revoke_workers(sorted(worker_status['normal_slots_idle']), OBS_NORMAL_WORKER)