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 / 问题 / 679706
Accepted
xpt
xpt
Asked: 2021-12-01 15:19:16 +0800 CST2021-12-01 15:19:16 +0800 CST 2021-12-01 15:19:16 +0800 CST

kcompcd0 使用 100% CPU 和 VMware Workstation 16

  • 772

与 redhat bugzilla 中发布的相同 - kcompcd0 using 100% cpu已关闭INSUFFICIENT_DATA。

也一样

  • Linux 主机上的 VMware 导致定期冻结
  • Arch Linux 从 khugepaged 变得无响应

重新打开,因为那里的解决方案对我不起作用。

这是我的情况:

  • Ubuntu 21.10主机和 Windows 10 Enterprise 客户端,带有 VMware Workstation 16 v 16.2.0 build-18760230
  • 我没有做任何花哨或重负载的事情,就在正常使用 Windows 10 一天(轻负载)之后,事情开始变得疯狂。
  • 该过程kcompactd0不断在一个内核上vmware-vmx使用 100% cpu,在八个内核上使用 100% cpu。 在此处输入图像描述
  • 当它发生时,它通常会持续几分钟。然后在一两分钟后再次启动。
  • “kcompactd0 仅与 drop_caches 一起消失。当它达到 100% 时,vmware 虚拟机来宾完全没有响应(windows 10 ltsc vm)”所以我只尝试了 drop_caches 一次,并确认了该行为。

根据上游的要求,这里有更多信息:

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 21.10
Release:        21.10
Codename:       impish


