25G固件在MAC下可能无问题。ikuai下无法联网,pve下可能无法联网
administrators
帖子
-
CX4 华为SP333刷回官方10G固件 -
CX4 华为SP333刷回官方10G固件注意事项
网上下载的 SP380 固件可能存在 连接异常或无法联网的 Bug。
本文将教你 如何刷回官方固件 并保证设备可以正常使用。
升级操作说明
1. 文件准备
禁止直接打开下面的txt以免文件损坏
- 将升级包的文件后缀由
.txt改为.zip。 - 解压
.zip文件。
2. 赋予安装脚本执行权限
在解压后的目录中执行以下命令:
chmod +x install.sh
3. 执行升级命令
运行以下命令开始升级:
./install.sh upgrade
️ 注意:执行过程中 无回显打印,请耐心等待命令执行完成。
4. 查看升级结果
(1)查看升级结果状态
执行以下命令:
cat result.xml若输出中:
<Result>OK</Result>则表示 升级成功。
(2)查看升级日志
执行以下命令查看详细日志信息:
cat work.log或直接在当前目录中打开 work.log 文件,查看完整的升级过程日志。
- 将升级包的文件后缀由
-
修复开启Sriov开启后vmbr无法联网的问题复制粘贴到
/usr/bin/fix_vmbr然后
chmod 755 /usr/bin/fix_vmbr使用交互式脚本自动修复
fix_vmbr以下是脚本
#!/bin/bash # fix_vmbr - 为 VM/CT 添加 bridgefix 钩子脚本(自动创建/下载) set -euo pipefail HOOKSCRIPT_ID="local:snippets/bridgefix.sh" SNIPPETS_DIR="/var/lib/vz/snippets" HOOKSCRIPT_PATH="$SNIPPETS_DIR/bridgefix.sh" HOOKSCRIPT_URL="https://raw.githubusercontent.com/jdlayman/pve-hookscript-sriov/master/bridgefix.sh" # 检查 pvesh, jq, qm, pct for cmd in pvesh jq qm pct wget; do if ! command -v $cmd >/dev/null 2>&1; then echo "❌ 未找到命令: $cmd,请安装后重试。" exit 1 fi done # 创建目录并下载 bridgefix.sh(如果不存在) if [[ ! -f "$HOOKSCRIPT_PATH" ]]; then echo "📦 $HOOKSCRIPT_PATH 不存在,正在创建目录并下载..." mkdir -p "$SNIPPETS_DIR" wget -O "$HOOKSCRIPT_PATH" "$HOOKSCRIPT_URL" chmod +x "$HOOKSCRIPT_PATH" echo "✅ 下载完成:$HOOKSCRIPT_PATH" fi echo "==============================" echo " Proxmox VM / CT 列表" echo "==============================" RESOURCES=$(pvesh get /cluster/resources --type vm --output-format json) printf " %-6s | %-6s | %s\n" "ID" "类型" "名称" printf " %s\n" "-------------------------------------------------" echo "$RESOURCES" | jq -r '.[] | "\(.vmid)\t\(.type)\t\(.name // "-")"' | \ while IFS=$'\t' read -r vmid vtype name; do [[ "$vtype" == "qemu" ]] && vtype="VM" [[ "$vtype" == "lxc" ]] && vtype="CT" printf " %-6s | %-6s | %s\n" "$vmid" "$vtype" "$name" done echo "" read -r -p "请输入要修复的 VMID: " VMID TYPE=$(echo "$RESOURCES" | jq -r --arg id "$VMID" '.[] | select(.vmid == ($id|tonumber)) | .type') if [[ -z "$TYPE" || "$TYPE" == "null" ]]; then echo "❌ 找不到 VMID $VMID" exit 1 fi echo "" echo "检测到:VMID=$VMID 类型=$TYPE" echo "" if [[ "$TYPE" == "qemu" ]]; then echo "➡️ 为虚拟机设置 hookscript..." qm set "$VMID" --hookscript "$HOOKSCRIPT_ID" elif [[ "$TYPE" == "lxc" ]]; then echo "➡️ 为容器设置 hookscript..." pct set "$VMID" --hookscript "$HOOKSCRIPT_ID" else echo "❌ 未知类型:$TYPE" exit 1 fi echo "✅ 已成功为 $TYPE $VMID 设置 hookscript:$HOOKSCRIPT_ID" -
CX4开启Sriov一键脚本CX4一键开启Sriov并且开机自动启动脚本
# —— 直接复制整个下面块并运行 —— sudo mkdir -p /opt/enable-sriov sudo tee /opt/enable-sriov/enable-sriov.sh > /dev/null <<'EOF' #!/usr/bin/env bash # /opt/enable-sriov/enable-sriov.sh # 目的:在 enp7s0f0np0 上启用 8 个 VF 并为 VF 0..7 设置 MAC 00:80:00:00:00:00 .. 00:80:00:00:00:07 set -euo pipefail # 如需修改接口名,请编辑下方 IFACE 变量或通过 systemd 的 Environment 传入 IFACE="enp7s0f0np0" NUMVFS=8 SYS="/sys/class/net/${IFACE}/device" IP_BIN="$(command -v ip || echo /sbin/ip)" LOG_PREFIX="[enable-sriov ${IFACE}]" if [ "$(id -u)" -ne 0 ]; then echo "${LOG_PREFIX} must be run as root" >&2 exit 1 fi if [ ! -d "${SYS}" ]; then echo "${LOG_PREFIX} ERROR: sysfs path ${SYS} not found. Is ${IFACE} correct?" >&2 exit 1 fi ${IP_BIN} link set dev "${IFACE}" up 2>/dev/null || true current=0 if [ -r "${SYS}/sriov_numvfs" ]; then current=$(cat "${SYS}/sriov_numvfs" 2>/dev/null || echo 0) fi echo "${LOG_PREFIX} current sriov_numvfs=${current}, target=${NUMVFS}" if [ "${current}" -ne "${NUMVFS}" ]; then set +e echo "${NUMVFS}" > "${SYS}/sriov_numvfs" 2>/dev/null rc=$? set -e if [ $rc -ne 0 ]; then echo "${LOG_PREFIX} direct write ${NUMVFS} failed, trying reset to 0 then set ${NUMVFS}" echo 0 > "${SYS}/sriov_numvfs" || true sleep 0.1 echo "${NUMVFS}" > "${SYS}/sriov_numvfs" fi sleep 0.2 new=$(cat "${SYS}/sriov_numvfs" 2>/dev/null || echo 0) echo "${LOG_PREFIX} sriov_numvfs now ${new}" if [ "${new}" -ne "${NUMVFS}" ]; then echo "${LOG_PREFIX} ERROR: failed to set sriov_numvfs to ${NUMVFS}" >&2 exit 2 fi else echo "${LOG_PREFIX} sriov already set to ${NUMVFS}, skipping re-provision." fi for i in $(seq 0 $((NUMVFS - 1))); do last_octet=$(printf "%02x" "${i}") mac=$(printf "00:80:00:00:00:%s" "${last_octet}") echo "${LOG_PREFIX} set vf ${i} mac ${mac}" ${IP_BIN} link set dev "${IFACE}" vf "${i}" mac "${mac}" || { echo "${LOG_PREFIX} WARN: failed to set mac for vf ${i}" >&2 } # 可选:取消 spoofchk(若需要允许 VM 使用任意 MAC) # ${IP_BIN} link set dev "${IFACE}" vf "${i}" spoofchk off || true done echo "${LOG_PREFIX} done" exit 0 EOF sudo chmod 755 /opt/enable-sriov/enable-sriov.sh # 写 systemd unit 到 /etc/systemd/system/enable-sriov.service sudo tee /etc/systemd/system/enable-sriov.service > /dev/null <<'EOF' [Unit] Description=Enable SR-IOV (8 VFs) and configure MACs (generic) After=network-pre.target Before=network.target Wants=network-pre.target [Service] Type=oneshot # 如果想用不同接口,编辑 /opt/enable-sriov/enable-sriov.sh 中的 IFACE, # 或在这里添加 Environment=IFACE=othername ExecStart=/opt/enable-sriov/enable-sriov.sh RemainAfterExit=yes TimeoutStartSec=30 [Install] WantedBy=multi-user.target EOF # reload, enable and start sudo systemctl daemon-reload sudo systemctl enable --now enable-sriov.service # show recent logs for quick check sudo journalctl -u enable-sriov.service -n 200 --no-pager # —— 安装结束 —— -
常用单线程测速节点常用单线程测速节点
国内
wget -O /dev/null https://mirrors.huaweicloud.com/ubuntu-releases/25.04/ubuntu-25.04-desktop-amd64.iso海外
wget -O /dev/null "https://speed.cloudflare.com/__down?during=download&bytes=1073741824" -
WireGuard 多节点组网教程WireGuard 多节点组网教程
网络拓扑概述
本教程介绍如何使用WireGuard构建一个4节点的安全网络架构,实现多个网段间的互联互通。
网络拓扑图
┌─────────────────────────────┐ ┌─────────────────────────────┐ │ 节点A │◄──►│ 节点B │ │ OpenWrt路由器 │ │ OpenWrt路由器 │ │ │ │ │ │ 本地网段: 192.168.1.0/24 │ │ 本地网段: 192.168.2.0/24 │ │ WG IP: 10.0.0.1/32 │ │ WG IP: 10.0.0.2/32 │ │ 监听端口: 51820 │ │ 监听端口: 51821 │ │ 外部地址: nodeA.example.com │ │ 外部地址: nodeB.example.com │ └──────────────┬──────────────┘ └──────────────┬──────────────┘ │ │ │ ┌─────────────────────────────┐│ └───────────►│ 节点C │◄┘ │ 公网服务器 (中心节点) │ │ │ │ WG IP: 10.0.0.3/32 │ │ 监听端口: 51822 │ │ 外部地址: nodeC.example.com │ └──────────────┬──────────────┘ │ ┌─────────────────────────────┐ │ 节点D │ │ 内网服务器 │ │ │ │ 本地网段: 192.168.3.0/24 │ │ WG IP: 10.0.0.4/32 │ │ 无监听端口 (主动连接) │ └─────────────────────────────┘连接关系
- 节点A
节点B: 直连,实现两个局域网间的高速通信 - 节点B
节点C: 直连,提供优化的访问路径 - 节点A
节点C: 直连,确保网络连通性 - 节点C
节点D: 连接,节点D通过节点C访问其他网段
节点配置规划
节点基本信息
节点 类型 WireGuard IP 本地网段 监听端口 外部地址 角色 节点A OpenWrt路由器 10.0.0.1/32 192.168.1.0/24 51820 nodeA.example.com 边缘节点 节点B OpenWrt路由器 10.0.0.2/32 192.168.2.0/24 51821 nodeB.example.com 边缘节点 节点C 公网服务器 10.0.0.3/32 - 51822 nodeC.example.com 中心节点 节点D 内网服务器 10.0.0.4/32 192.168.3.0/24 - - 内网节点 密钥生成
每个节点需要生成自己的密钥对:
# 生成私钥 wg genkey > private.key # 生成公钥 wg pubkey < private.key > public.key # 生成预共享密钥(可选,用于增强安全性) wg genpsk > preshared.key公钥信息示例
节点 公钥 节点A [节点A的公钥] 节点B [节点B的公钥] 节点C [节点C的公钥] 节点D [节点D的公钥] 路由配置
网段访问路径
源网段 目标网段 路径 优化状态 192.168.1.0/24 192.168.2.0/24 节点A → 节点B (直连)
优化192.168.2.0/24 192.168.1.0/24 节点B → 节点A (直连)
优化192.168.1.0/24 192.168.3.0/24 节点A → 节点C → 节点D
正常192.168.2.0/24 192.168.3.0/24 节点B → 节点C → 节点D
正常192.168.3.0/24 192.168.1.0/24 节点D → 节点C → 节点A
正常192.168.3.0/24 192.168.2.0/24 节点D → 节点C → 节点B
正常AllowedIPs 配置原则
节点A 配置
- 到节点C:
10.0.0.3/32, 10.0.0.4/32, 192.168.3.0/24 - 到节点B:
10.0.0.2/32, 192.168.2.0/24 - 预共享密钥: 可选择与节点B使用
节点B 配置
- 到节点A:
10.0.0.1/32, 192.168.1.0/24 - 到节点C:
10.0.0.3/32, 10.0.0.4/32, 192.168.3.0/24 - 预共享密钥: 可选择与节点A使用
节点C 配置
- 到节点A:
10.0.0.1/32, 192.168.1.0/24 - 到节点B:
10.0.0.2/32, 192.168.2.0/24 - 到节点D:
10.0.0.4/32, 192.168.3.0/24
节点D 配置
- 到节点C:
10.0.0.0/24, 192.168.1.0/24, 192.168.2.0/24
网络参数配置
通用参数
- MTU: 1300 (所有节点统一,避免分片)
- PersistentKeepalive: 25秒 (保持NAT穿透)
- WireGuard骨干网: 10.0.0.0/24
安全配置建议
- 预共享密钥: 建议在关键连接上使用预共享密钥增强安全性
- 定期更换密钥: 建议定期更换WireGuard密钥
- 防火墙规则: 严格控制WireGuard端口访问
配置文件示例
节点A (OpenWrt) 配置
# /etc/config/network 配置 config interface 'wg0' option proto 'wireguard' option private_key '[节点A私钥]' option listen_port '51820' list addresses '10.0.0.1/32' config wireguard_wg0 option public_key '[节点B公钥]' option endpoint 'nodeB.example.com:51821' option preshared_key '[预共享密钥]' list allowed_ips '10.0.0.2/32' list allowed_ips '192.168.2.0/24' option persistent_keepalive '25' config wireguard_wg0 option public_key '[节点C公钥]' option endpoint 'nodeC.example.com:51822' list allowed_ips '10.0.0.3/32' list allowed_ips '10.0.0.4/32' list allowed_ips '192.168.3.0/24' option persistent_keepalive '25'节点C (Linux服务器) 配置
[Interface] PrivateKey = [节点C私钥] Address = 10.0.0.3/32 ListenPort = 51822 PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE [Peer] # 节点A PublicKey = [节点A公钥] Endpoint = nodeA.example.com:51820 AllowedIPs = 10.0.0.1/32, 192.168.1.0/24 PersistentKeepalive = 25 [Peer] # 节点B PublicKey = [节点B公钥] Endpoint = nodeB.example.com:51821 AllowedIPs = 10.0.0.2/32, 192.168.2.0/24 PersistentKeepalive = 25 [Peer] # 节点D PublicKey = [节点D公钥] AllowedIPs = 10.0.0.4/32, 192.168.3.0/24 PersistentKeepalive = 25节点D (内网服务器) 配置
[Interface] PrivateKey = [节点D私钥] Address = 10.0.0.4/32 PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE [Peer] # 节点C (中心节点) PublicKey = [节点C公钥] Endpoint = nodeC.example.com:51822 AllowedIPs = 10.0.0.0/24, 192.168.1.0/24, 192.168.2.0/24 PersistentKeepalive = 25防火墙和NAT配置
各节点NAT规则
OpenWrt节点 (节点A、B)
# 允许WireGuard转发 iptables -A FORWARD -i wg0 -j ACCEPT iptables -A FORWARD -o wg0 -j ACCEPT # 本地网段NAT iptables -t nat -A POSTROUTING -s 192.168.x.0/24 -o wan -j MASQUERADELinux服务器节点 (节点C、D)
# 启用IP转发 echo 1 > /proc/sys/net/ipv4/ip_forward # 防火墙规则 iptables -A FORWARD -i wg0 -j ACCEPT iptables -A FORWARD -o wg0 -j ACCEPT iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE # 开放WireGuard端口 iptables -A INPUT -p udp --dport 51822 -j ACCEPT端口开放要求
节点 端口 协议 说明 节点A 51820 UDP WireGuard监听端口 节点B 51821 UDP WireGuard监听端口 节点C 51822 UDP WireGuard监听端口 节点D - - 无需开放端口 部署步骤
1. 准备工作
- 确保所有节点已安装WireGuard
- 为每个节点生成密钥对
- 规划IP地址分配
- 确认网络连通性
2. 部署顺序
- 节点C (中心节点) - 首先配置并启动
- 节点D (连接到节点C)
- 节点A (连接到节点B和节点C)
- 节点B (连接到节点A和节点C)
3. 启动服务
OpenWrt节点
# 重启网络服务 /etc/init.d/network restart # 检查接口状态 ifconfig wg0Linux节点
# 启动WireGuard sudo wg-quick up wg0 # 设置开机自启 sudo systemctl enable wg-quick@wg0验证和测试
基本验证命令
# 检查WireGuard状态 sudo wg show # 检查路由表 ip route show | grep wg # 测试连通性 ping -c 3 10.0.0.3 # 测试到中心节点 ping -c 3 192.168.2.1 # 测试跨网段连通性 # 检查握手状态 sudo wg show wg0 latest-handshakes # 查看流量统计 sudo wg show wg0 transfer连通性测试脚本
#!/bin/bash # 连通性测试脚本 echo "测试WireGuard骨干网连通性..." for ip in 10.0.0.1 10.0.0.2 10.0.0.3 10.0.0.4; do if ping -c 1 -W 3 $ip > /dev/null 2>&1; then echo "✅ $ip 连通" else echo "❌ $ip 不通" fi done echo "\n测试跨网段连通性..." for subnet in 192.168.1.1 192.168.2.1 192.168.3.1; do if ping -c 1 -W 3 $subnet > /dev/null 2>&1; then echo "✅ $subnet 连通" else echo "❌ $subnet 不通" fi done网络架构优势
- 高效路由: 边缘节点直连,减少中转延迟
- 负载分散: 避免中心节点成为瓶颈
- 路径冗余: 多条路径确保网络可靠性
- 安全加固: 支持预共享密钥增强安全性
- 易于扩展: 中心节点架构便于添加新节点
- 灵活配置: 支持不同类型设备和操作系统
故障排除
常见问题及解决方案
1. 连接建立失败
- 检查防火墙端口是否开放
- 验证endpoint地址和端口配置
- 确认公钥配置正确
2. 路由不通
- 检查AllowedIPs配置
- 验证系统路由表
- 确认IP转发已启用
3. 性能问题
- 调整MTU设置
- 检查网络路径和延迟
- 优化路由配置
4. 握手失败
- 确认时间同步
- 检查网络连通性
- 验证密钥配置
监控要点
- WireGuard服务运行状态
- 握手时间和频率
- 网络延迟和丢包率
- 流量统计和带宽使用
- 系统资源使用情况
日志分析
# 查看系统日志 journalctl -u wg-quick@wg0 -f # 查看内核日志 dmesg | grep wireguard # OpenWrt日志 logread | grep wireguard安全建议
- 定期更换密钥: 建议每6个月更换一次WireGuard密钥
- 使用预共享密钥: 在关键连接上启用预共享密钥
- 限制访问: 通过防火墙限制WireGuard端口访问
- 监控连接: 定期检查异常连接和流量
- 备份配置: 定期备份配置文件和密钥
- 更新软件: 保持WireGuard软件版本最新
扩展配置
添加新节点
- 为新节点生成密钥对
- 在中心节点添加新的Peer配置
- 配置新节点连接到中心节点
- 更新相关节点的AllowedIPs配置
- 测试连通性
高可用配置
- 部署多个中心节点
- 配置节点间的冗余连接
- 实现自动故障切换
- 使用负载均衡
- 节点A
-
使用DG1显卡在裸机Linux上打造高性能NAS服务器:完全解码指南前言
Intel DG1 显卡凭借其优秀的解码性能和低功耗,成为打造高性能NAS服务器的理想选择。然而,在Linux系统上驱动DG1显卡并实现最佳性能并非易事。本文档旨在分享DG1显卡在裸机Linux系统上的驱动经验,并提供详细的配置指南,帮助用户打造高性能NAS服务器。
最终方案是Fedora41 +内核6.12.11 + i915
至于为什么用Fedora,相对Arch稳定且新,占用也小,pve直通的话得更换第三方内核,esxi貌似只能发挥dg1一半的性能,飞牛的话用的魔改驱动(不是说不好,只不过为了考虑以后更新方便,主线驱动更方便更新,DG1 hang的问题6.13内核中已经包含了补丁,Fedora虽然没有Arch那么激进但是过不了多久也会更新6.13内核,这也是一个原因),Ubuntu夹带私货一生黑,对,说的就是你,snap狗皮膏药。Debian内核有点老了但是听说最新的Debian也有反向修复的i915驱动,可以自行尝试
测试环境
硬件: 12100F+H610+Intel DG1 显卡
操作系统: Ubuntu、Fedora、Arch Linux
内核版本: 6.8、6.12、6.12.11
驱动类型: Xe 内核驱动、intel-i915-dkms,主线i915
应用软件: Jellyfin
测试方法: 裸机安装、虚拟机直通(ESXi、PVE)
测试结果虚拟机直通:
ESXi: DG1直通给Windows,可正常输出显示信号和解码,但性能减半。
PVE: 加载皮蛋熊修改后的内核,直通DG1给飞牛OS,飞牛OS加载皮蛋熊的i915驱动,可正常解码,AI相册可正常调用显卡,但系统资源占用显示异常。
裸机Ubuntu24.04 Server LTS(内核6.8 + Xe):
使用Xe内核驱动,添加i915.force_probe=!4908 xe.force_probe=4908内核参数,使用nyanmisaka/jellyfin,无需替换iHD驱动,可正常解码,DP信号输出正常,但无法使用intel_gpu_top,据称6.8内核Xe驱动存在OpenCL bug。
裸机Ubuntu24.04 Server LTS(内核6.8 + i915-dkms):
使用官方反向移植的intel-i915-dkms驱动,需替换iHD驱动,可正常解码,但不输出显示信号(内核屏蔽)。
Fedora 41/Arch Linux(内核6.12):
使用Xe内核,可正常输出显示,但无法正常解码,出现卡屏和花屏现象。
Fedora 41(内核6.12.11):
根据@NyanMisaka在jellyfin论坛的帖子,Jellyfin 10.10.5官方已支持DG1,但需满足以下条件:
内核版本:6.1.124+/6.6.70+/6.12.9+/6.13+(Xe内核需要6.9/6.10/6.13+)
内核启动参数:根据实际情况添加i915/xe.force_probe=4908或i915/xe.force_probe=4905
实测添加i915.force_probe=4908可正常显示输出和解码播放,且占用率显示正常
教程部分
安装Fedora41 Server版本
使用sudo dnf update更新系统(默认的内核是6.11),并重启
修改/etc/default/grub的GRUB_CMDLINE_LINUX部分,类似GRUB_CMDLINE_LINUX=“rhgb quiet selinux=0 i915.force_probe=4908”
使用sudo grub2-mkconfig -o /boot/grub2/grub.cfg,更新grub配置,并重启
输入sudo lspci -vvn | grep “i915”,如果出现Kernel driver in use: i915则驱动初步成功
使用nyanmisaka/jellyfin最新镜像启动服务器,并且开启硬解,播放测试视频,观察帧率等是否正常
输入sudo dmesg -w,并且开启硬解,播放视频,查看内核有无报错
输入sudo dnf install intel-gpu-tools,安装工具包,播放视频时,输入intel_gpu_top查看显卡占用




