x86 アプリケーションを Yitian 710 ベースの Elastic Compute Service (ECS) インスタンス (g8y、c8y、r8y) に移行することで、コンピューティング、ストレージ、ネットワークのパフォーマンスが向上します。
背景情報
YiTian ECS インスタンスとは
YiTian ECS インスタンスは、Yitian 710 ARM アーキテクチャをベースとした ECS インスタンスです。チップレベルのファストパスアクセラレーションを使用して、コンピューティング、ストレージ、ネットワークのパフォーマンスを強化します。クラウドネイティブアプリケーション、動画のエンコードおよびデコード、ハイパフォーマンスコンピューティング (HPC)、CPU ベースの機械学習、ゲームサービスなどのシナリオに適しています。
Yitian 710 ベースのインスタンスファミリーには、g8y、c8y、r8y が含まれます。インスタンスタイプとパフォーマンス指標については、次のドキュメントをご参照ください。
移行が必要な理由
YiTian ECS インスタンスは ARM アーキテクチャを使用しており、x86 とは異なります。x86 ソースコードを YiTian インスタンスにデプロイするには、再コンパイルとアーキテクチャ固有の最適化を適用する必要があります。
移行のステップ
アプリケーションを x86 から YiTian に移行するには、次の 2 つのステップが必要です:
-
移行前の準備
オペレーティングシステム、基本ソフトウェア、ハードウェアリソースを計画します。コードに x86 固有のアセンブリ命令やハードウェア依存性がないかを確認します。サードパーティライブラリの ARM バージョンを検証し、互換性テストを実行します。
-
ソフトウェアのコンパイルと移行
プログラミング言語に適したコンパイラとソフトウェアバージョンをインストールし、再コンパイルを実行します。
移行シナリオ
ソフトウェアの移行には、通常 2 つのシナリオがあります:
-
ソースコードソフトウェア:自社で開発したソフトウェア、またはオープンソースプロジェクトをベースに拡張したソフトウェアです。言語は次の 2 つのカテゴリに分類されます。
-
コンパイル言語:C++ や Go などの言語は、アーキテクチャ固有のバイナリにコンパイルされるため、移行後に再コンパイルが必要です。詳細については、「Make/CMake ビルドファイル」および「C/C++ 言語の移行」をご参照ください。
-
インタプリタ言語:Java や Python などの言語は、アーキテクチャに依存しないバイトコードを生成するため、理論的にはクロスアーキテクチャで実行できます。ただし、ネイティブライブラリが関与する場合 (例: Java アプリケーションが JNI を介して C のダイナミックリンクライブラリを呼び出す場合) は、アプリケーションがアーキテクチャに依存するため、再コンパイルが必要です。詳細については、「Java 言語の移行」および「Python 言語の移行」をご参照ください。
-
-
オープンソースソフトウェア:オープンソースコミュニティから変更なしでダウンロードしたソフトウェア、または OS エコシステムに含まれるソフトウェアです。ほとんどのオープンソースソフトウェアは、すでに YiTian ARM プラットフォームをサポートしており、OS パッケージマネージャーから直接インストールできます。詳細については、「オープンソースソフトウェアの移行」をご参照ください。
移行手順
ECS インスタンス、オペレーティングシステム、基本ソフトウェアを含む必要な環境リソースを準備し、次の手順に従ってください。
ステップ 1: YiTian ECS インスタンスの作成
詳細については、「カスタムインスタンスの作成」をご参照ください。次のパラメータに注意してください。
|
パラメータ |
説明 |
|
インスタンスタイプ |
|
|
イメージ |
|
ステップ 2: ソフトウェアの移行
次の表に、コンパイラ、ランタイムライブラリ、アプリケーションの推奨バージョンを示します。必要に応じてインストールしてください。
|
カテゴリ |
ソフトウェア |
推奨バージョン |
説明 |
|
コンパイラ |
GCC |
gcc 10.2.1 |
大幅なパフォーマンス向上のため、GCC 10 以降を使用してください。 |
|
LLVM |
LLVM 13/clang 13 |
|
|
|
Glibc |
glibc 2.32 |
なし |
|
|
JDK |
Dragonwell 11 または OpenJDK 11 |
優れたパフォーマンスとサポートのため、Dragonwell の使用を推奨します。 |
|
|
Go |
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+ |
コミュニティによりサポート |
|
|
コンテナ |
K8s |
K8s 1.22、Containerd 1.5.0+ |
コミュニティによりサポート |
|
Web アプリケーション |
Nginx |
OS に含まれるバージョンを使用してください。 |
OS ディストリビューターによる保守 |
|
httpd |
OS に含まれるバージョンを使用してください。 |
OS ディストリビューターによる保守 |
|
|
NodeJS |
OS に含まれるバージョンを使用してください。 |
OS ディストリビューターによる保守 |
|
|
データベース |
MySQL |
OS に含まれるバージョンを使用してください。 |
OS ディストリビューターによる保守 |
|
Redis |
OS に含まれるバージョンを使用してください。 |
OS ディストリビューターによる保守 |
|
|
ビッグデータ |
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: コンパイルとビルド
次のガイドに基づいて、ソフトウェアをコンパイルおよびビルドしてください。
-
ソースコードの移行
-
Nginx、MySQL、Redis、TensorFlow、PyTorch などのオープンソースソフトウェアを YiTian ECS インスタンスで使用します。
関連ドキュメント
CPU アーキテクチャの確認
uname -m または arch を実行して、CPU アーキテクチャを確認できます。出力はアーキテクチャによって異なります。
-
ARM:
aarch64
-
x86:
x86_64
詳細な CPU 情報の確認
lscpu を実行して、詳細な CPU 情報を表示できます。出力はアーキテクチャによって異なります。
-
ARM:

-
x86:

OS 情報の確認
cat /proc/version を実行して、OS およびコンパイラのバージョンを確認できます。出力はアーキテクチャによって異なります。
-
x86:

-
ARM:
