Example #1
0
function build()
{
    if (!isset($GLOBALS["CLASS_UNIX"])) {
        include_once dirname(__FILE__) . "/framework/class.unix.inc";
        $GLOBALS["CLASS_UNIX"] = new unix();
    }
    $catBin = $GLOBALS["CLASS_UNIX"]->find_program("cat");
    $MyPid = getmypid();
    services_check();
    load_family();
    $f[] = "\nmount {";
    while (list($num, $ligne) = each($GLOBALS["CGROUPS_FAMILY"])) {
        echo "Starting......: cgroups: supported structure:{$num}\n";
        $f[] = "\t{$num} = /cgroups/{$num};";
    }
    $f[] = "}\n";
    reset($GLOBALS["CGROUPS_FAMILY"]);
    $DirMounts[] = "cpu";
    $DirMounts[] = "memory";
    $DirMounts[] = "cpuacct";
    if (!is_dir("/cgroups")) {
        @mkdir("/cgroups", 755, true);
    }
    $q = new mysql();
    $sql = "SELECT *  FROM cgroups_groups ORDER BY cpu_shares,groupname";
    writelogs("{$sql}", __FUNCTION__, __FILE__, __LINE__);
    $results = $q->QUERY_SQL($sql, "artica_backup");
    if (!$q->ok) {
        echo "{$q->mysql_error}\n";
    }
    while ($ligne = mysql_fetch_array($results, MYSQL_ASSOC)) {
        if ($ligne["memory_soft_limit_in_bytes"] < 1) {
            $ligne["memory_soft_limit_in_bytes"] = -1;
        }
        if ($ligne["memory_limit_in_bytes"] < 1) {
            $ligne["memory_limit_in_bytes"] = -1;
        }
        if ($ligne["memory_memsw_limit_in_bytes"] < 1) {
            $ligne["memory_memsw_limit_in_bytes"] = -1;
        }
        if ($ligne["memory_swappiness"] < 1) {
            $ligne["memory_swappiness"] = 60;
        }
        if ($ligne["cpuset_cpus"] == null) {
            $ligne["cpuset_cpus"] = "0,1,2,3,4,5,6,7,8";
        }
        echo "Starting......: cgroups: Group \"{$ligne["groupname"]}\"\n";
        writerules($ligne["ID"], $ligne["groupname"]);
        $f[] = "group {$ligne["groupname"]} {";
        if (testStructure($ligne["groupname"], "cpu", $MyPid)) {
            $f[] = "\tcpu {";
            if ($ligne["cpu_shares"] > 0) {
                $f[] = "\t\tcpu.shares = {$ligne["cpu_shares"]};";
                $GLOBALS["ArrayRULES"][$ligne["groupname"]]["cpu"]["cpu.shares"] = $ligne["cpu_shares"];
            }
            if ($ligne["cpu_rt_runtime_us"] > 10000) {
                $f[] = "\t\tcpu.rt_runtime_us = {$ligne["cpu_rt_runtime_us"]};";
                $GLOBALS["ArrayRULES"][$ligne["groupname"]]["cpu"]["cpu.rt_runtime_us"] = $ligne["cpu_rt_runtime_us"];
            }
            if ($ligne["cpu_rt_runtime_us"] > 10000) {
                $f[] = "\t\tcpu.rt_period_us = {$ligne["cpu_rt_period_us"]};";
                $GLOBALS["ArrayRULES"][$ligne["groupname"]]["cpu"]["cpu.rt_period_us"] = $ligne["cpu_rt_period_us"];
            }
            $f[] = "\t}";
        }
        if ($GLOBALS["CGROUPS_FAMILY"]["memory"]) {
            $GLOBALS["ArrayRULES"][$ligne["groupname"]]["memory"]["memory.soft_limit_in_bytes"] = "{$ligne["memory_soft_limit_in_bytes"]}M";
            $GLOBALS["ArrayRULES"][$ligne["groupname"]]["memory"]["memory.limit_in_bytes"] = "{$ligne["memory_limit_in_bytes"]}M";
            $GLOBALS["ArrayRULES"][$ligne["groupname"]]["memory"]["memory.memsw.limit_in_bytes"] = "{$ligne["memory_memsw_limit_in_bytes"]}M";
            $GLOBALS["ArrayRULES"][$ligne["groupname"]]["memory"]["memory.swappiness"] = "{$ligne["memory_swappiness"]}M";
            if (testStructure($ligne["groupname"], "memory", $MyPid)) {
                $f[] = "\tmemory {";
                $f[] = "\t\tmemory.soft_limit_in_bytes = {$ligne["memory_soft_limit_in_bytes"]}M;";
                $f[] = "\t\tmemory.limit_in_bytes = {$ligne["memory_limit_in_bytes"]}M;";
                $f[] = "\t\tmemory.memsw.limit_in_bytes = {$ligne["memory_memsw_limit_in_bytes"]}M;";
                $f[] = "\t\tmemory.swappiness = {$ligne["memory_swappiness"]};";
                $f[] = "\t}";
            }
        }
        if ($GLOBALS["CGROUPS_FAMILY"]["cpuset"]) {
            if (testStructure($ligne["groupname"], "cpuset", $MyPid)) {
                $GLOBALS["ArrayRULES"][$ligne["groupname"]]["cupset"]["cpuset.cpus"] = "{$ligne["cpuset_cpus"]}M";
                $f[] = "\tcupset {";
                $f[] = "\t\tcpuset.cpus = {$ligne["cpuset_cpus"]};";
                //$f[]="\t\tcpuset.mems = 0-16;";
                $f[] = "\t}";
            }
        }
        $f[] = "}\n";
    }
    echo "Starting......: cgroups: Writing /etc/cgconfig.conf\n";
    @file_put_contents("/etc/cgconfig.conf", @implode("\n", $f));
    echo "Starting......: cgroups: Writing /etc/cgrules.conf\n";
    @file_put_contents("/etc/cgrules.conf", @implode("\n", $GLOBALS["CGRULES_CONF"]));
    if (file_exists("/etc/sysconfig/cgconfig")) {
        @file_put_contents("/etc/sysconfig/cgconfig", @implode("\n", $f));
    }
    if (is_file("/etc/sysconfig/cgred.conf")) {
        $u[] = "CONFIG_FILE=\"/etc/cgrules.conf\"";
        $u[] = "LOG_FILE=\"/var/log/cgrulesengd.log\"";
        $u[] = "NODAEMON=\"\"";
        $u[] = "SOCKET_USER=\"\"";
        $u[] = "SOCKET_GROUP=\"cgred\"";
        $u[] = "LOG=\"\"";
        @file_put_contents("/etc/sysconfig/cgred.conf", @implode("\n", $f));
    }
    if (is_file("/etc/default/cgred.conf")) {
        $u[] = "CONFIG_FILE=\"/etc/cgrules.conf\"";
        $u[] = "LOG_FILE=\"/var/log/cgrulesengd.log\"";
        $u[] = "NODAEMON=\"\"";
        $u[] = "SOCKET_USER=\"\"";
        $u[] = "SOCKET_GROUP=\"cgred\"";
        $u[] = "LOG=\"\"";
        @file_put_contents("/etc/default/cgred.conf", @implode("\n", $f));
    }
    $p[] = "CREATE_DEFAULT=yes";
    @file_put_contents("/etc/default/cgconfig", @implode("\n", $p));
}
Example #2
0
function build()
{
    if (!isset($GLOBALS["CLASS_UNIX"])) {
        include_once dirname(__FILE__) . "/framework/class.unix.inc";
        $GLOBALS["CLASS_UNIX"] = new unix();
    }
    $catBin = $GLOBALS["CLASS_UNIX"]->find_program("cat");
    $MyPid = getmypid();
    services_check();
    load_family();
    $unix = new unix();
    $cgcreate = $unix->find_program("cgcreate");
    $echobin = $unix->find_program("echo");
    $f[] = "\nmount {";
    Mount_structure();
    reset($GLOBALS["CGROUPS_FAMILY"]);
    while (list($num, $ligne) = each($GLOBALS["CGROUPS_FAMILY"])) {
        if (is_cgroup_structure_mounted($num)) {
            echo "Starting......: " . date("H:i:s") . " cgroups: supported structure:{$num}\n";
            $f[] = "\t{$num} = /cgroups/{$num};";
        }
    }
    $f[] = "}\n";
    reset($GLOBALS["CGROUPS_FAMILY"]);
    $DirMounts[] = "cpu";
    $DirMounts[] = "memory";
    $DirMounts[] = "cpuacct";
    if (!is_dir("/cgroups")) {
        @mkdir("/cgroups", 0755, true);
    }
    echo "Starting......: " . date("H:i:s") . " cgroups: Writing /etc/cgconfig.conf\n";
    @file_put_contents("/etc/cgconfig.conf", @implode("\n", $f));
    echo "Starting......: " . date("H:i:s") . " cgroups: Writing /etc/cgrules.conf\n";
    @file_put_contents("/etc/cgrules.conf", @implode("\n", $GLOBALS["CGRULES_CONF"]));
    if (file_exists("/etc/sysconfig/cgconfig")) {
        @file_put_contents("/etc/sysconfig/cgconfig", @implode("\n", $f));
    }
    if (is_file("/etc/sysconfig/cgred.conf")) {
        $u[] = "CONFIG_FILE=\"/etc/cgrules.conf\"";
        $u[] = "LOG_FILE=\"/var/log/cgrulesengd.log\"";
        $u[] = "NODAEMON=\"\"";
        $u[] = "SOCKET_USER=\"\"";
        $u[] = "SOCKET_GROUP=\"cgred\"";
        $u[] = "LOG=\"\"";
        @file_put_contents("/etc/sysconfig/cgred.conf", @implode("\n", $f));
    }
    if (is_file("/etc/default/cgred.conf")) {
        $u[] = "CONFIG_FILE=\"/etc/cgrules.conf\"";
        $u[] = "LOG_FILE=\"/var/log/cgrulesengd.log\"";
        $u[] = "NODAEMON=\"\"";
        $u[] = "SOCKET_USER=\"\"";
        $u[] = "SOCKET_GROUP=\"cgred\"";
        $u[] = "LOG=\"\"";
        @file_put_contents("/etc/default/cgred.conf", @implode("\n", $f));
    }
    $p[] = "CREATE_DEFAULT=yes";
    @file_put_contents("/etc/default/cgconfig", @implode("\n", $p));
    $sock = new sockets();
    $cgroupsPHPCpuShares = intval($sock->GET_INFO("cgroupsPHPCpuShares"));
    $cgroupsPHPDiskIO = intval($sock->GET_INFO("cgroupsPHPDiskIO"));
    if ($cgroupsPHPCpuShares == 0) {
        $cgroupsPHPCpuShares = 256;
    }
    if ($cgroupsPHPDiskIO == 0) {
        $cgroupsPHPDiskIO = 450;
    }
    $cgroupsMySQLCpuShares = intval($sock->GET_INFO("cgroupsMySQLCpuShares"));
    $cgroupMySQLDiskIO = intval($sock->GET_INFO("cgroupsMySQLDiskIO"));
    if ($cgroupsMySQLCpuShares == 0) {
        $cgroupsMySQLCpuShares = 620;
    }
    if ($cgroupMySQLDiskIO == 0) {
        $cgroupMySQLDiskIO = 800;
    }
    limit_service_structure("php", $cgroupsPHPCpuShares, 0, $cgroupsPHPDiskIO);
    limit_service_structure("mysql", $cgroupsMySQLCpuShares, 0, $cgroupMySQLDiskIO);
    if ($GLOBALS["RELOAD_STATUS"]) {
        shell_exec("/etc/init.d/artica-status restart --force");
    }
}