サーバー

WindowsServerの引っ越しを検討~さくらからAWSへ~

競馬の予想やFX自動売買用に利用していたWindowsServer2012が、少し古くなりつつありましたので、引っ越しを検討しようと思います。

さくらインターネットさまからAWSへ変更を検討

まず、さくらインターネットさまを長年利用しておりましたが、今回AWSのLightsailへ移行することにしました。
理由としては同じ利用料金でメモリ割り当て量、ディスク領域などを考えた結果、さくらインターネットさんの2倍近い割り当てリソースがAWSの場合提供されることが分かったので、それなら。。。ということになりました。
また、WindowsServerのバージョンも2012、2016、2019から選べるようになっており、将来、RPAをテスト的にでも運用してみたいという思いがあったことから、2019を採用したいこともあって、AWSにしました。
また、競馬用DB用のMariaDBサーバーも同じAWSで稼働していることからも、AWSで構築したWindowsマシンであれば、ローカルIPでデータ通信が可能です。
これもプラスポイントになりました。

早速さくっと作ってみる

AWSのLightsailであれば、ぶっちゃけワンクリックで作れてしまいます。
今回は、メモリ2GB、SSD60GB、CPU1Coreのモデルを選択。
CPUはそれほど使わないはずであり、かつ、メモリは現在のマシンが1GBで十分すぎるほどのパフォーマンスを上げていますし、これで、利用料はさくらとほとんど変わらないことになります。
さくらは、CPUが2コアに対しAWSは1コアですが、先述の通りおそらくCPUはほとんど使わないはずなので…

さて構築。
リモートデスクトップが最初から使えるので、早速リモートデスクトップで接続。
そして、SSHサーバーをインストール。
そして、SSHを利用したポートフォワーディングで、リモートデスクトップを封殺し、SSH接続をしたものじゃないと当Windowsに接続できないようにした。
ここまでは標準の操作です。

早速ソフトをインストール

このあたりから怪しくなる。
SSHの設定ファイルをいじるのに、メモ帳でもよかったんですが、どうせならと思っていつも使っているテキストエディタをインストール。
インストール完了し、SSHの設定ファイルをいじる。

なんかもっさりしてるな。。。メモリかな?けど、メモリの使用率を見ても50~60%程度だからメモリ不足ってわけでもなさそうだけど。。。

つぎに、競馬用のソフトを入れるのに、.NET FrameWork 3.5をインストール。
ここで決定的に遅くなる。。。

なんじゃこりゃ?使用に耐えれるのか?
というレベルで遅い。。。

が、たまたまじゃないのかと思いつつ、実際の競馬ソフトをインストール。
インストール完了後、データのダウンロードを始める。
さくらのサーバーなら、5分程度でダウンロードが終わるデータが10分程度かかる。。。
なんか遅いぞ。。。

WindowsServer2019が重いのか。。。

最初はOSの違いからくる重さなんじゃないかと疑っていたけどどうもそうじゃないようです。
むしろ2019は結構軽いサーバーのようですね。
答えは後で説明しますが、パフォーマンスが出せる状態の時は速くサクサクなんですが、高負荷がある一定の時間継続して続くと重くなり、しごとにならなくなります。

AWSのスペックを改めて確認

まずは、メモリ、CPU。
こちらは先述の通りメモリ2GBにCPUは1Coreでした。
さくらは、メモリ1GBに2Core。
たしかにコアは少ないですが、エディタを立ち上げただけで重くなるほど、CPUが弱いと思えない。。。
何かが変だな。。。

答え:バーストキャパシティがない!

答えを言えばAWSの機能、【バーストキャパシティ】の余力がなかったことでした。

このグラフは、AWSが提供してくれるCPUの使用率のグラフだ。
ここにSDGsを彷彿とさせるw『持続可能なゾーン』というのがある。
おおよそ20%の位置だろうか。
この位置、要は20%以下のCPUの使用率が、当マシンに割り当てられたいわば保証されているCPU領域だと思えばいい。

そして次がこれだ。【のこりCPUのバーストキャパシティ】というものだ。

バーストキャパシティとは

簡単に要約すると、自分が使えるエリアのCPUを使わなかった分を貯金できる機能のようなもので、その貯金をCPU負荷がかかるタイミングで貯金を取り崩して使用することができる機能だ。
常時接続運用するようなFX自動運用用サーバーのようなマシンの場合に大変有効だ。
普段、待機状態の際はほとんどCPUの負荷がかからず、何かのタイミングだけ大きな負荷がかかるようなときに、ためておいたCPUの貯金を使って先ほどの、持続可能なゾーンを超えバースト可能ゾーンまで使うことができる。
例えば、WindowsUpdateのような月に何度かあるマシンに負荷がかかるタイミング、週末に競馬のソフトを立ち上げて比較的CPUを使うタイミングなど、そういうタイミングで平常時使っていなかった分のリソースを使うことができるのだ。

