はじめに
個人的な好みでVultrというVPSを使っている。詳細はこちら。
https://qiita.com/toyolab/items/44bb2fccf0630b144833
これまで使ってきたのは、そのなかでもCloud Computeの「High Frequency」っていうサービスで、SSD 32GBのやつ。これが月6ドル。(消費税込みだと6.6ドル)
以前はスナップショットが無料だったので、使うときだけサーバーを契約して、使わなくなったらスナップショットとってサーバーを削除するという使い方をしていた。
最近はスナップショットが有料になったので、こまめにサーバー契約するメリットは少なくなったけど、スナップショットも10GBなら月0.5ドル程度なので、フル契約するより安くあげることはできる。
それはそうと、最近、Vultrで月6ドルで使用できるサービスが増えたようだ。
「High Performance」と呼ばれていて、High Frequencyと紛らわしい。しかも、CPUにIntelとAMDが選べるようになっている。
結局、同じ値段のサービスが3つに増えたのでので、どれがいいのか選ぶ必要がある。以前はウェブサイトにベンチマークが載っていて、それを参考にできたのに、今はそれがなくなっている。
決め手に欠けるので、今回独自のベンチマークで比較してみることにした。
ベンチマークプログラム
このVPSを使う個人的な目的は、MT4、MT5といったトレードソフト上で自動売買プログラム(EA)を安定して動かすことだ。
EAはテクニカル指標の計算がメインなので、単純な計算時間がわかればいい。
ということで、手元にあったプログラムでベンチマークを作ってみた。
#include <iostream>
#include <complex>
#include <sys/time.h>
#define complex complex<double>
using namespace std;
void dft(complex x[], int n)
{
complex w[n];
for(int k=0; k<n; k++){
w[k] = complex(0.0, 0.0);
for(int i=0; i<n; i++){
w[k] = w[k] + x[i] * exp(complex(0.0, -2.0*M_PI*i*k/n));
}
}
for(int i=0; i<n; i++) x[i] = w[i];
}
int main()
{
int N=1024;
cout << "Input number of data = ";
cin >> N;
complex x[N];
timeval start, end;
cout << "***** DFT Start *****\n";
gettimeofday(&start, NULL);
dft(x, N);
gettimeofday(&end, NULL);
double ptime1 = (end.tv_sec - start.tv_sec) + (double)(end.tv_usec - start.tv_usec) * 1.0e-6;
printf("Processing time = %g sec\n", ptime1);
return 0;
}
これは離散フーリエ変換の計算時間を計測するプログラムで、本来はFFT(高速フーリエ変換)と比較するためのものだ。ここで、ポイント数$N=2^{13}=8192$くらいにすると、数秒程度時間がかかるから、これを使うことにした。
ちなみに、OSはDebian 11なので、C++のソースはすぐにコンパイルできる。手元のPC(AMD Ryzen9 5900HX 3.30GHz)だと、4秒弱だった。
Input number of data = 8192
***** DFT Start *****
Processing time = 3.82177 sec
結果
多少ばらつきがあるので、それぞれ10回試行して平均値を出してみた。
従来のHigh Frequency(Intel)
4.873573
High Performance(AMD)
6.897502
High Performance(Intel)
4.839029
手元のPCよりは遅いが、いずれも2倍も遅くはない。
ただ、新設されたHigh Performanceは、CPUによって違いがあった。Intelの方は、従来のHigh Frequencyと大差はないが、AMDだとちょっとパフォーマンスが落ちる感じだった。
ウェブサイトのベンチマークがなくなったのも、このせいかなと勘ぐってしまう。
あくまで独自のベンチマークでの結果なので、別のベンチマークだと違った結果になるかもしれない。
なお、High FrequencyとHigh Performanceでは、同じ6ドルでも、仕様に違いがある。
High Frequency
SSD:32GB
バンド幅:1TB
High Performance
SSD:25GB
バンド幅:2TB
ディスク容量の多さで決めるか、トラフィックの多さで決めるか、使用する目的で決めることになるだろう。ただ、個人的な用途では、どちらもそんなに要らないから安くしてほしいところだ。
結局、個人的には決め手に欠けるので、従来のHigh Frequencyのままでいいかなという感じ。またCPUの世代が新しくなったときに検討することにしよう。