Русский
Русский
English
Статистика
Реклама

Arm64

Перевод arm64 vs x86_64 для php

14.04.2021 20:10:55 | Автор: admin

В связи со скорым стартом курса PHP-разработчик делимся с вами традиционным переводом материала. Приглашаем также посмотреть запись демо-урока Экосистема PHP.


Сегодня мы поговорим не про обычную аутентификацию электронной почты, дамы и господа. Мечта (веб-хостинга) 90-х все еще жива в Fraudmarc. Насладитесь скетчем Portlandia (с помощью VPN), а затем мы окунемся в истоки нашей серверной компании.

Перемещение битов по сети было нашим делом на протяжении десятилетий. Fraudmarc был создан на основе хостинговой компании с географически избыточными серверами с высоким временем безотказной работы. Это дает нам преимущество в круглосуточной эксплуатации глобальной инфраструктуры, которая обрабатывает важные данные для обмена сообщениями.

Этот сайт сделан на WordPress, и до недавнего времени мы с удовольствием полагались на самую лучшую и самую дорогую компанию провайдера WP. Но наш интерфейс wp-admin уже несколько месяцев страдает низкой производительностью, несмотря на все усилия их дружной команды технической поддержки. Если бы вы спросили меня, то я бы предположил, что они попали в классическую ловушку избыточной инфраструктуры, чтобы добиться более высокой прибыли во все более конкурентном пространстве хостинга WordPress. Я это понимаю, но, спасибо, не надо.

Не можем замедляться, не можем отвлекаться

Сотни предприятий делегируют управление политикой электронной почты Fraudmarc, чтобы они могли сосредоточиться на том, что могут делать только они. Они сосредоточены на максимальном заработке, а электронную почту делегируют нам.

Точно так же Fraudmarc отлично справляется с аутентификацией электронной почты (SPF, DKIM и DMARC), поэтому мы максимально сосредоточены на предоставлении этого сервиса нашим клиентам. Мы не можем отвлекаться на управление собственными серверами веб-хостинга. Мы используем множество других веб-инфраструктур, поэтому такой соблазн всегда присутствует, особенно когда наш старый провайдер WP хостинга начал сдавать позиции. И тут на сцену выходит SpinupWP, новая компания провайдер WP, которая позволяет нам предоставлять базовые сервера, пока они выполняют всю грязную работу с WP. Я с радостью продвигаю другие стартапы, которые делают сеть лучше, поэтому внизу этой статьи есть промо в размере 50 долларов для того, чтобы мотивировать вас попробовать их услуги.

В настоящее время нам полюбились ARM процессоры и мы используем их для многих инфраструктур API, БД и DNS в Fraudmarc, но вы должны быть осторожны, потому что они иногда намного медленнее, чем проверенные старые добрые x86 процессоры.

WordPress - единственное место, где Fraudmarc использует php, поэтому я решил поискать уже существующие бенчмарки php на arm64. PHP на Arm64 от Amazon AWS был хорошим началом, но упущен ряд важных моментов. Их пост был написан до релиза php 8 и ненарочно (?) пропустил однопоточные тесты, которые показывают, что arm64 на 50% медленнее, чем x86. В итоге вы читаете эту статью благодаря php на ARM, и я объясню вам почему.

Тестовая среда

Мы проведем бенчмарки с двумя официальными скриптами php: bench и micro bench. Наше тестирование будет проводиться на Ubuntu 20.04 на инстансах x86_64 c5.large и arm64 c6g.large. Каждый инстанс имеет два виртуальных ядра (vCPU) и 4 ГБ памяти. Php 7 устанавливается из репозитория Ubuntu по умолчанию, а php 8 из ondrej/php PPA. Вот конкретные версии, которые мы использовали:

PHP 7.4.3 (cli) (built: Oct 6 2020 15:47:56) ( NTS )

Copyright (c) The PHP Group

Zend Engine v3.4.0, Copyright (c) Zend Technologies

with Zend OPcache v7.4.3, Copyright (c), by Zend Technologies

PHP 8.0.3 (cli) (built: Mar 5 2021 07:54:13) ( NTS )

Copyright (c) The PHP Group

Zend Engine v4.0.3, Copyright (c) Zend Technologies

with Zend OPcache v8.0.3, Copyright (c), by Zend Technologies

Подобно сжатию SPF, этот WP-сайт интенсивно использует кэширование в сотнях периферийных точек сети. Это означает, что запросы обслуживаются очень быстро из мест, близких к посетителям (или серверов приема почты в случае сжатия SPF), и продолжают работать, даже если исходный сервер выходит из строя. Серверы, которые мы тестируем, имеют два виртуальных ядра, которых достаточно для наших нужд, поскольку подавляющее большинство запросов обрабатываются периферийными узлами без необходимости выполнения какого-либо php на исходном сервере.

