shikoan’s memo

プログラミング初心者のチラ裏

ぷろぐらみんぐ帳

フランスのホスティング会社iKoulaで専用サーバーを丸々1台借りてみた

日本国内のサーバー会社だと、専用サーバーって個人で簡単に借りられる金額ではないんですよね。

例:さくらサーバーより
・さくらスタンダードシリーズ
Xeon E3-1230 v5 4C/8T 3.4GHz 最大3.8GHz
メモリ 標準8GB 最大64GB
ストレージ 標準2台1組 最大2台
これで初期費用86400円、月額9720円

VPSもそうだが、専用サーバーも海外だと結構安いところがある。スペック次第だが、月額20ドルぐらいから借りられるところは存在する。これはLowEndTalk(海外のホスティング会社比較のコミュニティサイトで、企業側もプロモーションコードなどの宣伝をこちらで行っていることがある)で見つけた案件で、iKoulaというフランスのホスティング会社。

例:iKoula dedicated serverより、低価格帯のもの
Intel Green G3900 1CPU(2C/2T) @ 2.8GHz, 8GB DDR4, 2TB SATA3
初期費用€60、月額€19.99 → 初期費用なし、プロモコードで最初の1ヶ月または3ヶ月間は€9.99
Xeon E3-1220v5 1CPU(4C/4T) @ 3GHz, 8GB DDR4, 1TB SATA, GeForce GT 710 1GB
初期費用€60、月額€29.99 → 初期費用なし、プロモコードで最初の1ヶ月または3ヶ月間は€14.99
Xeon E3-1230v5、1CPU(4C/8T) @ 3.4GHz, 8GB DDR4, 1TB SATA, GeForce GT 710 1TB
初期費用€60、月額€39.99 → 初期費用なし、プロモコードで最初の1ヶ月または3ヶ月間は€24.99

3番目はさくらのスタンダードシリーズとほぼ同じ構成で、申し訳ばかりにグラフィックボードがついてくる(申し訳ばかりなのでスペックは期待しないほうがいい)。GeForceがついているので簡単なディープラーニングならできるかもしれない。通常価格で比較してもさくらボリすぎでしょ常識的に考えて

フランスの会社ということで、セットアップ完了時のメールがフランス語で飛んでくるが、英語のサポートも受け付けている。英語でメール送れば親切に返してくれるし、申し込みの手続きは英語でできる(たまに途中でフランス語のページにリダイレクトされる)。支払い方法はPayPal対応。公式ページに日本語のページがあるが、翻訳が怪しすぎるので素直に英語で行ったほうが吉。自分はフランス語はボンジュールぐらいしかわからない。

2番目のE3-1220v5のプランで3ヶ月借りてみた。現在3ヶ月間使用料が半額になるプロモーションコードを出していて、それを適用して月額€15で使用できた。料金はPayPalの場合は一括前払い。

支払いして2時間程度で使用可能になった。一般的なVPSだと一瞬だが、専用サーバー丸々1台なのでセットアップにちょっと時間かかるのかもしれない。OSの再インストールも少し時間かかって、一般的なVPSだと1~2分だが、1時間はかかった。イメージ的にはPCのOS再インストールをしているのと同じなので、それぐらいかかって然るべきであろう。

ロケーションがフランス(ブローニュ=ビヤンクールというパリ郊外の都市にある会社なので、ロケーションはおそらくパリあたり?)なので、ping値は250ms程度。ヨーロッパにつなぐとイギリスだろうがフランスだろうがこれぐらいの時間はかかるので仕方ない。日本からは、海底ケーブルで直に繋がっているアメリカ西海岸のロケーションだと100msや100ms切りぐらいで接続できる。tracertを見てると、日本から太平洋を海底ケーブルを通って、アメリカ西海岸に上陸して(ここに100msぐらい)サンフランシスコ、デンバークリーブランドオールバニ、ボストンと五大湖に沿って北米大陸を突っ切って(ここに80msぐらい)、ボストンの先から大西洋の海底ケーブルを通ってロンドンに上陸して(ここに70ms)、あとはそのままパリへという感じらしい。インターネットの壮大な旅を体感できる。

CPUの性能はどれぐらいかというと、CPU Benchmarkというサイトが参考になる。

PassMark Software - CPU Benchmark Charts

これによると、

Intel Xeon E3-1220 v5 @ 3.00GHz
AverageCPUMark : 7670
https://www.cpubenchmark.net/cpu.php?cpu=Intel+Xeon+E3-1220+v5+%40+3.00GHz&id=2692

ちなみに自分が使っているPCのCPUはCore i5-4440なので、