$ grep -r . /sys/kernel/mm/transparent_hugepage/*
/sys/kernel/mm/transparent_hugepage/defrag:always defer defer+madvise [madvise] never
/sys/kernel/mm/transparent_hugepage/enabled:always [madvise] never
/sys/kernel/mm/transparent_hugepage/hpage_pmd_size:2097152
/sys/kernel/mm/transparent_hugepage/khugepaged/defrag:1
/sys/kernel/mm/transparent_hugepage/khugepaged/max_ptes_shared:256
/sys/kernel/mm/transparent_hugepage/khugepaged/scan_sleep_millisecs:10000
/sys/kernel/mm/transparent_hugepage/khugepaged/max_ptes_none:511
/sys/kernel/mm/transparent_hugepage/khugepaged/pages_to_scan:4096
/sys/kernel/mm/transparent_hugepage/khugepaged/max_ptes_swap:64
/sys/kernel/mm/transparent_hugepage/khugepaged/alloc_sleep_millisecs:60000
/sys/kernel/mm/transparent_hugepage/khugepaged/pages_collapsed:0
/sys/kernel/mm/transparent_hugepage/khugepaged/full_scans:19
/sys/kernel/mm/transparent_hugepage/shmem_enabled:always within_size advise [never] deny force
/sys/kernel/mm/transparent_hugepage/use_zero_page:1

$ cat /proc/90/stack | wc
      0       0       0

echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo 0 > /sys/kernel/mm/transparent_hugepage/khugepaged/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled

$ grep -r . /sys/kernel/mm/transparent_hugepage/*
/sys/kernel/mm/transparent_hugepage/defrag:always defer defer+madvise madvise [never]
/sys/kernel/mm/transparent_hugepage/enabled:always madvise [never]
/sys/kernel/mm/transparent_hugepage/hpage_pmd_size:2097152
/sys/kernel/mm/transparent_hugepage/khugepaged/defrag:0
/sys/kernel/mm/transparent_hugepage/khugepaged/max_ptes_shared:256
/sys/kernel/mm/transparent_hugepage/khugepaged/scan_sleep_millisecs:10000
/sys/kernel/mm/transparent_hugepage/khugepaged/max_ptes_none:511
/sys/kernel/mm/transparent_hugepage/khugepaged/pages_to_scan:4096
/sys/kernel/mm/transparent_hugepage/khugepaged/max_ptes_swap:64
/sys/kernel/mm/transparent_hugepage/khugepaged/alloc_sleep_millisecs:60000
/sys/kernel/mm/transparent_hugepage/khugepaged/pages_collapsed:0
/sys/kernel/mm/transparent_hugepage/khugepaged/full_scans:19
/sys/kernel/mm/transparent_hugepage/shmem_enabled:always within_size advise [never] deny force
/sys/kernel/mm/transparent_hugepage/use_zero_page:1

基本上,解决方法的来源是Fedora 错误报告“khugepaged eating 100%CPU”。该错误从未被修复,“解决方案”是针对 2013 年的 Fedora 17 的,并且

对于最后 3 个,也许是 4-5 个 Fedora 内核版本,我再也没有遇到过这个问题。

但现在又发生了。

vmware vmware-workstation
  • 4 4 个回答
  • 2209 Views

4 个回答

  • Voted
  1. Pawel Jasinski
    2021-12-26T09:48:38+08:002021-12-26T09:48:38+08:00
    echo 0 > /proc/sys/vm/compaction_proactiveness
    

    或者

    sudo sh -c 'echo 0 > /proc/sys/vm/compaction_proactiveness'
    

    来源:https ://gist.github.com/2E0PGS/2560d054819843d1e6da76ae57378989

    • 4
  2. Timothy C. Quinn
    2022-02-03T14:22:11+08:002022-02-03T14:22:11+08:00

    这是我在 Ubuntu 20.04 上的解决方案:

    1. 关闭虚拟机
    2. 使用文本编辑器打开 VM 的 <vm_name>.vmx 文件
    3. 将以下内容添加到 vmx 文件的末尾:
    # Fix problem where vmware battles with kcompactd0.
    vm.compaction_proactiveness=0
    
    1. 保存文件并重启虚拟机

    [2022-03-06 更新]:如果您升级到 VMware Workstation Pro 16.2.1,请确保在测试前将您的虚拟机升级到 16.2 并重新启动您的机器。升级后我没有重新启动,问题一直存在,直到重新启动。

    • 2
  3. xpt
    2021-12-04T12:04:44+08:002021-12-04T12:04:44+08:00

    本身不是“解决方案”,但对我来说是一个解决方案:

    ...我发现行为和响应速度非常非常缓慢,并且经常表现出非常生涩的缺乏响应能力。在运行虚拟机时,整个操作系统将一次无响应 30 秒到几分钟,然后我将在一段时间内重新获得一定程度的控制,然后系统恢复到无响应状态......冲洗,清洗,重复...... .

    我曾多次尝试卸载并重新安装该软件(VMware Workstation 16),但这根本没有任何区别。

    所以......我尝试了一个实验......我安装了 Oracle VirtualBox 来看看它会如何执行。

    嗯......有什么不同!

    我有2 个 Windows 10 VM,每个都有 8GB 或 RAM,还有一个Windows 2008 服务器、一个 Windows XP 系统和3 个 Ubuntu VM(所有旧系统都是因为我正在做 Kali / Metaspolit 培训),所有这些都运行在同时整个操作系统和每个虚拟机都在无忧无虑地嗡嗡作响。

    在运行所有这些 VM 时,系统实际上的行为方式与我预期的一样。这里的底线是,几个月来,我一直在努力解决使用 VMware Workstation 16的极其令人沮丧的性能低下问题,而VirtualBox 正在把它吹走。

    总的来说,我喜欢 VMware,我有一个 Raspberry Pi ESXi 集群和一个运行 ESXi 的 Intel NUC,所有这些都报告到一个 vCenter 实例中,我们在工作中使用 VMware,等等等等,但是当我遇到这种糟糕的情况时,我无法忍受使用 VMware Workstation性能。

    • 1
  4. Best Answer
    ebsf
    2022-08-13T11:58:07+08:002022-08-13T11:58:07+08:00

    这实际上是一个 IOMMU 问题,解决方案包括在内核命令行中启用它。在固件中启用 VT-d(英特尔 IOMMU 内核驱动程序)是不够的,修改 compaction_proactiveness 和 swappiness 只会限制这种行为而没有解决根本原因。

    我自己也遇到了这个问题(Ubuntu 22.04 主机,内核版本 5.15.0,VMware Player 16.2.4,Windows 10 来宾)。当来宾机器在 Firefox 中打开多个选项卡、打开数据库应用程序或两者兼而有之时,这一点尤其明显。

    值得注意的是,设置vm.compaction_proactiveness=0没有效果。设置vm.swappiness=10有所帮助,但问题仍然存在。

    尽管 VT-x 和 VT-d 都在主机固件中启用,但事实证明,至少在内核版本 5.15.0-46-default 中,内核是使用 intel_iommu 编译的,但默认情况下禁用配置。因此,

    cat /boot/config* | grep INTEL_IOMMU

    返回(在其他行中)(注意注释掉第二行的 octothorpe):

    CONFIG_INTEL_IOMMU=y
    # CONFIG_INTEL_IOMMU_DEFAULT_ON is not set
    

    解决方案是将以下字符串添加到内核命令行。这启用了 intel_iommu,修复了客户机冻结,并且kcompactd0至少到目前为止不会将其 CPU 核心固定在 100%:

    intel_iommu=on

    因此,对于 GRUB,编辑/etc/default/grub以将上述字符串添加到GRUB_CMDLINE_LINUX_DEFAULT,例如,

    GRUB_CMDLINE_LINUX_DEFAULT="intel_iommu=on"

    保存并关闭文件,然后运行:

    # update-grub

    重启生效。

    对于systemd-boot,(a) 将上述字符串添加到单独的行中/etc/kernel/cmdline或 (b) 将以下键添加到您的引导条目 .conf 文件中/loader/entries:

    options intel_iommu=on

    保存并关闭文件,然后重启生效。

    编辑

    这件事在一定程度上仍然是 IOMMU 问题,但出现了一些额外的信息:

    • 如上所述配置 IOMMU 有很大帮助,但不是绝对的。问题再次出现。
    • 毫不奇怪,这个问题涉及 Windows 客户机的内存管理和 Linux 主机的内存管理的相互作用。具体来说,将 Windows 客户机配置为禁用其对应用程序的 Superfetch 功能(但不是启动)非常有帮助。Superfetch 会预加载它认为您在启动时需要的内容,因此稍后加载速度会更快。所有这些都进入 RAM,增加了 VM 的 RAM 消耗并减少了恢复和压缩的空间。关闭它允许按需加载和卸载。
    • 另外,在虚拟机设置中减少 VMware VM 的 RAM 配置有很大帮助。起初这似乎违反直觉,但 VMware Player 从一开始就从主机系统中获取所有这些 RAM,从而使主机没有太多空间进行重新分配和压缩。在安装了 16GB (16384MB) 的 RAM 的系统上将 VM RAM 从 ~12GB 减少到 8192MB 几乎消除了我的问题。
    • 尽管有上述情况,但问题更可能在使用数小时后出现,即在当天晚些时候。冻结的持续时间要短得多(几秒钟,而不是几分钟),但一旦开始,它就会继续这样做。据推测,事情并没有卸载应该,无论是主机还是客人都还不清楚。完全关闭来宾(不是重新启动,这会使 VMware Player 及其 RAM 抢占运行)可以是有效的重置。有时,还需要重新启动主机。
    • Firefox 可以要求并且不会放弃大量 RAM,至少在默认设置下是这样。这可以在其高级设置中进行一些配置。

    敬请关注。

    • 1

相关问题

  • 硬件不支持 Spectre 变体 2

  • 什么是正确的安装:open-vm-tools 或 vmware 二进制文件?

  • Vagrant:VMware“vmnet”设备无法启动

  • 适用于 CentOS 的 VMware 工具

  • VMware + Androidx86 vga=询问缺少的分辨率

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