Мы протестируем серверы с помощью 14 параллельных бенчмарков, так как это должно соответствовать нагрузкам запрашиваемого оборудования на уровне 50%200%. Очевидно, что мы не можем использовать более 100% оборудования (два виртуальных ядра), но из-за природы интернет-трафика, склонной к пиковой нагрузке, в очереди постоянно возникает больше работы, чем может обработать сервер. В приведенной выше публикации о AWS бенчмарки производились только при 100% нагрузки запрашиваемого оборудования, что вряд ли когда-либо произойдет в реальной жизни. Мне интереснее понаблюдать за недонагруженными и перегруженными случаями, когда количество задач не совпадает идеально с количеством виртуальных ядер. В частности, я хочу увидеть штраф за многозадачность, когда ОС выполняет больше задач, чем у нее есть виртуальных ядер.

Первоначальные результаты

Среднее время выполнения (в секундах) за несколько запусков. 2x, 3x и 4x представляют количество одновременно запущенных бенчмарков.

Зеленый столбец показывает, что AWS не показывал: однопоточный php на 50% медленнее на инстансах с arm64 Graviton2. Ну дела. Но это еще не все.

Белый столбец показывает, что произошло, когда мы выполнили два бенчмарка одновременно. При полной нагрузке на оба виртуальных ядра инстанса arm был на 20% быстрее. Arm продолжал лидировать по мере увеличения количества параллельных бенчмарков.

Micro_bench.php показал похожую историю:

Давайте визуализируем эти результаты с теми же цветами столбцов.

Анализ

Я полагаю, что то, что мы наблюдаем здесь, это разница при одновременной многопоточности и полной нагрузке на ядра процессора. Поставщики десктопных ПК и серверные компании склонны отождествлять потоки и ядра. Типичное облачное виртуальное ядро (vCPU) это только поток, а не целое физическое ядро. Для сравнения представьте, что два потока используют одно ядро процессора. Примерно так это работает в средах x86. Сервера arm в этом отличаются. C6g работает на процессоре AWS Graviton2 arm64 без SMT, поэтому виртуальное ядро представляет собой реальное ядро ЦП.

Php на arm64 был на 50% медленнее, чем php на x86, если сравнивать физические ядра. Я ожидаю, что со временем это улучшится, поскольку AWS и другие разработчики продолжают выпускать для php патчи, связанные с arm. Php на arm оказался уже достаточно быстрым, чтобы это имело значение. Если сравнивать виртуальные ядра, то arm64 был быстрее и значительно дешевле, чем x86. По сравнению с x86 AWS взимает примерно на 20% меньше за виртуальное ядро на arm64. Их виртуальное ядро arm64 представляет собой полноценное физическое ядро, тогда как виртуальные ядра x86 представляют собой только потоки, совместно использующие одно физическое ядро процессора. Позвольте мне представить это вам визуально:

x86 (зеленая стрелка) был быстрее, чем arm (красная стрелка) с точки зрения физических ядер. В каждом из наших тестовых инстансов было по два виртуальных ядра, что подразумевает только одно физическое ядро на x86 и два ядра на arm. На минимальном уровне параллелизма одно ядро x86 запускает php быстрее всех.

Посмотрите вправо от красной стрелки, и вы заметите, где arm действительно раскрывается. Благодаря тому, что виртуальные ядра arm представляют собой полноценные ядра ЦП, инстанс с двумя виртуальными ядрами arm выполняли два одновременных бенчмарка на той же скорости.

arm64 быстрее при сравнении виртуальных ядер

Помните, что произошло, когда мы запустили две и более задач на эти два vCPU инстанса?

Зеленые стрелки показывают, насколько фактические ядра процессора на arm превосходят совместно используемые (многопоточные) ядра на x86.

Заключение

В одно предложение: этот сайт теперь работает на arm

На заведомо дорогой AWS виртуальные ядра ARM оказались на 20% дешевле, чем виртуальные ядра x86, не говоря о том, что требуется избыточное двукратное выделение виртуальных ядер, чтобы соответствовать количеству физических ядер эквивалентного инстанса на базе ARM. Есть что-то очень естественное в том, чтобы отделить выбор сервера от управления WP, особенно после нескольких месяцев низкой производительности от дорогостоящей WP-платформы. Замечательный плагин Query Monitor показывает, насколько быстро загружаются наши админские страницы.

Наш исходный сервер теперь выполняет WordPress (php) на выбранном НАМИ arm процессоре, но управляется настоящими экспертами по WP, поэтому мы по-прежнему сосредоточены на инновациях в электронной почте, таких как универсальный SPF решении нового поколения, которое преодолевает ограничения поиска DNS и другие нюансы записей SPF. Добавляя универсальную строку SPF в начало любой записи SPF, вы можете легко и практически мгновенно увеличить скорость доставки электронной почты.

Если вы находитесь в ~40% сети, которая работает на WordPress, вам следует обдумать переход на arm, потому что не так часто можно улучшить производительность при одновременном снижении затрат. Мы не нашли провайдеров WP хостинга, предоставляющих такие решения, но это только вопрос времени. Будут ли они экономить на наших конечных пользователях - остается только догадываться. Похоже, мы были первым клиентом SpinupWP, который использовал arm86 вместо x86_64, но Ubuntu имеет отличную поддержку arm, поэтому наша единственная проблема заключалась только в том, что изначально не работали бэкапы. Надеюсь, кто-то из SpinupWP увидит это и обновит свой сценарий установки, чтобы установить подходящую для архитектуры версию rclone.

А вот и реферальная ссылка на 50 долларов на счет SpinupWP на случай, если вы захотите поддержать другой небольшой стартап, который занимается важными делами.


Узнать подробнее о курсе PHP-разработчик.

Смотреть вебинар Экосистема PHP.

Подробнее..

Перевод Neocortix делает вклад в исследования COVID-19, открывая мир 64-битных Arm устройств для FoldingHome и RosettaHome

31.07.2020 10:05:30 | Автор: admin
Компания Neocortix, специализирующаяся на распределенных вычислениях, анонсировала завершение портирования Folding@Home и Rosetta@Home на 64-битную платформу Arm, тем самым позволяя современным смартфонам, планшетам и встраиваемым системам типа Raspberry Pi 4, вносить свой вклад в исследование и разработку вакцины от COVID-19.





Четыре месяца назад Neocortix анонсировала запуск порта Rosetta@Home, позволив устройствам Arm участвовать в исследовании свертки белков, направленном на поиск вакцины для COVID-19. В тот момент компания сообщила, что ведутся работы над портированием на Arm Folding@Home другого проекта распределенных вычислений, нацеленного на достижение той же цели.

Теперь Neocortix сообщила об успехе по обоим фронтам. Мы портировали Folding@Home и Rosetta@Home для устройств, основанных на Arm, чтобы позволить миллиардам высокопроизводительных мобильных устройств работать над поиском вакцины от COVID-19, объясняет Ллойд Уоттс, основатель и генеральный директор Neocortix, Мы увидели возможность использования нашей платформы Neocortix Cloud Services для помощи наиболее востребованным научным проектам в их нужде в вычислительных ресурсах, и сделали это в большом масштабе.



Мы движемся в будущее с триллионом соединенных между собой устройств, и инновация заключается в том, что этим подходом решается одна из сложнейших задач связывания множества устройств из разных точек мира в единое облако, добавляет Пол Уильямсон, вице-президент и управляющий по связям с бизнес клиентами Arm, Сотрудничество Arm с Neocortix означает, что технологии Arm теперь могут дать свой вклад в критически важные исследования COVID-19 и это потрясающе видеть, как глобальная экосистема Arm разработчиков объединяется, чтобы совместно поддержать эти усилия.

Мы наблюдаем растущую вычислительную мощность телефонов и других мобильных устройств в последние годы, соглашается Грег Боуман, директор проекта Folding@Home, Это сотрудничество между Neocortix и Arm предоставило нам идеальную возможность использовать мобильные ресурсы для ускорения наших исследований по COVID-19.

Folding@Home и Rosetta@Home уже работают на платформе распределенных вычислений Neocortix Scalable Compute и передают результаты обратно в научные проекты. С дополнительными техническими деталями можно ознакомиться в Коронаблоге Neocortix.
Подробнее..

ARM сервера более производительные и более дешёвые

31.12.2020 14:09:18 | Автор: admin

В этом году Apple потрясла рынок десктопных процессоров чипом Apple M1 и устройствами на нём. Похожее событие произошло в мире облачных вычислений в прошлом году. AWS выпустили новый тип сервера на собственных ARM процессорах Graviton2. По заявлениям Amazon, соотношение производительности к цене у новых процессоров на 40% выше, чем у аналогов на x86. Ещё одно недавнее обновление - сервера Amazon RDS (облачный сервис, предоставляющий сервера баз данных) на Graviton2. Я запустил несколько бенчмарков и нагрузочный тест реального бэкенд приложения, чтобы проверить настолько ли хороши сервера на ARM процессорах и узнать какие проблемы совместимости могут возникнуть.

