アジアでSkylakeプロセッサを使う

**tl;dr**: とあるワークロード（要低レイテンシ）を動かしているサーバで、Ivy BridgeからSkylakeに入れ替えたら、平均CPU使用率が半分以下になった。

<img width="638" alt="Ivy Bridge 2.5GHz vs Skylake 2.0GHz" src="https://qiita-image-store.s3.amazonaws.com/0/49113/0bd6c873-cacb-a85f-fc1c-2af0c04e3170.png">
→2.46倍の高集積化。

実績値 69% (Ivy Bridge) →28% (Skylake)

→後にコア数割当を半数に削減できたという話。

## 1. Skylakeとは何か？

Broadwellに続くIntel最新（2018年3月現在パブリックIaaSにおいて）のマイクロアーキテクチャ。Wikipediaだと→ https://en.wikipedia.org/wiki/Skylake_(microarchitecture) のあたり。

そんなのよく分からないよ、という人向けだと、MacBook Pro Late 2016 (13"/15")がそれ。現行のMacBook Pro Mid 2017はKaby Lakeです。

余談ですが、Haswell/BroadwellベースのMacBook Proを社内環境から撲滅することに先週成功しました。

## 2. IaaSでSkylakeを利用する

### 2-1. GCPでSkylakeを利用する

2017年5月に以下のリリースで発表された通り、一部のリージョンで利用が可能です。

https://cloudplatform.googleblog.com/2017/05/Compute-Engine-updates-bring-Skylake-GA-Extended-Memory-and-more-VM-flexibility.html

#### 利用可能リージョン

https://cloud.google.com/compute/docs/regions-zones/

#### 手順

手順は以下に書かれています。
https://cloud.google.com/compute/docs/instances/specify-min-cpu-platform?hl=en

完全に通向けですね。


```
$ gcloud compute zones describe us-west1-a
```

という具合で、自分の希望するリージョンを指定して、Cloud SDK (gcloud) を叩くと、以下のいずれか（複数）を含むリストが返ってきます。

- 2.6 GHz Intel Xeon E5 (Sandy Bridge) processors: "Intel Sandy Bridge"
- 2.5 GHz Intel Xeon E5 v2 (Ivy Bridge) processors: "Intel Ivy Bridge"
- 2.3 GHz Intel Xeon E5 v3 (Haswell) processors: "Intel Haswell"
- 2.2 GHz Intel Xeon E5 v4 (Broadwell) processors: "Intel Broadwell"
- 2.0 GHz Intel Xeon (Skylake) processors: "Intel Skylake"

RunningのVMインスタンス上では、変更ができません。（できたらかなりすごいと思うけど）
ので、Stop命令し、Stoppedへの遷移が完了した後、以下の既存Stoppedインスタンスの場合のように実行します。

##### 新規インスタンス
新規にVMインスタンスを起動する際は、以下のように起動できます。

```
$ gcloud compute instances create example-instance --zone asia-east-1a --min-cpu-platform "Intel Skylake"
```

##### 既存Stoppedインスタンス
StoppedのVMインスタンスの場合、既存VMインスタンスのパラメータを以下のように変更できます。

```
$ gcloud compute instances update example-instance --min-cpu-platform "Intel Skylake"
```

### 2.2. AWS (Amazon Web Services) ではSkylake使えないの？

使えます。

ただし、欧米大陸（US East (Northern Virginia), US West (Oregon), EU (Ireland)の3リージョン）のみです。

2017年11月に以下のリリースで発表された通り、c5インスタンスファミリー (およびm5インスタンスファミリー) で利用が可能です。

- https://aws.amazon.com/about-aws/whats-new/2017/11/introducing-amazon-ec2-c5-instances-the-next-generation-of-compute-optimized-instances/

> 3.0 GHz Intel® Xeon® Scalable processors (Skylake)

GCPのCompute Engineよりも1.5倍速いクロックベース **3.0 GHz** での利用ができるようです。ターボ時は3.5 GHzです^(https://aws.amazon.com/ec2/instance-types/)。最小構成 c5.large では2vCPU, 8 ECU (4GiB MEM)から使えるようです。コア当たり4 ECU相当の割当がある場合に実効的なクロック周波数相当するかは不明ですが。

GCP(GCE)と比べAWS(EC2)は同じコア数・クロック周波数でもコストパフォーマンスが悪いというベンチマーク数値が出ていた時期もありますが、c5/m5世代はハイパバイザの大幅な軽量化により、GCEに遜色ない(コア/コスト)パフォーマンスが出る可能性があります（未検証）。

こちらも、72 vCPU (144 GiB MEM) が上限のようです。

東京、日本にいると、よく訊かれることが多いので、早めにc5インスタンスが来るとよいですね。

### 2.3. Azure ではSkylake使えないの？

使えます。

2017年10月に以下のリリースで発表された通り、Fv2 インスタンスで利用が可能です。

- https://azure.microsoft.com/en-us/blog/fv2-vms-are-now-available-the-fastest-vms-on-azure/

> Intel® Xeon® Platinum 8168

最小構成 Standard_F2s_v2 では2vCPU (4GiB MEM)から使えるようです。ターボ時3.7GHz、ベース2.7GHzで動くプロセッサのようですが、ユーザにどの程度の実効的なクロック周波数適用されるのかは不明です。こちらも、72 vCPU (144 GiB MEM) まで使えるようです。

> Starting today, these sizes are available in West US 2, West Europe, and East US. Southeast Asia is coming soon. I hope you enjoy these new sizes and I am excited to see what you will do with them!! 

West US 2（オレゴン？）、West Europe（オランダ・アムステルダム）、East US（バージニア）でのみ利用できるようです。Southeast Asia（シンガポール）で利用できるようになっているかは確認できていません。

## 3. サマリ

2018年1月現在、アジアエリアでSkylakeを使えるのはGCPだけです。他のクラウドプロバイダでも使えるようになってくれると嬉しいです。

↑と、2018年1月現在に書いていたのですが、放置すること2ヶ月。AWSではその後、以下のリリースがありました。実際のワークロードを掛けることができていないので、今回は残念ですがAWSパートナーさんなどや私が書くかもしれないベンチマーク記事に期待したいと思います。

- 2018年2月にEC2 c5ファミリーがAsia Pacific (Mumbai), Asia Pacific (Sydney)で使えるようになりました。
    - https://aws.amazon.com/about-aws/whats-new/2018/02/amazon-ec2-c5-instances-are-now-available-in-additional-regions/
- 2018年3月にEC2 m5ファミリーがAsia Pacific (Singapore), Asia Pacific (Seoul)で使えるようになりました。
    - https://aws.amazon.com/about-aws/whats-new/2018/03/amazon-ec2-m5-instances-are-now-available-in-additional-regions/

Azureでのリリース状況は見つけられていませんが、調査は完全ではないかもしれません。

**まとめ**: 2018年3月26日現在、日本エリアでSkylakeを使えるのは主要パブリックIaaSは存在しないようです。一日でも早く使える日が来るのを楽しみにしています。（IBM CloudでSkylakeが使えるかどうかは確認していません。）


## 補足

なぜ古いアーキテクチャ（Ivy Bridge）を使っていたのかというと当時はそれが最新のマイクロアーキテクチャだったからです。