Como especificar os requisitos de VM com base em dados históricos de processos temporários no Linux?

2

Recebi uma tarefa para separar os serviços em uma de nossas VMs principais (Amazon EC2) e VMs adicionais apropriadas para atender às necessidades de serviços.

Os tipos de serviços com os quais estou lidando são principalmente cronjobs do php, que coincidem com o nosso aplicativo da web. Eles são recursos e IO pesado, portanto, a necessidade de descarregá-los em outro lugar.

Essas tarefas não têm PIDs consistentes, elas surgem e desaparecem conforme a necessidade, então algo como "grepping" para a saída args de ps é a única maneira que posso pensar em armazenar esses dados. Em outras palavras, o que é consistente é o grepping para o processo da seguinte forma: ps -eo pid,pcpu,%mem,vsize,args | grep "php[ ]/path/to/script.php" No entanto, alguns dos processos são executados por apenas alguns segundos e depois morrem.

O objetivo é que eu precise entender como provisionar melhor as VMs com base nos recursos que esses processos estão realmente usando, a fim de economizar dinheiro.

Para citar: "Estimar o uso do servidor com base em uma média de 1 semana"

    
por Mike 01.12.2014 / 22:19

1 resposta

0

Honestamente, o pedido parece um pouco suspeito para mim. Você não pode simplesmente mover as coisas e ver como é a carga no novo sistema? Dito isto, sobre o seu problema real.

Você precisa descobrir o uso de recursos dos processos (e não de todo o sistema).

Opção 1:
Na verdade, você pode iniciar os processos com algum tipo de ferramenta de criação de perfil ou rastreamento (por exemplo, perf e strace e obter dados bastante precisos. Isso pode ser muito trabalhoso e é provavelmente um excesso para estimar o agregado de um grupo de processos.

Opção 2:
Capture dados sobre os processos logo após o lançamento usando os contadores fornecidos pelo kernel por processos. Estes podem ser encontrados em /proc/<pid>/... . É mais provável que você queira usar uma ferramenta como pidstat para reunir esses dados para você. Por exemplo:

[root@ny-kbrandt01 ~]# find / -iname '*' 2>&1 > /dev/null & pidstat -p $! -d -r -u -h 1
[1] 18736
Linux 2.6.32-431.el6.x86_64 (ny-kbrandt01.ds.stackexchange.com)     12/02/2014  _x86_64_    (4 CPU)

#      Time       PID    %usr %system  %guest    %CPU   CPU  minflt/s  majflt/s     VSZ    RSS   %MEM   kB_rd/s   kB_wr/s kB_ccwr/s  Command
 1417486738     18736    1.00    2.00    0.00    3.00     3    360.00      8.00  112268   1236   0.02   4592.00      0.00      0.00  find

#      Time       PID    %usr %system  %guest    %CPU   CPU  minflt/s  majflt/s     VSZ    RSS   %MEM   kB_rd/s   kB_wr/s kB_ccwr/s  Command
 1417486739     18736    1.00    3.00    0.00    4.00     2    241.00      0.00  112268   1240   0.02   4224.00      0.00      0.00  find

#      Time       PID    %usr %system  %guest    %CPU   CPU  minflt/s  majflt/s     VSZ    RSS   %MEM   kB_rd/s   kB_wr/s kB_ccwr/s  Command
 1417486740     18736    1.00    3.00    0.00    4.00     3      0.00      0.00  112268   1240   0.02   5192.00      0.00      0.00  find

#      Time       PID    %usr %system  %guest    %CPU   CPU  minflt/s  majflt/s     VSZ    RSS   %MEM   kB_rd/s   kB_wr/s kB_ccwr/s  Command
 1417486741     18736    1.00    6.00    0.00    7.00     2     46.00      0.00  112400   1284   0.02   5464.00      0.00      0.00  find

#      Time       PID    %usr %system  %guest    %CPU   CPU  minflt/s  majflt/s     VSZ    RSS   %MEM   kB_rd/s   kB_wr/s kB_ccwr/s  Command
 1417486742     18736    2.00    5.00    0.00    7.00     2      0.00      0.00  112268   1240   0.02   6892.00      0.00      0.00  find

#      Time       PID    %usr %system  %guest    %CPU   CPU  minflt/s  majflt/s     VSZ    RSS   %MEM   kB_rd/s   kB_wr/s kB_ccwr/s  Command
 1417486743     18736    3.00    7.00    0.00   10.00     2     62.00      0.00  112268   1244   0.02   8170.00      0.00      0.00  find

$! no bash captura o pid do último trabalho executado (encontre neste exemplo). Assim, você poderia incluir seus cron jobs em um script como esse, gravar os dados no disco e analisá-los com o Excel, R ou pandas.

    
por 02.12.2014 / 03:21