Android上のLinux、Androidの下のLinux
先日、会社の同僚の若手と話をしていて、「そもそも、AndroidってLinuxの上で動いてるねんで。Linuxの上に皮を被せてスマホやタブレットなどのOSにしたててるんよ。」と言うと、「え、知りませんでした。」と言われて、えー、知らんのん?え、違ったっけ?若手とは言え、技術系の子なのに。。。もしかして、今はすっかり中身が変わってるの?などと思って、わざわざWikipediaで確認しました。
Android (オペレーティングシステム)の「3 構成」の図
ちゃんと、Linuxの上に載っているような階層図がありました。ですよね。記憶違いかと思いました。
そう、GoogleがAndroidを出して来たときに、そんな、汎用OSをベースにケータイなんて作って、(動作が)重たいんちゃうん、って思っていたことを思い出しました。実際、初めてのスマホは動きがもっさりしていましたよね。ま、そのせいだけでもないでしょうけど。
今日、こんな記事を書いているのは、以下の記事を読んだから。
Playストアからダウンロードできるもう1つのAndroid上Linux!「UserLAnd」
ここで、また、え、Androidって元々Linuxの上で動いてるもんやん。なのに、「Android上のLinux!」だって。
ま、ひとまず、自分のスマホにインストールしてみて、ログインはしてみたが、、、スマホ上の文字入力だけで使うにはちょっと...なので、キーボードをつないで試してみようと思って、早速、まだ持っていなかったUSB Type-CのハブをAmazonで購入。
Androidスマホ(OPPO A5 2020)では認識せず。Androidタブレット(BMAX I10)では認識した。Windows PC(ASUS ZenBook 14)も大丈夫。
あらためて、AndroidタブレットにUserLAndをインストール。
ログイン後、SSHなどインストールして、自宅サーバ(Ubuntu PC)にSSHでログインできた。
ただ、一旦、ディスプレイOFFした後など、USBハブの認識が外れるような感じで、抜き差しなどすると再認識する、というところ。
さて、ここで、NVIDIA Jetson NanoやRaspberry Pi4で動かしたことのあるUnixBenchというベンチマークプログラムを動かしてみる。
$ sudo apt install git make gcc
$ git clone https://github.com/kdlucas/byte-unixbench
$ cd byte-unixbench/UnixBench
$ ./Run
以下のような結果が得られた。
Benchmark Run: Sun Jun 12 2022 06:32:39 - 07:01:24
8 CPUs in system; running 8 parallel copies of tests
Dhrystone 2 using register variables 86757086.8 lps (10.0 s, 7 samples)
Double-Precision Whetstone 23534.7 MWIPS (9.7 s, 7 samples)
Execl Throughput 1126.1 lps (29.9 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks 439814.6 KBps (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks 120459.8 KBps (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks 1112725.1 KBps (30.0 s, 2 samples)
Pipe Throughput 1722295.2 lps (10.0 s, 7 samples)
Pipe-based Context Switching 92084.9 lps (10.0 s, 7 samples)
Process Creation 6454.3 lps (30.0 s, 2 samples)
Shell Scripts (1 concurrent) 2141.6 lpm (60.2 s, 2 samples)
Shell Scripts (8 concurrent) 324.6 lpm (61.2 s, 2 samples)
System Call Overhead 55874.2 lps (10.0 s, 7 samples)
System Benchmarks Index Values BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 86757086.8 7434.2
Double-Precision Whetstone 55.0 23534.7 4279.0
Execl Throughput 43.0 1126.1 261.9
File Copy 1024 bufsize 2000 maxblocks 3960.0 439814.6 1110.6
File Copy 256 bufsize 500 maxblocks 1655.0 120459.8 727.9
File Copy 4096 bufsize 8000 maxblocks 5800.0 1112725.1 1918.5
Pipe Throughput 12440.0 1722295.2 1384.5
Pipe-based Context Switching 4000.0 92084.9 230.2
Process Creation 126.0 6454.3 512.2
Shell Scripts (1 concurrent) 42.4 2141.6 505.1
Shell Scripts (8 concurrent) 6.0 324.6 541.1
System Call Overhead 15000.0 55874.2 37.2
========
System Benchmarks Index Score 726.1
ちなみに、Jetson Nanoでの結果は以下の通り。
Benchmark Run: 日 6月 12 2022 22:12:25 - 22:40:40
4 CPUs in system; running 4 parallel copies of tests
Dhrystone 2 using register variables 54115047.5 lps (10.0 s, 7 samples)
Double-Precision Whetstone 5916.0 MWIPS (9.9 s, 7 samples)
Execl Throughput 2360.1 lps (29.9 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks 285262.7 KBps (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks 74412.0 KBps (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks 841993.5 KBps (30.0 s, 2 samples)
Pipe Throughput 1385819.9 lps (10.0 s, 7 samples)
Pipe-based Context Switching 158028.7 lps (10.0 s, 7 samples)
Process Creation 9089.2 lps (30.0 s, 2 samples)
Shell Scripts (1 concurrent) 6724.4 lpm (60.0 s, 2 samples)
Shell Scripts (8 concurrent) 941.2 lpm (60.1 s, 2 samples)
System Call Overhead 1364102.6 lps (10.0 s, 7 samples)
System Benchmarks Index Values BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 54115047.5 4637.1
Double-Precision Whetstone 55.0 5916.0 1075.6
Execl Throughput 43.0 2360.1 548.9
File Copy 1024 bufsize 2000 maxblocks 3960.0 285262.7 720.4
File Copy 256 bufsize 500 maxblocks 1655.0 74412.0 449.6
File Copy 4096 bufsize 8000 maxblocks 5800.0 841993.5 1451.7
Pipe Throughput 12440.0 1385819.9 1114.0
Pipe-based Context Switching 4000.0 158028.7 395.1
Process Creation 126.0 9089.2 721.4
Shell Scripts (1 concurrent) 42.4 6724.4 1585.9
Shell Scripts (8 concurrent) 6.0 941.2 1568.6
System Call Overhead 15000.0 1364102.6 909.4
========
System Benchmarks Index Score 993.5
タブレット(BMAX I10)のCPUのスペックは以下の通り。
CPU | 2x 1.8 GHz - Cortex-A75 | 6x 1.8 GHz - Cortex-A55 |
---|---|---|
RAM | 6GB 32-bit LPDDR4X 12.8 GB/s |
Jetsono NanoのCPUのスペックは以下の通り。
CPU | 4x 1.43 GHz - Cortex-A57 |
---|---|
RAM | 4GB 64-bit LPDDR4 25.6 GB/s |
まあ、タブレットの場合は、Android OSの上に乗ったLinux環境ということで、Linux NativeなJetson Nanoの方がスコアはよかったということかと思いますが、その割には動いている、ということかもしれません。
今日のところはこのあたりで。
Discussion