[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Alocar uma certa quantidade de memoria. (script, comando, programa)



On 7/6/07, Denis <denismpa@gmail.com> wrote:
Em 06/07/07, Rúben Lício<rubenlr@gmail.com> escreveu:
> On 7/6/07, Denis <denismpa@gmail.com> wrote:
> > Galera, boa tarde.
> >
> > Alguem sabe alguma maneira que eu possa alocar uma certa quantidade de
> > memoria e depois liberar, apenas para testes?
> >
> > Tenho um sistema de gerenciamento de jobs no qual o usuário tem que
> > informar o tanto de memória que o job dele irá usar. Eu impus um
> > limite e agora quero testar se está funcionando.
> >
> > Como posso fazer um programa ou script ou comando ou qq coisa utilizar
> > o tanto de memória que eu especificar enquanto estiver rodando?
> >
> > Por exemplo 10GB de memória.
> >
> >
> > Obrigado.
> >
> > Denis.
> > CCNA CSCO11109942
> >
> >
>
> Em shell acho que você não consegue não. Mas em C sim.
> char *teste = calloc(1000000000, sizeof(char));
> você alocou 1mb para caracteres.
> Porém, eu não sei qual a finalidade disso para você. Se for para
> memória continua, isso é valido, porém se não for, ai terá de fazer
> uma lista encadeada.
>
> Se a necessídade é apenas verificar a disponibilidade de memória no
> sistema, ou a quantidade usada por um job especifico, existem soluções
> muito melhores para isso, como a api do sistema operacional.

Bom, não entendi muito bem, então vou explicar melhor:

Tenho uma máquina onde os usuários submetem jobs para execução, quando
eles submetem os jobs eles indicam o número de processadores e a
quantidade de memória que o job dele vai precisar.

Eu impus um limite, de que cada job não deve utilizar mais que x de
memória, então eu quero simular um job, onde utilize X+1 de memória
para ver se o bloqueio está funcionando, entendeu?

por exemplo um script qualquer que quando eu rode vá consumindo a
memória de 0 até x+1.


Melhorou a explicação?


>
> --
> Rúben Lício Reis
>
> Game Developer
> Linux user #433535
>


void main()
{
char *x = malloc(10+1);

if (!x)
printf("nao conseguiu alocar");
else
printf("conseguiu alocar a memoria corretamente");
}

isso é o programa em C para alocar 11 bytes. Se quiser 1k, só fazer
1024+1 e assim por diante, o +1 é exatamente o que você precisa.

Se vir a mensagem de nao conseguiu alocar quando executar, é pq
funcionou, ou realmente n tinha memoria livre e continua suficiente
para atender a demanda...


--
Rúben Lício Reis

Game Developer
Linux user #433535

Reply to: