让 200 行 Linux 内核补丁的替代方案发挥作用

让 200 行 Linux 内核补丁的替代方案发挥作用

显然,200 行代码还有类似的替代方案内核补丁 不涉及内核升级。

它被提出这里并讨论这里

但是,我不确定 webupd8 的解决方案(在“在 Ubuntu 中使用它”部分下)在 Ubuntu 上是否真的有效。特别是,./ 上的一位评论者说他收到了一条错误消息。有人能发布真正有效的“正确”方法吗?

建议的解决方案:

根据我目前读过的评论,以下内容似乎有效。

(1)在 中/etc/rc.local,将以下几行添加到上述 中exit 0

mkdir -p /dev/cgroup/cpu
mount -t cgroup cgroup /dev/cgroup/cpu -o cpu
mkdir -m 0777 /dev/cgroup/cpu/user
echo "/usr/local/sbin/cgroup_clean" > /dev/cgroup/cpu/release_agent

(2)创建一个名为的文件,/usr/local/sbin/cgroup_clean内容如下:

#!/bin/sh
rmdir /dev/cgroup/cpu/$1

(3)在您的 中~/.bashrc添加:

if [ "$PS1" ] ; then 
    mkdir -m 0700 /dev/cgroup/cpu/user/$$
    echo $$ > /dev/cgroup/cpu/user/$$/tasks
    echo "1" > /dev/cgroup/cpu/user/$$/notify_on_release
fi

(4) (为确保执行位处于打开状态)执行

sudo chmod +x /usr/local/sbin/cgroup_clean /etc/rc.local

(5)重新启动。

答案1

上面的答案确实应该可以修复终端错误消息。Gödel,我不确定我是否理解了你的观点。我会尝试解释这个变化:

由于创建其他 cgroup 时,notify_on_release 的默认值是其父级的 notify_on_release 设置的当前值,因此将 /dev/cgroup/cpu/user/notify_on_release 的值设置为 1 将确保每个子 cgroup 都启用了 notify_on_release,从而运行 release_agent。不幸的是,当“user”的最后一个子 cgroup 被删除(由 release_agent 删除)时,该文件夹也会被删除,从而导致报告错误消息。一个简单的解决方法是在创建时为每个 cgroup 单独启用 notify_on_release,同时保持父级设置处于禁用状态。

希望这很容易理解!

编辑:我本来想将此作为对实际答案的评论发布,但似乎我还没有足够的声誉来这样做(目前)。

答案2

我使用 Web UPD8 上的自动脚本将此补丁应用于 Asus eee 1000H。我注意到运行 Flash 应用程序时 Google Chrome 的性能显著提升。视频更流畅,丢帧更少。Gnome UI 也更灵敏,窗口重绘速度更快。非常酷。链接文本

答案3

Ricardo Ferreira 的更新说明

首先编辑 rc.local 文件,运行sudo -H gedit /etc/rc.local并添加以下几行exit 0

mkdir -p /dev/cgroup/cpu
mount -t cgroup cgroup /dev/cgroup/cpu -o cpu
mkdir -m 0777 /dev/cgroup/cpu/user
echo "/usr/local/sbin/cgroup_clean" > /dev/cgroup/cpu/release_agent

保存并退出 gedit。现在,使其可执行:

sudo chmod +x /etc/rc.local

完成此操作后,编辑主目录中的 .bashrc 文件(gedit ~/.bashrc),并在该文件末尾添加:

 if [ "$PS1" ] ; then  
    mkdir -m 0700 /dev/cgroup/cpu/user/$$
    echo $$ > /dev/cgroup/cpu/user/$$/tasks
    echo "1" > /dev/cgroup/cpu/user/$$/notify_on_release 
 fi

最后一件事。要确保最后一个任务离开时删除 cgroup,请运行:

sudo -H gedit /usr/local/sbin/cgroup_clean

然后复制粘贴这个:

#!/bin/sh
rmdir /dev/cgroup/cpu/$*

再次保存文件,退出 gedit 并使其可执行:

sudo chmod +x /usr/local/sbin/cgroup_clean

完成!重新启动计算机以应用更改。

相关内容