2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Chromebook Plus CX34(CX3402)のベンチマーク結果

Last updated at Posted at 2024-03-06

はじめに

英語版キーボード、より容量の大きいSSDを使いたい等の理由でamazon.comで以下のChromebook Plusのラップトップを購入しました。
https://www.amazon.com/ASUS-Chromebook-1920x1080-Processor-CX3402CBA-DH386-WH/dp/B0CGJGZZ1L?th=1

そこで、内部のハードウェアの種類および、各種ベンチアマークを取得してみました。

CPU

Alderlake世代のCore i3 1215Uが採用されています。

uname
Linux localhost 5.15.140-21048-g04ee62cda977 #1 SMP PREEMPT Thu, 15 Feb 2024 22:10:52 +0000 x86_64 12th Gen Intel(R) Core(TM) i3-1215U GenuineIntel GNU/Linux

1964 
Single-Core Score 

5006
Multi-Core Score 
1980 
Single-Core Score 

5036 
Multi-Core Score
  • Web XPRT4
Score

242

Workload 

ms 

Variation(%) 

Photo Enhancement 

352 

+/- 3.11 

Organize Album using AI 

1350 

+/- 0.86 

Stock Option Pricing 

103 

+/- 4.77 

Encrypt Notes and OCR Scan 

863 

+/- 0.87 

Sales Graphs 

255 

+/- 3.19 

Online Homework 

1788 

+/- 1.56 

Memory

chrome://systemの情報より。

SPD: module type is LPDDR5 
SPD: module part number is H9JCNNNBK3MLYR-N6E 
SPD: banks 8, ranks 1, rows 15, columns 11, density 8192 Mb 
SPD: device width 16 bits, bus width 16 bits SPD: module size is 1024 MB (per channel) 

LPDDR5 6400MHzです。
以下はsysbenchのメモリテストの結果です。
(実際にはスレッド数、メモリブロックサイズを調整しながら複数回繰り返しています、おおよそこのくらいの値が限界値のようでした)

zyake@penguin:~$ sysbench --test=memory --num-threads=8 --memory-block-size=8M run 

WARNING: the --test option is deprecated. You can pass a script name or path on the command line without any options. 

WARNING: --num-threads is deprecated, use --threads instead 

sysbench 1.0.20 (using system LuaJIT 2.1.0-beta3) 

Running the test with following options: 

Number of threads: 8 

Initializing random number generator from current time 

 Running memory speed test with the following options: 

  block size: 8192KiB 

  total size: 102400MiB 

  operation: write 

  scope: global 

 Initializing worker threads... 

 Threads started! 

Total operations: 12800 ( 9277.84 per second) 

102400.00 MiB transferred (74222.74 MiB/sec) 

 General statistics: 

total time:                          1.3783s 

total number of events:              12800 



 Latency (ms): 

     min:                                    0.23 

     avg:                                    0.79 

     max:                                   15.79 

     95th percentile:                        1.10 

     sum:                                10089.15 



Threads fairness: 

events (avg/stddev):           1600.0000/0.00 

execution time (avg/stddev):   1.2611/0.0 

デスクトップ版のAlder Lakeでもメモリコピーはおおよそ7xGiB/sなので、おおよそスペック通りの結果だと思われます。
https://www.tomshardware.com/news/gear-4-mode-tested-on-alder-lake

Storage

chrome://systemの情報より、KLUEG8UHGC-B0E1というモデルのUFSデバイスを採用していることがわかります。

{
    "Name": "KLUEG8UHGC-B0E1",
    "DeviceId": "645dd3eabfbffd6d82917cc4a4cddc0487c3187d",
    "InstanceIds": [
        "SCSI\\VEN_SAMSUNG&DEV_KLUEG8UHGC-B0E1",
        "SCSI\\VEN_SAMSUNG&DEV_KLUEG8UHGC-B0E1&REV_01"
    ],
    "Guid": [
        "be494236-785f-522f-8747-c074e384fbf8",
        "afbcca46-77bb-5f70-ad77-3704f31337f6"
    ],
    "Summary": "UFS device",
    "Plugin": "scsi",
    "Protocol": "org.jedec.ufs",
    "Flags": [
        "internal",
        "updatable",
        "registered"
    ],
    "Vendor": "SAMSUNG",
    "VendorId": "SCSI:SAMSUNG",
    "Version": "01",
    "VersionFormat": "plain",
    "Icons": [
        "drive-harddisk"
    ],
    "Created": 1708858386
}

