Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

239
Visualizações
Docker y -march nativo

Mi aplicación se beneficia enormemente de las características avanzadas de la CPU a las que gcc puede acceder cuando se ejecuta con -march native . Docker puede suavizar las diferencias en el sistema operativo, pero ¿cómo maneja las diferentes CPU? Para construir una aplicación que pueda ejecutarse en cualquier CPU, tendría que construir para amd64, perdiendo mucho rendimiento. ¿Existe una buena manera de distribuir imágenes de Docker cuando la aplicación debe compilarse por separado para cada arquitectura de CPU?

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Docker no maneja la CPU en absoluto. Es solo una composición del espacio de nombres del núcleo , capas del sistema FS (por ejemplo, UnionFS ) y cotización de procesos .
Cuando ejecuta algo en un contenedor docker, es solo un ejecutable que se ejecuta en su sistema operativo , sin virtualización , tiene acceso solo a un conjunto seleccionado de objetos del kernel (por ejemplo, dispositivos) y está conectado a una jerarquía FS que resulta de la superposición de varios FS ( incluido el del contenedor docker).

Por lo tanto, Docker no maneja la CPU en absoluto, es completamente ortogonal a su problema.

Como comentó Peter, hay esencialmente dos formas de despachar CPU:

  1. Carga la biblioteca dinámica correcta (pero cada llamada de función a la biblioteca usa un puntero).
  2. Construye varias versiones del mismo binario enlazado estáticamente y ejecuta la correcta.

El problema principal es que, en ocasiones, las extensiones ISA son ortogonales y esto hace que las combinaciones (es decir, el número de bibliotecas/binarios) crezcan exponencialmente. Entonces, considerando que está tratando con la base de usuarios de Docker, puede simplificar un poco el enfoque (si las combinaciones son un problema):

  1. Haga que se requieran algunas extensiones ISA (si la ausencia de las mismas degradaría demasiado el rendimiento). Para las extensiones opcionales, puede usar uno de los enfoques de arriba.
  2. Cree solo unos pocos contenedores de referencia. Por ejemplo, uno para el amd64 genérico, uno para amd64-avx , uno para amd64-avx2-aesni-tsx y similares. La idea es crear solo unos pocos contenedores que cubran todos , la mayoría y algunos de sus usuarios.

EDITAR
Como señaló BeeOnRope en los comentarios , Dockers tiene una versión que se ejecuta en Windows. Utiliza Hyper-V para ejecutar una máquina virtual Linux con la versión Linux de docker .
Como Hyper-V es un VMM nativo, además de una capa adicional, se aplican las mismas consideraciones.
Del mismo modo, también hay una versión para macOS. Esta vez utiliza un marco de hipervisor basado en xhyve .

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda