オタク日記
(Mac と Linux, 2017Q3)
目次
2017-08-05 (Sat): DigitalOcean VPS
古い日記:
2017Q2
2017Q1
2016Q4
2016Q3
2016Q2
2016Q1
2015Q4
2015Q3
2015Q2
2015Q1
2014Q4
2014Q3
2014Q2
2014Q1
2013Q4
2013Q3
2013Q2
2013Q1
2012 年
2011 年
2010 年
2009 年
2008 年
2007 年
2006 年
2005 年
2004 年
2003 年
2002 年
2001 年
2017-08-05 (Sat): DigitalOcean VPS
相変わらず順調な DigitalOcean VPS (digoc02.otacky.jp)
自宅サーバ (otacky.jp) を、「宅外サーバ」(DigitalOcean の VPS) に移して、もう一年半になるが、この間殆んど問題無し……一度だけ、 「ネットワーク環境を更新するので、数分間遅くなるかも」という通知を受けたが、 結局、こちらからは (スピード低下を含む) 不具合は何も検知できなかった。 素晴しい!の一言。
改めて「讃」を並べておくと
- 超安定。上記のように VPS の側の都合によるシステムダウンが皆無。
- ネットワークが高速。特に上記の「ネットワーク環境の更新」以降は、
相手が十分速いと、平気で 100MB/s (= 800 Mbps)
等という転送速度を出す。
fukuda@digoc02:~% wget http://www.python.org/ftp/python/3.6.2/Python-3.6.2.tar.xz URL transformed to HTTPS due to an HSTS policy ..... Connecting to www.python.org (www.python.org)|151.101.8.223|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 16907204 (16M) [application/octet-stream] Saving to: ‘Python-3.6.2.tar.xz.2’ Python-3.6.2.tar.xz.2 100%[=========================>] 16.12M 100MB/s in 0.2s 2017-08-06 16:31:08 (100 MB/s) - ‘Python-3.6.2.tar.xz.2’ saved [16907204/16907204]
-
リブートが速い。
% reboot
command の後、HTTP request に応答するまでの時間は僅か 10 秒内外。
実は、kernel の upgrade の度にリブートしていて、 これが大体一月に一回くらいあるが、その都度 10 秒程度のダウンタイムなので、ユーザは殆んど気がつかないのではないかと思う。
「なんだかなぁ」も少しは有った。(というか、 これはこちらの「期待し過ぎ」だったかも。:-) )
- CPU の数値計算能力は然程高くない。numpy.fft.fft2 での比較だと、 Fusion 上の Ubuntu-16.04 より若干劣る。 (「DigitalOcean VPS」を参照。)
- さらに、Jupyter Notebook の処理に至っては、Mac-mini の 半分以下の処理能力しかない。(「宅外サーバで Jupyter」を参照。)
新機軸の "High CPU" を試す
少し前の DigitalOcean からのアナウンスに、CPU 能力に特化した droplet をサポートする、というのが有った。上述のように通常の版 (Standard) では、 数値計算の処理能力に不満が有ったので、この新製品を早速試してみた。
例によって、DigitalOcean の Website はとっても洗練されていて、 "Chooze a size" で、"High CPU" の tab を選べば、 下図のように、様々な構成が選べるようになっている。 (但し、今のところ Singapore region では提供されていない……。 San Francisco 1 で試した。)
ここではとりあえず $40/mo の構成を選択する。後のインストールは、Standard と全く同じ。
その結果、次のような cpuinfo が得られた。(新サーバの hostname を "digoc03" とした。)
% fukuda@digoc03:~% cat /proc/cpuinfo
processor : 0
model name : Intel(R) Xeon(R) CPU E5-2697A v4 @ 2.60GHz
stepping : 1
microcode : 0x1
cpu MHz : 2599.996
cache size : 40960 KB
bogomips : 5199.99
勿論これは大幅に簡略化してあり、しかも二つある CPU のうち、 最初のものだけを示している事に注意。
ちなみに、digoc02 (Standard) では、
% fukuda@digoc02:~% cat /proc/cpuinfo
processor : 0
model name : Intel(R) Xeon(R) CPU E5-2630L v2 @ 2.40GHz
stepping : 4
microcode : 0x1
cpu MHz : 2399.998
cache size : 15360 KB
bogomips : 4799.99
「信じてはいけない」 bogomips だけど、これだけからだと、CPU 性能は 10% up という事になる。
勿論、numpy での性能がどうなのかちゃん調べないといけない。 但し、Python-3.5 での PyVenv 構築はうまく行かず、 Python-3.6 をインストールするところから始めて、 その PyVenv で性能確認をやってみた。
% fukuda@digoc03:~$ sudo add-apt-repository ppa:jonathonf/python-3.6 % fukuda@digoc03:~$ sudo apt-get install python3.6-venv % fukuda@digoc03:~$ sudo apt install python3.6-doc binutils binfmt-support % fukuda@digoc03:~$ python3.6 -m venv pve36 % fukuda@digoc03:~$ cd pve36 % fukuda@digoc03:~/pve36$ . bin/activate % (pve36) fukuda@digoc03:~/pve36$ pip install setuptools --upgrade % (pve36) fukuda@digoc03:~/pve36$ pip install ipython numpy % (pve36) fukuda@digoc03:~/pve36$ ./bin/ipython > Python 3.6.2 (default, Jul 20 2017, 08:43:29) > Type 'copyright', 'credits' or 'license' for more information > IPython 6.1.0 -- An enhanced Interactive Python. Type '?' for help. > In [1]: import numpy as np > In [2]: A = np.random.rand(1024, 1024) > In [3]: %timeit B = np.linalg.inv(A) > 77.2 ms ± 328 µs per loop (mean ± std. dev. of 7 runs, 10 loops each) > In [4]: %timeit C = np.fft.fft2(A) > 43.1 ms ± 734 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)
参考のために、既存の "digoc02" では
% (pve35) fukuda@digoc02:~/pve35% ipython > Python 3.5.2 (default, Nov 17 2016, 17:05:23) > Type 'copyright', 'credits' or 'license' for more information > IPython 6.1.0 -- An enhanced Interactive Python. Type '?' for help. > In [1]: A = np.random.rand(1024, 1024) > In [2]: %timeit B = np.linalg.inv(A) > 160 ms ± 62.6 ms per loop (mean ± std. dev. of 7 runs, 1 loop each) > In [3]: %timeit C = np.fft.fft2(A) > 113 ms ± 21.7 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
つまり、"High CPU" の digoc03 は、digoc02 に比べて
- np.linalg (linear algebra) でほぼ倍、
- また、 np.fft.fft2 では三倍弱の性能を持っている。
- 所要時間の標準偏差は、いずれも 1 ms 以下。
という結果になった。
大したもんだ。ただ、Standard の digoc02 は $20/mo だから、 digoc03 は二倍の値段で、 二倍の性能を出している事になる。 これでは、常時「数値計算サーバ」を動かし続ける訣には行かない。 とりあえず、digoc03 は消した。
しかし、少し前にできた「droplet の snapshot を取って、一旦は消してしまい、 次に使う時は新たな droplet をそこから boot する」 というメカニズムを使えば、使いたい時だけ、最大で 32 CPU のサーバを使う、なんて事ができそう。概算だと、その snapshot はどんな version でも、20GB だから、保存に掛かる費用は \$0.05/GB/mo * 20 = \$1/mo。 そこから、32 CPU version を立ち上げても、\$0.952/hour だから、 丸一日 (8 時間) 使って、\$8。「とらぬタヌキの皮算用」としても、 これは悪くないかも。
"High CPU" が Singapore でも使えるようになったら、早速やってみよう……
おお、今調べたら、既に Singapore でも使えるそうな。 こりゃ、しばらく退屈しないな。 (「そんな暇あるんかい」という心配もあるが……)
230/1,780,896 Taka Fukuda Last modified: 2017-08-11 (Fri) 17:29:29 JST