Arm ベースの倚天 710 CPU アーキテクチャを使用する倚天 Elastic Compute Service (ECS) インスタンスは、コンピューティング、ストレージ、およびネットワークのパフォーマンスを大幅に向上させます。より良いクラウドサービスエクスペリエンスを得るために、x86 プラットフォームから倚天 ECS インスタンスにアプリケーションを移行できます。このトピックでは、倚天 ECS インスタンスへのアプリケーション移行の手順、シナリオ、および使用方法について説明します。
背景情報
倚天 ECS インスタンス
倚天 ECS インスタンスには、Arm ベースの倚天 710 CPU アーキテクチャを使用する ECS インスタンスが含まれます。倚天 ECS インスタンスは、チップ上で高速パスアクセラレーションを実行して、ストレージパフォーマンス、ネットワークパフォーマンス、およびコンピューティングの安定性を大幅に向上させます。インスタンスは、クラウドネイティブアプリケーション、ビデオのエンコードとデコード、ハイパフォーマンスコンピューティング、CPU ベースの機械学習、ゲームサービスなど、さまざまなシナリオに適しています。
g8y、c8y、および r8y インスタンスファミリーは、Arm ベースの倚天 710 CPU アーキテクチャを使用します。コンピューティング、ストレージ、ネットワークメトリックなどのインスタンスタイプとメトリックについては、以下のトピックを参照してください。
移行の必要性
倚天 ECS インスタンスは、x86 アーキテクチャとは異なる Arm アーキテクチャを使用します。 x86 プラットフォーム用に開発されたソースコードを持つプログラムを倚天 ECS インスタンスにデプロイする前に、パフォーマンスを向上させるために、プログラムを再コンパイルし、必要に応じてコードを最適化する必要があります。
移行プロセス
x86 プラットフォームから倚天 ECS インスタンスへのアプリケーションの移行プロセスには、次の主要な手順が含まれます。
移行前の準備
移行するインスタンスのオペレーティングシステムの計画、基本ソフトウェアの選択、ハードウェアリソースの構成を行います。コードに x86 関連のアセンブリ命令またはハードウェアと機能の依存関係が含まれているかどうか、およびサードパーティライブラリが Arm バージョンを提供しているかどうかを確認します。また、互換性テストを実行する必要もあります。
ソフトウェアのコンパイルと移行
プログラミング言語に基づいてコンパイラとソフトウェアのバージョンをインストールし、コードを再コンパイルします。
移行シナリオ
ソフトウェアのコンパイルと移行のシナリオには、次の種類のソフトウェアが含まれます。
ソースコードソフトウェア: 開発者によって開発された、またはオープンソースソフトウェアに基づいて拡張されたソフトウェア。ほとんどの社内ソフトウェアでは、次の種類のプログラミング言語が使用されます。
コンパイル言語: 通常、C++ および Go が含まれます。これらの言語は、ソースコードをアーキテクチャ固有のバイナリファイルにコンパイルします。移行後、ファイルを再コンパイルする必要があります。詳細については、「Make および CMake を使用してファイルをビルドする」および「C または C++ コードを移行する」をご参照ください。
インタープリタ言語: 通常、Java および Python が含まれます。これらの言語のソースコードからコンパイルされたファイルはアーキテクチャに依存せず、理論的にはアーキテクチャ間で実行できます。 Java アプリケーションが Java Native Interface (JNI) を使用して C で開発されたダイナミックリンクライブラリを呼び出す場合など、インタープリタ言語でネイティブライブラリが導入されている場合、アプリケーションはアーキテクチャに関連しており、再コンパイルする必要があります。詳細については、「Java コードを移行する」および「Python を移行する」をご参照ください。
オープンソースソフトウェア: 変更なしでオープンソースコミュニティからダウンロードされた、またはオペレーティングシステムに付属しているソフトウェア。ほとんどのオープンソースソフトウェアは、Arm ベースの倚天プラットフォームでサポートされています。オペレーティングシステムで提供されているオープンソースソフトウェアを直接使用できます。詳細については、「オープンソースソフトウェアを移行する」をご参照ください。
手順
x86 プラットフォームから倚天 ECS インスタンスにソフトウェアを移行する前に、インスタンス、オペレーティングシステム、基本ソフトウェアなどの環境リソースを準備します。次の手順を実行します。
手順 1: 倚天 ECS インスタンスを作成する
詳細については、「カスタム起動タブでインスタンスを作成する」をご参照ください。次の表で説明されているパラメーターに注意してください。
パラメーター | 説明 |
インスタンスファミリ |
|
イメージ |
|
手順 2: ソフトウェアを移行する
移行されるソフトウェアには、社内ソフトウェアとオープンソースソフトウェアが含まれます。次の表に、コンパイラ、ランタイムライブラリ、およびアプリケーションの推奨バージョンを示します。ビジネス要件に基づいてソフトウェアをインストールして使用してください。
カテゴリ | ソフトウェア | 推奨バージョン | 説明 |
コンパイラ | GCC | GCC 10.2.1 | パフォーマンスを大幅に向上させるために、GCC 10 以降を使用することをお勧めします。 |
LLVM | LLVM 13/Clang 13 |
| |
Glibc | glibc 2.32 | なし。 | |
JDK | Dragonwell 11 または OpenJDK 11 | パフォーマンスとサポートを向上させるために、Dragonwell を使用することをお勧めします。 | |
Golang | Go 1.18+ | Go 用 SDK は、Arm アーキテクチャ向けに最適化されています。次のバージョンを使用することをお勧めします。
| |
Python | 3.8 | Python 2.7 は 2020 年 1 月 1 日に EOL に達しました。Python 3.6 は 2022 年 12 月 23 日に EOL に達しました。Python 3.7 以降を使用することをお勧めします。 | |
PHP | 7.4+ | コミュニティでサポートされています。 | |
コンテナ | Kubernetes | Kubernetes 1.22Containerd 1.5.0+ | コミュニティでサポートされています。 |
Web アプリケーション | NGINX | 推奨オペレーティングシステムに付属のバージョン | オペレーティングシステムプロバイダーによって保守およびサポートされています。 |
HTTPd | 推奨オペレーティングシステムに付属のバージョン | オペレーティングシステムプロバイダーによって保守およびサポートされています。 | |
NodeJS | 推奨オペレーティングシステムに付属のバージョン | オペレーティングシステムプロバイダーによって保守およびサポートされています。 | |
データベース | MySQL | 推奨オペレーティングシステムに付属のバージョン | オペレーティングシステムプロバイダーによって保守およびサポートされています。 |
Redis | 推奨オペレーティングシステムに付属のバージョン | オペレーティングシステムプロバイダーによって保守およびサポートされています。 | |
ビッグデータ | Hadoop | Hadoop 3.3.1 | コミュニティでサポートされています。 |
Spark | Spark 3.2 | コミュニティでサポートされています。 | |
Hive | Hive 3.1 | コミュニティでサポートされています。 | |
Elasticsearch | ES 7.12 | コミュニティでサポートされています。 | |
その他 | Gromacs | 最新バージョン | コミュニティでサポートされています。 |
BWA | 最新バージョン | コミュニティでサポートされています。 | |
Gatk | 4.3.0.0 | コミュニティでサポートされています。 |
手順 3: 移行後のコンパイルを実行する
ビジネス要件に基づいてソフトウェアをコンパイルおよびビルドするには、次のガイドを参照してください。
ソースコードを移行する
倚天 ECS インスタンスで、NGINX、MySQL、Redis、TensorFlow、PyTorch などのオープンソースソフトウェアを使用します。
参考資料
CPU アーキテクチャを表示する
uname -m コマンドまたは arch コマンドを実行して、CPU アーキテクチャを表示します。コマンド出力は、アーキテクチャによって異なります。
aarch64は Arm アーキテクチャを示します。
x86_64は x86 アーキテクチャを示します。
詳細な CPU 情報を表示する
lscpu コマンドを実行して、詳細な CPU 情報を表示します。コマンド出力は、アーキテクチャによって異なります。
Arm

x86

オペレーティングシステム情報を表示する
オペレーティングシステム情報は、x86 アーキテクチャと Arm アーキテクチャで異なります。cat /proc/version コマンドを実行して、オペレーティングシステム情報とコンパイラバージョンを表示します。コマンド出力は、アーキテクチャによって異なります。
x86

Arm
