
|
[バックナンバーのトップへ] [Linux システム管理のトップへ] いますぐ実践! Linux システム管理 / Vol.035 / 読者数:574名こんばんは、うすだです。
先週、首が回らなくなったことを、ここに書きました。 いやー、健康ってすばらしいですね! ただ、首が回らなくなる前から、体があまりよくない状態だった、 ということがわかりました。
接骨院の先生から、「頭はつかれているけど、体はつかれていないのではないですか?」
と指摘されました。
たしかに、土日は、昼前まで寝ていて、起きたらたまっている用事をこなすだけ、
というパターンが多いです。
歩いていると、今まで車で通り過ぎていたなんてことはない道が、
新鮮に感じられます。意外と、考え事をすることもできます。 日頃、運動不足な方は、普段車や電車で行っているところを、 歩いてみるなどしてみてはいかがでしょうか。気持ちいいですよ。 というわけで、今週も、はりきってまいりましょう! 今週のお題 - メモリが足りない…とは?先週、メモリが足りなくなったときの、その場しのぎ的刹那的対処の方法を、 ご紹介しました。
Vol.034 - メモリが足りなくなったとき
…しかし、それ以前に、どうなったらメモリ不足と言うのか、という点について、
なにも説明していませんでした。(すみません…) というわけで、今週は、メモリが足りないとはどういうことか、 について考えてみたいと思います。 『いますぐ実践!』とうたっているからには、 バブルのように(?)メモリを使っていくとどうなるのか、 実際に試さないといけませんね。
はい、やってみました。
まず、簡単にメモリ不足になるよう、
実メモリとスワップの容量を小さくしておきます。 # swapon -s Filename Type Size Used Priority /dev/hda3 partition 257032 3264 -1 /var/cache/swap file 32768 0 -2 # swapoff /dev/hda3 # swapon -s Filename Type Size Used Priority /var/cache/swap file 32768 0 -2 そして、以下の、ひたすらメモリを確保して、 メモリ不足に陥らせるものを起動します。
ひたすらメモリを確保するひと これは、C 言語で書かれた、fork して無駄にメモリを確保し続けるひとです。 takusan.c というファイル名で保存し、コンパイルして、実行してみましょう。 % cc -O -o takusan takusan.c % ./takusan 3145728 *** Press return key to fork.(childlen=0,len=3145728)
リターンキーを押してね、と言われますので、リターンキーを押します。
*** free
total used free shared buffers cached
Mem: 28900 27944 956 0 1136 7448
-/+ buffers/cache: 19360 9540
Swap: 32760 0 32760
上記が、free コマンドの実行結果です。
実メモリの free がいきなり少ないですが、Linux は、
極力キャッシュを残そうとしますので、buffers や cached も、
free がなくなったときには free として使われます。
だから、安心してください。 *** vmstat procs memory swap io system cpu r b swpd free buff cache si so bi bo in cs us sy wa id 0 0 0 952 1136 7448 4 4 41 39 105 23 1 2 0 97
上記が、vmstat コマンドの実行結果です。 しばらくリターンキーを押していきますと、どんどん子プロセスを生成します。 子プロセスは、終了せずに動き続けますので、 だんだんとメモリが足りなくなってきます。
*** free
total used free shared buffers cached
Mem: 28900 27988 912 0 336 3004
-/+ buffers/cache: 24648 4252
Swap: 32760 21632 11128
*** vmstat
procs memory swap io system cpu
r b swpd free buff cache si so bi bo in cs us sy wa id
0 0 21632 904 336 3004 4 18 40 54 105 23 1 2 0 97
スワップが、かなり使われるようになってきました。 さらに、リターンキーを押し続けます。すると…
*** free
total used free shared buffers cached
Mem: 28900 28072 828 0 332 3068
-/+ buffers/cache: 24672 4228
Swap: 32760 32760 0
*** vmstat
procs memory swap io system cpu
r b swpd free buff cache si so bi bo in cs us sy wa id
0 0 32760 892 336 3088 4 29 41 64 106 24 1 3 0 96
スワップの空きが、なくなってしまいました。 …しかし、とうとう、悪名高き、OOM(Out Of Memory)キラーさんが、 動作してしまいました。 Out of Memory: Killed process 1767 (sendmail).
Linux カーネルは、実メモリもスワップも余力がなくなると、
Linux ごと動作しなくなることを回避するため、ロシアンルーレット的に、
どれかのプロセスを強制終了しようとします。
誰を強制終了するかは、予測できません。(アルゴリズムは決まってます) 以上、だらだらと説明しましたが、まとめますと、
と言えるのではないかと思います。
ときどき、free や vmstat を実行して、状態を見てみましょう。
ちなみに、vmstat の値は、ブート時からの平均値です。 % vmstat 10 宿題の答え先週の宿題は、 Linux 起動時に、スワップファイルが swapon されるように、設定して ください でした。 これは、以下を参考に、起動用のスクリプトを作成して、 登録してやればよさそうです。
Vol.030 - サービス起動用スクリプトを作ってみる というわけで、起動用のスクリプトは、こんな感じにしてみました。 http://www.usupi.org/sysad/035_swapfile.txt
中を見るとわかりますが、スワップファイルは、
/var/cache/swap に決めうちです。 これを /etc/init.d/swapfile という名前で保存した場合、 # chkconfig --add swapfile と実行すれば、OS 起動時に、スワップファイルが swapon されるようになります。 今週の宿題今週の宿題は、こちらです。 ディスクの空き容量がなくなったときに、どういう方針で解決していけ ばよいか、考えてみましょう です。
サーバの規模や用途によって、全然違ってきそうですね。 あとがき
先週ちょろっとご紹介した VMware Player ですが…。
かくいうわたくしも、自前の VMware 3.0 の環境が動作しませんでしたので、
QEMU で作成した仮想ディスクを使って、試してみました。
というわけで、夢にまで見た(?)、Linux 上の高速なエミュレータ環境が、
あっさりと整ってしまいました。
しかし、1台のマシンに複数の OS が動作している、という状態は、
実際に体験してみると面白いですよね。
今週も、ここまで読んでいただき、ありがとうございました。
「いますぐ実践! Linux システム管理」の解除は、以下からどうぞ。
バックナンバーは、こちらにほぼ全部そろっています。
「栗日記」−もう止まらない止められない。毎日描き続けます。 |
▼ トップ ▼ プロフィール ▼ リンク
▼ 作ってみました
▼ せんでん
▼ 最近読んだ本 [X]
「センネン画報」 今日 マチ子「粟津潔 デザインする言葉」 粟津潔 「Binary Hacks」 高林 哲,鵜飼 文敏,佐藤 祐介,浜地 慎一郎,首藤 一幸 「Make: Volume01」 オライリー・ジャパン 「セーラが町にやってきた」 清野 由実 「手紙屋」 喜多川 泰 「Linuxカーネル2.6解読室」 高橋 浩和,小田 逸郎,山幡 為佐久 「人蕩し術」 無能 唱元 「子育てハッピーアドバイス2」 明橋 大二, 太田 知子 「ラッセル幸福論」 B. Russell 「それでも人生にイエスと言う」 Viktor Emil Frankl 「子育てハッピーアドバイス」 明橋 大二, 太田 知子 「考具」 加藤 昌治 「北欧デザイン<3>」 渡部 千春 「北斎の謎を解く」 諏訪 春雄 「体感美術館」 平野 暁臣 「チベット永遠の書」 Theodore Illion 「リナックスの革命」 Pekka Himanen 「人月の神話」 Frederick Phillips,Jr. Brooks 「ヤバい経済学」 Steven D. Levitt, Stephen J. Dubner 「小布施ッション<2001-2002>」 セーラ・マリ カミングス 「アンパンマン伝説」 やなせ たかし 「夢をかなえるゾウ」 水野 敬也 「ゲーム開発者のためのAI入門」 David M. Bourg, Glenn Seemann 「北欧デザイン<2>」 渡部 千春 「北欧デザイン<1>」 渡部 千春 「ヒューマン2.0」 渡辺 千賀 「中国・ロシア同盟がアメリカを滅ぼす日」 北野 幸伯 「超ロング・セラー 絶滅寸前商品」 湯浅 豊彦 「The BUG(ザ・バグ)」 すずき ひろのぶ,かとう みつあき 「デザインのデザイン」 原 研哉 「マキアヴェッリ語録」 塩野 七生 「ハンバーガーを待つ3分間の値段」 斎藤 由多加 「星の旅人-スペイン「奥の細道」-」 黛 まどか 「食品の裏側」 安部 司 「On Lisp」 Paul Graham 「ぼくが医者をやめた理由 つづき」 永井 明 「あなたならどうする?」 Jack Nikolaschka 「セキュアプログラミング−失敗から学ぶ設計・実装・運用・管理」 Mark G. Graff, Kenneth R. van Wyk 「「左利き」は天才?−利き手をめぐる脳と進化の謎」 David Wolman 「自分の中に毒を持て」 岡本 太郎 「アトピーの薬を減らす本」 田中 貴子 「岡本太郎「明日の神話」修復960日間の記録」 吉村 絵美留 「X51.ORG THE ODYSSEY」 佐藤 健寿 「アレルギーっ子の暮らし応援BOOK」 佐藤 のり子 「沖縄文化論」 岡本 太郎 「「伝説の社員」になれ!」 土井 英司 「コンピュータの構成と設計(上)」 Patterson & Hennessy 「カラスのジョンソン」 明川 哲也 「ドリルを売るには穴を売れ」 佐藤 義典 「頭がよくなる照明術」 結城 未来 「クロフォードのインタラクティブデザイン論」 Chris Crawford 「いじめの根を絶ち子どもを守るガイド」 Barbara Coloroso 「非常識のすすめ―逆発想の仏教論」 ひろさちや 「Linuxアドバンストネットワーク構築ガイド - HAサーバ構築編」 デージーネット 「イノベーションの達人!」 Tom Kelly, Jonathan Littman 「クリエーター50人が語る創造の原点」 小原 啓渡 「欺術 - 史上最強のハッカーが明かす禁断の技法」 Kevin Mitnick 「楽しい気象観察図鑑」 武田 康男 「入門 Ajax」 高橋 登史朗 「リリカルな自画像」 岡本 太郎 「やぎの目ゴールデンベスト」 林 雄司 「初めてのPython 第2版」 Mark Lutz,David Ascher 「鼻兎」 小林 賢太郎 「なぜ、これがアートなの?」 Amelia Arenas 「芸術起業論」 村上 隆 「まほう色の瞳」 Enrique Barrios 「ラーメンズつくるひとデコ」 ラーメンズ 「R25 つきぬけた男たち」 R25編集部 「美の呪力」 岡本 太郎 「しろのあお」 上大岡 トメ 「ザ・ゴール」 Eliyahu M. Goldratt 「ハッカーと画家」 Paul Graham 「岡本太郎に乾杯」 岡本 敏子 「Fedore Core Expert」 Software Design 「誰も知らない男」 ブルース・バートン 「子どもが育つ魔法の言葉」 ドロシー・ロー・ノルト 「国家の罠」 佐藤 優 「夜回り先生」 水谷 修 「やぎの目絵日記」 林 雄司 「7つの習慣」 スティーブン・R. コヴィー 「まろ、ん?−大掴源氏物語」 小泉 吉宏 「ザ・サーチ グーグルが世界を変えた」 ジョン・バッテル 「ポストモダン・マーケティング」 スティーブン ブラウン 「機動戦士ガンダムさん」 大和田 秀樹 「小エロのひみつ - Webやぎの目研究発表」 林 雄司 「これ、誰がデザインしたの?」 渡部千春 「60分間・企業ダントツ化プロジェクト」 神田 昌典 「ガルシアへの手紙」 エルバート ハバード 「人生は素晴らしいものだ」 オグ・マンディーノ 「ザ・マインドマップ」 トニー・ブザン,バリー・ブザン 「ワインバーグのシステム思考法」 G.M.ワインバーグ 「渋谷ではたらく社長の告白」 藤田 晋 「渋井真帆の日経新聞読みこなし隊」 渋井 真帆 「コラム息切れ」 小野 法師丸 「早朝起業」 松山 真之介 「変な人が書いた驚くほどツイてる話」 斎藤 一人 「35歳から仕事で大切にしたいこと」 村井 勉 「金融広告を読め」 吉本 佳生 「発想する会社!」 トム・ケリー,ジョナサン・リットマン 「エハイク」 吉田 戦車 「人生の旋律」 神田 昌典 「仕事の思想」 田坂 広志 「CPUの創りかた」 渡波 郁 「非常識な成功法則」 神田 昌典 …これ以前は記録してません…
▼ 気に入ってる本
| ||||||||||||||||||||||||||||||||||||||||