Протестировал новый iMac на M1 для разработки. Вышло неожиданно хорошо
Релиз нового процессора от Apple был для меня долгожданным. И это неудивительно: у меня всегда в домашних и рабочих компьютерах были камни от AMD или Intel. Эта ниша нуждалась в революционном прорыве. Так я для себя и воспринимал раньше слухи вокруг Apple Silicon.
Однако после релиза выяснилось, что 32-битные приложения не поддерживаются. И это было первоначальным разочарованием. 32-битная архитектура очень часто используется в веб-разработке, а это именно моя сфера деятельности.
Собственно, стек, с которым я работаю, состоит из: Python, JavaScript, PHP, Go, MySQL/MariaDB, PostgreSQL, Elasticsearch, Redis и Docker.
Главное из этого Docker – это программа, которая позволяет «упаковать» приложение со всем его окружением и зависимостями в виртуальный контейнер, который можно развернуть практически на любой ОС. Запустил контейнер с нужной средой, вжух-вжух, и в продакшн. И как раз у него были большие проблемы с M1.
Оставалось только ждать…
Прошло время, на Reddit вовсю говорили о поддержке 32-битных приложений через эмуляторы, случился релиз Docker под M1, и Apple выпустила новый iMac.
Теперь я могу для себя решить: стоит брать рабочую лошадку на новых процессорах Apple Silicon или нет.
Взял iMac на M1 и начал тестировать
На чем работаю уже 5 лет:
Начал собирать в Docker образы, с которыми обычно работаю, и все собралось без проблем, за исключением Elasticsearch (поисковая система, написанная на Java). Использовал очень древнюю версию, пришлось обновиться до более свежей, и все завелось.
Ради интереса сравнил скорость сборки приложения на React (JavaScript-библиотека для написания веб-приложений), собранного через webpack (сборщик модулей JavaScript).
На M1 собралось за 17.66 секунд:
На старом Intel — за 23.56 секунд.
Собирал и другие приложения через webpack, и везде разница была 25-30%.
Захотелось сравнить сборку образов докера, хоть это делается и не так часто, но зато работу с сетью можно затестить.
Образ PHP 7.3 (язык программирования, чаще всего использующийся в веб-приложениях) с нужными мне зависимостями на М1 собрался за 152 секунды.
А на Intel за 301 секунду. Разница весьма ощутима.
А что с архивацией? pbzip2(архиватор, который может использовать сразу несколько ядер процессора) работает отлично: использует 7 ядер точно. На счет последнего не уверен.
htop (консольная утилитка для мониторинга процессов) показывает только 7 ядер и, судя по нагрузке, 8 ядро не используется. Думаю, оно зарезервировано на другие, системные цели.
Таким образом, 4.4 гигабайта данных разного типа на М1 сжимается через pbzip2 за 1.10 минуты.
На моем Intel — за 1.41 минуты.
А что с нагревом
Хотелось бы пару слов сказать про температуру.
Средняя температура с работающим докером при использовании браузера и IDE (среда разработки) – 36-38°C.
При использовании pbzip2 получалось прогреть до 55°C, после чего кулеры начинали крутиться с
5500 RPM, и все остывало.
Только играя в Dota 2, получилось разогреть до 62°C.
А вот моя любимая Half-Life 2 не работает 🙁
В итоге я однозначно решил обновиться до компьютера с М1, уж очень радует температура процессора, но пока хочу MacBook Pro 16 c Apple Silicone.
А вообще, тем, кто работает с Big Data или в DevOps, однозначно рекомендую, если вы, конечно, не используете сервера с Xeon для локального деплоя.
Источник
Первый опыт: Mac Mini на M1
Очень кратко о моем первом опыте использования (бенчмарков не ждать).
Сразу после онлайн презентации, где Apple представили свои новые продукты на собственном чипе, я отправился на сайт и, выбирая между MacBook Pro и Mac Mini, остановился на втором. Так как большого смысла в том, чтобы брать еще одну прошку в наше «работай из дома» время я не увидел, плюс 13-дюймовый экран мне показался маленьким, а единственной фичей, за которую я бы предпочел макбук, был трекпад. Поэтому наличие Magic Mouse, валяющейся на нижней полке в шкафу, развеяло все сомнения. Выбор пал на Мак Мини с 16Гб оперативной памяти и 1Тб SSD.
Начнем с того, что заказ обещали привезти 24-27 ноября, а привезли 17. Шел он ко мне из Китая и дошел успешно. Минималистичная упаковка, минимум бумажек и кабель питания — в общем все как полагается.
В коробке у нас небольшой серый блок с 2 USB-A, 2 USB-C, HDMI, Ethernet, разъемом для питания и небольшим отверстием системы охлаждения.
Первый запуск
Этот шаг, как и полагается, прошел быстро: язык, конфиденциальность, всякие лицензионные соглашения, ну вы понимаете. UI как и ожидалось на высоте, работает шустро и красиво — на выходе у меня 28-дюймовый 4к монитор, встроенный GPU справляется без особых усилий. (в отличии от моей 1660 Ti, которая не всегда справляется с этим монитором)
Переходим к софту
Я в основном занимаюсь web-разработкой: Java на бакенде и Vue (node js для сборки) на фронте, работаю в IDE от Jetbrains. С чего здесь начать? С того, что ничего из этого не портировано под новую архитектуру, и именно тем, как они справились с этой проблемой, я был восхищен. Сразу после настройки системы, я пошел шерстить гитхабы на предмет того, как все это добро собрать под новый проц (кто-то подготовил EA версии, кто-то патчи, кто-то еще тестирует, а кто-то пока даже не чешется).
Первое, что я решил сделать: установить хром, чтобы восстановить все свои закладки и начать настраивать среду. Ребята из гугла предоставили версию под M1. Установил, и первым его действием был вопрос — хочу ли я сделать его браузером по умолчанию, а вторым — краш при попытке войти в аккаунт. Удалив хром, я немного приуныл. Ну что же, мне ничего не оставалось, как довериться Apple и начать вести себя как юзер, вместо того, чтобы шерстить трекеры на предмет готовности той или иной софтины к M1.
Rosetta 2
Я просто пошел и скачал тулбокс от Jetbrains, установил его и запустил, на что ОС мне выкинула окошко, мол, этот софт еще не поддерживает новую архитектуру, хочу ли я установить Rosetta и запустить через неё, на что я ответил да и больше ни разу не видел этого окна. Тулбокс запустился, я затянул им phpstorm и IDEA, и они запустились без каких-либо проблем и полностью прозрачно.
IDEA подтянула мне последнюю версию JDK, и дальше все было как обычно — стабильно и быстро, каких-то реальных провалов по производительности я не заметил, за исключением пожалуй того, что обе IDE запускались дольше секунд на 5-10. (В комментариях меня попросили отметить, что это все же время холодного старта — когда вы видите цветной прямоугольник на котором написано название запускаемой IDE. Что вполне ожидаемо исходя из документации Rosetta 2. Однако все остальные операции остались без заметных изменений, например загрузка проекта). Также немного просел хот-релоад, теперь он занимает на 2-3 секунды дольше чем обычно, примерно 5%-10%.
Дальше дело было за фронтом. Также просто скачал установщик с сайта node.js и запустил. Один из свежих проектов подтянул зависимости и собрал все, что ему нужно (с помощью node-gyp). Фронт собирается также медленно, как и на моем PC, какой-то заметной разницы я не обнаружил. Второй проект упал на сборке node-sass, но после обновления зависимостей все завелось.
Spotify, Steam — также спокойно запустились через Розетту. Ради интереса я попробовал запустить Доту, она запустилась, играть можно, но просадки ФПС сильно заметны. Другие игрушки, оптимизированные под платформу Эплла, играются куда лучше.
Температура Mac Mini, за время его активного использования, ощутимо не изменялась (корпус все время был холодный).
Не смотря на то, что довольно много приложений все еще не портировано, устройство имеет хороший потенциал, ведь даже приложения, запущенные через Rosetta, практически не отстают от их же производительности на нативной х86_64 платформе. (В сравнение с моей текущая конфигурацией AMD Ryzen 7 2700X/32Gb ОЗУ/SSD) А общая производительность системы с запущенными несколькими средами разработки, браузером с десятками вкладок, вебпак сервером с хот-релодом и объемного приложения на спринге не может не впечатлить, учитывая наличие всего 16Гб оперативной памяти. Будет интересно посмотреть, что будет, когда все эти приложения будут запущены нативно.
По итогу, пользоваться девайсом мне понравилось. Я понимаю, что на пути будет много трудностей, но могу с уверенностью сказать, что покупкой я доволен и буду пытаться переносить всю свою разработку с моего Linux PC на новый мак мини.
Если вам хочется несколько бенчмарков можете обратится к это статье:
Источник
Mac Mini на M1: взгляд изнутри
Ранее мы говорили про Mac Mini в дата-центрах. В этой статье мы заглянем «под капот» новейшего mac на базе SoC M1 в прямом и переносном смыслах.
Как известно, гостей встречают по одежке. Наш сегодняшний гость, новый Mac Mini, минимально отличается от своего предшественника 2018 года. Первое отличие заключается в предоставляемых интерфейсах ThunderBolt. Старое поколение имеет 4 порта, а новое — всего 2. Второе заметное отличие касается окраса Mac Mini. Устройства с процессорами Intel поставляются в цвете Space Gray, а c M1 — в цвете Silver.
Вероятно, Apple таким образом смещает акцент в сторону внутреннего содержимого Mac Mini. Минимальные различия во внешнем виде разных поколений побуждают уделить больше внимания их производительности. Бонусом — снижение рисков, сроков и расходов на разработку новых комплектующих.
Мы пойдем на поводу у желания посмотреть внутрь Mac Mini и разберем его.
Внутренний мир
«Ключами» к внутреннему миру Mac Mini являются отвертки Torx: T5, T6 и T8. Как и в предыдущем поколении, за пластиковой заглушкой находится алюминиевая крышка, прикрученная шестью болтами. Легко заметить, что в новом Mac Mini очень много пустого пространства. Снимаем вентилятор.
Mac Mini 2020 без вентилятора
На соединение материнской платы наклеена черная полоска, похожая на изоленту. Снятие данной наклейки лишает гарантии. В новом Mac Mini нет модернизируемых частей, поэтому поводов извлекать основную плату из корпуса тоже нет.
Основная плата вне корпуса
Материнская плата без передней панели и динамика
Материнская плата без корпуса, передней панели и динамика выглядит невероятно миниатюрной. На переднем плане видно два железных компонента без опознавательных знаков, которые, скорее всего, являются накопителем. Самое интересное ждет под воздуховодом и радиатором. Откручиваем оставшиеся 8 болтов и получаем доступ к сердцу Mac Mini.
Под радиатором можно увидеть сразу три чипа, помеченных логотипом Apple. Однако известный M1 узнается сразу. Рядом с основным кристаллом процессора находятся два модуля оперативной памяти LPDDR4X. Множество чипов не маркированы, тем не менее, узнаются следующие:
- MegaChips MCDP2920A4, конвертер DisplayPort 1.4 в HDMI 2.0;
- Broadcom BCM57782, гигабитный Ethernet-контроллер;
- 2x Intel JHL8040R, ретаймер ThunderBolt 4;
- Apple 1096 и 1097.
Микросхемы на обратной стороне материнской платы:
- 2x Texas Instruments CD3217B12;
- Renesas 501CR0B;
- Fresco Logic FL1100SX, контроллер PCIe-to-USB;
Близкое расположение всех компонентов способствует повышению скорости обмена информацией, но это лишь теория. Протестируем Mac Mini на практике и сделаем собственные выводы.
Производительность
Процессор M1 состоит из 8 ядер на архитектуре ARM64. Однако это не обычные ядра. Половина из них — высокопроизводительные ядра FireStorm, а остальные — энергоэффективные IceStorm. Официальной информации по TDP процессора нет, но по оценкам тепловыделение не превышает 21 ватта.
Установка транслятора Rosetta 2
Первый тест в нашем плане — GeekBench5, быстрый тест производительности процессоров. На Mac с M1 бенчмарк можно запустить нативно и через транслятор x86 в arm64. Последний по умолчанию отсутствует в системе, но его можно легко установить с помощью следующей команды:
Операционная система также предложит установить транслятор при запуске старого приложения.
Главное окно GeekBench5
При наличии Rosetta 2 в GeekBench5 можно выбрать архитектуру Intel. Это позволит измерить производительность Mac Mini на неадаптированных «классических» приложениях.
Архитектура приложения | Single-Core Score | Multi-Core Score |
---|---|---|
Apple Silicon | 1742 | 7577 |
Intel | 1297 | 6012 |
Intel Core i5-10500 | 1176 | 5979 |
Intel Core i9-9900 | 1246 | 7687 |
Графический ускоритель | OpenCL Compute Score |
---|---|
Apple M1 | 19465 |
GeForce GTX 970M | 19743 |
Графический ускоритель | Metal Compute Score |
---|---|
Apple M1 | 22022 |
NVIDIA GeForce GTX 980 | 21820 |
В GeekBench есть секция Compute, которая измеряет производительность графического ускорителя. В этом Mac Mini графическим ускорителем выступают ядра процессора. Мы провели тесты на доступных для M1 технологиях: OpenCL и Metal. Процессор Apple показывает хороший результат, даже в сравнении с внешними видеокартами.
В Apple M1 присутствует 16-ядерная система Neural Engine для работы с нейронными сетями и машинным обучением. Нам хотелось провести тестирование с помощью AI Benchmark, однако данный тест не запускается из-за ошибки определения процессора.
Поэтому мы выбрали более простой тест — обучение сверточной нейронной сети (CNN) для классификации рукописных цифр на датасете MNIST. Мы применили скрипт, адаптированный для использования с форком Tensorflow для macOS. В данном тесте три ключевых параметра:
- среднее время прохождения эпохи;
- среднее время прохождения шага эпохи;
- точность полученной модели.
Мы провели тесты не только на подопытном Mac Mini, но и на некоторых видеокартах и процессорах для дата-центров. Вот что у нас получилось:
Устройство | Среднее время эпохи, с | Среднее время шага, мс | Точность модели |
---|---|---|---|
Apple M1 (CPU) | 15 | 33 | 99.81% |
Apple M1 (GPU) | 19 | 40 | 99.36% |
Nvidia GeForce GTX1080 | 3 | 6 | 99.85% |
Intel® Xeon® Gold 6240 | 9 | 17 | 99.86% |
Nvidia Tesla A100 | 3 | 3 | 99.87% |
Nvidia Tesla V100 | 3 | 3 | 99.94% |
Nvidia Tesla P40 | 3 | 5 | 99.89% |
Настольный компьютер не может «порвать» видеокарты из серверного сегмента, но если взять во внимание низкое энергопотребление, Apple M1 показывает себя как серьезного конкурента.
Заключение
Новый Mac Mini на M1 навевает мысли о том, что скоро настольные компьютеры перейдут на архитектуру ARM64. Apple сделала устройство, которое преподносит пользователю что-то новое и непривычное, но не отбирает старое и привычное, позволяя запускать приложения, созданные под другую архитектуру.
Как вы думаете, сможет ли архитектура ARM полностью вытеснить x64?
Источник