😀
Arm ベースのプロセッサを搭載した新しい Azure 仮想マシンを試してみた
背景と目的
Arm ベースのプロセッサを搭載した新しい Azure 仮想マシンが GA したので、早速試してみました。最初に展開された 10 リージョンに日本のリージョンは含まれていないようです。また、価格に関しては East US で同じようなスペックの Intel の Standard_D2_v5 と Arm の Standard_D2ps_v5 を比較してみたところ、前者が約 70 ドル、後者が約 56 ドルなので、Arm は Inetl と比較して約 20% 安い計算になるようです。
検証用の Arm ベース仮想マシンを作成
bash
# 環境変数をセットします
region=eastus
prefix=mnrarmvm
# リソースグループを作成します
az group create \
--name ${prefix}-rg \
--location $region
# VM イメージを探します
az vm image list \
--offer ubuntu \
--architecture arm64 \
--publisher canonical \
--sku 22_04-lts-arm64 \
--all \
--output table
Architecture Offer Publisher Sku Urn Version
-------------- ---------------------------- ----------- --------------- ---------------------------------------------------------------------- ---------------
Arm64 0001-com-ubuntu-server-jammy Canonical 22_04-lts-arm64 Canonical:0001-com-ubuntu-server-jammy:22_04-lts-arm64:22.04.202206220 22.04.202206220
Arm64 0001-com-ubuntu-server-jammy Canonical 22_04-lts-arm64 Canonical:0001-com-ubuntu-server-jammy:22_04-lts-arm64:22.04.202207060 22.04.202207060
Arm64 0001-com-ubuntu-server-jammy Canonical 22_04-lts-arm64 Canonical:0001-com-ubuntu-server-jammy:22_04-lts-arm64:22.04.202207121 22.04.202207121
Arm64 0001-com-ubuntu-server-jammy Canonical 22_04-lts-arm64 Canonical:0001-com-ubuntu-server-jammy:22_04-lts-arm64:22.04.202208100 22.04.202208100
# SSH キーペアをファイル名を指定して作成します
ssh-keygen -m PEM -t rsa -b 4096 \
-f ${prefix}
# 検証用の仮想マシンを作成します
az vm create \
--resource-group ${prefix}-rg \
--name ${prefix}-vm \
--os-disk-name ${prefix}-vmOSDisk \
--image Canonical:0001-com-ubuntu-server-jammy:22_04-lts-arm64:22.04.202208100 \
--size Standard_D2ps_v5 \
--admin-username azureuser \
--ssh-key-value ${prefix}.pub \
--nsg-rule NONE \
--public-ip-address-dns-name ${prefix} \
--storage-sku Standard_LRS
# NSG に自分の IP アドレスから SSH 接続出来るようにします
az network nsg rule create \
--resource-group ${prefix}-rg \
--name Allow-SSH \
--nsg-name ${prefix}-vmNSG \
--priority 100 \
--source-address-prefixes $(curl -s inet-ip.info) \
--destination-port-ranges 22 \
--access Allow \
--protocol Tcp
# 仮想マシンに SSH 接続します
ssh -i ${prefix} azureuser@${prefix}.$region.cloudapp.azure.com
Arm ベースの Ubuntu を触ってみる
bash
# OS 情報を確認します
$ uname -a
Linux mnrarmvm-vm 5.15.0-1017-azure #20-Ubuntu SMP Fri Aug 5 12:03:57 UTC 2022 aarch64 aarch64 aarch64 GNU/Linux
# Azure Linux エージェント(waagent)を確認します
$ ps aux | grep waagent
root 721 0.0 0.2 32032 23696 ? Ss 23:04 0:00 /usr/bin/python3 -u /usr/sbin/waagent -daemon
azureus+ 1651 0.0 0.0 6420 1844 pts/0 S+ 23:11 0:00 grep --color=auto waagent
# .NET 6 SDK をインストールしてみます(そんなパッケージは無いようです)
$ sudo apt-get update && \
sudo apt-get install -y dotnet6
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
E: Unable to locate package dotnet6
# 手動で .NET 6 SDK をインストールします
wget https://download.visualstudio.microsoft.com/download/pr/901f7928-5479-4d32-a9e5-ba66162ca0e4/d00b935ec4dc79a27f5bde00712ed3d7/dotnet-sdk-6.0.400-linux-arm64.tar.gz
mkdir -p $HOME/dotnet && tar zxf dotnet-sdk-6.0.400-linux-arm64.tar.gz -C $HOME/dotnet
export DOTNET_ROOT=$HOME/dotnet
export PATH=$PATH:$HOME/dotnet
# .NET 6 の情報を表示します
$ dotnet --info
.NET SDK (reflecting any global.json):
Version: 6.0.400
Commit: 7771abd614
Runtime Environment:
OS Name: ubuntu
OS Version: 22.04
OS Platform: Linux
RID: ubuntu.22.04-arm64
Base Path: /home/azureuser/dotnet/sdk/6.0.400/
global.json file:
Not found
Host:
Version: 6.0.8
Architecture: arm64
Commit: 55fb7ef977
.NET SDKs installed:
6.0.400 [/home/azureuser/dotnet/sdk]
.NET runtimes installed:
Microsoft.AspNetCore.App 6.0.8 [/home/azureuser/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.NETCore.App 6.0.8 [/home/azureuser/dotnet/shared/Microsoft.NETCore.App]
Download .NET:
https://aka.ms/dotnet-download
Learn about .NET Runtimes and SDKs:
https://aka.ms/dotnet/runtimes-sdk-info
# 仮想マシンから抜けます
exit
検証環境を削除
bash
# リソースグループを削除します
az group delete \
--name ${prefix}-rg \
--yes
# 作成した SSH キーペアを削除します
rm -f ${prefix}*
参考
Discussion