Linux で、メモリのサイズを調べる方法

次のように、free、cat /proc/meminfo 等、いろいろな方法がある(以下は、Amazon EC2 スモールインスタンスの例)。

# free
             total       used       free     shared    buffers     cached
Mem:       1747764    1733596      14168          0     109416    1162984
-/+ buffers/cache:     461196    1286568
Swap:       917496        128     917368


# cat /proc/meminfo
MemTotal: 1747764 kB
MemFree: 18916 kB
Buffers: 109608 kB
Cached: 1157404 kB
SwapCached: 0 kB
Active: 1242560 kB
Inactive: 406980 kB
HighTotal: 1003528 kB
HighFree: 5156 kB
LowTotal: 744236 kB
LowFree: 13760 kB
SwapTotal: 917496 kB
SwapFree: 917368 kB
Dirty: 116 kB
Writeback: 0 kB
AnonPages: 382528 kB
Mapped: 62420 kB
Slab: 39188 kB
SReclaimable: 24684 kB
SUnreclaim: 14504 kB

次のように、free、cat /proc/meminfo 等、いろいろな方法がある(以下は、Amazon EC2 スモールインスタンスの例)。

# free
             total       used       free     shared    buffers     cached
Mem:       1747764    1733596      14168          0     109416    1162984
-/+ buffers/cache:     461196    1286568
Swap:       917496        128     917368


# cat /proc/meminfo
MemTotal: 1747764 kB
MemFree: 18916 kB
Buffers: 109608 kB
Cached: 1157404 kB
SwapCached: 0 kB
Active: 1242560 kB
Inactive: 406980 kB
HighTotal: 1003528 kB
HighFree: 5156 kB
LowTotal: 744236 kB
LowFree: 13760 kB
SwapTotal: 917496 kB
SwapFree: 917368 kB
Dirty: 116 kB
Writeback: 0 kB
AnonPages: 382528 kB
Mapped: 62420 kB
Slab: 39188 kB
SReclaimable: 24684 kB
SUnreclaim: 14504 kB

Perl で、1GB のデータ(テキストファイル)を作成する方法

次のコードを makefile.pl などというファイル名で保存して、chmod +x ./makefile.pl し、そして ./makefile.pl を実行すれば makefile.pl と同じディレクトリ上に sample.txt に1GiB (ギビバイト=2^30)ぴったりのデータ(「a」の文字で埋め尽くされた テキストファイル)が作成されていると思う。プログラム的には、例えば 1KiB のダミーデータを変数($data)に入れてそれを 1024 x 1024 回書き込んだ方が 1文字ずつ 2^30 回書き込むよりも速いと思うが、試してみたらバァッファオーバーフローしてるのか?うまくいかなかった。
ちなみに、2^30 = 1ギガバイト = 1,073,741,824 バイト = 1024 バイト x 1024 キロバイト x 1024 メガバイト

#!/usr/bin/perl

open(OUT, '>sample.txt');
for(my $i = 0; $i < 2^30; $i++) { print OUT 'a'; }
close(OUT);

1;

次のコードを makefile.pl などというファイル名で保存して、chmod +x ./makefile.pl し、そして ./makefile.pl を実行すれば makefile.pl と同じディレクトリ上に sample.txt に1GiB (ギビバイト=2^30)ぴったりのデータ(「a」の文字で埋め尽くされた テキストファイル)が作成されていると思う。プログラム的には、例えば 1KiB のダミーデータを変数($data)に入れてそれを 1024 x 1024 回書き込んだ方が 1文字ずつ 2^30 回書き込むよりも速いと思うが、試してみたらバァッファオーバーフローしてるのか?うまくいかなかった。
ちなみに、2^30 = 1ギガバイト = 1,073,741,824 バイト = 1024 バイト x 1024 キロバイト x 1024 メガバイト

#!/usr/bin/perl

open(OUT, '>sample.txt');
for(my $i = 0; $i < 2^30; $i++) { print OUT 'a'; }
close(OUT);

1;

Amazon EC2 で、サーバ自身のグローバル IP アドレスを調べる方法

Amazon EC2 は何もしないと DHCP でグローバル IP アドレスが割り当てられる。これはサーバを立ち上げるときには大変困る。EC2 でサーバを立ち上げた後、アプリから割り振られた IP アドレスを知るにはどうしたらいいのだろう?ひとつには、ec2-describe-instances で現在起動しているインスタンスの一覧を出して調べていく…という方法があるが、あまりスマートではない。というわけで、次のようにするとよいと思う。

curl https://169.254.169.254/2008-02-01/meta-data/public-ipv4
この例のように Amazon EC2 では、https://169.254.169.254/2008-02-01/meta-data/パラメータ という URL で、サーバ内部から curl を使って調べることができるようだ。

Amazon EC2 は何もしないと DHCP でグローバル IP アドレスが割り当てられる。これはサーバを立ち上げるときには大変困る。EC2 でサーバを立ち上げた後、アプリから割り振られた IP アドレスを知るにはどうしたらいいのだろう?ひとつには、ec2-describe-instances で現在起動しているインスタンスの一覧を出して調べていく…という方法があるが、あまりスマートではない。というわけで、次のようにするとよいと思う。

curl https://169.254.169.254/2008-02-01/meta-data/public-ipv4
この例のように Amazon EC2 では、https://169.254.169.254/2008-02-01/meta-data/パラメータ という URL で、サーバ内部から curl を使って調べることができるようだ。

Amazon EC2 で、インスタンスを終了する

  1. イメージ登録を抹消(自分のマシンから)
    • # ec2-deregister ami-5bae4b32
      IMAGE ami-5bae4b32
  2. イメージを S3 から削除(EC2 のインスタンスから)
    • # ec2-delete-bundle -b <your-s3-bucket> -p image -a <aws-access-key-id> -s <aws-secret-access-key>
  3. インタンスを停止
    • # ec2-terminate-instances i-10a64379
      (例)INSTANCE i-10a64379 running shutting-down

      または、

    • # shutdown –h now

※イメージを S3 に保存する前にインスタンスを停止するとすべての変更が失われるので注意。不意に EC2 のインスタンスを落としてもデータだけは失いたくない場合は EBS を利用する(その理由ために EBS が存在する)。

  1. イメージ登録を抹消(自分のマシンから)
    • # ec2-deregister ami-5bae4b32
      IMAGE ami-5bae4b32
  2. イメージを S3 から削除(EC2 のインスタンスから)
    • # ec2-delete-bundle -b <your-s3-bucket> -p image -a <aws-access-key-id> -s <aws-secret-access-key>
  3. インタンスを停止
    • # ec2-terminate-instances i-10a64379
      (例)INSTANCE i-10a64379 running shutting-down

      または、

    • # shutdown –h now

※イメージを S3 に保存する前にインスタンスを停止するとすべての変更が失われるので注意。不意に EC2 のインスタンスを落としてもデータだけは失いたくない場合は EBS を利用する(その理由ために EBS が存在する)。