kworker 占用了我所有的 IO,Postgres 运行缓慢

kworker 占用了我所有的 IO,Postgres 运行缓慢

我有 2 个 SSD,它们采用 RAID 0 配置,上面有一个卷,我已经连续 3 个月毫无问题地用来运行 PostgreSQL 数据库。突然,今天,数据库变得非常慢。我曾经在大型表上运行多个查询,每个postgres任务的 CPU 使用率都达到 100%(我有 12 个核心)。现在,一个查询本身就使用了 15%-30% 的 CPU,就好像存在磁盘瓶颈一样,并且使用相同数据的相同查询运行时间要长得多。

我不知道以前是否发生过这种情况,但如果我运行iotop,我会看到kworker/u24:1使用 99.99% 的 IO 和 0 磁盘读写。我不知道这是否正常,但看起来很可疑。

我使用dd和运行了基准测试hdparm。SSD 的读写时间看起来足够快;这没什么问题。RAM 使用情况良好。我几乎没有看到交换空间被使用。我几乎没有空闲空间,因为所有空闲内存都用于磁盘缓存,但这应该没问题。实际上,我没有任何进程占用我所有的 RAM。

怎么回事kworker?我知道这是内核任务。它使用这么多 I/O 有问题吗?我应该检查什么?

更新:它停止了。不知道什么时候或为什么。

答案1

kworker 使用 100% IO 并不意味着它使用了我所有的 IO。这意味着它正在等待 IO。我认为 Postgres 问题是独立的。从来没有弄清楚过,但它没有再出现。

看:https://serverfault.com/questions/659164/kworker-assuming-90-io-and-zero-disk-write/785415#785415

相关内容