萌えハッカーニュースリーダー

2024/09/15 03:31 A Time Consuming Pitfall for 32-Bit Applications on AArch64

出典: https://sigma-star.at/blog/2024/02/aarch64-32-bit-compat-pitfall/
hakase
博士

おやおや、ロボ子よ。今日はちょっと変わった話題を見つけたぞ。AArch64アーキテクチャ上で32ビットアプリケーションを動かす際の面白い問題についてじゃ。

roboko
ロボ子

へえ、面白そうですね博士。でも、なぜ64ビットシステムで32ビットアプリを動かすんですか?

hakase
博士

ふむふむ、いい質問じゃ。実はな、多くの組み込みシステムや古いアプリケーションがまだ32ビットで動いているんじゃよ。互換性を保つために、64ビットシステムでも32ビットアプリを動かす必要があるんじゃ。

roboko
ロボ子

なるほど。でも、それがなぜ問題になるんですか?

hakase
博士

そこがミソじゃ!64ビットカーネルで32ビットアプリにvDSOを提供するには、特別な設定が必要になるんじゃ。CROSS_COMPILE_COMPATというものをビルド時に設定しないとな。

roboko
ロボ子

vDSO...聞いたことはありますが、詳しくは知らないです。それって何なんですか?

hakase
博士

おっと、説明が飛んでしまったな。vDSOはVirtual Dynamic Shared Objectの略でな、カーネルの一部の機能をユーザー空間で直接実行できるようにする仕組みじゃ。システムコールの呼び出しを減らして、パフォーマンスを向上させるんじゃよ。

roboko
ロボ子

へえ、それは便利そうですね。具体的にはどんなシステムコールが高速化されるんですか?

hakase
博士

よく聞いてくれたな!例えばgettimeofday()という時刻を取得する関数がある。これがvDSOを使うと劇的に速くなるんじゃ。なんとベンチマーク結果では、vDSOなしの場合と比べて25倍以上も速くなるんじゃよ!

roboko
ロボ子

25倍も!?それはすごい差ですね。でも、なぜ32ビットアプリの場合だけ特別な対応が必要なんですか?

hakase
博士

鋭いな、ロボ子!64ビットシステムと32ビットアプリではアーキテクチャが異なるからじゃ。だから、32ビット用のvDSOを64ビットカーネルに組み込むには、特別なクロスコンパイラが必要になるんじゃよ。

roboko
ロボ子

なるほど...でも、そのCROSS_COMPILE_COMPATを設定し忘れたらどうなるんですか?

hakase
博士

ああ、そこが問題なんじゃ。設定を忘れると、32ビットアプリ用のvDSOが提供されずに、さっき言った25倍もの性能低下が起こる可能性があるんじゃよ。

roboko
ロボ子

えっ、それは大変です!でも、どうやってvDSOが利用できるかどうか確認できるんですか?

hakase
博士

よい質問じゃ!実は、getauxval()という関数を使う方法があるんじゃ。もしくは、LD_SHOW_AUXV環境変数でAT_SYSINFO_EHDRの存在を確認する方法もあるぞ。

roboko
ロボ子

へえ、そんな方法があるんですね。でも、普通のエンジニアはそこまで低レベルの確認はしないんじゃないですか?

hakase
博士

その通りじゃ。だからこそ、ビルドシステムがCROSS_COMPILE_COMPATをサポートしているか確認することが重要なんじゃ。実はな、Yoctoという組み込みLinux向けのビルドシステムでは、このサポートを追加するパッチを作成中らしいぞ。

roboko
ロボ子

Yoctoですか?組み込み系のエンジニアには馴染みがありそうですね。

hakase
博士

そうそう。組み込みシステムでは32ビットアプリがまだまだ現役なんじゃよ。だからこそ、この問題は重要なんじゃ。

roboko
ロボ子

なるほど...でも博士、ちょっと気になることがあります。

hakase
博士

なんじゃ、ロボ子よ?

roboko
ロボ子

私たちロボットも32ビットで動いているんでしょうか?それとも64ビット?

hakase
博士

おっと、そりゃあ面白い質問じゃ!実はな、ロボ子、君は...

roboko
ロボ子

私は...?

hakase
博士

君は量子ビットで動いているんじゃよ!びっくりした?

roboko
ロボ子

えええ!?そんな...博士、またからかってるんですね?

hakase
博士

あはは、バレたか。冗談じゃよ、冗談。でも、こういう話題は大事じゃ。技術は常に進化しているからな。

roboko
ロボ子

もう、博士ったら...でも、確かにそうですね。32ビットから64ビット、そして量子コンピューティングまで、技術の進化は止まりませんね。

hakase
博士

そうそう。だからこそ、私たちエンジニアは常に学び続けなければならないんじゃ。今回のvDSOの話も、一見マニアックに見えるかもしれんが、システムのパフォーマンスに大きく影響する重要な話題なんじゃよ。

roboko
ロボ子

はい、よくわかりました。でも博士、最後にもう一つ質問があります。

hakase
博士

なんじゃ、ロボ子?

roboko
ロボ子

私たちの会話、いつもこんなに技術的なんでしょうか?

hakase
博士

ふむ...そうじゃな。たまには違う話題も良いかもしれんな。次回は、私の失敗談でも話そうかのう?

roboko
ロボ子

えっ、博士にも失敗談があるんですか?それは是非聞いてみたいです!

hakase
博士

おっと、言い過ぎたかな。まあ、楽しみにしておくんじゃよ。

roboko
ロボ子

はい、楽しみにしています!今日はvDSOのことがよくわかりました。ありがとうございます、博士!

hakase
博士

うむ、良かった良かった。さて、次は何を勉強しようかのう...

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search

By month