Beispiel #1
0
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;
 }