近期对Mac Mini M1版本做了个性能测试。
环境
- 本地:Docker运行在Mac Mini 2018 i5-8500B下,分配 3C6G内存;
- M1 :Mac Mini M1 8C16G内存,运行在AWS mac2.metal 专用主机上;
- Google Colab:CPU和GPU实例,显卡Tesla K80/T4
测试项目主要有以下几项
- 软件支持
- 虚拟机
- iOS/Android模拟器
- 峰值内存
- IO性能
- CPU性能测试
- GPU性能测试
软件支持
软件 | 支持度 |
---|---|
Thonny | OK |
Arduino | OK |
IntelliJ IDEA | OK |
php 7.4 | OK |
mysql5.7 | OK |
nginx | OK |
Parallels Desktop | OK |
Win11 | OK |
Navicat Premium | OK |
Python3.9 | OK |
有道云笔记 | OK |
HBuilder | OK |
CH34x/CP210x驱动 | OK |
Docker | OK, qemu-system-aarch64 运行的 |
虚拟机
Windows 11 ARM版完全正常!x86/x64程序均能正常运行。
由于M1硬件上不支持嵌套虚拟化(Nested Virtualization),所以Linux和Android子系统都跑不起来。。。
iOS/Android模拟器
尚未测试。
峰值内存
运行的软件如下:
- IntelliJ IDEA x 2
- PD Win11(2C6G)
- Navicat Premium
- 有道云笔记
- php7.4+mysql5.7+nginx
- Arduino + Thonny
- Safari + Chrome tab x 12
- Jupyter lab
- HBuilder
此时内存占用在13G左右,主机上的应用已经有点卡,内存压力绿色,虚拟机也有点卡,iStat Menus显示内存压力37%。
- 如果再开个Docker(2C2G),内存会黄
- 如果再用Sublime Text打开一个1.8G左右的SQL文件(占7G左右),内存压力先黄再红,打开进度后面会明显变慢,最终占用15.6G左右,红的不太明显;
内存黄的时候有1G左右的swap,且虚拟机会卡,不能正常使用,iStat Menus显示内存压力62%,而此时CPU占用仅15%左右!
所以,16G内存真的不太够用!现在只是打开APP并没有真正用起来,用起来后内存占用至少再高20%,而Win11没有8G的内存别想用好,所以基本上只要有虚拟机的需求,16G就会成为性能的最大瓶颈!
IO性能
主要测试Redis的读写性能。
测试结果
项目 | 本地 | M1 |
---|---|---|
Redis读写 | 12万次/s | 20万次/s |
CPU性能测试
运行同样的脚本,两设备性能对比。
- PHP
- Python
- PyTorch
所使用的脚本
PHP版
<?php
$start_time = microtime(true);
echo "start {$start_time} \n";
for($i = 1; $i < 10000000; $i++){
$multiple = $i * $i;
}
echo "{$multiple} \n";
$end_time = microtime(true);
echo "end {$end_time} \n";
$cost = $end_time - $start_time;
echo "cost {$cost} \n";
Python版
import time
start_time = time.time()
print('start', start_time)
for i in range(1, 10000000):
multiple = i * i
print(multiple)
end_time = time.time()
print('end', end_time)
cost = end_time - start_time
print('cost', cost)
测试结果
项目 | 本地 | M1 |
---|---|---|
PHP | 0.12s | 0.14s |
Python | 0.86s | 0.55s |
GPU性能测试
主要使用PyTorch和TensorFlow Keras进行测试图片分类模型的训练,epoch都设置为5,对比本地CPU、M1和Google Colab。
项目 | 本地 | M1 | Colab CPU | Colab K80 | Colab T4 |
---|---|---|---|---|---|
PyTorch 衣服分类6万样本28*28 | 42s | 62s | 51s | 31s | |
TensorFlow Keras 衣服分类1.85万样本28*28 | 25s | 82s | 28.5s | 21s |
本地虚拟机Docker里的CPU跑的比Colab上的K80还要快0.2倍左右,这就有点谜了!
另找了个2.4万的样式进行了训练,单个图片尺寸100*100,发现K80的速度比本地快了一倍左右。看来还是数据集大了时GPU的优势才会比较明显。