iotop 显示 kswapd0 为 99.99%,磁盘读取和磁盘写入为 0%

Use*_*er1 7 postgresql linux performance

我有一个很重的 postgres 查询。运行需要十多分钟。我想升级我的硬件以使其运行得更快。我认为更多的内存会有所帮助,但我的主板已满,所以我需要一个全新的主板。我不想投资,除非我知道我会得到更好的结果。这是我在 iotop 中看到的:

总磁盘读取:46.81 M/s | 总磁盘写入:0.00 B/s
  TID PRIO 用户磁盘读磁盘写交换 IO> 命令                                                                                                                                               
   27 be/4 根 0.00 B/s 0.00 B/s 0.00 % 99.99 % [kswapd0]
 2514 be/4 postgres 46.81 M/s 2.45 M/s 0.00 % 18.36 % postgres: postgres db1 127.0.0.1(55328) SELECT
    1 be/4 根 0.00 B/s 0.00 B/s 0.00 % 0.00 % init
    2 be/4 根 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kthreadd]
    3 be/4 根 0.00 B/s 0.00 B/s 0.00 % 0.00 % [ksoftirqd/0]
    4 be/4 根 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kworker/0:0]
    5 be/4 根 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kworker/u:0]
    6 rt/4 根 0.00 B/s 0.00 B/s 0.00 % 0.00 % [迁移/0]
    7 rt/4 根 0.00 B/s 0.00 B/s 0.00 % 0.00 % [看门狗/0]
    8 rt/4 根 0.00 B/s 0.00 B/s 0.00 % 0.00 % [迁移/1]
    9 be/4 根 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kworker/1:0]
   10 be/4 根 0.00 B/s 0.00 B/s 0.00 % 0.00 % [ksoftirqd/1]

请注意 kswapd0 如何最大程度地访问硬盘驱动器(99.99% IO)。但是,kswap0 的 DISK READ 和 DISK WRITE 和 SWAPIN 都为零。kswap0 在做什么?它真的击中了我的硬盘吗?向该系统添加更多 RAM 会有帮助吗?

pQd*_*pQd 0

您是否 110% 确定您的 IO 子系统没有问题 - 例如,所有硬盘驱动器都很好 [智能/raid 自检],回写式缓存已启用 [如果您的 raid 卡上有电池支持的缓存]?

postgres 不是以 48MB/s 的读取传输使 IO 饱和吗?