Как ускорить компиляцию G ++ на архитектуре ARM (QEMU) - PullRequest
0 голосов
/ 08 мая 2020

В одном из своих проектов на основе docker я компилирую Mod security для сборки образа для двух BASE_ARCH с QEMU .

  • AMD 64 : работает как шарм, задание gitlab CI создает образ за 17 минут
  • ARM64 / V8 : превышение максимальной продолжительности gitlab (1 час), задание CI не выполняется (но я почти уверен, что оно будет успешным, если у него будет больше времени)

Вот docker_arm job

docker_arm:
  stage: build
  image: docker:19.03.1
  services:
    - docker:dind
  before_script: 
    - echo $CI_JOB_TOKEN | docker login -u gitlab-ci-token --password-stdin $CI_REGISTRY
    - apk update
    - apk add -q qemu
    - echo 'Building $CI_PROJECT_NAME'
  script: 
    - docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
    - docker build --build-arg BASE_ARCH=arm64v8 -t $CI_PROJECT_NAME:arm64v8-latest ./src
    - docker tag $CI_PROJECT_NAME:arm64v8-latest $CI_REGISTRY/zar3bski/$CI_PROJECT_NAME:arm64v8-latest
    - docker push $CI_REGISTRY/zar3bski/$CI_PROJECT_NAME:arm64v8-latest

Мне было интересно, могу ли я настроить G ++ или qemu , чтобы ускорить работу, чтобы это задание могло пройти. Я знаю, что, поскольку QEMU имитирует архитектуру ARM64 / V8, я никогда не получу нативной производительности. Все, что я ищу, - это успешная работа (даже если для этого потребуется 40 минут). По вашему мнению, какой из следующих вариантов с большей вероятностью обеспечит стабильный конвейер:

  • Оптимизация QEMU
  • Оптимизация G ++
  • с использованием другой базы ARM docker:19.03.1 для создания образа (возможно ли это только в Gitlab?)

Edit

Кажется невозможным запустить image: arm64v8/docker:19.03.1 на общих бегунах Gitlab

...