Arm Compiler toolchainを使用してできるだけ早くアプリケーションをビルドするために必要となるライセンス(ライセンスシート)数を検討する場合、考慮するべき多くの要因があります。
-
何台のクライアントマシン(クライアント数/ユーザ数)がツールを使用するか
-
クライアントマシンはマルチコアマシンか
-
クライアントはパラレル(並列)ビルドを実行するか
-
クライアントが同時にツールを実行する可能性がある、あるいは一部ユーザが異なったシフトパターンでアクセスするか
-
クライアントはすべて同一のバージョンのコンパイラを使用するか
-
"ビルドファーム"("コンパイルファーム"とも呼ばれる自動テスト環境)を利用するか
-
有効な既存ライセンスが存在するか
-
ライセンスは異なったバージョンのコンパイレーションツールに対して有効か
上記全ての考慮点を含む様々な要因が、使用要件を満たすために必要なライセンスシート数に影響します。
パラレル(並列)ビルド
ほとんどのC/C++開発環境はビルドプロセスの管理のためにいずれかのバージョンのmakeプログラムに依存しています。makeプログラムは-jフラグを利用して起動することができます。
>
make -j 4
-jに渡される引数は並列実行を行おうとするジョブ数です。上記のコマンドではパラレルビルドを呼び出し、4つのジョブを並列に実行します。各ジョブはそれぞれ1シートを必要とするため、この例ではクライアントは4シートをチェックアウトしようとします。
使用できるライセンスのシート数が十分にある場合、クライアントでは最適な時間でのビルドが観測されるはずです。
ライセンスサーバで使用可能なライセンス数が1つしかない場合、追加のライセンスリクエストはキューイングされ、クライアントは-jオプションを使用するメリットが得られず、ビルドの遅延あるいは重積したキューイングによるライセンスエラーなどを引き起こします。
ビルド時間を改善するためにマルチコアマシン(1つ以上のCPU/コアを搭載したプロセッサを持つマシン)でパラレルビルドを実行することは一般的です。オペレーティングシステムに異なるジョブを別々のCPUにスケジューリングする機能があれば、各コアで分離したジョブを実行できます。
そのため並列ビルドを実行する場合、クアッドコアマシンが最適なパフォーマンスで動作するには少なくとも4シートが必要となりますが、それよりも少なければビルド時間は遅延します。
例えばクライアントマシンがクアッドコアマシンで、1シートのみのライセンスを使用してパラレルビルドを実行すると、4シートのライセンスを要求してチェックアウトしようとします。シートが足りないライセンスリクエストはライセンスプールにシートが返却されるまでキューイングされます。
ライセンスシートがチェックアウトされている間、残りのリクエストは次のようなメッセージの表示を引き起こします:
Warning: C9933W: Waiting for license...
ビルドファーム
"サーバファーム"あるいは"コンパイルファーム"とも呼ばれる"ビルドファーム"はクライアントマシンがアプリケーションやプロジェクトのビルドの為にアクセスするサーバを1つ以上含むスーパークライアントの1つのタイプです。
例えばビルドファームはオーバーナイトビルドの為に使われたりします。ビルドファームは一般的にパラレル(並列)ジョブ(先述)やクロスプラットフォーム開発でのリモートアクセスの為などに使用されます。
多数のクライアントがビルドを"サーバーファーム"に送信し、ライセンスサーバからシートを要求してビルドを実行します。サーバーファームは通常、複数のコアを使用して複数のビルドを並行して実行するため、ライセンスのチェックアウト頻度が非常に高くなる可能性があります。
異なるバージョンのArmツール
Armライセンスは下位互換性があるため、最新のライセンスを使用して現在の最新バージョンまでの全てのバージョンのツールを実行できます。逆にツールを使用するためにはそのバージョンが期待するバージョン以上のライセンスが必要となります。
異なるバージョンのツールを実行しているクライアントの場合、特にライセンスファイルに複数のライセンスバージョンが混在している場合は異なったツールが使用できるよう、十分な数のライセンスが存在することを確認しなければなりません。
また、より新しいバージョンのArmコンパイラを使用できるライセンスを古いバージョンのArmコンパイラが消費してしまうのを避けるため、オプションファイルの使用をお勧めします。
オプションファイルの詳細については、以下のFAQをご参照ください:
フローティングライセンスを複数持っていますが、特定のマシンに常にライセンスを有効にするような利用形態は可能ですか ( LIC-D-10 )
グループ単位で使用できるライセンス数を固定する方法について ( LIC-D-15 )
まとめ
必要なライセンス数を検討するときは、上記のすべての点を考慮することが重要です。また、クライアントマシンの仕様をアップグレードする場合、サーバーがクライアントの要求を処理するのに適した仕様であることも非常に重要です。