como aumentar o uso de memória manualmente?

1

Existe o Solaris 10 OS no nosso servidor e gostaria de fazer testes neste servidor. Para este teste, o uso de memória deve ser alto.

Então, pergunto-me se existe uma maneira fácil de aumentar o uso de memória manualmente?

    
por mibzer 20.09.2012 / 09:55

6 respostas

4

A maneira mais simples é preencher / tmp, assumindo que esteja usando tmpfs, que é o padrão. Execute df -k /tmp para se certificar de que é.

Para aumentar seu uso de memória (virtual) em 1 GB, execute

mkfile 1g /tmp/1g

libere-o com

rm /tmp/1g
    
por 20.09.2012 / 11:11
3

Esta página deve ajudá-lo. Apenas um pequeno programa em c:

#include <stdlib.h>
#include <stdio.h>
#include <string.h>

int main(int argc, char** argv) {
    int max = -1;
    int sleep_interval = 2;
    int mb = 0;
    char* buffer;

    if(argc > 1)
        max = atoi(argv[1]);
    if(argc > 2)
        sleep_interval = atoi(argv[2]);

    while((buffer=malloc(1024*1024)) != NULL && mb != max) {
        memset(buffer, 0, 1024*1024);
        mb++;
        printf("Allocated %d MB\n", mb);
    }
    printf("sleeping for %d\n",sleep_interval);
    sleep(sleep_interval);
    return 0;
}

Tenha em mente que, sem dar ao programa uma quantidade máxima de memória, ele alocará até esgotar a quantidade que puder (pode ser limitada por ulimit, quantidade de memória ou tamanho do espaço de endereço).

    
por 20.09.2012 / 10:04
1

A maneira mais fácil que eu conheço de preencher memória é criar um programa que aloque uma matriz de strings (ou matrizes de qualquer outro tipo), se você precisar manter os dados na memória e não paginados, você deve varrer a memória alocada. periodicamente.

Eu adicionaria um longo intervalo de sono (talvez controlado por um argumento de linha de comando) após a alocação.

Eu executaria várias instâncias do programa acima até preencher a quantidade desejada de memória.

    
por 20.09.2012 / 10:05
0

Eu também não sei se isso funciona com o Solaris - mas como ele é projetado para rodar em sistemas compatíveis com o Posix, você pode tentar: stress é um gerador de teste de estresse muito" simples ", que pode fazer todos os tipos de estresse - criar porcos de memória é parte dele.

Eu o compilei / testei até agora em algumas distribuições Linux (CentOS, SLES) sem problemas.

    
por 21.09.2012 / 22:38
0

No Linux (também não sei se funciona no Solaris):

#!/bin/bash

if [[ $EUID > 0 ]]; then # we can compare directly with this syntax.
  echo "Please run as root/sudo!"
  exit 1
fi

BS=100M
MNT=/mnt/tmp
FILE=${MNT}/mem-hog
FS_SIZE=8G
LOG=${0}.log-$(date '+%Y%m%dT%H%M%S')
SLEEP=5s

function onExit {
  test "mountpoint -q ${MNT}" && umount ${MNT}
  echo "Bye!" | ts | tee -a ${LOG}
}

trap onExit EXIT

mount -t tmpfs -o size=${FS_SIZE} none ${MNT} || exit $?

[ -f ${FILE} ] && (rm ${FILE} || exit $?)

COUNT=0

while [ true ]; do
  COUNT=$((COUNT + 1))
  echo -e "\n>> Allocation step #${COUNT} <<\n" | ts | tee -a ${LOG}

  dd if=/dev/zero bs=${BS} count=1 2> /dev/nul 1>> ${FILE} || exit $?

  echo "" | ts | tee -a ${LOG}
  free -m | ts | tee -a ${LOG}

  echo "" | ts | tee -a ${LOG}
  df -h ${MNT} | ts | tee -a ${LOG}

  sleep ${SLEEP}
done
    
por 28.03.2018 / 19:08
0
mkdir /ramdisk
mount -t tmpfs -o size=500G tmpfs /ramdisk
cp from_disk /ramdisk
  • que criará uma pasta no nível raiz chamada /ramdisk , o sistema de arquivos será transparente, pois atuará como um diretório normal, mas o conteúdo da pasta residirá na RAM
  • altera o número de 512 para um valor menor que o total de RAM física no seu servidor, o que atenderá às suas necessidades; por exemplo, meu servidor tem 512GB de RAM, então eu uso um valor de 500
  • isso é dinâmico, portanto, somente se você copiar o material para a pasta tmpfs montada, o uso da RAM acontecerá, o que pode ser monitorado de várias formas
  • tudo sob a pasta tmpfs montada desaparecerá após a reinicialização do sistema, porque o espaço de armazenamento era RAM
  • Eu geralmente uso um arquivo iso de 4GB de algo parecido com uma instalação do Linux, e copio do disco usando um script para algo como cp /home/ron/openSUSE-Leap-42.3-DVD-x86_64.iso /ramdisk/test1.iso , mas você pode fazer isso de várias maneiras para atender às suas necessidades.
  • Acredito que a maioria dos kernels linux, desde a opção 2.6 tmpfs mount, você saberá imediatamente se o comando mount falhar com a opção -t tmpfs ; como uma primeira tentativa, basta fazer mount -t tmpfs -o size=2GB tmpfs /some_folder e, em seguida, fazer algo como df e você verá o ponto de montagem tmpfs junto com a quantidade usada , disponível e % usado
por 28.03.2018 / 19:23