Mac Mini M1性能测试

近期对Mac Mini M1版本做了个性能测试。

环境

  1. 本地:Docker运行在Mac Mini 2018 i5-8500B下,分配 3C6G内存;
  2. M1 :Mac Mini M1 8C16G内存,运行在AWS mac2.metal 专用主机上;
  3. Google Colab:CPU和GPU实例,显卡Tesla K80/T4

测试项目主要有以下几项

  1. 软件支持
  2. 虚拟机
  3. iOS/Android模拟器
  4. 峰值内存
  5. IO性能
  6. CPU性能测试
  7. 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模拟器

尚未测试。

峰值内存

运行的软件如下:

  1. IntelliJ IDEA x 2
  2. PD Win11(2C6G)
  3. Navicat Premium
  4. 有道云笔记
  5. php7.4+mysql5.7+nginx
  6. Arduino + Thonny
  7. Safari + Chrome tab x 12
  8. Jupyter lab
  9. HBuilder

此时内存占用在13G左右,主机上的应用已经有点卡,内存压力绿色,虚拟机也有点卡,iStat Menus显示内存压力37%。

  1. 如果再开个Docker(2C2G),内存会黄
  2. 如果再用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性能测试

运行同样的脚本,两设备性能对比。

  1. PHP
  2. Python
  3. 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的优势才会比较明显。

Leave a Comment

豫ICP备19001387号-1