找回密码
 骑士注册

QQ登录

微博登录

搜索
❏ 站外平台:

查看: 1735|回复: 1
收起左侧

[求助] Linux mint系统,mate桌面,CPU占用过高

[复制链接]
老沙 发表于 2017-01-07 21:10:18 | 显示全部楼层 |阅读模式

我在试用Linux Mint系统,18.1版,mate桌面,在用top查看时,发现sy值特别高,如下:
%Cpu(s): 23.5 us, 37.8 sy, 0.0 ni, 38.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
然后使用vmstat 1命令查看,部分结果如下:


procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
2 0 0 1205992 50884 753452 0 0 284 37 1001 3637 29 38 31 2 0
1 0 0 1205648 50892 753448 0 0 0 28 2142 7418 26 36 38 0 0
1 0 0 1205504 50892 753632 0 0 0 0 2230 7443 26 37 37 0 0
1 0 0 1205244 50892 753632 0 0 0 0 2225 7514 22 41 37 0 0
3 0 0 1204980 50892 753632 0 0 0 0 2156 7400 26 36 38 0 0
3 0 0 1205220 50892 753632 0 0 0 0 2337 7557 24 41 35 0 0
in值基本上就是在2000左右,us基本上在7000左右

再使用命令pidstat -w查看切换情况

19时54分38秒 UID PID cswch/s nvcswch/s Command
19时54分38秒 0 1 61.17 0.68 systemd
19时54分38秒 0 2 0.11 0.00 kthreadd
19时54分38秒 0 3 82.85 0.00 ksoftirqd/0
19时54分38秒 0 4 84.89 0.01 kworker/0:0
19时54分38秒 0 5 0.01 0.00 kworker/0:0H
19时54分38秒 0 7 276.25 0.05 rcu_sched
19时54分38秒 0 8 0.00 0.00 rcu_bh
19时54分38秒 0 9 181.21 0.00 migration/0
19时54分38秒 0 10 0.25 0.00 watchdog/0
19时54分38秒 0 11 0.25 0.00 watchdog/1
19时54分38秒 0 12 182.20 0.00 migration/1
19时54分38秒 0 13 88.65 0.01 ksoftirqd/1
19时54分38秒 0 14 168.04 0.00 kworker/1:0
19时54分38秒 0 15 0.01 0.00 kworker/1:0H
19时54分38秒 0 16 0.18 0.00 kdevtmpfs
19时54分38秒 0 17 0.00 0.00 netns
19时54分38秒 0 18 0.00 0.00 perf


基本上可以肯定,CPU占用过高是因为出现了过于频繁的切换,但我搞不清是什么导致了这个问题,又该如何处理。

请各位高手不吝赐教 

 楼主| 老沙 发表于 2017-01-08 16:50:34 | 显示全部楼层
我的笔记本在linux下屏幕亮度调节有问题,按下Fn+亮度调节按键,屏幕上会有亮度调节的图标,但实际上屏幕亮度并没有变化。有博文上说这是对intel集显支持不好的原因,需要在/usr/sbin/路径下创建文件writeintelbacklight.sh(有执行权限),内容是:

#!/bin/bash

intelmaxbrightness=`cat /sys/class/backlight/intel_backlight/max_brightness`
acpimaxbrightness=`cat /sys/class/backlight/acpi_video0/max_brightness`
scale=`expr $intelmaxbrightness / $acpimaxbrightness`
acpibrightness=`cat /sys/class/backlight/acpi_video0/brightness`
newintelbrightness=`expr $acpibrightness \* $scale`
curintelbrightness=`cat /sys/class/backlight/intel_backlight/actual_brightness`
if [ "$newintelbrightness" -ne "$curintelbrightness" ]
then
echo $newintelbrightness > /sys/class/backlight/intel_backlight/brightness
fi
exit 0

大概意思就是从cat /sys/class/backlight/acpi_video0/中的相应文件获取目前我设置的亮度值,然后再写入到/sys/class/backlight/intel_backlight/中的相应文件中,从而改变屏幕亮度。

然后创建文件/etc/udev/rules.d/99-writeintelbacklight.rules ,内容是:

ACTION=="change", SUBSYSTEM=="backlight", RUN+="/usr/sbin/writeintelbacklight.sh"

大概意思应该是当检测到背景亮度变化,就执行前面的那个文件。

这是因为,Fn键改变的是/sys/class/backlight/acpi_video0/中的文件的值,但实际上起作用的是/sys/class/backlight/intel_backlight中的文件配置。所以要有前面两部操作,来将快捷键的操作反映到实际起作用的配置文件中去。

这是背景。我想起这个设置后,尝试用Fn键调了一下屏幕亮度,几秒钟后,cpu占用就降下来了……再调一下,就又升上去了。然后我输出/sys/class/backlight/acpi_video0/brightness文件中的值(这个文件存储了当前的亮度值,但只是acpi那部分的设定值,真实亮度值保存在/sys/class/backlight/intel_backlight/brightness中,两者表示方法不同),发现,如果亮度值是偶数,cpu占用就比较低,top中的sy值只有个位数,大多数时间在5以内;如果亮度值是奇数,CPU占用就高。top中的sy值就飙升到了接近40。

acpi调节最大值是10,最小值是0,0表示关闭屏幕。那么在不关闭的情况下,就是从1到10一共十级亮度。只要是偶数级别,就没有问题,奇数级别就有问题,显卡或者系统,在奇数级别下不正常。

不过还需要进一步验证。

您需要登录后才可以回帖 登录

本版积分规则

快速回复 返回顶部 返回列表

分享到微信

打开微信,点击顶部的“╋”,
使用“扫一扫”将网页分享至微信。