Linux系统卸载USB存储设备失败导致kworker进程CPU占用异常问题的解决办法

本文介绍了解决U盘或移动硬盘卸载失败导致的kworker进程高CPU占用问题的方法,通过重启USB控制器来强制断开并重新连接所有USB设备,适用于数据传输未完成时直接拔下存储设备导致的后台进程驻留,以及系统更新固件后USB存储设备无法识别的情况。

问题描述

U盘或移动硬盘umount弹出设备失败,后台会出现一个kworker进程,疯狂占用CPU资源,其中:
top命令直接可以看到kworker进程;
htop命令默认隐藏了内核进程,需要在按F2 进行设置 “Display options”选项中,取消选择“Hide kernel threads”,
在这里插入图片描述
之后按F10保存设置,就可以看到kworker进程了。

解决方法

强制重启USB控制器

echo -n "0000:00:14.0" | tee /sys/bus/pci/drivers/xhci_hcd/unbind && echo -n "0000:00:14.0" | tee /sys/bus/pci/drivers/xhci_hcd/bind

注意事项

该命令会断开所有的USB设备的连接,并重新连接,因此,确保当前没有进行数据传输,以防止数据丢失。

其他

该方法同样适用于:

  1. 强制卸载无法卸载的USB设备,比如:解决因为在传输数据未完成时直接拔下存储设备导致的后台D进程驻留(无法被kill);
  2. 系统更新固件可能导致(只遇到过一次)的USB存储设备无法被识别(重启系统同样可以解决);
  3. 不重启系统,只重启xhci控制器。
### 原因 1. **内核模块问题**:系统升级可能引入了有问题内核模块,如引用[2]中提到的drm_kms_helper内核模块,其DRM_KMS_POLLING功能在可用时会导致CPU占用过高,进而增加耗电量。 2. **动态频率调整异常**:系统升级后,CPU的动态频率调整机制(Dynamic Frequency Scaling,简称DFS)可能出现异常。在多核处理器中,为实现更高性能,CPU会根据负载和需求进行动态频率调整。若该机制异常,可能导致CPU频繁在高低频率间切换或长时间处于高频率运行,增加功耗,如引用[3]所述。 3. **应用兼容性问题**:系统升级后,部分应用可能与新系统不兼容,频繁唤醒内核,使kernel_kworker进程持续工作,造成电量消耗。例如应用申请的锁wake lock、使用sensor的时间或使用cpu的时间异常等,如引用[1]中关于具体应用功耗异常的分析定位部分所述。 4. **硬件驱动适配问题**:新系统可能与手机硬件驱动不兼容,导致硬件频繁唤醒内核进行处理,增加kernel_kworker进程的工作量和耗电量。如引用[1]中硬件功耗高的定位方式部分提到的屏幕亮度等级电量统计、移动网络待机耗电统计等硬件相关的功耗问题。 ### 解决办法 1. **禁用有问题内核功能**:若确定是某个内核模块的特定功能导致CPU占用过高和耗电问题,可尝试禁用该功能,如引用[2]中针对drm_kms_helper内核模块的DRM_KMS_POLLING功能,可通过修改相关设置来禁用。 2. **调整CPU性能模式**:检查并调整CPU的性能模式,避免CPU长时间处于高频率运行状态。可在手机的开发者选项或相关设置中进行调整。 3. **优化或卸载不兼容应用**:通过分析bugreport,找出与新系统不兼容的应用,对其进行优化或卸载。如引用[1]中提到的查看功耗统计中的异常值、应用申请的锁wake lock、应用使用sensor的时间和使用的cpu的时间等方法来定位不兼容应用。 4. **更新硬件驱动**:联系手机厂商或通过系统更新,获取最新的硬件驱动,确保硬件与新系统的兼容性。 ```python # 这里只是示意代码,实际手机操作不能用此代码 # 模拟禁用内核功能的配置修改 def disable_kernel_function(): # 假设这里是修改配置文件的操作 with open('/path/to/kernel/config', 'w') as f: f.write('disable_drm_kms_polling=true') disable_kernel_function() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值