Производительность

Я сравнивал сервера типов t4g.small (ARM) и t3.small (x86) на AWS. На момент написания статьи цена за 1 час на ARM сервер составляет $0.0208, а на x86 сервер - $0.0168. Сервер на ARM на 20% дешевле.

Сперва я провёл нагрузочный тест при помощи wrk, запустив на серверах свежую установку recap.dev

Это шаблон docker-compose с 4 процессами. Веб-сервер, принимающий запросы и сохраняющий их в RabbitMQ и отдельный фоновый процесс, сохраняющий запросы группами по 1000 в PostgreSQL.

Я запускал wrk на сервере t3.2xlarge, находящемся в том же регионе, используя следующую команду:

wrk -t24 -c1000 -d300s -s ./post.lua <hostname>

Она непрерывно посылает запросы в течение 5 минут, используя 24 потока и 1000 HTTP соединений.

Результат для сервера t4g.small (ARM):

  24 threads and 1000 connections  Thread Stats   Avg      Stdev     Max   +/- Stdev    Latency   473.53ms   53.06ms   1.96s    81.33%    Req/Sec   115.83     96.65   494.00     71.32%  620751 requests in 5.00m, 85.84MB read  Socket errors: connect 0, read 0, write 0, timeout 225Requests/sec:   2068.48Transfer/sec:    292.90KB

Для сервера t3.small (x86):

 24 threads and 1000 connections  Thread Stats   Avg      Stdev     Max   +/- Stdev    Latency   600.28ms   70.23ms   2.00s    72.53%    Req/Sec    92.77     82.25   404.00     70.26%  488218 requests in 5.00m, 67.51MB read  Socket errors: connect 0, read 0, write 0, timeout 348Requests/sec:   1626.87Transfer/sec:    230.37KB

Сервер на ARM обслужил на 27% больше запросов в секунду в среднем на 26% быстрее.

Затем я запустил несколько бенчмарков из набора тестов Phoronix.

В тесте pts/compress-7zip-1.7.1t4g.small (ARM) выдал 6833 MIPS, а сервер t3.small (x86) - 5029 MIPS. ARM сервер был производительнее на 35%.

Сервер на ARM процессоре также завершил бенчмарк pts/c-ray быстрее более чем в 2 раза. 958 секунд ушло у сервера на x86 процессоре против 458 секунд у сервера с ARM процессором.

Я также запустил несколько тестов pts/ramspeed, измеряющих пропускную способность ОЗУ при выполнении различных операций.

Тип бенчмарка

t4g.small (ARM)

t3.small (x86)

Add/Integer

50000 МБ/c

13008 МБ/c

Copy/Integer

58650 МБ/c

11772 МБ/c

Scale/Integer

31753 МБ/c

11989 МБ/c

Triad/Integer

36869 МБ/c

12818 МБ/c

Average/Integer

44280 МБ/c

12314 МБ/c

Add/Floating Point

49775 МБ/c

12750 МБ/c

Copy/Floating Point

58749 МБ/c

11694 МБ/c

Scale/Floating Point

58721 МБ/c

11765 МБ/c

Triad/Floating Point

49667 МБ/c

12809 МБ/c

Average/Floating Point

54716 МБ/c

12260 МБ/c

Вкратце, ОЗУ на сервере t4g.small с процессором Graviton2 была быстрее от 3 до 5 раз.

Если смотреть только на производительность, переход на ARM сервера это одни преимущества. Больше производительности за меньшие деньги.

Совместимость

Безусловно, один из самых больших вопросов при переходе с одной архитектуры процессоров на другую это совместимость программного обеспечения.

Некоторая часть ПО уже перекомпилирована для ARM процессоров. Например, Docker был доступен в форматах .rpm и .deb, как и большая часть образов (да, образы Docker требуют пересборки для разных архитектур). Однако, docker-compose не был скомпилирован для ARM процессоров, что вылилось в несколько часов сборки различных зависимостей из исходного кода. Скорее всего, ситуация улучшится в будущем, когда сервера на ARM станут более распространены. Сейчас, однако, в некоторых случаях, переход на ARM может принести больше затрат, чем преимуществ.

Зато сервера Amazon RDS на Graviton2 не требуют никакой настройки и позволяют получить все преимущества серверов на ARM процессорах без проблем с совместимостью.

Ввиду преимуществ ARM процессоров мы также собрали Docker образы recap.dev для архитектур arm/v7 и arm64.

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru