DMM.comラボ公式facebookページオープン

ひっそりとオープンしていました。アゲておきます。

https://www.facebook.com/DMM.comLabo

社員総会や、社員勉強会、グアムへの社員旅行の様子が掲載されています。
もし良かったらイイネしてくださいね。

DMMでは人材募集もしているので、楽しい社員旅行に行きたくなったら、是非応募してみてくださいませ。

DMM採用情報

2015年の新卒採用も始まっています。

DMM RECRUIT 2015

Javaの家系図

家系図の第2弾です。

今回はJavaになります。

                                      ALGOL60 ----------SIMULA ---------------------------- CwithClasses  ---  C++ --- ARM C++ --- Ouk
                                                                      Pascal ------------------- Cedar --------------------------- Ouk ----- Java
                         LISP ------------- LISP 1.5 ---------------------------- Scheme ----------------------------------------- Ouk
                                                                          C ------------- Ada ------------------------------------ Ouk
                                      ALGOL60 ------ CPL --- BCPL --- B - C ------------- K&R C ---------------------------------- Ouk
FORTRAN --- FORTRAN1 --- ALGOL58 ---- ALGOL60 ----------------------------------- Scheme
                                      ALGOL60 -------- ALGOL W ------ Pascal ------------ Ada

多くのプログラムの影響を受け1995年、PHPと時を同じくしてJavaが誕生します。
その後、2000年に子孫であるC#が誕生します。

C#はJavaだけでなくDelphi Ouk ARM C++の影響も受けていますが、先祖にそれほど違いはないように思います。

ちなみにJavaの子孫は、いまのところC#だけです。

分かる人がみたらわかるんですかね?
私はちんぷんかんぷんなのですが。

perlの家系図

perlの家系図です。

コンピュータ歴史博物館で書き取ってきました。

FORTRAN - FORTRAN1 --- ALGOL58 -- algol60 - CPL ------- BCPL --- B - C ----- K&R C ------ |perl|
                  COMIT ---------- SNOBOL --- SNOBOL3 - SNOBOL4 ---------- awk --- nawk - |perl|
                                                                       sed -------------- |perl|
                                                                 sh --------------------- |perl|

1957年のFORTRANから始まり、いくつかの言語の影響を受けて1987年perlが誕生します。

その後、perlから影響を受けたrubyが1993年にphpが1995年に誕生するわけです。

ちなみにperlの子孫はrubyとphpだけです。

ページキャッシュの詳細確認と削除方法

 

余裕があるんだけどメモリがswapに入ってしまう現象が少なからずあると思います。

だいたい

echo 1 > /proc/sys/vm/drop_caches

このようにしてページキャッシュを削除しますが、キャッシュ全体を削除してしまうので、
どうしても特定のファイルのキャッシュだけ削除したいという要求が出てきます。

そんなのときに便利なツールがlinux-ftoolです。

使ってみます。

# yum -y install mercurial
# hg clone https://code.google.com/p/linux-ftools/
# cd linux-ftool
# ./configure && make install

こちらでインストールは完了です。
早速試してみます。/tmpディレクトリへ移動し適当にファイルを作成しキャッシュを消費させ、
ページキャッシュの情報を覗いてみます。覗くのはlinux-fincoreコマンドを利用します。

# cd /tmp

# free -m
total used free shared buffers cached
Mem: 996 473 523 0 3 23
-/+ buffers/cache: 446 550
Swap: 0 0 0

# dd if=/dev/zero of=/dev/testfile bs=1M count=200

# free -m
total used free shared buffers cached
Mem: 996 679 317 0 3 223
-/+ buffers/cache: 451 544
Swap: 0 0 0

※200Mほどキャッシュを消費したのがわかりますね。

ではキャッシュを確認してみましょう。

# linux-fincore --pages=false --summarize --only-cached /tmp/*
filename size total_pages min_cached page cached_pages cached_size cached_perc
-------- ---- ----------- --------------- ------------ ----------- -----------
/tmp/testfile 209,715,200 51,200 0 51,200 209,715,200 100.00
---
total cached size: 209,715,200

※testfileというファイルでまるまる200Mのキャッシュが利用されていることがわかります。

さて次に削除です。削除にはlinux-fadviseというコマンドを利用します。

# linux-fadvise /tmp/testfile POSIX_FADV_DONTNEED
Going to fadvise /tmp/testfile as mode POSIX_FADV_DONTNEED
offset: 0
length: 209715200
mode: POSIX_FADV_DONTNEED
WIN

# free -m
total used free shared buffers cached
Mem: 996 474 522 0 3 23
-/+ buffers/cache: 446 549
Swap: 0 0 0

# linux-fincore --pages=false --summarize --only-cached /tmp/*
filename size total_pages min_cached page cached_pages cached_size cached_perc
-------- ---- ----------- --------------- ------------ ----------- -----------
---
total cached size: 0

削除されたことがわかるかと思います。

こちらのツール類の詳細は下記URLから確認できます。
https://code.google.com/p/linux-ftools/
基本的にはPOSIX_FADV_DONTNEED以外は使う機会が思い浮かびません。^^;

利用用途としては必要のないログなどでキャッシュが肥大化していないか確認して、
その肥大化している問題とならなさそうなページキャッシュを手動で削除する
ってところになるんだろうと思います。

Googleクラウド(Google compute engine)使ってみました。

Googleクラウド(Google compute engine)にアジアリージョンが開設されたという事で早速試してみました。

価格表

では進めます。

https://cloud.google.com/products/compute-engine/?hl=ja

今すぐ試すをクリック

新しいプロジェクトを作成

プロジェクト名「tsuchinoko project」
プロジェクトID「自動で表示されているものをそのまま利用」
プロジェクトを作成

先ほど作成したプロジェクトにページが遷移します。

そのページ上でcompute engineを選択

課金を有効にするかどうかを促されますので、課金を有効にしてクレジットカード情報を登録して先に進みます。

こちらで準備は完了です。

あとは、vmインスタンス⇒インスタンスの作成でそのまま直観的にインスタンスを作成してみてください。

一つ注意点としては、課金を有効にしたすぐ後はインスタンス作成がエラーとなることがあります。その場合は15分くらい待ってから再度作成してみてください。

では、インスタンスにログインしてみます。
※ほかのクラウドとは一線を駕しています。

google comupte engineやgoogle apps用のgoogle製のRESTなpythonツールからログインを行います。

まずはログイン元のサーバもしくはPCにこのツールのインストールする必要があります。

前準備としてpythonの2.7以降をインストールします、ただし自分の環境では2.6.6でも入りました。

前準備が終われば下記コマンドでツールがインストールされます。
いろいろ聞かれますが、GoogleApps用のツールを入れるかどうかだけ気にすればあとはすべてEnterで問題ないでしょう。

curl https://dl.google.com/dl/cloudsdk/release/install_google_cloud_sdk.bash | bash

つぎに認証設定を行います。google compute engineではOAuth2での認証を行っておりここでtokenの設定を行います。

gcloud auth login

上記のコマンドを打つとtokenを取得するためのURLが表示されます。このURLをそのままコピペでブラウザに打ち込むとtokenが表示されます。
表示されたtokenを先ほどのターミナルに貼り付けてEnter
次にプロジェクト作成の時に必要になったプロジェクトIDを記入しEnterを押せばOAuth2での認証は完了です。
あとは先ほどいれたツール経由でログインすればログインが可能となります。

gcutil --ssh_user=tsuchinoko --service_version="v1" --project="first-fuze-552" ssh  --zone="asia-east1-a" "instance-1"

これでログインができたかと思います。

ログインもできたという事で早速ディスクのベンチマークを取ってみます。

作成したインスタンスは

Standard

Instance type Virtual Cores Memory Price (US$)/Hour
(US hosted)
Price (US$)/Hour
(Europe hosted)
Price (US$)/Hour
(APAC hosted)
n1-standard-1 1 3.75GB $0.070 $0.077 $0.077

月額:6000円程度になります。

# rpm -ivh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm

# yum -y install fio libaio-devel

# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 10319160 2222440 7572536 23% /
tmpfs 302328 0 302328 0% /dev/shm

# fio --direct=1 --rw=randread --bs=4k -iodepth=16 --name=test --runtime=10 --ioengine=libaio --group_reporting --filename=/dev/sda1 --size=1GB

test: (g=0): rw=randread, bs=4K-4K/4K-4K/4K-4K, ioengine=libaio, iodepth=16
fio-2.0.13
Starting 1 process
Jobs: 1 (f=1): [r] [100.0% done] [1232K/0K/0K /s] [308 /0 /0 iops] [eta 00m:00s]
test: (groupid=0, jobs=1): err= 0: pid=20970: Wed Apr 16 15:24:11 2014
read : io=12456KB, bw=1239.2KB/s, iops=309 , runt= 10052msec
slat (usec): min=3 , max=166 , avg=11.59, stdev= 6.34
clat (usec): min=311 , max=113555 , avg=51579.41, stdev=15666.24
lat (usec): min=352 , max=113566 , avg=51591.43, stdev=15666.01
clat percentiles (msec):
| 1.00th=[ 5], 5.00th=[ 30], 10.00th=[ 34], 20.00th=[ 38],
| 30.00th=[ 43], 40.00th=[ 47], 50.00th=[ 52], 60.00th=[ 57],
| 70.00th=[ 61], 80.00th=[ 65], 90.00th=[ 72], 95.00th=[ 78],
| 99.00th=[ 88], 99.50th=[ 93], 99.90th=[ 103], 99.95th=[ 111],
| 99.99th=[ 114]
bw (KB/s) : min= 1124, max= 1592, per=99.62%, avg=1234.25, stdev=88.09
lat (usec) : 500=0.06%
lat (msec) : 2=0.03%, 4=0.64%, 10=0.67%, 20=0.48%, 50=44.86%
lat (msec) : 100=53.02%, 250=0.22%
cpu : usr=0.53%, sys=1.09%, ctx=3072, majf=0, minf=39
IO depths : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.3%, 16=99.5%, 32=0.0%, >=64=0.0%
submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.1%, 32=0.0%, 64=0.0%, >=64=0.0%
issued : total=r=3114/w=0/d=0, short=r=0/w=0/d=0

Run status group 0 (all jobs):
READ: io=12456KB, aggrb=1239KB/s, minb=1239KB/s, maxb=1239KB/s, mint=10052msec, maxt=10052msec

Disk stats (read/write):
sda: ios=3070/1, merge=32/0, ticks=157911/1, in_queue=158323, util=99.02%

過去の価格性能比と比較するとこのようになりました。

HP Cloud(2815) > sakura1(2412) > sakura2(2307) > ncom2a(515) > ncom1a(179) > nifty11(155) > nifty12(129) > nifty13(109) > idcf(53) > googleクラウド(51)
※参考http://tsuchinoko.dmmlabs.com/?p=940

他と比べて価格性能比が著しく悪い

台湾にGoogleのアジアリージョンがあるようですが、
日本、台湾間は38ms程度で品質は安定しています。

最後に

今回使ってみての感想、

登録、クレジットカード登録、インスタンス作成、ログインまで直観的だと感じました。

また、IPを指定せずにログインが可能なあたりは秀逸。ログイン経由を忘れちゃうことがあるのですが、そういうのが無くなります。かなり便利

海外でのDRするならネットワーク的に近いここが良いように思います。

価格も安いわけではないので急いで使いだすこともないと思います。

とりあえず、まだまだ触りですのでいろいろ試していきます。

それにしても楽ちんだったなあ。