小编Dol*_*000的帖子

调试 Linux I/O 延迟

我在管理的几个 Linux 系统上遇到了一些 I/O 问题。它们表现在进程经常在诸如 open()、unlink() 或 close() 之类的简单系统调用中阻塞长达几秒钟的文件(这是一个问题,因为一些涉及的程序需要相当低的 I/O 延迟才能运行适当地)。确实,有问题的系统会遇到一些中等的 I/O 负载,但我很难认为这足以证明如此巨大的延迟时间是合理的。有时,调用可能需要 15 秒以上才能完成(尽管更多情况下可能需要 1、2 或 3 秒左右)。

我的问题是:我怎样才能找出发生这种情况的原因?我想要的是一些工具,它可以告诉我有问题的进程在内核中被什么阻塞,为什么它们休眠的进程很忙,它发生了什么,等等。是否有这样的工具,或者是否有其他尝试调试发生的事情的方法?

另外,当然,如果您有任何线索,其实什么发生的事情,怎么能避免?

作为记录,我使用的文件系统是 XFS。

linux performance latency io

13
推荐指数
1
解决办法
1万
查看次数

为什么 INSTALL_MOD_STRIP 默认情况下未启用?

我已经有几年没有编译过 Linux 内核了,现在我又开始这样做了,我发现模块默认安装有调试符号,除非INSTALL_MOD_STRIP=1传递给make modules_install,这使得它们如此庞大,以至于我的 initrd 映像增长到了数百个兆字节。

我只是在谷歌INSTALL_MOD_STRIP搜索了相当多的时间后才找到了这个选项,即使这样,也只是在论坛帖子中,人们问为什么他们的模块如此大。

所以我想知道,当我使用预编译内核时,这种变化的原因是什么?是否有一个原因是模块现在默认安装有调试符号(即使二进制发行版仍然将它们剥离)?在内核中使用调试符号似乎相当深奥,而且在安装大小方面显然有很大的缺点。

基本上,我应该只考虑INSTALL_MOD_STRIP作为标准内核编译公式的一部分吗?从 ~2.6.25 开始,构建过程还有其他我应该注意的变化吗?

linux linux-kernel

6
推荐指数
1
解决办法
9194
查看次数

radvd 不接受非/64 子网

我正在尝试在 6RD 配置(在 Linux 上)上进行设置radvd,其中我有一个 /64 子网,并且我正在尝试在两个不同的物理网络上使用它,所以我尝试给每个网络一个 / 80 子网。然而,当我开始radvd使用这些界面时,它会这样说:

radvd[3987]: prefix length should be 64 for int
Run Code Online (Sandbox Code Playgroud)

int是接口之一的名称。)

我知道无状态自动配置不适用于大于 /64 的子网,例如 /48 子网,但据我所知,它应该适用于小于 /64 的任何子网,因此 /80 应该不是问题。现在,最终的效果是radvd简单地通告错误的子网前缀,从而有效地“删除”它的前 16 位。

这是什么?我是否都错了,有radvd问题,还是我缺少一些配置选项?

linux ipv6 radvd

3
推荐指数
1
解决办法
4694
查看次数

标签 统计

linux ×3

io ×1

ipv6 ×1

latency ×1

linux-kernel ×1

performance ×1

radvd ×1