我使用 6.1 lts 内核,22.04 存储库的最后一次更新是大约两周前。是否需要等待新的 6.1 内核软件包?
sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0
我想在启动时运行命令以使 etcher 工作。
如何在启动时使用 sudo 运行这样的命令,而不输入密码?
我正在尝试隔离 AMD EPYC 8534PN (64C/128T) 上的 CPU。不幸的是,我一次又一次地看到 RCU 停止运行并且服务器崩溃。而且我不太确定我做错了什么。
仅当服务器处于负载状态时才会发生崩溃。通常,我在那里运行构建作业和一些具有 RT 优先级的任务(集成测试)。但根据我的理解,通过rcu_nocbs=8-63,72-127 irqaffinity=0-7,64-71 rcu_nocb_poll
在 grub 中使用、设置IRQBALANCE_BANNED_CPULIST=8-63,72-127
并将剩余的 rco 移至内务管理组,tuna -t rcu* -c 0-7,64-71 -m
应该可以避免这种情况,不是吗?我希望不再在隔离核心上执行 rcu。
我看到的错误如下所示:
RCU 档位:
这是输出的一部分dmesg
:
Apr 22 00:08:37 hp-epyc kernel: rcu: INFO: rcu_preempt detected stalls on CPUs/tasks:
Apr 22 00:08:37 hp-epyc kernel: rcu: Tasks blocked on level-1 rcu_node (CPUs 48-63): P497/2:b..l
Apr 22 00:08:37 hp-epyc kernel: (detected by 53, t=2940082 jiffies, g=1051549, q=30752212)
Apr 22 00:08:37 hp-epyc kernel: task:ksoftirqd/53 state:R running task stack: 0 pid: 497 ppid: 2 flags:0x00004000
Apr 22 00:08:37 hp-epyc kernel: Call Trace:
Apr 22 00:08:37 hp-epyc kernel: <TASK>
Apr 22 00:08:37 hp-epyc kernel: __schedule+0x238/0x5e0
Apr 22 00:08:37 hp-epyc kernel: ? asm_sysvec_reschedule_ipi+0x1b/0x20
Apr 22 00:08:37 hp-epyc kernel: preempt_schedule+0x60/0x80
Apr 22 00:08:37 hp-epyc kernel: preempt_schedule_thunk+0x16/0x18
Apr 22 00:08:37 hp-epyc kernel: rt_mutex_slowunlock+0x280/0x2f0
Apr 22 00:08:37 hp-epyc kernel: ? try_to_wake_up+0x307/0x670
Apr 22 00:08:37 hp-epyc kernel: rt_spin_unlock+0x3e/0x50
Apr 22 00:08:37 hp-epyc kernel: __hrtimer_run_queues+0x3a0/0x3c0
Apr 22 00:08:37 hp-epyc kernel: hrtimer_run_softirq+0xa6/0x110
Apr 22 00:08:37 hp-epyc kernel: __do_softirq+0xc9/0x2cc
Apr 22 00:08:37 hp-epyc kernel: run_ksoftirqd+0x30/0x80
Apr 22 00:08:37 hp-epyc kernel: smpboot_thread_fn+0x1d3/0x2d0
Apr 22 00:08:37 hp-epyc kernel: kthread+0x191/0x1b0
Apr 22 00:08:37 hp-epyc kernel: ? smpboot_register_percpu_thread+0xe0/0xe0
Apr 22 00:08:37 hp-epyc kernel: ? set_kthread_struct+0x50/0x50
Apr 22 00:08:37 hp-epyc kernel: ret_from_fork+0x22/0x30
Apr 22 00:08:37 hp-epyc kernel: </TASK>
根据lscpu -p
输出,我提出了以下隔离方案:
housekeeping & IRQs: 0-7,64-71
isolation: 8-63,72-127
Systemd 配置如下:
sudo systemctl set-property user.slice AllowedCPUs=0-7,64-71
sudo systemctl set-property system.slice AllowedCPUs=0-7,64-71
sudo systemctl set-property init.scope AllowedCPUs=0-7,64-71
IRQ 在下列情况下被禁止出现在隔离内核中/etc/default/irqbalance
:
IRQBALANCE_BANNED_CPULIST=8-63,72-127
IRQBALANCE_ONESHOT=0
我已经将 rcuo 的via移至tuna -t rcu* -c 0-7,64-71 -m
客房服务组。
Grub配置如下:
BOOT_IMAGE=/vmlinuz-5.15.0-1032-realtime root=/dev/mapper/ubuntu--vg-ubuntu--lv ro quiet splash selinux=0 enforcing=0 nmi_watchdog=0 crashkernel=auto softlockup_panic=0 nosoftlockup audit=0 mce=off tsc=nowatchdog skew_tick=1 default_hugepagesz=1GB hugepagesz=1G hugepages=12 iommu=pt amd_iommu=on nohz_full=8-63,72-127 rcu_nocbs=8-63,72-127 irqaffinity=0-7,64-71 nohz=on rcu_nocb_poll numa_balancing=disable transparent_hugepage=never nosoftlockup rcu_nocb_poll processor.max_cstate=0 kthread_cpus=0-7,64-71
操作系统:Ubuntu Server 22.04.4 LTS \ 内核:5.15.0-1032-realtime \
CPU:AMD EPYC 8534PN 64 核处理器
编辑:
我能够稳定服务器。我通过这篇文章得到了一些帮助(不幸的是,仅限订阅)。这些是我已采取的步骤:
第一步是禁用 irqbalanced。我发现有一个错误无法默默地强制执行该IRQBALANCE_BANNED_CPULIST
参数。我尝试使用IRQBALANCE_BANNED_CPU
,但该参数在我们使用的版本中已被弃用。所以我完全禁用了 irqbalanced 。
在文章中,它说“过去,ksoftirqd/N 线程处理计时器软中断任务,以及其他软中断的工作。”。我找不到任何 ksoftirqd 进程,而是只找到了也出现在内核日志中的软中断。
这就是为什么我将 ksoftirqd 线程移至最高优先级以避免它们占用 CPU 资源的原因。
x=8
y=63
for i in $(seq $x $y) ; do tuna -t "ksoftirqd/$i" -p fifo:99; done
a=72
b=127
for i in $(seq $a $b) ; do echo "$i"; tuna -t "ksoftirqd/$i" -p fifo:99; done
我还在rcutree.kthread_prio=99
内核命令行中应用了内核参数,将 RCUrcuc/N
和rcub/N
线程的优先级设置为 99。
为了提供完整的图片,我通过 Kubernetes 在服务器上运行优先级高达 50 的 RT 工作负载。我还与 RT 工作负载并行运行单元和构建测试。
有人可以确认上述 ksoftirqd 仍然处理计时器并在 Ubuntu 上工作的假设仍然正确吗?我找不到太多关于它的研究。
关于这个主题我的另一个问题是,为什么没有将所有 RCU 工作负载正确转移到内务处理组?我不想使用 isolcpus,我想这会有所帮助。是否有另一种方法可以完全移动中断,以便隔离的内核可以自由用于 RT 工作负载?提前致谢!
面临以下问题的所有系统都运行Xubuntu 22.04.4 LTS。
我使用以下命令连接到 samba 共享:
sudo mount.cifs //192.168.../shareName mountPath -o rw,vers=default,uid=1000,forceuid,gid=1000,forcegid,username="username",password="password" --verbose
在最新的6.5.0-27-generic内核更新之前,此命令可以完美运行。
现在,虽然它创建了成功的连接,但每当我从客户端计算机访问文件时,我都会在服务器的journal.logthunar
中看到至少十几条如下所示的消息:
pam_unix(samba:session): session opened for user xxxxxxx(uid=xxx) by (uid=0)
pam_unix(samba:session): session closed for user xxxxxxx
只要我继续从客户端计算机访问文件,Samba 会话就会不断关闭并重新打开。
此外,以下消息曾出现在客户端计算机的journal.log上:
CIFS: reconnect tcon failed rc=-11
thunar
如果我使用而不是进行初始共享连接,则不会出现上述消息mount.cifs
。
请问如何解决这个问题?
谢谢。
所以我在互联网上搜寻,试图想出一种在我新安装的 Ubuntu 22.04 主机上设置 KVM Windows Guest 设置的高性能方法,我找到了这个教程。
本教程展示如何在 Linux 上正确安装 KVM。完成每个部分后,我已成功进入使用 TuneD 优化主机部分。我已经运行了本节中列出的命令,但是一旦我运行了;
$ sudo tuned-adm verify
Verification failed, current system settings differ from the preset profile.
You can mostly fix this by restarting the Tuned daemon, e.g.:
systemctl restart tuned
or
service tuned restart
Sometimes (if some plugins like bootloader are used) a reboot may be required.
See tuned log file ('/var/log/tuned/tuned.log') for details.
验证命令后发生上述错误。这是完整的/var/log/tuned/tuned.log 文件。
注意; 我对 Linux 生态系统完全陌生,对它的概念不太了解。
我尝试在 Ubuntu 22.04 上安装内核 6.7.0,但遇到错误
The following packages have unmet dependencies:
linux-headers-6.7.0-060700-generic : Depends: libc6 (>= 2.38) but 2.35-0ubuntu3.6 is to be installed
E: Unable to correct problems, you have held broken packages.
但后来我在 Ask Ubuntu 上看到了另一个问题,看起来这是可能的。有没有办法解决这个 libc6 依赖性?我会就链接的问题询问OP,但我没有足够的声誉来发表评论。
自从从 6.2.0-39 升级到 linux 6.5.0-14 以来,我遇到了 2 个问题:
#1:我无法编译 vmware Workstation Player 17 所需的模块。版本 17.0.2 build-21581411。起初它找不到gcc-12。按照另一篇文章的建议,我安装了 gcc-12 并链接了它。通过执行以下操作: sudo apt install gcc-12
sudo ln -s -f /usr/bin/gcc-12 /usr/bin/gcc
这样做之后它开始编译但失败了。以下是虚拟机日志文件的片段:
2024-01-16T21:14:35.424Z In(05) host-4433 make[2]: *** [/usr/src/linux-headers-6.5.0-14-generic/Makefile:2037: /tmp/modconfig-XOkG7f/vmnet-only] Error 2
2024-01-16T21:14:35.424Z In(05) host-4433 make[1]: *** [Makefile:234: __sub-make] Error 2
2024-01-16T21:14:35.424Z In(05) host-4433 make: *** [Makefile:117: vmnet.ko] Error 2
2024-01-16T21:14:35.424Z In(05) host-4433 Unable to install all modules. See log for details.
2024-01-16T21:14:35.424Z In(05) host-4433
#2 我遇到的另一个问题是我无法再使用 ssh 登录。当我尝试时,收到此消息:“ssh:连接到主机 nero 端口 22:参数无效”。使用 linux 6.2.0-39 启动时没有这些问题。