AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 510096
Accepted
peterh
peterh
Asked: 2019-04-03 08:18:26 +0800 CST2019-04-03 08:18:26 +0800 CST 2019-04-03 08:18:26 +0800 CST

哪个进程(内核线程)正在为 zswap 进行实际压缩?

  • 772

我可以想象实际上有两个位置:

  1. 在属于正在换入/换出 ram 的进程的内核空间中
  2. 从[kswapd0]

但是,深入研究 kswapd 源代码 ( mm/vmscan.c, init/main.c),我可以发现:kswapd 是单线程的,并且是在单线程上启动的。(NUMA 系统除外,所有内存区域都有不同的 kswapd。但大多数普通 PC 都不是 NUMA 系统。)

但是,从现在开始,我们有一个问题。我们可以假设,磁盘比内存慢得多,这就是我们不需要多线程 kswapd 来处理磁盘 I/O 的原因。但如果我们还需要使用内部 zswap 层,情况就不是这样了。特别是从更高的压缩率(放气)中,cpu 可以并且很可能会成为瓶颈。

但是kswapd 是单线程的。

这是真的吗?

是否计划进行任何多线程 kswapd?真的需要吗?


Ps 我在 linux 内核邮件列表中找到了这个线程。这是关于一个被拒绝的补丁建议,什么可以在非 NUMA 系统上启用多线程 kswapd。他们在谈论一切,除了这个 zswap 问题。也许是无关的。

PS2。语境:

  1. 我有一个高度 ram 过度使用的 Linux 系统(进程使用的 ram 比物理上可用的多得多)。
  2. 同时运行的进程数远低于 CPU 内核数。
  3. 我正在大量使用 zswap。
  4. 在这种环境下,将所有可用的 CPU 内核用于压缩/解压缩内存页面将非常有用。我目前最好的估计是页面压缩/解压缩由[kswapd0]单个内核线程完成。我正在研究利用所有 CPU 内核进行压缩/解压缩的选项。从本质上讲,这将是一种转换剩余 CPU 容量以弥补物理内存不足的方法。
linux-kernel zswap
  • 1 1 个回答
  • 576 Views

1 个回答

  • Voted
  1. Best Answer
    peterh
    2020-05-06T09:13:49+08:002020-05-06T09:13:49+08:00

    经过大量调查,我想我找到了答案。

    实际的压缩是在[kswapd].

    引用线程中拒绝邮件的作者表明,负责人至少有一些原因他没有沟通,但更有可能他根本不知道 zswap。

    我在我的系统上安装了补丁建议。它使kswapd多线程,即它可以压缩所有 CPU 内核上的内存。该补丁的作用就像魅力一样,并显着改善了 zswap-ping 环境。

    证明:我的系统(内存消耗量大的 qemu + pxz 压缩器)严重超载,包括内存和 CPU。之后,我在top:

      PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
      927 root      20   0   12,3g   3,6g   3612 R 141,8  23,1  36006:53 qemu-system-x86
     5017 root      20   0 7607428   4,2g   1580 R  78,4  26,8   2:32.85 pxz
      354 root      20   0       0      0      0 R  53,6   0,0  32:17.28 kswapd0:5
      128 root      20   0       0      0      0 R  45,8   0,0  32:57.42 kswapd0:0
      352 root      20   0       0      0      0 R  40,5   0,0  32:16.80 kswapd0:3
      356 root      20   0       0      0      0 R  36,6   0,0  32:53.58 kswapd0:7
      350 root      20   0       0      0      0 R  35,3   0,0  31:15.53 kswapd0:1
      353 root      20   0       0      0      0 R  35,3   0,0  30:48.00 kswapd0:4
      351 root      20   0       0      0      0 R  28,1   0,0  31:57.45 kswapd0:2
      355 root      20   0       0      0      0 R  27,5   0,0  31:44.12 kswapd0:6
    

    是的,它还意味着以下内容:

    • 多线程 kswapd极大地提高了 zswap 性能,
    • 它不包含在主线内核中,
    • 是的,很可能是因为无能或害怕不稳定。

    我在测试环境中使用的 zswap 参数如下(可以在 中设置/sys/modules/zswap/parameters):

    same_filled_pages_enabled:Y
    enabled:Y
    max_pool_percent:50
    compressor:deflate
    zpool:z3fold
    accept_threshold_percent:90
    
    • 0

相关问题

  • 为什么无线工具版本 30 成为永久测试版?

  • 程序堆栈大小

  • 获取当前 zswap 内存使用情况和统计​​信息

  • 什么时候使用 zswap?

  • 哪些 802.11ac(或更高版本)WiFi 加密狗适用于 Linux 4.13 内核

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve