<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Linux on AiSlackin</title><link>https://aislackin.com/tags/linux/</link><description>Recent content in Linux on AiSlackin</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Fri, 21 Aug 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://aislackin.com/tags/linux/index.xml" rel="self" type="application/rss+xml"/><item><title>npu-monitor: a system tray that knows what hardware each box actually has</title><link>https://aislackin.com/posts/2026-08-21-npu-monitor-gpu-tray/</link><pubDate>Fri, 21 Aug 2026 00:00:00 +0000</pubDate><guid>https://aislackin.com/posts/2026-08-21-npu-monitor-gpu-tray/</guid><description>&lt;p&gt;Every multi-host monitoring tool I tried assumed homogeneous hardware: one GPU, maybe two, same on every machine. My LAN doesn&amp;rsquo;t work like that — one box has an AMD APU iGPU plus a Ryzen AI NPU, another has an AMD R9700 &lt;em&gt;and&lt;/em&gt; an NVIDIA RTX 5060 Ti. So &lt;code&gt;npu-monitor&lt;/code&gt; treats the device list as dynamic: each host reports its own real silicon and the tray renders whatever arrives.&lt;/p&gt;&#10;&lt;p&gt;The numbers come from the actual kernel interfaces, not screen-scraping: ROCm sysfs (&lt;code&gt;gpu_busy_percent&lt;/code&gt;) for AMD cards, &lt;code&gt;nvidia-smi&lt;/code&gt; for CUDA, &lt;code&gt;/proc/stat&lt;/code&gt; deltas for CPU, and a raw &lt;code&gt;DRM_IOCTL_AMDXDNA_GET_INFO&lt;/code&gt; ioctl against &lt;code&gt;/dev/accel/accel0&lt;/code&gt; — using the real 168-byte sensor struct from the kernel UAPI — for the NPU&amp;rsquo;s utilization columns.&lt;/p&gt;</description></item><item><title>wimpy-setup: a dual-GPU inference box you can rebuild from scripts</title><link>https://aislackin.com/posts/2026-06-28-wimpy-dual-gpu-inference/</link><pubDate>Sun, 28 Jun 2026 00:00:00 +0000</pubDate><guid>https://aislackin.com/posts/2026-06-28-wimpy-dual-gpu-inference/</guid><description>&lt;p&gt;This is not a guide. It&amp;rsquo;s the actual, ordered, idempotent script set that builds my inference server — shared because rebuilding from memory is how homelabs die. Wimpy is a Ryzen 7 7700 with two GPUs serving LLM inference &lt;em&gt;at the same time&lt;/em&gt;: an AMD Radeon AI PRO R9700 (32GB, ROCm) and an NVIDIA RTX 5060 Ti (16GB, CUDA), behind one llama-swap endpoint.&lt;/p&gt;&#10;&lt;p&gt;The dual-GPU part is the reason this repo exists. HIP and CUDA backends of llama.cpp share library filenames, so they can&amp;rsquo;t coexist in one prefix — there are two isolated builds (&lt;code&gt;/usr/local&lt;/code&gt; for ROCm, &lt;code&gt;/opt/llama-cuda&lt;/code&gt; for CUDA) and one llama-swap config with two non-exclusive groups. A &lt;code&gt;-cuda&lt;/code&gt; model entry is the same GGUF as its AMD twin with a different binary and device pin, so either card can serve it. GPUs are pinned by UUID (the Ryzen iGPU also enumerates as a ROCm device and will happily steal your workloads if you let it).&lt;/p&gt;</description></item></channel></rss>