Intel Core i5-4440 @ 3.10GHz
AverageCPUMark : 6483
https://www.cpubenchmark.net/cpu.php?cpu=Intel+Core+i5-4440+%40+3.10GHz&id=2017

若干E3-1220のほうが良いかなという感。ベンチマーク用に某仮想通貨を掘ってみたら以下のようなハッシュレートだった(レートはマイニングプールに表示されている4時間の平均レート)。

Core i5-4440 (WindowsPCでのバックグラウンド作業なしのCPU100%のフルバースト):2.64KH/s
・E3-1220v5(Ubuntu16.04、専用サーバーなのでCPULimit等はなし):2.52KH/s

なので、ベンチマークスコアに反して若干i5のほうに軍配が上がった。自分の知識不足かもしれないが、Windows用のクライアントのほうがCPUごとのチューニングが多いので、プログラムそのもののハッシュ効率がいいのかもしれない。

別にマイニングでも機械学習でも、外から見たらCPUやGPUをフルバーストしていることには変わらないので、VPSのようなCPU共用環境だとおそらく嫌われる可能性が高い(特に前者はToSで明確に禁止しているところも多いが、"dedicated"な専用VPSや専用サーバーを同時に提供している会社では専用環境に限りこの禁止を除外しているところも同時に多い)。共用環境での他の使用者によるロード増加は「noisy neighbor」と言われたりするが、この問題がトラブルを気にする必要がないのが専用サーバーの大きな利点である。
この問題は長くなるので軽くにおさえるが、CPU共用の場合「ここまでの使用率ならいいですよ」という線引が明示されていない場合、使用中のサーバーを停止する権利は100%運営会社側にあり、そのさじ加減で止められたり生き残ったりするというのが最大のリスクである。ToS(Terms of service)やAUP(Acceptable Use Policy)の禁止事項には触れていないのに、自分も何の予告もなく止められたことがある。計算資源の確保だったら、サーバーではなく一周回ってリアルにPCを買うのがかなり賢い選択であると思う。noisy neighbor問題ではないが、価格面での計算資源の確保に苦労しているのは、やねうら王の開発者のブログでも書かれているので暇な方はぜひ読んで欲しい。

マシン1000台きぼんぬ | やねうら王 公式サイト

UnixBench

かなり脱線したが、UnixBenchも実行してみた。今気づいたけどv5じゃなくてv6と新しいバージョンになっていた。素晴らしい。

========================================================================
   BYTE UNIX Benchmarks (Version 5.1.3)

   System: 117467HD012176: GNU/Linux
   OS: GNU/Linux -- 4.4.0-71-generic -- #92-Ubuntu SMP Fri Mar 24 12:59:01 UTC 2                                                                                                                                                             017
   Machine: x86_64 (x86_64)
   Language: en_US.utf8 (charmap="UTF-8", collate="UTF-8")
   CPU 0: Intel(R) Xeon(R) CPU E3-1220 v6 @ 3.00GHz (5999.7 bogomips)
          Hyper-Threading, x86-64, MMX, Physical Address Ext, SYSENTER/SYSEXIT,                                                                                                                                                              SYSCALL/SYSRET, Intel virtualization
   CPU 1: Intel(R) Xeon(R) CPU E3-1220 v6 @ 3.00GHz (5999.7 bogomips)
          Hyper-Threading, x86-64, MMX, Physical Address Ext, SYSENTER/SYSEXIT,                                                                                                                                                              SYSCALL/SYSRET, Intel virtualization
   CPU 2: Intel(R) Xeon(R) CPU E3-1220 v6 @ 3.00GHz (5999.7 bogomips)
          Hyper-Threading, x86-64, MMX, Physical Address Ext, SYSENTER/SYSEXIT,                                                                                                                                                              SYSCALL/SYSRET, Intel virtualization
   CPU 3: Intel(R) Xeon(R) CPU E3-1220 v6 @ 3.00GHz (5999.7 bogomips)
          Hyper-Threading, x86-64, MMX, Physical Address Ext, SYSENTER/SYSEXIT,                                                                                                                                                              SYSCALL/SYSRET, Intel virtualization
   20:26:44 up 27 min,  1 user,  load average: 0.00, 0.02, 0.00; runlevel 5

------------------------------------------------------------------------
Benchmark Run: Tue Mar 27 2018 20:26:44 - 20:54:50
4 CPUs in system; running 1 parallel copy of tests

Dhrystone 2 using register variables       35116147.8 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                     3929.6 MWIPS (9.2 s, 7 samples)
Execl Throughput                               3371.2 lps   (29.9 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks       1244958.9 KBps  (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks          329891.9 KBps  (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks       2978350.3 KBps  (30.0 s, 2 samples)
Pipe Throughput                             2254015.4 lps   (10.0 s, 7 samples)
Pipe-based Context Switching                 135085.9 lps   (10.0 s, 7 samples)
Process Creation                              13504.2 lps   (30.0 s, 2 samples)
Shell Scripts (1 concurrent)                   9598.0 lpm   (60.0 s, 2 samples)
Shell Scripts (8 concurrent)                   4244.9 lpm   (60.0 s, 2 samples)
System Call Overhead                        3968283.5 lps   (10.0 s, 7 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0   35116147.8   3009.1
Double-Precision Whetstone                       55.0       3929.6    714.5
Execl Throughput                                 43.0       3371.2    784.0
File Copy 1024 bufsize 2000 maxblocks          3960.0    1244958.9   3143.8
File Copy 256 bufsize 500 maxblocks            1655.0     329891.9   1993.3
File Copy 4096 bufsize 8000 maxblocks          5800.0    2978350.3   5135.1
Pipe Throughput                               12440.0    2254015.4   1811.9
Pipe-based Context Switching                   4000.0     135085.9    337.7
Process Creation                                126.0      13504.2   1071.8
Shell Scripts (1 concurrent)                     42.4       9598.0   2263.7
Shell Scripts (8 concurrent)                      6.0       4244.9   7074.9
System Call Overhead                          15000.0    3968283.5   2645.5
                                                                   ========
System Benchmarks Index Score                                        1840.1

------------------------------------------------------------------------
Benchmark Run: Tue Mar 27 2018 20:54:50 - 21:22:56
4 CPUs in system; running 4 parallel copies of tests

Dhrystone 2 using register variables      140517202.8 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                    15720.0 MWIPS (9.2 s, 7 samples)
Execl Throughput                              23912.1 lps   (29.9 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks       1363581.8 KBps  (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks          354108.1 KBps  (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks       4144599.8 KBps  (30.0 s, 2 samples)
Pipe Throughput                             8908439.7 lps   (10.0 s, 7 samples)
Pipe-based Context Switching                1525448.8 lps   (10.0 s, 7 samples)
Process Creation                              65358.4 lps   (30.0 s, 2 samples)
Shell Scripts (1 concurrent)                  45262.5 lpm   (60.0 s, 2 samples)
Shell Scripts (8 concurrent)                   5485.2 lpm   (60.0 s, 2 samples)
System Call Overhead                        8196732.1 lps   (10.0 s, 7 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0  140517202.8  12040.9
Double-Precision Whetstone                       55.0      15720.0   2858.2
Execl Throughput                                 43.0      23912.1   5560.9
File Copy 1024 bufsize 2000 maxblocks          3960.0    1363581.8   3443.4
File Copy 256 bufsize 500 maxblocks            1655.0     354108.1   2139.6
File Copy 4096 bufsize 8000 maxblocks          5800.0    4144599.8   7145.9
Pipe Throughput                               12440.0    8908439.7   7161.1
Pipe-based Context Switching                   4000.0    1525448.8   3813.6
Process Creation                                126.0      65358.4   5187.2
Shell Scripts (1 concurrent)                     42.4      45262.5  10675.1
Shell Scripts (8 concurrent)                      6.0       5485.2   9142.0
System Call Overhead                          15000.0    8196732.1   5464.5
                                                                   ========
System Benchmarks Index Score                                        5497.0

ファイルコピーはHDDを選択。特に断りもなくSATAと書かれていたが、SSDの場合はオプション料金が必要だったのでHDD。ちなみにsmartctlで型番を調べてみたらTOSHIBA HDWD110だった。方法は以下参照。

LinuxでHDD/SSDなどの型番を調べる方法 - Qiita

Cpuinfoの確認

cat /proc/cpuinfoで確認。これが4つ

processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 158
model name      : Intel(R) Xeon(R) CPU E3-1220 v6 @ 3.00GHz
stepping        : 9
microcode       : 0x5e
cpu MHz         : 800.000
cache size      : 8192 KB
physical id     : 0
siblings        : 4
core id         : 0
cpu cores       : 4
apicid          : 0
initial apicid  : 0
fpu             : yes
fpu_exception   : yes
cpuid level     : 22
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch epb intel_pt tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm mpx rdseed adx smap clflushopt xsaveopt xsavec xgetbv1 dtherm arat pln pts hwp hwp_notify hwp_act_window hwp_epp
bugs            :
bogomips        : 5998.70
clflush size    : 64
cache_alignment : 64
address sizes   : 39 bits physical, 48 bits virtual
power management:

これで「俺はフランスの物理サーバーを丸々1台借りたことがあるぞ!!」とドヤれるわけである。やったね!