我有一个远程 Linux 系统,昨天它变得非常慢。由于我设置的远程 luks 解锁似乎不太可靠,而且我将无法在接下来的 10 天内实际访问该机器,所以我尝试调试它而不是重新启动。
我习惯使用的系统状态工具是htop
和dstat
,由于我dstat
在 ssh 会话中运行,我可以看到自昨天 2021-09-09 08:51:42 以来,一个 CPU 核心始终被“sys”完全使用——我猜这意味着内核?
我看不到任何罪魁祸首进程或线程htop
。
我已经停止了所有用户服务并卸载了所有不必要的程序,这使系统响应速度再次好一些,但仍然没有达到应有的速度(获得了带有 SSD 的 Intel i7 CPU)。
我发现https://tanelpoder.com/posts/high-system-load-low-cpu-utilization-on-linux/并安装引用的https://0x.tools/得到这个结果psn -G syscall,wchan
:
=== Active Threads ========================================================================================
samples | avg_threads | comm | state | syscall | wchan
-----------------------------------------------------------------------------------------------------------
100 | 1.00 | (btrfs-cleaner) | Running (ON CPU) | [running] | 0
100 | 1.00 | (dpkg) | Disk (Uninterruptible) | fsync | btrfs_commit_transaction
100 | 1.00 | (systemd-journal) | Disk (Uninterruptible) | ftruncate | wait_current_trans
1 | 0.01 | (sshd) | Running (ON CPU) | [running] | 0
1 | 0.01 | (thermald) | Disk (Uninterruptible) | [running] | ec_guard
1 | 0.01 | (thermald) | Running (ON CPU) | [running] | 0
我可以通过尝试以通常预期速度的 1/1000 左右运行dpkg
来解释该过程(只是一种感觉,没有测量)。apt upgrade
也许我的 btrfs 根文件系统有问题……?我找不到btrfs-cleaner
,htop
我想我要进一步研究一下那是什么。
我昨晚确实运行了一次btrfs scrub
,速度非常快,没有发现任何问题:
# btrfs scrub status /
UUID: 2f38e0ad-7f16-4a36-8096-b7981d47b4ff
Scrub started: Thu Sep 9 23:59:00 2021
Status: finished
Duration: 0:00:24
Total to scrub: 53.09GiB
Rate: 1.78GiB/s
Error summary: no errors found
但是当我使用 nano 修改根分区上的配置文件时,加载和保存速度非常慢。
我刚刚偶然发现了这一点:https://www.reddit.com/r/btrfs/comments/fmucrq/btrfs_snapshots_make_entire_system_lag_cpu_usage/其中有一个评论听起来与我的问题类似:
每次启动和快照之后,btrfs-transacti 和 btrfs-cleaner 都会完全占用一个核心,从而导致严重的延迟
只是这说明它在启动和快照创建时只会持续几分钟,但是btrbk
几天前,当其中一个附加磁盘开始出现问题时,我已禁用此系统上的备份设置。
我不确定我的 btrfs 根文件系统是否正在使用qgroups
,但我刚刚运行了btrfs quota disable /
,花了大约 10 秒,但没有给出任何反馈。
有人能给我其他提示如何调试/解决这个问题吗?
答案1
问题出在那些 btrfs 配额上。运行
btrfs quota disable /
使系统再次可用:)