function get_instance_util_data($game) { define('TTL', 30 * 60); //cache expiry time for apc is 30min $key = "instance_util_data_{$game}"; $instances_obj = apc_fetch($key, $success); if ($success) { return $instances_obj; } else { $instance_util_obj = new InstanceUtilAdapter($game); $instances_obj = array("instances" => $instance_util_obj->get_instances_detail_data(), "total" => $instance_util_obj->get_game_summary(), "dau" => $instance_util_obj->get_dau()); apc_add($key, $instances_obj, TTL); return $instances_obj; } }
public function computeSlack($values) { include_once "../report/instance-util-adapter.php"; include_once "../report/report-collector.php"; $return_array = $this->parse_inputs_computeSlack($values); if (!$return_array) { return false; } $game = $return_array['game_name']; if (!in_array($game, $this->server_cfg['game_list'])) { $this->status = 5; return false; } $dataArr = array(); $slack_now = $return_array['slack_now']; $instance_util_obj = new InstanceUtilAdapter($game, $slack_now); $instances = $instance_util_obj->get_instances_breakup_data(); $dau = $instance_util_obj->get_dau(); // $class_data = $instances["web"]; $pool_slack = array(); foreach ($instances as $class => $class_data) { foreach ($class_data as $pool => $data) { if ($data["count"] == null || $data["count"] == 0) { //if instance count is 0, don't show in report continue; } $dau_per_instance = round($dau / $data["count"]); $util = $this->get_util($data["util"]); $bottleneck = $data["util"]["bottleneck_key"]; $underutilized = $data["util"]["underutil_key"]; if ($bottleneck == "") { $bottleneck = "-"; } if ($underutilized == "") { $underutilized = "-"; } if ($util == NA) { $optimal_count = NA; $optimal_cost = NA; $optimal_cost_year = NA; $slack = NA; $headroom = NA; } else { $optimal_count = $data["optimal_instance_count"]; $optimal_count_factor = $data["optimal_count_factor"]; $optimal_cost = number_format($data["optimal_cost"]); $optimal_cost_year = number_format($data["optimal_cost"] * 30 * 365); $slack = number_format(($data["count"] - $data["optimal_instance_count"]) * 100 / $data["count"], 2, '.', '') . "%"; $headroom = $this->get_headroom($data["util"]["utilization"]) . "%"; } $pool_slack[$pool]["slack"] = $slack; $pool_slack[$pool]["count"] = $data["count"]; $pool_slack[$pool]["optimal_instance_count"] = $optimal_count; $pool_slack[$pool]["optimal_count_factor"] = $optimal_count_factor; } } $pool_slack = json_encode($pool_slack); echo $pool_slack . "\n"; $this->status = 6; }