【?】Linuxのコードをたった30行ガッツリ修正するだけでデータセンターの電力消費量を最大30%削減 [723315487]
■ このスレッドは過去ログ倉庫に格納されています
https://gigazine.net/news/20250128-coding-for-a-greener-internet/ Linuxのコードをたった30行修正するだけでデータセンターの電力消費量を最大30%削.減.可.能.、実際にLinux 6.13から反映される
つまりLinuxのコードが全部で100行だったのを70行にするってこと?
>カーステン教授によると、コードは一切追加しておらず、「何をいつ実行するか」を再配置して、データセンターのCPUキャッシュ使用率を大幅に増やしただけだとのこと。変更内容についてカーステン教授は「製造工場のパイプを再配置して、従業員が常に走り回らなくてもいいようにしたようなもの」と説明しています。
良く分からないけど動いてるからヨシ!が大々的に行われてただけじゃね
最大30%
最大?
机上のベストケースの数字を言ってるだけで
実際は5%がせいぜいってオチじゃないだろうな
コード書いたやつもわかってるよね
コード書いた後でこうすりゃもっと簡潔でよかったなって思うんだけど
目の前でエラーなく動いてるしもはや弄りたくないw
データセンターのLinux常に最新にしてる奴なんて存在するのか
AIなんてポンコツが出す答えの99%は間違いだからな
CPUのキャッシュメモリがバチクソ25年前にリナックス作った時より大幅に安くなり容量も増えて高速になったのに
日本のあほと馬鹿とパワー系知的障害者しかいない財務省が30年103万円の壁を放置したのと同じで178万円にあげたら
30%もバチクソ高速になり(゚∀゚)あひゃゃ高性能化した
https://cs.uwaterloo.ca/news/cheriton-school-computer-science-researchers-update-linux 直接URL張れないけどこの記事の下の方にパッチへのリンクがある (The Linux kernel code addition のとこ)
それなりに行数あってインタビュー受けてる教授が提供した約30行の部分がどこだかわかんね
>>9 何触ったらどうなるかわかんねぇもんな…
無能だからそういうことにならんよう作れと言われても…って感じ
昔からそうだったのか
ハードの進歩でいつのまにか効率良い方法が逆転していたのか
こんなんするよりcpuをarmにするだけでだいぶ省電力になりそうだけど
>>24 「差分抽出」という概念がない残念な脳なんだよ
共通テストの現代文で何点取れるものやら
>>22 それやるならソフトを全部arm向けに書き直さなきゃいけんのだが、大規模システムでそれやろうとすると
芋づる式にあれもこれも書き直しっていうのが続出して手に負えなくなる
x86コードを動くようにエミュとかすると性能が下がりすぎて話にならなくなる
というわけでどこもやらんという話
>>24-25 いや空行やコメントやテストコード除いても明らかに30行以上あるでしょ?
この記事で取り上げられてる部分はどこなのって話をしてるのよ
たった30行のコーディングでギガワット単位の削減は
凄い画期的な進歩なんだろうけど、
俺の肛門も閉鎖されそうです
↑なぜかこの言葉が思い浮かんでしまう
複数の条件のif文のとき、なんも考えずに条件を羅列するようなもんかな?
世界中の人から「男性かつ日本人」を抽出するときに、男性かどうかよりも先に日本人か判定したほうが効率がいい的なやつ
>>25はでてきて
>>29説明したほうがいいんじゃねぇの?
俺だったらボロクソ言ってるぞ
全然、理解できないけど、
おまいらは理解できるの?
テストコードも一緒入ってるから30行以上コミットさらとるな
これくそくだらないやつで30%高速化って発表して
周りが誰も乗ってこなかったから少電力化に言い換えたのか
deepseekに聞いてみたがわけわからん
このパッチは、Linuxカーネルのcgroups v1サブシステム(特にメモリサブシステム)におけるuse-after-freeバグを修正しています。以下に詳細を説明します:
**問題の背景**
- cgroup v1ファイルシステムをマウントする際、メモリサブシステムの新しいルート(`root_mem_cgroup`)の割り当てに失敗すると、カーネルが既に解放されたメモリ領域(use-after-free)にアクセスする可能性がありました。
**バグの原因**
- 元のコードでは、新しい`mem_cgroup`の割り当てに失敗した後、`root_mem_cgroup`の更新と古いリソースの解放(`mem_cgroup_put`)を誤った順序で実行していました。
- 具体的には、割り当て失敗時に`new_root`が解放された後も、解放済みの`old`ポインタ(以前の`root_mem_cgroup`)を参照しようとしていました。
**パッチの修正内容**
1. **RCUポインタの更新タイミング変更**:
- `rcu_assign_pointer(root_mem_cgroup, ...)`の実行を、新しい`mem_cgroup`の割り当てが成功した場合のみに限定しました。
- これにより、割り当て失敗時に不正なポインタが設定されるのを防ぎます。
2. **参照カウント管理の改善**:
- 古い`root_mem_cgroup`の参照(`old`)を、新しいポインタを設定する前に取得するように変更しました。
- これにより、解放済みリソースを`mem_cgroup_put`で参照するリスクを排除しています。
**修正の影響**
- メモリサブシステムのマウント処理が安定化され、カーネルクラッシュやメモリ破損の可能性が低減されます。
- cgroups v1を使用するシステムの信頼性向上が期待されます。
この修正は、リソース管理の順序とライフサイクルを厳密に制御することで、複雑なメモリ管理操作中の競合状態を解決する典型例です。
>>29 diff --git a/fs/eventpoll.c b/fs/eventpoll.c
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
diff --git a/include/net/busy_poll.h b/include/net/busy_poll.h
diff --git a/include/uapi/linux/netdev.h b/include/uapi/linux/netdev.h
diff --git a/net/core/dev.c b/net/core/dev.c
diff --git a/net/core/dev.h b/net/core/dev.h
diff --git a/net/core/netdev-genl-gen.c b/net/core/netdev-genl-gen.c
diff --git a/net/core/netdev-genl.c b/net/core/netdev-genl.c
この辺がカーネル自体の変更部分か。git形式のdiffだから、前後数行も一緒に出力されて増えてるけど、
追加部分(+)だけでも30行よりは多いな。このなかのどこかが中核部分なのだろう。
分かる人はたぶんこの板にはいないw
ソースコードて数十万行ありそうなのによう読めるな
サーバールーム入るとずっとファン回ってるけどあれも電力の無駄じゃない?
負荷かかってるときだけ回せばええやんって思うんだけど
常時高負荷だったらまあわかるけどそんなことないやろ
あとlinuxだと負荷分散でirqbalanceあるけどあれもよくなさそう
>>39 中身見てないけど装置間通信する時のデータ領域を予め固定したんでないのか
あれの番地固定気味したら速くなりそうな気はする
>>42 冷やすほど部品の故障率が下がる
過剰な冷却はエコ
>>45 aiのがマシと思えるコード吐く人間も居るからな
マジ辛い
>>39 多分、
diff --git a/net/core/dev.c b/net/core/dev.c
に追加された2つの関数のことじゃない?
>>48 データセンターとかLinux以外の選択肢何があるの?
AIXとか?まだ使われてんの?
家の郵便受けを見に行ったら空っぽのとき、わざわざ郵便局まで行って訪ねて無かったら家に戻り、次は郵便受け見ないで郵便局直行する、くっそ面倒な事やってそう
パッチの内容見たけど30行以上ないっすか?
コメントとかの部分除いても30行超えてると思うんだけど。
ていうかほとんどコメントよね、これ。
Linuxのソースコードの汚さは有名だからな
肥大化して無駄の塊になってる
誰かが直すだろうで回ってる界隈
まぁ、結局、過去互換性の問題でしょ
増やすと古いシステムで誤動作するからあえて
切って動作してるとか
割とよくある話だよ
>>4 世の中なんてほぼすべてがそれ
あと最適化って難しい
ほらみろやっぱり GNU Hurd は必要だったんだよ
モノリシックカーネルではこうなることは確定的だった
>>60 ちゃんと動くものを作り上げるのが何より正義
ジャップ「プログラムなんて誰が書いたって同じじゃガハハ!」
■ このスレッドは過去ログ倉庫に格納されています