サムスン電子製のUFS 3.1の規格の製品となります。
https://semiconductor.samsung.com/emea/estorage/ufs/ufs-3-1/klueg8uhgc-b0e1/

仕様上は最大で帯域幅が2.9GiB/sであり、Linuxコンテナ上のfioでもおおよそ仕様どおりの性能を確認しています。
(現実的には、データベースでもないのに、ページキャッシュを無視してこれだけの負荷を発生させる機会はほぼないと思われますが...)

zyake@penguin:~$ fio -filename=/home/zyake/testfio.file -direct=1 -rw=read  -bs=1M -size=1G -numjobs=20  -name=seqread  -runtime=60  

seqread: (g=0): rw=read, bs=(R) 1024KiB-1024KiB, (W) 1024KiB-1024KiB, (T) 1024KiB-1024KiB, ioengine=psync, iodepth=1 

... 

fio-3.33 

Starting 20 processes 

Jobs: 20 (f=20): [R(20)][87.5%][r=2951MiB/s][r=2951 IOPS][eta 00m:01s] 

seqread: (groupid=0, jobs=1): err= 0: pid=1621: Sun Feb 25 22:05:32 2024 

  read: IOPS=149, BW=150MiB/s (157MB/s)(1024MiB/6842msec) 

    clat (usec): min=1209, max=81592, avg=6678.35, stdev=4628.14 

     lat (usec): min=1209, max=81593, avg=6678.63, stdev=4628.15 

 

zyake@penguin:~$ fio -filename=/home/zyake/testfio.file -direct=1 -rw=write  -bs=4k -size=1G -numjobs=30  -name=seqread  -runtime=60  

seqread: (g=0): rw=write, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=psync, iodepth=1 

シーケンシャルリードやライトの性能は次の通りです。
4 KiBのページアクセスにて、1スレッドでも数万IOPSは発揮できているようです。

zyake@penguin:~$ fio -filename=/home/zyake/testfio.file -direct=1 -rw=read -bs=4k -size=1G -name=seqread  -runtime=60  

seqread : (g=0): rw=read, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=psync, iodepth=1 

fio-3.33 

Starting 1 process 

Jobs: 1 (f=1): [R(1)][100.0%][r=176MiB/s][r=45.1k IOPS][eta 00m:00s] 

seqread : (groupid=0, jobs=1): err= 0: pid=1091: Sun Feb 25 22:00:11 2024 

  read: IOPS=42.0k, BW=164MiB/s (172MB/s)(1024MiB/6243msec) 

    clat (usec): min=15, max=40488, avg=23.59, stdev=103.63 

     lat (usec): min=15, max=40488, avg=23.62, stdev=103.63 

    clat percentiles (usec): 

     |  1.00th=[   18],  5.00th=[   18], 10.00th=[   19], 20.00th=[   19], 

     | 30.00th=[   19], 40.00th=[   20], 50.00th=[   20], 60.00th=[   20], 

     | 70.00th=[   21], 80.00th=[   22], 90.00th=[   27], 95.00th=[   30], 

     | 99.00th=[   80], 99.50th=[  149], 99.90th=[  445], 99.95th=[  529], 

     | 99.99th=[  922] 

   bw (  KiB/s): min=147184, max=184704, per=100.00%, avg=168237.33, stdev=9892.22, samples=12 

   iops        : min=36796, max=46176, avg=42059.33, stdev=2473.05, samples=12 

  lat (usec)   : 20=64.05%, 50=33.50%, 100=1.70%, 250=0.41%, 500=0.28% 

  lat (usec)   : 750=0.05%, 1000=0.01% 

  lat (msec)   : 2=0.01%, 4=0.01%, 10=0.01%, 20=0.01%, 50=0.01% 

  cpu          : usr=2.56%, sys=23.10%, ctx=262145, majf=0, minf=12 

  IO depths    : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0% 

     submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0% 

     complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0% 

     issued rwts: total=262144,0,0,0 short=0,0,0,0 dropped=0,0,0,0 

     latency   : target=0, window=0, percentile=100.00%, depth=1 