さて、今一度、2枚の画像を見てみよう。
立ち上げた当初、バーストキャパシティは20%ほどたまった状態からスタートとなっているようだ。
これは、CPUが100%の状態でずっと推移したと想定した場合には約30分程度の貯金だ。
このマシンンの満額100%のキャパシティは、300分ということになっている。
私の競馬ソフトの場合、朝から昼にかけて大体1時間程度、集中して負荷はかかるが、データをダウンロードしてしまえばそのほとんどはCPU負荷にならない。
FX自動売買用のMT4も、立ち上げ時には多少負荷はかかるが、どちらかというとメモリ側が食う仕様なので、常時立ち上げっぱなしでも気になるものではない。

さて、今一度CPUの使用率とバーストキャパシティを見てみよう。
マシンを立ち上げて即、SSHサーバーを入れる際に、Windowsのコンポーネントからインストールしたのだが、これがまた非常に重い。。。
まずここでほとんどのキャパシティを使ってしまったようだ。
それでも、ギリギリキャパを残したままお昼になりいったん昼食休憩をしたときに、少しキャパシティを戻している。
ちなみにキャパシティは持続可能なゾーン以下のCPU使用率なら1時間で約4%キャパシティを貯金できる仕組みになっているらしく、丸々1日負荷がかかっていなければほぼ100%満充電できる仕組みになるようだ。
なので、休憩の1時間程度、約4%程度キャパを戻してお昼から作業再開。
何せ立ち上げたマシンですから、.NET Frame Workやら、ブラウザ(chromeや、edge、FireFoxなど)、ODBCドライバやらまずベースのパッケージを入れながら、解凍ソフトなどを入れながら、入れていきたいソフトをインストールしようとする。
自慢ではないのだが、私の商売はを使ってやる商売なわけなので、PC操作の手は異常なくらい早いので、二つ同時に作業するくらいは当たり前のようにやる。
Chromeのインストーラー度ダウンロードしながら、移行前のさくらのサーバーからデータをコピーして新しいサーバーに転送したり。
そうするとCPUにかかる負荷はどんどん上がったようです。
結果、午後に入って1時間ほどでキャパシティを使い切ってしまいました。
確かにそうなんです。
ある程度ベースのパッケージをインストールした時点で急にマシンが重くなり、本命のソフトを入れるころにはWindowsインストーラーのウィザード画面が出るのに1~2分かかるような状態になって、<<こんな重いマシンで、リアルタイムな競馬予想なんてできるのか?>>と思わせるほど重かったのです。
何とかインストールした後に、テストでデータを取り込もうと思って、さくらのマシンと一緒に取り込み作業をしたら新しいほうのマシンは取り込みに5倍以上時間がかかっていました。
この時点では、こりゃ使えないな。。。と判断していました。
しかし、それもそのはず。何せCPUは、キャパシティを使い切って、おそらく20%しか使えない状態になっているのですから、5倍遅くなって普通なんですね。
なるほど。その分利用料金が抑えられているのか。。。

使い方を改めて考える。

1日満充電で300分程度フルブーストでCPUを使える。
MT4と競馬用のソフトの負荷次第なんだけど、これがまた運のいいことに、FXは月~土の早朝まで、競馬は土曜日の朝9時ころから日曜日まで
なので、まず、FXと競馬が被らないラッキーが一つ。
また、MT4は、そこまでCPUに厳しいソフトではないためおそらく平常時EAを動かして放置しておく程度であればMT4を2台動かしても10%にも満たないだろう。
そう考えると週末に向けてほぼ満充電は可能だろう。
もちろん、EA開発でバックテストをやるマシンとしては不向きだろうから、EA開発は自分のクライアントマシンですることにしよう。
そして競馬ソフト、
今同時に立ち上げることになりそうなソフトは5つ。
この5つは決して軽いソフトではないのだが立ち上がってしまって何もしていない状態なら負荷はほぼない。
起動時と、データの取り込み時に負荷がかかるのだが、同時に動かさず、順番に立ち上げでデータのダウンロードであればブーストの300分の100分も使えれば何とかなりそう。
そして、データを取り込んで予想をしてしまえば次は日曜日の朝までデータの表示さえできていればいいのでまた貯金できそうだ。
ギリギリ行けそうな気がする。
あとは実際に試してみなきゃどうなるかわからないので、競馬のソフトの立ち上げ、来週からはMT4を2~3台動かしてみてうまくいくかどうかを試してみたいと思う。

不必要なサービスを無効化

CPUの使用率でバーストキャパシティを食う食わないとか、持続可能なゾーンにいれば貯金ができるとか、結構僕はこういうのは嫌いじゃないんですw
なので、徹底的にCPUに負荷がかからないようにチューニング。
まずは不必要なサービスを片っ端から無効化。余計なバックグラウンドサービスは全切りしました。

立ち上げるソフトも簡素化

ソフト自信を改造するのは大変ですが、MT4にしても、競馬のソフトにしても、ビジュアルはどうでもいいのです。
なので、ソフトを立ち上げる時は256色で立ち上げとしました。
ほんの少しかもしれませんがCPUの負荷を軽減できるはず。
同じように、マシンの設定も、リソース優先というモードで、画面描画の細かいエフェクト等は全切りです。
昔のWindows98のようないかにもパソコンって感じのビジュアルになりましたw
また、デスクトップの壁紙も、あれは画像を呼び出して表示するものですから、壁紙なし、色だけを付けました。
小さいですがこの積み重ねで1%、2%のCPU負荷の軽減ができるはずです。

スタートアップも極力無効化

もともと常時接続用のWindowsなのでWindows Server 2019です。
Serverということもあり、最初からずいぶん無駄なものは省かれていますが、それでも例えば検索用のインデックスサービスの定期実行タスクとか、今回についてはまず使わないサービスがデフォルトでは有効だったりしますのでそこらへんも徹底的につぶしました。
これで、サービスインした時点では何もしていないと7%程度だったものが、ソフト一本常時稼働している状態でも4%程度まで提言しました。
常時何かが稼働している状態でしょうから、何もないときは1%程度まで落としておきたいところです。
それで、MT4が3台、競馬ソフト1本常時立ち上がっていて10%程度なら、先述の週末の競馬の時に重いソフトを複数立ち上げてもキャパシティで乗り切れると踏んでいます。

問題は・・ブラウザ・・

大きな問題が一つあります。
それは、【chrome】などの、ブラウザが非常にCPUに負荷をかけることです。
立ち上げただけで負荷がかかるのかどうかちょっとわからないのですが、立ち上げただけでCPUが負荷かかりまくります。
Twitterと、馬券購入とnoteでブラウザを立ち上げて。。。
と週末いつもやっていたやり方をすると、CPUが足りないかも。。。
実際やってみないとわからないですね。。。

一晩経過後・・・

3時ころにCPU負荷がかかっているのはおそらく定期実行の何かだろう。。。
まあ、それほど長時間でもないし、この程度は許容範囲か。。。

見ていただいた通り、何も立ち上げていない状態だと、CPUの使用率は1%程度まで落とせた。
これがチューニング前だと2~3%といったところなので、この差は大きいと思っています。
で、朝のCPUの上昇は、MT4をインストールし、EAを10個程度稼働させるセットアップをしたところです。
インストール時にCPUが跳ね上がるのはある程度仕方がないのでこれは許容したとして、問題はこの後EAを10個動かすことで生じる負荷ですね。
しかし今のところ、5%程度をボトムとして、10%にはいかない程度で落ち着いています。
EAがトレードをしたとしても、各EAが同じに取引が発生することはあまりありませんし、ずっとこのままで行く可能性が高いのかなと思います。
なので、今のところはキャパシティの貯金をできるレベルで運用できそうだという判断になってきています。
300分貯金できれば100%のCPU稼働で6時間分です。
そこまで使うことはバックテストでも続けて行わない限りあまりありませんので、なんとか安定して使えそうかなと思っている次第です。

キャパシティ100%

その後画像の通りブーストキャパシティは100%に到達しました。
画像を見ていただいた通り、MT4で、EAを10個程度稼働させた状態にしたらCPUの平均使用率は6~7%程度になりました。
もう一台MT4を立ち上げると結構ギリギリのラインかもしれませんね。
もう1台MT4を立ち上げるとしたら、デモ口座でテストEAをフォワードテストするときなので、フォワードテストは別のマシンでやった方がいいかもしれませんね。

で、この状態で100%になるまでに、約1日半、余裕を見たら2日といったところでしょうか。
一旦溜まってしまえばCPUの24時間の平均使用率が20%を切っている状態を維持し続けることができればたまに使ってもキャパシティは貯金していく方向になりますので、集中的に負荷をかけない限りはつきることはないでしょう。
これで週末の馬券購入のソフトを半日立ち上げたとしても、使い切ることはなさそうです。

Return Top