いますぐ実践! Linuxシステム管理

[バックナンバーのトップへ] [Linux システム管理のトップへ]


いますぐ実践! Linux システム管理 / Vol.035 / 読者数:574名

こんばんは、うすだです。

先週、首が回らなくなったことを、ここに書きました。
あれから、接骨院に通っているうちに、首が回るようになり、もとの状態に、 無事戻ることができました。

いやー、健康ってすばらしいですね!

ただ、首が回らなくなる前から、体があまりよくない状態だった、 ということがわかりました。

接骨院の先生から、「頭はつかれているけど、体はつかれていないのではないですか?」 と指摘されました。
そして、土日はだらだら過ごさず、家族と何か体を動かすことをして、 体をつかれさせた方がいいですよ、という助言をいただきました。

たしかに、土日は、昼前まで寝ていて、起きたらたまっている用事をこなすだけ、 というパターンが多いです。
ですので、ときどき、1時間くらい歩いてみることにしました。

歩いていると、今まで車で通り過ぎていたなんてことはない道が、 新鮮に感じられます。意外と、考え事をすることもできます。
そして、ほどよくつかれて、気持ちがよいです。
まだ始めたばかりですが、しばらく続けてみようと思います。

日頃、運動不足な方は、普段車や電車で行っているところを、 歩いてみるなどしてみてはいかがでしょうか。気持ちいいですよ。

というわけで、今週も、はりきってまいりましょう!

今週のお題 - メモリが足りない…とは?

先週、メモリが足りなくなったときの、その場しのぎ的刹那的対処の方法を、 ご紹介しました。

Vol.034 - メモリが足りなくなったとき
http://www.usupi.org/sysad/034.html

…しかし、それ以前に、どうなったらメモリ不足と言うのか、という点について、 なにも説明していませんでした。(すみません…)
まず、メモリ不足かどうか判断できないと、前回の小技を使う機会がないですよね。

というわけで、今週は、メモリが足りないとはどういうことか、 について考えてみたいと思います。

『いますぐ実践!』とうたっているからには、 バブルのように(?)メモリを使っていくとどうなるのか、 実際に試さないといけませんね。

はい、やってみました。
もちろん、ホンモノのサーバ上ではなく、お試し環境上で、です。

まず、簡単にメモリ不足になるよう、 実メモリとスワップの容量を小さくしておきます。
スワップは、もともとあるスワップを外し、 スワップファイルだけを用いるようにすると、小さくできます。

  # 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

そして、以下の、ひたすらメモリを確保して、 メモリ不足に陥らせるものを起動します。

ひたすらメモリを確保するひと
http://www.usupi.org/sysad/035_takusan.txt

これは、C 言語で書かれた、fork して無駄にメモリを確保し続けるひとです。 takusan.c というファイル名で保存し、コンパイルして、実行してみましょう。

  % cc -O -o takusan takusan.c
  % ./takusan 3145728

  *** Press return key to fork.(childlen=0,len=3145728)

リターンキーを押してね、と言われますので、リターンキーを押します。
すると、子プロセスを生成し、子プロセスが、無駄にメモリを費やす何かをします。 その後、free コマンドと vmstat コマンドを実行します。

  *** free
               total     used     free   shared  buffers   cached
  Mem:         28900    27944      956        0     1136     7448
  -/+ buffers/cache:    19360     9540
  Swap:        32760        0    32760

上記が、free コマンドの実行結果です。
実メモリ(Mem)とスワップ(Swap)の、合計(total)、使用量(used)、 そして空き容量(free)などが確認できます。(ちなみに、単位は kB ですね。)

実メモリの 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 コマンドの実行結果です。
確認すべきところは、swap の si(swap in), so(swap out)の値です。
実メモリの空きが足りなくなって、スワップに退避させたり(swap out)、 状況が解消されてメモリに戻したり(swap in)するとき、 これらの値が増加します。
こちらも、まだたいしたことはなさそうです。

しばらくリターンキーを押していきますと、どんどん子プロセスを生成します。 子プロセスは、終了せずに動き続けますので、 だんだんとメモリが足りなくなってきます。

  *** 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

スワップが、かなり使われるようになってきました。
buffers や cached も減少し、 実メモリを他の用途にとられていることがわかります。
パフォーマンスも、だんだん悪くなってきました。
こうなると、メモリの増設を考えた方がよさそうです。

さらに、リターンキーを押し続けます。すると…

  *** 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 ごと動作しなくなることを回避するため、ロシアンルーレット的に、 どれかのプロセスを強制終了しようとします。
それが、OOM キラーさんです。

誰を強制終了するかは、予測できません。(アルゴリズムは決まってます)
ですので、こうなってしまったら、強制終了されたプロセスが何であれ、 一度再起動して出直した方が、よいと思います。

以上、だらだらと説明しましたが、まとめますと、

  • 実メモリが不足し、頻繁にスワップを使う場合、パフォーマンスが低下する。 パフォーマンスを重視するなら、メモリの増設を検討する。
  • スワップの空きが減ってきたら、スワップファイルを追加して、 延命策を施した方がよい。メモリ、スワップ双方の増設を検討する。
  • OOM キラーが動作したら、一度再起動した方がよい。
    もちろん、メモリ、スワップ双方の増設を検討すべき。

と言えるのではないかと思います。

ときどき、free や vmstat を実行して、状態を見てみましょう。
そして、上記のような現象が出ていないか、チェックしてください。

ちなみに、vmstat の値は、ブート時からの平均値です。
厳密に、その時の値を知りたいなら、 インターバル(秒)を引数に指定して実行してください。
例えば、10秒毎の値を知りたい場合は、以下のように実行してください。

  % vmstat 10

宿題の答え

先週の宿題は、

  Linux 起動時に、スワップファイルが swapon されるように、設定して
  ください

でした。

これは、以下を参考に、起動用のスクリプトを作成して、 登録してやればよさそうです。

Vol.030 - サービス起動用スクリプトを作ってみる
http://www.usupi.org/sysad/030.html
Vol.031 - サービスを登録する
http://www.usupi.org/sysad/031.html

というわけで、起動用のスクリプトは、こんな感じにしてみました。

http://www.usupi.org/sysad/035_swapfile.txt

中を見るとわかりますが、スワップファイルは、 /var/cache/swap に決めうちです。
(変更したいとおっしゃる貴兄は、SWAPFILE= の後を変更してください。)

これを /etc/init.d/swapfile という名前で保存した場合、

  # chkconfig --add swapfile

と実行すれば、OS 起動時に、スワップファイルが swapon されるようになります。

今週の宿題

今週の宿題は、こちらです。

  ディスクの空き容量がなくなったときに、どういう方針で解決していけ
  ばよいか、考えてみましょう

です。

サーバの規模や用途によって、全然違ってきそうですね。
それが正しいかどうか、ということはとりあえず置いておいて、 ちょっとでもいいですので、考えてみましょう。(わたしも、考えてみます。)

あとがき

先週ちょろっとご紹介した VMware Player ですが…。
既存のゲスト OS しか動かせないはずが、早くも、 OS を新規インストールする方法が、各所で紹介されているようです。

かくいうわたくしも、自前の VMware 3.0 の環境が動作しませんでしたので、 QEMU で作成した仮想ディスクを使って、試してみました。
とりあえず、OpenBSD のインストールと起動が、できました。
Fedora や Solaris, Windows なども、ぼちぼち試してみたいと思います。

というわけで、夢にまで見た(?)、Linux 上の高速なエミュレータ環境が、 あっさりと整ってしまいました。
残る問題は、HDD とメモリに余裕がないこと、でしょうか。
メモリに関しては、速度さえ目をつぶれば、 スワップを多めにとって動かせなくもないですので、 だましだまし使っていこうと思います。

しかし、1台のマシンに複数の OS が動作している、という状態は、 実際に体験してみると面白いですよね。
経験したことのない方は、ぜひぜひ、お試しください。

今週も、ここまで読んでいただき、ありがとうございました。
それでは、また来週、お会いしましょう!

「いますぐ実践! Linux システム管理」の解除は、以下からどうぞ。
http://www.usupi.org/sysad/ (まぐまぐ ID:149633)

バックナンバーは、こちらにほぼ全部そろっています。
http://www.usupi.org/sysad/backno.html

「栗日記」−もう止まらない止められない。毎日描き続けます。
http://www.usupi.org/kuri/ (まぐまぐ ID:126454)


[バックナンバーのトップへ] [Linux システム管理のトップへ]

トップ

バックナンバー
    [日付順] [目的別]

プロフィール

▼ リンク

独学Linux
Linuxデスクトップ環境に関する情報が満載です。 メルマガもありますよ。
Server World
CentOS 5 をサーバとしたときの設定例が、これでもかというくらいたくさん載っています。 CentOS以外のディストリビューションや、Solaris10の例も充実しています。
LINUXで自宅サーバーを構築・導入(Fedora8)
Fedora8のインストールの仕方から管理方法まで、詳しく載っています。 SearchManには情報がもりだくさんです。
マロンくん.NET
〜サーバ管理者への道〜
Linuxをサーバとして使用するための、いろいろな設定方法が載っています。 マロンくんもかわいいです。 なんといっても、マロンくんという名前がいいですね!!
日本の Linux 情報
日本の、Linux 総本山的なところです。
Linux Square − @IT
@ITが提供する、Linux の情報が満載。 載っていない設定方法はないんじゃないでしょうか。
Open Tech Press
Linux に限らず、オープンソース関連の記事が網羅されています。
ITmediaエンタープライズ:Linux Tips 一覧
Tips というより FAQ 集でしょうか。わからないことがあれば覗きましょう。
IBM developerWorks : Linux
開発者向けですが、勉強になりますよ。
Yahoo!ニュース - Linux
Yahoo!のLinuxに関するニュース一覧です。
栗日記
システム管理とかと全然関係ありませんが、毎日栗の絵を描いています。
システム管理につかれちゃったとき、癒されたいときに、ご覧ください。:-)
WEB RANKING - PC関連
ランキングに参加してみました。押してやってください。

▼ 作ってみました

Add to Google

▼ せんでん





▼ 最近読んだ本

ハリー・ポッターと不死鳥の騎士団 ハリー・ポッターと不死鳥の騎士団
J.K.Rowling
  ハリポ月刊なので読み直してます
ハリー・ポッターと炎のゴブレット ハリー・ポッターと炎のゴブレット
J.K.Rowling
  ハリポ月刊なので読み直してます
ハリー・ポッターとアズカバンの囚人 ハリー・ポッターとアズカバンの囚人
J.K.Rowling
  ハリポ月刊なので読み直してます
ハリー・ポッターと秘密の部屋 ハリー・ポッターと秘密の部屋
J.K.Rowling
  ハリポ月刊なので読み直してます
ハリー・ポッターと賢者の石 ハリー・ポッターと賢者の石
J.K.Rowling
  ハリポ月刊なので読み直してます
アルケミスト アルケミスト
パウロ・コエーリョ
  また読んだ
賢者の書 賢者の書
喜多川 泰
  違った視点から見られてよかった
セキュリティウォリア セキュリティウォリア
Cyrus Peikari, Anton Chuvakin
  やや冗長…ためにはなりました
CORE MEMORY CORE MEMORY
John Alderman, Mark Richards
  この筐体でPC作ってほしい!
新訳 星の王子さま 新訳 星の王子さま
サン=テグジュベリ
倉橋 由美子
  つまらない大人になったのか…
.....

[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の創りかた」 渡波 郁
「非常識な成功法則」 神田 昌典
…これ以前は記録してません…

▼ 気に入ってる本

夢をかなえるゾウ 夢をかなえるゾウ
水野 敬也
  いままでで最高の「笑える」成功本
Linuxデバイスドライバ Linuxデバイスドライバ
Alessandro Rubini,
Jonathan Corbet
  ドライバ作らなくてもためになる
Firefoxの改造テクニック! Firefoxの改造テクニック!
大浦 淳
  いま栗日記拡張を考えてます
Apacheモジュール プログラミングガイド Apacheモジュール プログラミングガイド
小山 浩之
  Apacheの中身もわかるよ
図解 実戦マーケティング戦略 図解 実戦マーケティング戦略
佐藤 義典
  栗日記も戦略的に行こう!
やぎの目ゴールデンベスト やぎの目ゴールデンベスト
林 雄司
  よめも爆笑してました
アルケミスト アルケミスト
パウロ・コエーリョ
  ヘコみそうなとき読みます
X51.ORG THE ODYSSEY X51.ORG THE ODYSSEY
佐藤 健寿
  X51.ORGの集大成
チベット永遠の書 チベット永遠の書
Theodore Illion
  いろんな意味ですごい!!
影響力の武器 影響力の武器
ロバート・B・チャルディーニ
  思わず納得します