常用调优建议使用ufw替代系统默认的防火墙(更简单,而且不会和docker冲突)
使用sudo turbostat --Summary --quiet --show Busy%,Bzy_MHz,IRQ,PkgWatt,PkgTmp,查看cpu功耗等信息
如果遇到btrfs报错,可尝试sudo dnf install btrfs-progs udisks2-btrfs
免责声明本文档仅供参考,不构成任何形式的保证。用户在使用DG1显卡和Linux系统时,应自行承担相关风险。
感谢
感谢@NyanMisaka @皮蛋熊笨熊,分享的宝贵经验,为本文档的编写提供了重要参考。
感谢https://icarusradio.github.io/guides/ubuntu-dg1-jellyfin.html
提供的经验 -
MSI-Z690-A主板上在Linux或PVE上的温控传感器驱动教程使用DKMS模块
https://github.com/Fred78290/nct6687d安装命令
git clone https://github.com/Fred78290/nct6687d cd nct6687d make dkms/install查看温度
这里有些传感器(比如DRAM)还是有点问题。忽视就好
apt install lm-sensorssensors
-
英特尔12-14代大小核在Proxmox上的最优调度策略探究先说结论
12-14代大小核CPU在最新的PVE环境下基本不需要做任何更改。不需要绑定aff核心亲和度。这样会适得其反。大小核在Linux上(测试宿主机内核为pve的6.8和6.14两个版本)会自动调度,优先使用P Core,然后使用E Core,最后使用HT Core(超线程)。由于AFF实际上是破坏了这种调度策略。实际上的效果甚至不如自动调度。另外在使用VGPU的情况可能会遇到单核跑分下降很多的情况如下图。不知道是由于什么引起的。
总结就是,除了LXC之外。放开手让Linux内核自动分配吧LXC测试结果
LXC会自动随机分配核心。这里需要手动调整核心绑定。这是和虚拟机调度不同的地方。也需要避免跨核心的情况。参考添加参数:
lxc.cgroup2.cpuset.cpus: 14-15
调整之后:

