我有一个工作站,我们使用内部代码在该工作站上运行数值模拟,从命令行提交作业并使用 vim 编辑/查看文件。我的问题是,每当我们运行至少一个作业(甚至没有达到 CPU 的全部容量)时,我们都会看到命令行中出现间歇性延迟,而 gnome 桌面中没有延迟。命令行将卡住。最明显的是,当使用 vim 保存文件时,即使是最简单的一行文件也几乎总是需要 10-30 秒才能保存。有人遇到过类似的问题或有什么想法吗?我们使用的是内核 6.2.0-26-generic 和 ubuntu 22.04.4 LTS
谢谢
答案1
欢迎来到论坛。
系统资源
这看起来像是在寻找哪个系统资源不足,但我们无法判断,因为没有足够的信息。您可以提供以下详细信息:
df -h
uptime
iostat -d -k -x 1 1 | awk '/^sda/ {print $NF"%"}'
sudo dmesg | tail
不过,我认为最好自己查看系统日志并提供问题发生时发生的一个或几个事件。
分离任务
我能看到的一个简单方法是将脚本与 vim 文件编辑分开。
- 登录到另一台计算机(可以是 Raspberry Pi Zero 或 VM 上非常简单的 Ubuntu 实例)
- 通过 SSH 进入相关的 Ubuntu 系统
- 使用 vim 编辑文件
这只需要相关的 Ubuntu 系统保存对文件的更改,而不是交互式会话。
最佳解决方案
这确实是 Docker 的强项。您可以限制所访问的系统资源,同时了解任务对资源的需求。“数值模拟”和“内部代码”听起来也是版本控制功能的绝佳用例。
USB 总线
使用 USB 闪存驱动器上的 Time Machine 备份会导致我的键盘/鼠标延迟。发生这种情况时,我可以正常使用我的蓝牙、直接连接的触控板。拆分任务将有助于确定 USB 总线的问题。
会话日志记录
这可能有点过头了,但你可以记录终端会话并查看日志以了解发生了什么。方法如下:
从航站楼
script session.log
将 session.log 替换为您要保存日志的文件名。这将开始将您的终端会话记录到指定的文件中。
- 重现导致终端延迟的操作。
- 完成后,输入
exit
以停止记录会话。 - 查看日志文件。
- 查找可能导致延迟的任何命令/操作,或可能表明原因的错误/输出。
注意:这包括您输入的任何命令、其输出以及任何错误消息。文件很快就会变得很大。