AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 708104
Accepted
John Smith
John Smith
Asked: 2022-07-01 02:50:13 +0800 CST2022-07-01 02:50:13 +0800 CST 2022-07-01 02:50:13 +0800 CST

Qual é a quantidade mínima de memória necessária para iniciar um processo em um sistema baseado em Linux?

  • 772

As rotinas em ambas as linguagens são baratas : as goroutines têm 2 KB cada, enquanto os processos Elixir têm 0,5 KB cada.

Entendo que para iniciar um processo no BEAM é necessário 0,5KB de memória. Por ser tão leve no caso de Elixir e Erlang, e em menor grau no caso de Go , parece ser a vantagem de usar esses tempos de execução quando comparados com outras linguagens que dependem de seus próprios processos e threads não tão baratos ou em os processos e threads do SO subjacente (que também supostamente requerem mais memória).

Eu quero saber quanta memória requer iniciar um processo em um sistema baseado em Linux. Estou ciente de que o uso de memória depende do que o processo está fazendo. Mas suponho que há um custo de memória de apenas iniciar um processo que não faz nada). Qual é esse custo?
Onde posso ler mais sobre isso? Existem arquivos / comandos com os quais posso inspecionar isso?

memory process
  • 1 1 respostas
  • 125 Views

1 respostas

  • Voted
  1. Best Answer
    Stephen Kitt
    2022-07-01T04:12:34+08:002022-07-01T04:12:34+08:00

    No Linux, qualquer thread ou processo incorre pelo menos no custo de a task_structno kernel; no meu sistema, pahole task_structme diz que isso leva 9.344 bytes. No espaço do usuário, um thread também precisará de uma pilha para ser alocado a ele, mas o custo real disso dependerá de quanto espaço de pilha ele realmente usa (já que apenas as páginas que são tocadas serão alocadas).

    Você pode usar os programas de exemplo em man pthread_attr_inite pthread_create. O último, em particular, permite controlar o tamanho da pilha e o número de threads criados, o que significa que o custo de um único thread no espaço do usuário pode ser estimado executando-o e medindo a quantidade de memória que ele usa. GNU time, com média de um grande número de execuções, sugere uma penalidade de 48KiB por thread neste cenário específico, com uma pilha de 64KiB.

    A bifurcação é um pouco mais cara, pois envolve a criação de um novo espaço de endereço para o processo, com estruturas associadas no kernel e nas entradas da tabela de páginas.

    • 2

relate perguntas

  • Um processo pai pode alterar o ambiente de seu filho?

  • Como 'ejetar' obtém processos para fechar identificadores de arquivo?

  • Alto uso de memória de "git status -z -u"?

  • Programa de monitoramento de recursos de memória

  • Um processo pode alocar memória cache de forma que o kernel possa aproveitá-la quando necessário?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve