3.5 サーバーの RAM や CPU のスペックを変更するには？

（2016年時点での内容をアーカイブとして掲載しているため、一部の掲載内容が最新情報とは異なる場合がありますので、ご了承ください。最新のIBM Cloudのアップデート情報は[IBM Cloud アップデート情報](https://www.ibm.com/cloud-computing/jp/ja/cloud-update/) や [柔らか層本](https://ibm.ent.box.com/v/ibmcloud-yawaraka)をご参照ください。）

概要
CPUやメモリのリソースが不足した際、サーバーの性能アップのためにCPUやメモリの増強が必要です。 ここでは、具体的なスペック変更方法と注意点などについてご説明します。
 

仮想サーバーのスペックを変更するには？
SoftLayerでは、サーバーの稼働中にCPUとメモリを変更することができます。 起動中のサーバー上でCPUとメモリのスペックを変更する場合、サーバーの再起動が必要となりますので、適用するタイミングを考慮する必要があります。

メモリを変更する場合

これからLinuxの仮想サーバーでメモリを1GBから2GBに変更する例を説明します。 現状のメモリの容量は、下図の赤枠から確認できます。

カスタマーポータルから「Devices」->「Device List」をクリックし、デバイス一覧から対象のサーバー名をクリックすると、「Device Details」画面が表示されます。 「Device Details」の「Configuration」タブで「System」の「RAM」から「Modify」をクリックすると、「Modify RAM」画面が表示されます。


「Modify RAM」画面の「Select option below」から変更するメモリ容量を選択します。 スペックの変更を即時適用する場合は「Modify Window」から「Immediately」にチェックを入れます。 スケジュールで変更を適用する場合は「Choose Date」と「Choose Time」にて日時を指定します。 時間は5分単位で指定することができます。 変更するスペックと適用するタイミングを選択したら「Continue」をクリックして先に進みます。


 

注文が完了した後に「Device List」画面で赤枠のなかにある時計のアイコンにマウス・カーソルを合わせると、スペック変更が進行中であることとスペック変更にかかる大よその時間が「Avg Duration」で確認することができます。

メモリ容量の変更は、次のようにLinuxのコマンドで確認することもできます。
 

 変更前

```
# cat /proc/meminfo
MemTotal:        1016280 kB
```

変更後

```
# cat /proc/meminfo
MemTotal:        1914296 kB
```

CPUのコア数を変更する場合
これからLinuxの仮想サーバーでCPUを1コアから2コアに変更する例を説明します。仮想サーバーが載っている物理サーバーを複数のユーザーで使用している状況を考えます。 コアとは、仮想サーバーが載っている物理サーバーを複数のユーザーが使うことを意味します。 物理サーバーの総コア数を超えるような注文が来たら、その仮想サーバーは、コア数に空きがある別の物理サーバーにアサインされます。 例えば、物理サーバーの総コア数が4コアであり、現在4人の仮想サーバーで1コアずつ使用していて、コアの空きが無い状況とします。 そのなかの一人が2コアへの変更を注文したら、物理サーバーの総コア数を超えてしまうために、その人の仮想サーバーはコア数の空きがある物理サーバーにアサインされます。 現状のCPUコア数は、下図の赤枠から確認できます。

メモリ変更と同様な方法で対象のサーバーを選択します。 それから「Device Details」画面の「Configuration」タブで「System」の「Processor」から「Modify」をクリックすると、「Modify Core」画面が表示されます。

「Modify Core」画面の「Select Core Type」で共用タイプの「Core」を選択します。 そして、「Select option below」でコア数を選択します。 CPUのコア数は、1/2/4/8/12/16コアの中から選択できます。

スペックの変更を即時適用する場合は「Modify Window」から「Immediately」にチェックを入れます。 スケジュールで適用する場合は「Choose Date」と「Choose Time」にて日時を指定します。 時間は5分単位で指定することができます。 変更するスペックと適用するタイミングを選択したら「Continue」をクリックして先に進みます。

プライベート・コアを変更する場合

プライベート・コアとは、仮想サーバーが載っている1台の物理サーバーを一人のユーザーが占有して使うことを意味します。 仮想サーバーの場合は、1台の物理サーバーに複数の仮想サーバーが稼働しているために、共存ユーザーによる性能影響があります。 プライベート・コアにすると、共存ユーザーによる性能影響が発生しないために性能が安定するメリットがあります。

但し、プライベート・コアは1/2/4/8コアからの選択となり、普通の変更に比べ、時間がかかるので要注意です。 料金は高くなります。


CPUコア数の変更は、次のようにLinuxのコマンドで確認することもできます。
 

変更前（1コア：processorの表示が1行）

```
# cat /proc/cpuinfo
processor       : 0
model name      : Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz
```

変更後（2コア：processorの表示が2行）

```
# cat /proc/cpuinfo
processor       : 0
model name      : Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz
processor       : 1
model name      : Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz
```

物理サーバーのスペックを変更するには？
起動中の物理サーバー上でメモリの容量を変更する場合は、サーバーの再起動が必要となります。 CPUのコア数は変更できないために、サーバーの移行が必要になります。

メモリを変更する場合
 

 時間単位の場合
時間単位で注文するサーバーでは、稼働中のサーバー上でメモリ変更はできません。 しかし、どうしてもサーバーのメモリ容量を増やす必要がある場合は、フレックス・イメージを作って、そのフレックス・イメージから新しいサーバーの注文時にメモリ容量をあげることができます。
 

月単位の場合
月単位で注文するサーバーでは、稼働中のサーバー上でメモリ変更ができます。 ただし、次の図の右端の「Starting Price per Hour」に値段が入っているサーバーは、時間単位に構成されているサーバーなのでメモリ変更はできません。

 

CPUを変更する場合
物理サーバーでは、時間単位と月単位ともに稼働中のサーバー上で、CPUやコア数の変更はできません。 CPUやコア数の変更が必要な場合はサーバーの移行が必要です。

下図は時間単位の物理サーバーの一覧になります。 例えば、移行前のサーバーのCPUがIntel/Xeon1270/4Core/3.40GHz/8GBだとします。 このサーバーのフレックス・イメージを作り、そのフレックス・イメージから新しいサーバーを注文する時にIntel/Xeon2620/12Core/2.00GHz/32GBを選択することで、CPUのコア数を変更できます。 その後、新しいサーバーへデータの移行作業などが必要になります。



サーバーの移行に関する具体的な方法については、4.4 古くなったサーバーを更改するには？を参照してください。

補足：より良い性能のCPUを利用ためには
SoftLayerの仮想サーバーのCPUの動作周波数は、2.0GHz以上とされています。 仮想サーバーにログインして/proc/cpuinfoの値で確認すると、それより高い動作周波数のCPUが割当られていることがわかると思います。 実際のところ、Xeon E3-1270 3.5GHz, Xeon E5-2650 2.0GHz (以下 E3-1270, E5-2650とする) などが割当られ、動作周波数が高いのは良いが、全て同じではないということに気づきます。 ここでは、主な違いについて考察してみます。

CPUの処理速度は、単純に動作周波数が高いほど、高速に処理できます。 Linuxカーネルが起動する際に、CPU処理速度をビジーループで簡易に測定するBogoMIPSは、CPUの動作周波数に比例することが知られています。 CPU 1コアの仮想サーバーで考察すると、E3-1270から割当られた場合、動作周波数は3.5 GHz です。 もしも E5-2650 が割当られた場合には、2.0 GHzになります。 BogoMIPSの例のように、単純に動作周波数に処理速度が比例するとすれば、E3-1270の仮想サーバーは、E5-2650の仮想サーバーに比べ、1.5倍早く料金は同じと考えることができます。

CPUの処理速度は、動作周波数だけではなく、キャッシュの容量によっても変わります。 この違いは、gccでコンパイルする時間に大きく現れることが、良く知られています。 キャッシュが大きいほど、CPUの命令セットを効率良く取り出せるため、処理が高速に進みます。 コンパイルなど連続した複雑な処理が必要なケースでは、キャッシュに主要処理が載ってしまう容量があると非常に効果的に働き、処理時間が劇的に短くなります。 一例として、E3-1270は8MB, E5-2650は20MBのキャッシュを実装しています。 このためE5-2650の方が有利になります。

CPUの動作周波数の高さに応じて発熱量が増えていきます。 そして、主な発熱源はコアの回路部分になります。 この発熱はCPUにとって大敵で、温度が高くなると正常に動作しなくなり、やがては、熱によって内部が壊れてしまいます。 この大敵の熱を外に逃すために、CPUにヒートシンクとファンを取り付けて、温度が上がり過ぎないように熱を空気中に逃がしています。 少ないコア数のCPUでは、動作周波数を上げても発熱源が少ないため、熱を逃す速度に釣り合いが取れる高い周波数で動作できます。 ところが、コア数が多くなると、熱を逃がす速度が追いつかず内部の温度が上昇するため、逆に動作周波数を抑えなければならないことになります。

以上、簡単に最適なものを決めつけるのは難しいですが、物理サーバーは、CPUの型式を指定して構成を組むことができますから、目的に合わせて選択ができます。 性能を追求する必要がある場合には、物理サーバーを考慮してみては、いかがでしょうか？