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)); }
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"); } }