Run status group 0 (all jobs): 

   READ: bw=164MiB/s (172MB/s), 164MiB/s-164MiB/s (172MB/s-172MB/s), io=1024MiB (1074MB), run=6243-6243msec 

zyake@penguin:~$ fio -filename=/home/zyake/testfio.file -direct=1 -rw=write -bs=4k -size=1G -name=seqread  -runtime=60  

seqread : (g=0): rw=write, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=psync, iodepth=1 

fio-3.33 

Starting 1 process 

Jobs: 1 (f=1): [W(1)][100.0%][w=178MiB/s][w=45.6k IOPS][eta 00m:00s] 

seqread : (groupid=0, jobs=1): err= 0: pid=1125: Sun Feb 25 22:02:28 2024 

  write: IOPS=47.2k, BW=184MiB/s (193MB/s)(1024MiB/5557msec); 0 zone resets 

    clat (usec): min=11, max=8559, avg=20.95, stdev=40.30 

     lat (usec): min=11, max=8559, avg=20.99, stdev=40.30 

    clat percentiles (usec): 

     |  1.00th=[   15],  5.00th=[   16], 10.00th=[   17], 20.00th=[   18], 

     | 30.00th=[   18], 40.00th=[   18], 50.00th=[   19], 60.00th=[   19], 

     | 70.00th=[   20], 80.00th=[   21], 90.00th=[   25], 95.00th=[   31], 

     | 99.00th=[   72], 99.50th=[   82], 99.90th=[  184], 99.95th=[  314], 

     | 99.99th=[ 1860] 

   bw (  KiB/s): min=165016, max=200984, per=99.99%, avg=188676.36, stdev=11103.88, samples=11 

   iops        : min=41254, max=50246, avg=47169.09, stdev=2775.97, samples=11 

  lat (usec)   : 20=77.19%, 50=21.19%, 100=1.36%, 250=0.20%, 500=0.02% 

  lat (usec)   : 750=0.01%, 1000=0.01% 

  lat (msec)   : 2=0.01%, 4=0.01%, 10=0.01% 

  cpu          : usr=3.71%, sys=35.19%, ctx=262238, majf=0, minf=11 

  IO depths    : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0% 

     submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0% 

     complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0% 

     issued rwts: total=0,262144,0,0 short=0,0,0,0 dropped=0,0,0,0 

     latency   : target=0, window=0, percentile=100.00%, depth=1 

  

Run status group 0 (all jobs): 

  WRITE: bw=184MiB/s (193MB/s), 184MiB/s-184MiB/s (193MB/s-193MB/s), io=1024MiB (1074MB), run=5557-5557msec 

一方でランダムリードに関してはやや悪い結果となりました。
ストレージ以外ほぼ同じCX3401(NVMe SSD)では数倍のIOPSを発揮しており、明らかにレイテンシーが大きいです。
10回以上繰り返しても再現性がありました。

 zyake@penguin:~$ fio -filename=/home/zyake/testfio.file -direct=1 -rw=randread -bs=4k -size=1G -name=rndread  -runtime=60  

rndread : (g=0): rw=randread, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=psync, iodepth=1 

fio-3.33 

Starting 1 process 

Jobs: 1 (f=1): [r(1)][100.0%][r=8268KiB/s][r=2067 IOPS][eta 00m:00s] 

rndread : (groupid=0, jobs=1): err= 0: pid=2459: Sun Feb 25 22:46:53 2024 

  read: IOPS=2095, BW=8382KiB/s (8583kB/s)(491MiB/60001msec) 

    clat (usec): min=13, max=20517, avg=471.98, stdev=287.13 

     lat (usec): min=13, max=20517, avg=472.49, stdev=287.31 

    clat percentiles (usec): 

     |  1.00th=[   27],  5.00th=[   47], 10.00th=[   73], 20.00th=[  219], 

     | 30.00th=[  343], 40.00th=[  424], 50.00th=[  482], 60.00th=[  545], 

     | 70.00th=[  611], 80.00th=[  685], 90.00th=[  799], 95.00th=[  898], 

     | 99.00th=[ 1074], 99.50th=[ 1156], 99.90th=[ 1582], 99.95th=[ 2311], 

     | 99.99th=[ 5342] 

   bw (  KiB/s): min= 5696, max=36352, per=100.00%, avg=8405.65, stdev=3712.32, samples=119 

   iops        : min= 1424, max= 9088, avg=2101.41, stdev=928.08, samples=119 

  lat (usec)   : 20=0.27%, 50=5.61%, 100=7.29%, 250=8.91%, 500=30.90% 

  lat (usec)   : 750=33.19%, 1000=11.78% 

  lat (msec)   : 2=2.00%, 4=0.05%, 10=0.01%, 20=0.01%, 50=0.01% 

  cpu          : usr=2.37%, sys=11.67%, ctx=125856, majf=0, minf=11 

  IO depths    : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0% 

     submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0% 

     complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0% 

     issued rwts: total=125732,0,0,0 short=0,0,0,0 dropped=0,0,0,0 

     latency   : target=0, window=0, percentile=100.00%, depth=1 

  

