AWSにてEC2構築中にchkconfig --list
を叩いたら見慣れないものが。
hibagent off 1:off 2:off 3:off 4:off 5:off 6:off
hibagentってなんだ??? しかも検索しても全く情報が出てこない謎。 てかついこの間検証機でコマンド叩いたときはなかったのに。
/etc/init.d/hibagent をみてみる
init系rcスクリプトなのでまずはファイルをみる。
#!/bin/bash # hibagent daemon # chkconfig: - 20 80 # description: EC2 instance hibernation agent # processname: hibagent DAEMON_PATH="/usr/bin" NAME=hibagent DESC="My daemon description" PIDFILE=/var/run/$NAME.pid SCRIPTNAME=/etc/init.d/hibagent DAEMON=hibagent DAEMONOPTS="--config /etc/hibagent-config.cfg --pidfile $PIDFILE" ・・・
EC2 instance hibernation agent
とあるのでEC2のhibernationを有効にするためのAgentでしょうか。
ハイバネーション(Hibernation)とはパーソナルコンピュータのオペレーティングシステム(以降OSと略)に備わる機能の一つで、電源を切断(シャットダウン)する前に、メインメモリが保持している内容を外部記憶装置(ハードディスクドライブ、以下ハードディスクと略)に待避させ、次にコンピュータを起動させた際、作業途中から再開できるようにする機能である。
実際に動かしているdaemonをみてみよう。
[root@ip-xxx bin]# file /usr/bin/hibagent hibagent: Python script, ASCII text executable
まさかのpythonスクリプト。バイナリじゃないのか。ラッキー。
/usr/bin/hibagentを見てみる
説明はこちら。
#!/usr/bin/python2.7 # The EC2 Spot hibernation agent. This agent does several things: # 1. Upon startup it checks for sufficient swap space to allow hibernate and fails # if it's present but there's not enough of it. # 2. If there's no swap space, it creates it and launches a background thread to # touch all of its blocks to make sure that EBS volumes are pre-warmed. # 3. It updates the offset of the swap file in the kernel using SNAPSHOT_SET_SWAP_AREA ioctl. # 4. It daemonizes and starts a polling thread to listen for instance termination notifications. # # This file is compatible both with Python 2 and Python 3
和訳
#!/ usr / bin / python2.7 #EC2スポットハイバネーションエージェント。このエージェントはいくつかのことを行います: #1.起動時に、休止状態を許可して失敗するのに十分なスワップ領域があるかどうかを確認します #もしそれが存在するが、十分ではない。 #2。スワップスペースがない場合は、スワップスペースを作成し、バックグラウンドスレッドを起動して #すべてのブロックをタッチして、EBSボリュームが予熱されていることを確認します。 #3。SNAPSHOT_SET_SWAP_AREA ioctlを使用して、カーネル内のスワップファイルのオフセットを更新します。 #4。ポーリングスレッドをデーモン化して起動し、インスタンス終了通知を待ち受けます。 # #このファイルは、Python 2とPython 3の両方と互換性があります
「インスタンス通知=ハイバネーション時」にメモリ上のファイルをスワップ(EBS)へ退避。 スワップサイズが足りないなら物理ファイル(swapfile)として格納という感じでしょうか。
結論
EC2をハイバネーションするならメモリを高速展開できるようになるので有効にしてもよさそうですね。