chore: add unRAID Tail2 GPU diagnostics
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
services:
|
||||
diagnostic:
|
||||
image: nvcr.io/nvidia/pytorch:25.12-py3
|
||||
network_mode: host
|
||||
gpus: all
|
||||
volumes:
|
||||
- /:/host:ro
|
||||
- ./diagnostics:/diagnostics
|
||||
command:
|
||||
- /bin/bash
|
||||
- -lc
|
||||
- |
|
||||
set -uo pipefail
|
||||
exec > /diagnostics/report.txt 2>&1
|
||||
echo "timestamp=$$(date -u +%FT%TZ)"
|
||||
echo "hostname=$$(cat /host/etc/hostname 2>/dev/null || true)"
|
||||
echo "lan_ipv4=$$(hostname -I 2>/dev/null || true)"
|
||||
python3 - <<'PY'
|
||||
import socket
|
||||
for port in range(18120, 18130):
|
||||
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
try:
|
||||
sock.bind(('0.0.0.0', port))
|
||||
print(f'port_{port}=free')
|
||||
except OSError as exc:
|
||||
print(f'port_{port}=busy:{exc.errno}')
|
||||
finally:
|
||||
sock.close()
|
||||
PY
|
||||
echo '--- nvidia-smi ---'
|
||||
nvidia-smi
|
||||
echo '--- cuda/python ---'
|
||||
python3 - <<'PY'
|
||||
import torch
|
||||
print('torch=' + torch.__version__)
|
||||
print('cuda_available=' + str(torch.cuda.is_available()))
|
||||
if torch.cuda.is_available():
|
||||
print('gpu_name=' + torch.cuda.get_device_name(0))
|
||||
print('gpu_total_bytes=' + str(torch.cuda.get_device_properties(0).total_memory))
|
||||
PY
|
||||
echo '--- target directories ---'
|
||||
for path in /host/mnt/user/appdata/tail2-pose-server /host/mnt/user/appdata/tail2-pose-server-v1; do
|
||||
if [ -e "$$path" ]; then
|
||||
stat -c '%A %a %u:%g %n' "$$path"
|
||||
find "$$path" -mindepth 1 -maxdepth 2 -printf '%M %u:%g %p\n' | head -100
|
||||
else
|
||||
echo "missing $$path"
|
||||
fi
|
||||
done
|
||||
echo '--- NDI runtime candidates ---'
|
||||
find /host/usr /host/opt /host/mnt/user/appdata -xdev \( -iname 'libndi.so*' -o -iname '*ndi*runtime*' -o -iname 'Processing.NDI.Lib.h' \) -print 2>/dev/null | head -200
|
||||
echo '--- camera reachability ---'
|
||||
python3 - <<'PY'
|
||||
import socket
|
||||
print('camera_tcp_probe_only=192.168.50.207')
|
||||
for port in (80, 443, 5960, 5961):
|
||||
s = socket.socket()
|
||||
s.settimeout(1)
|
||||
try:
|
||||
rc = s.connect_ex(('192.168.50.207', port))
|
||||
finally:
|
||||
s.close()
|
||||
print(f'camera_port_{port}_connect_ex={rc}')
|
||||
PY
|
||||
Reference in New Issue
Block a user