mirror of
https://github.com/unraid/webgui.git
synced 2026-01-24 10:28:39 -06:00
Make System Devices page more responsive
This commit is contained in:
@@ -14,6 +14,21 @@ Tag="list"
|
||||
* all copies or substantial portions of the Software.
|
||||
*/
|
||||
?>
|
||||
<style>
|
||||
table.pre{margin-top:0}
|
||||
table.pre td:first-child{width:144px}
|
||||
table tr td{padding:0 0 3px 0;margin:0}
|
||||
table tr td.thin{line-height:8px;height:8px}
|
||||
</style>
|
||||
<script>
|
||||
$(function(){
|
||||
$.get('/webGui/include/SysDevs.php',{table:'t1'},function(data){$('#t1').html(data)});
|
||||
$.get('/webGui/include/SysDevs.php',{table:'t2'},function(data){$('#t2').html(data)});
|
||||
$.get('/webGui/include/SysDevs.php',{table:'t3'},function(data){$('#t3').html(data)});
|
||||
$.get('/webGui/include/SysDevs.php',{table:'t4'},function(data){$('#t4').html(data)});
|
||||
});
|
||||
</script>
|
||||
|
||||
**PCI Devices and IOMMU Groups**
|
||||
|
||||
> This displays a list of IOMMU groups available on your system along with the output of the `lspci` command for each IOMMU group. The numeric identifiers are used to configure PCI pass-through.
|
||||
@@ -21,40 +36,20 @@ Tag="list"
|
||||
<?if (strpos(file_get_contents('/proc/cmdline'), 'pcie_acs_override=') !== false):?>
|
||||
<p class="notice">Warning: Your system has booted with the PCIe ACS Override setting enabled. The below list doesn't not reflect the way IOMMU would naturally group devices. To see natural IOMMU groups for your hardware, go to the <b><a href="/Settings/VMSettings">VM Settings</a></b> page and set the <b>PCIe ACS Override</b> setting to <b>No</b>.</p>
|
||||
<?endif;?>
|
||||
<?
|
||||
echo "<pre><table>";
|
||||
$iommu_groups = shell_exec('for iommu_group in $(ls /sys/kernel/iommu_groups/ -1|sort -n);do echo "IOMMU group $iommu_group"; for device in $(ls -1 "/sys/kernel/iommu_groups/$iommu_group"/devices/); do echo -n $\'\t\';lspci -ns "$device"|awk \'BEGIN{ORS=" "}{print "["$3"]"}\';lspci -s "$device"; done; done');
|
||||
if (empty($iommu_groups)) {
|
||||
$iommu_groups = explode("\n", shell_exec("lspci -n|awk '{print \"[\"\$3\"]\"}'"));
|
||||
$i = 0;
|
||||
foreach (explode("\n", shell_exec("lspci")) as $strDesc) {
|
||||
echo "<tr><td>".$iommu_groups[$i++]." ".$strDesc."</td></tr>";
|
||||
}
|
||||
} else {
|
||||
foreach (explode("\n", $iommu_groups) as $iommu_group) {
|
||||
if ($iommu_group[0]=='I') {
|
||||
echo "<tr><td colspan='2'> </td></tr><tr><td>$iommu_group</td><td>";
|
||||
$append = true;
|
||||
} else {
|
||||
echo preg_replace("/^\t/",$append?"":"<tr><td></td><td>",$iommu_group)."</td></tr>";
|
||||
$append = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
echo "</table></pre>";
|
||||
?>
|
||||
|
||||
<pre><table id='t1' class='pre'><tr><td><i class='fa fa-spinner fa-spin'></i> Please wait... retrieving information!</td></tr></table></pre><br>
|
||||
|
||||
**CPU Thread Pairings**
|
||||
|
||||
> This displays a list of CPU thread pairings.
|
||||
|
||||
<pre><?=preg_replace(['/(\d+)[-,](\d+)/','/(\d+)\b/'], ['$1 / $2','cpu $1'], shell_exec("cat /sys/devices/system/cpu/*/topology/thread_siblings_list|sort -nu"))?></pre>
|
||||
<pre><table id='t2' class='pre'><tr><td><i class='fa fa-spinner fa-spin'></i> Please wait... retrieving information!</td></tr></table></pre><br>
|
||||
|
||||
**USB Devices**
|
||||
|
||||
> This displays the output of the `lsusb` command. The numeric identifiers are used to configure PCI pass-through.
|
||||
|
||||
<pre><?=shell_exec("lsusb|sort")?></pre>
|
||||
<pre><table id='t3' class='pre'><tr><td><i class='fa fa-spinner fa-spin'></i> Please wait... retrieving information!</td></tr></table></pre><br>
|
||||
|
||||
**SCSI Devices**
|
||||
|
||||
@@ -62,5 +57,5 @@ echo "</table></pre>";
|
||||
>
|
||||
> Note that linux groups ATA, SATA and SAS devices with true SCSI devices.
|
||||
|
||||
<pre><?=shell_exec("lsscsi -s")?></pre>
|
||||
<pre><table id='t4' class='pre'><tr><td><i class='fa fa-spinner fa-spin'></i> Please wait... retrieving information!</td></tr></table></pre>
|
||||
<input type="button" value="Done" onclick="done()">
|
||||
|
||||
58
plugins/dynamix/include/SysDevs.php
Normal file
58
plugins/dynamix/include/SysDevs.php
Normal file
@@ -0,0 +1,58 @@
|
||||
<?PHP
|
||||
/* Copyright 2005-2017, Lime Technology
|
||||
* Copyright 2012-2017, Bergware International.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License version 2,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*/
|
||||
?>
|
||||
<?
|
||||
switch ($_GET['table']) {
|
||||
case 't1':
|
||||
$groups = shell_exec('for group in $(ls /sys/kernel/iommu_groups/ -1|sort -n);do echo "IOMMU group $group"; for device in $(ls -1 "/sys/kernel/iommu_groups/$group"/devices/); do echo -n $\'\t\';lspci -ns "$device"|awk \'BEGIN{ORS=" "}{print "["$3"]"}\';lspci -s "$device"; done; done');
|
||||
if (empty($groups)) {
|
||||
$iommu = explode("\n", shell_exec("lspci -n|awk '{print \"[\"\$3\"]\"}'"));
|
||||
$i = 0;
|
||||
foreach (explode("\n", shell_exec("lspci")) as $line) {
|
||||
echo "<tr><td>".$iommu[$i++]."</td><td>$line</td></tr>";
|
||||
}
|
||||
} else {
|
||||
foreach (explode("\n", $groups) as $line) {
|
||||
if (!$line) continue;
|
||||
if ($line[0]=='I') {
|
||||
if ($spacer) echo "<tr><td colspan='2' class='thin'></td>"; else $spacer = true;
|
||||
echo "</tr><tr><td>$line:</td><td>";
|
||||
$append = true;
|
||||
} else {
|
||||
echo preg_replace("/^\t/",$append?"":"<tr><td></td><td>",$line)."</td></tr>";
|
||||
$append = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 't2':
|
||||
$i = 1;
|
||||
foreach (explode("\n", preg_replace(['/(\d+)[-,](\d+)/','/(\d+)\b/'], ['$1 / $2','cpu $1'], shell_exec("cat /sys/devices/system/cpu/*/topology/thread_siblings_list|sort -nu"))) as $line) {
|
||||
if (!$line) continue;
|
||||
echo "<tr><td>".(strpos($line,'/')!==false?"Pair ".$i++:"Single").":</td><td>$line</td></tr>";
|
||||
}
|
||||
break;
|
||||
case 't3':
|
||||
foreach (explode("\n", shell_exec("lsusb|sort")) as $line) {
|
||||
if (!$line) continue;
|
||||
list($bus,$id) = explode(':', $line, 2);
|
||||
echo "<tr><td>$bus:</td><td>".trim($id)."</td></tr>";
|
||||
}
|
||||
break;
|
||||
case 't4':
|
||||
foreach (explode("\n", shell_exec("lsscsi -s")) as $line) {
|
||||
if (!$line || strpos($line,'/dev/')===false) continue;
|
||||
echo "<tr><td>".preg_replace('/\] +/',']</td><td>',$line)."</td></tr>";
|
||||
}
|
||||
break;
|
||||
}
|
||||
?>
|
||||
Reference in New Issue
Block a user