Run status group 0 (all jobs): 

   READ: bw=8382KiB/s (8583kB/s), 8382KiB/s-8382KiB/s (8583kB/s-8583kB/s), io=491MiB (515MB), run=60001-60001msec  

UFSは仕様上、ソフトウェアの層が厚く、I/Oの処理のオーバーヘッドが大きいそうなので、I/Oのマージが難しいランダムアクセスではこのあたりの仕組みが影響しているのかもしれませんが、残念ながらLinuxコンテナ上で詳細な分析の実施は難しそうでした。
https://media-www.micron.com/-/media/client/global/documents/products/white-paper/ufs_nvme_storage_stack_system_level_performance_in_embedded_systems.pdf?la=en&rev=9ebf709677e54c06ba8688a53b7fe006

一方でランダムライトでは1スレッドでも数万IOPSを発揮しており、CX3401(NVMe)よりも明らかにレイテンシーが低く、スループットが安定していました。
本来ソフトウェアのオーバーヘッドが低いNVMeですが、処理中に明らかにI/Oが停止しているように見える瞬間が存在するので、残容量や利用状況の関係でwear levelingやSLCキャッシュの枯渇等が発生している可能性があります。
しかしながらS.M.A.R.T.を読んだりはできないので、これ以上の深堀りは難しそうです。

zyake@penguin:~$ fio -filename=/home/zyake/testfio.file -direct=1 -rw=randwrite -bs=4k -size=1G -name=rndwrite  -runtime=60  

rndwrite : (g=0): rw=randwrite, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=psync, iodepth=1 

fio-3.33 

Starting 1 process 

Jobs: 1 (f=1): [w(1)][100.0%][w=175MiB/s][w=44.7k IOPS][eta 00m:00s] 

rndwrite : (groupid=0, jobs=1): err= 0: pid=2493: Sun Feb 25 22:48:14 2024 

  write: IOPS=42.5k, BW=166MiB/s (174MB/s)(1024MiB/6164msec); 0 zone resets 

    clat (usec): min=13, max=6629, avg=23.16, stdev=38.16 

     lat (usec): min=13, max=6629, avg=23.23, stdev=38.17 

    clat percentiles (usec): 

     |  1.00th=[   17],  5.00th=[   18], 10.00th=[   19], 20.00th=[   19], 

     | 30.00th=[   20], 40.00th=[   20], 50.00th=[   21], 60.00th=[   21], 

     | 70.00th=[   22], 80.00th=[   23], 90.00th=[   28], 95.00th=[   34], 

     | 99.00th=[   78], 99.50th=[   87], 99.90th=[  182], 99.95th=[  297], 

     | 99.99th=[ 1205] 

   bw (  KiB/s): min=151352, max=182546, per=99.70%, avg=169602.83, stdev=9447.63, samples=12 

   iops        : min=37838, max=45636, avg=42400.67, stdev=2361.85, samples=12 

  lat (usec)   : 20=46.78%, 50=50.90%, 100=2.04%, 250=0.23%, 500=0.02% 

  lat (usec)   : 750=0.02%, 1000=0.01% 

  lat (msec)   : 2=0.01%, 4=0.01%, 10=0.01% 

  cpu          : usr=3.62%, sys=38.73%, ctx=262254, majf=0, minf=9 

  IO depths    : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0% 

     submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0% 

     complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0% 

     issued rwts: total=0,262144,0,0 short=0,0,0,0 dropped=0,0,0,0 

     latency   : target=0, window=0, percentile=100.00%, depth=1 

  