虚拟机测试结果
测试环境
- i5-14400 6P4E
- MSi Z690-A
- Nvidia Tesla T10
系统环境
- 物理Windows11
- 虚拟机Windows 10 - VGPU - 8 VCore

- 虚拟机Windows10 - IGPU

测试结果
- 虚拟机Windows10 - IGPU - 4 VCore

- 虚拟机Windows10 - VGPU - 8 VCore

- 虚拟机Windows10 - VGPU - 8 VCore (AFF绑定大核心偶尔出现的情况)

-
为Linux RDP添加核显加速简明指南xrdp_vaapi 项目 - 带硬件加速的远程桌面服务
项目描述
本项目自动构建支持Intel VA-API硬件加速的xrdp远程桌面服务器,并为Debian/Ubuntu系统配置可用的虚拟机环境。
虽然主要设计用于配合libvirt/qemu虚拟机和i915-sriov-dkms驱动使用,但也适用于其他场景。

系统源配置要求
Debian/Ubuntu用户必须确保
/etc/apt/sources.list包含完整源配置:Debian系统源
deb https://deb.debian.org/debian bookworm main contrib non-free non-free-firmware deb-src https://deb.debian.org/debian bookworm main contrib non-free non-free-firmware deb https://deb.debian.org/debian trixie main contrib non-free non-free-firmware deb-src https://deb.debian.org/debian trixie main contrib non-free non-free-firmwareUbuntu系统源
deb http://de.archive.ubuntu.com/ubuntu noble main restricted universe multiverse deb-src http://de.archive.ubuntu.com/ubuntu noble main restricted universe multiverse使用指南
基础使用
- 克隆项目仓库:
git clone https://github.com/tabletseeker/xrdp_vaapi -b master- 进入项目目录:
cd xrdp_vaapi- 执行安装脚本:
bash xrdp_vaapi.sh参数与环境变量说明
xrdp_vaapi.sh 脚本参数
参数/变量 说明 默认值/可选值 DRIVER_NAME LIBVA_DRIVER_NAME环境变量 默认: iHD BUILD_DIR 构建源代码目录 默认: 当前目录($PWD) –sriov 或 -s 编译安装i915_sriov_dkms驱动 默认: false (不安装) buildyami.sh 脚本参数
参数 说明 默认值/可选值 –prefix 安装目录 默认: /usr/local –disable-x11 禁用X11支持编译 默认: 启用 –latest 自动获取最新版本 默认: 使用预设版本 注意:若不使用
--latest参数,将使用xrdp_vaapi/yami/omatic/buildyami.sh文件中243-247行指定的固定版本号。