長い話を手短に言うと、数日前 カーネル開発者の一人がパッチをアップロードしました これにより、特に重いタスク (カーネルのコンパイルなど) の実行中にマルチタスクを処理する場合に、システムのパフォーマンスが大幅に (ほぼ 200 倍) 向上しました。 Linus は、この開発者の素晴らしい意見を称賛しました。 しかし、Red Hat の開発者は、 Lennar Poettering は、この改善をカーネルから直接実装することに同意しませんでした。 ユーザー空間で変更を加えたほうが彼にとっては良いことだった (~/.bashrc)。 ライナスは怒り、この開発者を叱責し、結果がすべてを物語っていると言いました。 レナーは厳しい言葉で答える代わりに、座って工夫した。 代替案 (カーネルにパッチを適用する必要がない) は 4 行しか占有しません。 つまり、彼らはライナスの口を閉ざしたのです... |
注: この方法には、Linux カーネル タスク グループ (cgroup) のサポートが必要です。つまり、2.6.36 以降のカーネルを使用するユーザーのみがこの方法を適用できます。
Fedora でパッチを適用する方法
1.- ~/.bashrc ファイルを編集します。
gedit〜 / .bashrc
2.- ファイルの最後に次のコードを貼り付けます。
if [ "$PS1" ] ; それから
mkdir -m 0700 /sys/fs/cgroup/cpu/user/$$
エコー $$ > /sys/fs/cgroup/cpu/user/$$/tasks
fi
3.- 次のコマンドを実行します。
mount -t cgroup cgroup /sys/fs/cgroup/cpu -o cpu
mkdir -m 0777 /sys/fs/cgroup/cpu/user
Ubuntuでパッチを適用する方法
Ubuntu では状況はもう少し複雑です...
1.- ファイルを編集する rc.ローカル このコマンドで:
sudo 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
2.- ファイルを保存し、実行権限を与えます。
sudo chmod +x /etc/rc.local
3.- ファイルを編集する 〜/ .bashrc:
gedit〜 / .bashrc
4.- ファイルの最後に次のコードを貼り付けます。
if [ "$PS1" ] ;
次に、mkdir -m 0700 /dev/cgroup/cpu/user/$$
echo $$ > /dev/cgroup/cpu/user/$$/tasks
echo "1" > /dev/cgroup/cpu/user/$$/notify_on_release
fi
5.- cgroup_clean ファイルを変更します。
sudo gedit /usr/local/sbin/cgroup_clean
6.- ファイルの最後に次のコードを貼り付けます。
#!/ bin / shを
if [ "$*" != "/user" ]; それから
rmdir /dev/cgroup/cpu/$*
fi
7.- ファイルを保存し、実行権限を与えます。
sudo chmod +x /usr/local/sbin/cgroup_clean
8.- システムを再起動します。
注: /dev/cgroup/ フォルダーを見ると、マルチタスク管理が大幅に改善されていることがわかります。
Arch の説明書を見つけました。ここにあります。 http://pastebin.com/raw.php?i=sHRYRuAN
私の場合、パッチを適用しましたが、全体的にはあまり改善されませんでしたが、Web ページをスクロールするときに大きな変化に気づいた場合は、初めて本当にスムーズになっています。 =)
素晴らしい! シェアしていただきありがとうございました!
Arch を使ってブログを書いてくれる方を募集しているって言いましたよね? ご興味がございましたら、こちらまでお書きください linux@gmail.comを使いましょう
大きな抱擁! ポール。
ご招待いただきありがとうございます。その後はメールで続けさせていただきます 😉
ひょっとしてArchlinuxの説明書はないんですよね? 🙂
見つかりませんでした。 しかし、それは確かに Fedora に似ていると私には言います。 一方で、Arch は誰もが自分の好きなように構築するため、おそらくそれが従う手順に影響を与える可能性があることを考慮する必要があります...
ここでは、Archlinux でそれらを適用する方法を見つけました。これは Fedora と非常によく似ています。 http://pastebin.com/raw.php?i=sHRYRuAN
bash: /dev/cgroup/cpu/user/$/tasks: そのようなファイルまたはディレクトリはありません
これらの指示に従っても、ターミナル AMD64 x を開くとこのエラーが表示され続けます。それがそれに関係している場合
もう見つけました、パブロさん修正してください http://www.webupd8.org/2010/11/alternative-to-200-lines-kernel-patch.html
あなたが何を置くかではなく、ubuntuでしなければならないことは次のとおりです。
sudo gedit /usr/local/sbin/cgroup_clean
そしてこれを入れてください:
#!/ bin / shを
if [ "$*" != "/user" ]; それから
rmdir /dev/cgroup/cpu/$*
fi
準備ができて! 修正しました! ありがとう!
それは本当です! 思い出させてくれてありがとう!
投稿の冒頭にその説明を追加しただけです。
ハグ! ポール。
具体的には、ユーザーとしてどのようなメリットが得られるか、システムでどのようなパフォーマンスの向上が見られるかについて説明します。
すべてがはるかに速く進みます。 ただし、XNUMX つの重いタスクを実行しているときに他のタスクも同時に実行したい場合、その違いは実際に「わかります」。 たとえば、複数のプログラムのインストールを実行しているとき、カーネルをコンパイルしているとき、または重いビデオを編集しているときに、同時にインターネットサーフィンや映画の視聴などをしたいとします。
Arch にパッチを実装する方法がわかったら、Fedora で動作するパッチを実行してみますので、お知らせください。
抱擁! ポール。
パソコンの使い方にもよると思います。 インターネットと軽量のテキスト エディタをほとんど使用しない場合は、違いを「感じる」ことはできないでしょう。 一方、あなたが私と同じように、インターネットの閲覧や映画の視聴中に重いタスク (ビデオの変換、カーネルのコンパイルなど) を実行する場合、その違いは顕著です。
すべての手順が完了したら、ターミナルを開くと、常に次のメッセージが表示されます。
mkdir: ディレクトリ "/dev/cgroup/cpu/user/1844" を作成できません: そのようなファイルまたはディレクトリはありません
bash: /dev/cgroup/cpu/user/1844/tasks: そのようなファイルまたはディレクトリはありません
bash: /dev/cgroup/cpu/user/1844/notify_on_release: そのようなファイルまたはディレクトリはありません
domingopv @ pc1:〜$
ターミナルでもすべて正常に動作しますが、何か間違ったことをしましたか?
うーん...それが何なのか本当にわかりません。 ただし、特に 5 以降の手順が正しく実行されていない可能性が非常に高いように思えます。 繰り返してみるか、正しく理解できているか確認してください。 今のところ思いつくのはこれだけです。
大きな抱擁! ポール。
maverick を再インストールし、パッチを再インストールしたところ、次のような結果が得られました。
mkdir: ディレクトリ "/dev/cgroup/cpu/user/1678" を作成できません: そのようなファイルまたはディレクトリはありません
bash: /dev/cgroup/cpu/user/1678/tasks: そのようなファイルまたはディレクトリはありません
bash: /dev/cgroup/cpu/user/1678/notify_on_release: そのようなファイルまたはディレクトリはありません
domingopv @ pc1:〜$
おっと...実のところ、それが何であるかはわかりません。 私にとっては完璧でした。
cgroup のクリーンアップが正しく行われていないことがわかります。 だからこそ、ステップ 5 から見てくださいと主張しました。
乾杯! ポール。
すごいですね、パッシブ nvidia 1080 で 8400p のフラッシュ ビデオを見ることができます。つまり、悪い悪い、完璧に、CPU はすべて動作しています、素晴らしいですね、素晴らしい改善ですね、かなり良くなりました、私は Ubuntu 10.04 を使用しています 😀 それは良いことです、ビデオが進みます、ハハハハ 😀
rc.localって何? いくつかあるのですが、どれでしょうか? ごきげんよう。
ポイント 4 にリストされているコマンドを作成したところです。それをファイルにコピーする必要はなく、それらのコマンドを実行します。
乾杯! ポール。
説明が不十分です。
行う必要があるのは、次のように rc.local ファイルを編集することです。
sudo gedit /etc/rc.local
内部 (出口 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
それが問題なのです。 これらの手順の説明が不十分です。
あなたが正しいです! はっきりと「rc.localファイルを編集してください」と書いてあります。 追加する必要があるのは、そのようなことを行うコマンドです (知らない人もいるかもしれません)。 自分で追加します。
お知らせありがとうございます! こんにちは! パブロ。
PCLinuxOsではどのような手順になるのでしょうか?
本当のところは分かりません…
見つけた場合は、残りのユーザーとデータを共有することを忘れないでください。
心より感謝申し上げます。
乾杯! ポール。
それともどこから得た参照を記載していないように思えますか? 出典を教えていただけますか?
感謝
単一の情報源はありません。 私はさまざまな情報源と私自身の個人的な経験からそれを行う方法を探していました。 一般的に言って、情報源はそのニュースを再現した何百万ものブログであると言えます。 「200 linux kernel patch」を検索すれば、私が何を言っているのかがわかるでしょう。 正確には覚えていませんが、Ubuntu の部分は WebUpd8 から入手したかもしれません。 Fedora ではありません。
私は少し前まで ubuntu 64 ビットのユーザーであり、このヒントを見て調査を開始しました。投稿によると、現在所有しているカーネルは 2.6.32-27 であり、このパッチはそれ以上のカーネルにのみ適用できます。私の質問は、この変更が 2.6.36 ビット ディストリビューションでのみ機能するのか、それとも現在のディストリビューションでカーネルを 32 に更新できるのかということです。
ウェブ上のすべての情報、素晴らしい資料をありがとう。
この変更は 32 ビットでも 64 ビットでも同様に機能します。
乾杯! ポール。
質問に対して、これは後のアップデートに支障をきたさないでしょうか?
もしそれがうまくいかなかった場合、最悪の事態はどうなるでしょうか?
(後で、ubuntu 10.04 から 10.10 に変更するだけですべてがクラッシュすることがわかります)
(このメソッドの無責任な使用を避けるために) 最初に明確にする必要があるのは、Linux カーネルのタスク グループ (cgroups) のサポートが必要であるということです。つまり、2.6.36 以降のカーネルを使用するユーザーのみがこのメソッドを適用できます。改善。