Run status group 0 (all jobs): 

  WRITE: bw=166MiB/s (174MB/s), 166MiB/s-166MiB/s (174MB/s-174MB/s), io=1024MiB (1074MB), run=6164-6164msec 

いずれにせよ、普通に使っている範囲では非常に快適です。

Network

ネットワークアダプターはこのモデルを採用しているようです。

01:00.0 Network controller: MEDIATEK Corp. MT7921 802.11ax PCI Express Wireless Network Adapter

wifi経由でのiperfの結果は次のとおりです

zyake@penguin:~$ iperf3 -c 192.168.10.6  --parallel 1
Connecting to host 192.168.10.6, port 5201
[  5] local 100.115.92.199 port 60286 connected to 192.168.10.6 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  27.8 MBytes   233 Mbits/sec    0   1.66 MBytes       
[  5]   1.00-2.00   sec  28.8 MBytes   241 Mbits/sec    0   1.66 MBytes       
[  5]   2.00-3.00   sec  27.5 MBytes   231 Mbits/sec    0   1.66 MBytes       
[  5]   3.00-4.00   sec  27.5 MBytes   231 Mbits/sec    0   1.66 MBytes       
[  5]   4.00-5.00   sec  28.8 MBytes   241 Mbits/sec    0   1.66 MBytes       
[  5]   5.00-6.00   sec  27.5 MBytes   231 Mbits/sec    0   1.66 MBytes       
[  5]   6.00-7.00   sec  28.8 MBytes   241 Mbits/sec    0   1.66 MBytes       
[  5]   7.00-8.00   sec  27.5 MBytes   231 Mbits/sec    0   1.66 MBytes       
[  5]   8.00-9.00   sec  27.5 MBytes   231 Mbits/sec   34   1.66 MBytes       
[  5]   9.00-10.00  sec  28.8 MBytes   241 Mbits/sec    0   1.66 MBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   280 MBytes   235 Mbits/sec   34             sender
[  5]   0.00-10.06  sec   278 MBytes   232 Mbits/sec                  receiver

並列度を上げてもほとんど結果が変わらなかったです。

[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  75.8 MBytes  63.5 Mbits/sec   18             sender
[  5]   0.00-10.05  sec  73.1 MBytes  61.0 Mbits/sec                  receiver
[  7]   0.00-10.00  sec  62.0 MBytes  52.0 Mbits/sec   11             sender
[  7]   0.00-10.05  sec  59.8 MBytes  49.9 Mbits/sec                  receiver
[  9]   0.00-10.00  sec  93.2 MBytes  78.2 Mbits/sec   16             sender
[  9]   0.00-10.05  sec  91.0 MBytes  76.0 Mbits/sec                  receiver
[ 11]   0.00-10.00  sec  55.4 MBytes  46.4 Mbits/sec   24             sender
[ 11]   0.00-10.05  sec  53.4 MBytes  44.6 Mbits/sec                  receiver
[SUM]   0.00-10.00  sec   286 MBytes   240 Mbits/sec   69             sender
[SUM]   0.00-10.05  sec   277 MBytes   232 Mbits/sec                  receiver

サーバー、クライアントのCPU負荷などはかなり余裕があるようでした。
サーバー側のnetwork adaptorの性能の限界かもしれません。

GPU

Android版 3D Markより。

brya 
Wild Life 
Overall score 
Average frame rate (FPS) 
7 208 
43.16 

まとめ

以上のように、Chromebook上のブラウザ、Linux/Androidコンテナ上で各種ベンチマークを実施しましたが、オーバーヘッドはかなり少なく、CPU/GPUは同スペックのWindowsと同等の結果でした。
ストレージについてはUFS 3.1という主にスマートフォン向けの仕様ではあるものの、eMMCとは異なり、高速なシリアルインターフェースかつ、非同期/並列処理もサポートしていることから、通常の利用でここがボトルネックとなることはほぼないと思われます。
ランダムリードの遅さについても、現実にはランダムリードのみが連続が行われることは考えづらいこと、そもそも本来はページキャッシュが挟まることから、ここまで悪い結果にはならない認識です。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?