diff --git a/plugins/dynamix.docker.manager/include/CreateDocker.php b/plugins/dynamix.docker.manager/include/CreateDocker.php
index 5ca38354d..b23eabf5a 100644
--- a/plugins/dynamix.docker.manager/include/CreateDocker.php
+++ b/plugins/dynamix.docker.manager/include/CreateDocker.php
@@ -35,7 +35,47 @@ $subnet = ['bridge'=>'', 'host'=>'', 'none'=>''];
foreach ($custom as $network) $subnet[$network] = substr(DockerUtil::docker("network inspect --format='{{range .IPAM.Config}}{{.Subnet}}, {{end}}' $network"),0,-1);
+exec('cat /sys/devices/system/cpu/*/topology/thread_siblings_list|sort -nu', $cpus);
+function cpu_pinning() {
+ global $xml,$cpus;
+ $row1 = $row2 = [];
+ $vcpu = explode(',',$xml['CPUset'] ?? '');
+ $total = count($cpus);
+ $loop = floor(($total-1)/22)+1;
+ for ($c = 0; $c < $loop; $c++) {
+ $row1[$c] = $row1[$c] = [];
+ $max = ($c == $loop-1 ? ($total%22?:22) : 22);
+ for ($n = 0; $n < $max; $n++) {
+ unset($cpu1,$cpu2);
+ list($cpu1, $cpu2) = preg_split('/[,-]/',$cpus[$c*22+$n]);
+ $row1[$c][] .="$cpu1";
+ if ($cpu2) $row2[$c][] .= "$cpu2";
+ }
+ }
+ //$title = implode('
',array_fill(0,$loop,'CPU:'.($cpu2 ? '
HT:':'')));
+ for ($c = 0; $c < $loop; $c++) {
+ if ($c) echo '
';
+ echo "CPU:".implode($row1[$c]);
+ if ($row2[$c]) echo "
HT:".implode($row2[$c]);
+ }
+/*
+ foreach ($cpus as $pair) {
+ unset($cpu1,$cpu2);
+ list($cpu1, $cpu2) = preg_split('/[,-]/',$pair);
+ $check1 = in_array($cpu1, $vcpu) ? ' checked':'';
+ $check2 = $cpu2 ? (in_array($cpu2, $vcpu) ? ' checked':''):'';
+ if ($cpu2) {
+ $row1[] = "$cpu1";
+ $row2[] = "$cpu2";
+ } else {
+ $row1[] = "$cpu1";
+ }
+ }
+ echo "CPU:".implode($row1);
+ if ($row2) echo "
HT:".implode($row2);
+*/
+}
# ██████╗ ██████╗ ██████╗ ███████╗
# ██╔════╝██╔═══██╗██╔══██╗██╔════╝
@@ -251,6 +291,7 @@ optgroup.title{background-color:#625D5D;color:#FFFFFF;text-align:center;margin-t
.switch-button-label.off{color:inherit;}
.selectVariable{width:320px}
.fa.button{color:maroon;font-size:24px;position:relative;top:4px;cursor:pointer}
+span.cpu{display:inline-block;width:50px}
@@ -524,6 +565,9 @@ optgroup.title{background-color:#625D5D;color:#FFFFFF;text-align:center;margin-t
$(form).find('input[name="confTarget[]"]').each(function(){targets.push($(this));});
for (var i=0; i < types.length; i++) if (types[i]=='Port') $(targets[i]).val($(values[i]).val());
}
+ var vcpu = [];
+ $(form).find('input[id^="box"]').each(function(){if ($(this).prop('checked')) vcpu.push($('#'+$(this).prop('id').replace('box','cpu')).text());});
+ form.contCPUset.value = vcpu.join(',');
}
function makeName(type) {
@@ -664,6 +708,7 @@ optgroup.title{background-color:#625D5D;color:#FFFFFF;text-align:center;margin-t