2012-03-14 12 views
6

Tengo curiosidad si es posible modificar artificialmente la carga del servidor en Ubuntu o, más generalmente, linux. Estoy trabajando en una aplicación que reacciona a la carga del servidor, y para probarlo sería bueno si pudiera cambiar la carga del servidor fácilmente.Modificar artificialmente la carga del servidor en Ubuntu

Actualmente estoy ejecutando un programa demasiado activo que literalmente generará carga, pero preferiría no continuar sobrecalentando mi computadora portátil (¡hace mucho calor!).

+0

¿Cómo está cargando su programa la lectura del servidor? Qué idioma estás usando? El uso de un programa "hiperactivo" hará que aumente el uso de su CPU, pero no puede hacer que sea más bajo de esa manera. – austin1howard

+0

Lo estoy leyendo desde/proc/loadavg – GoldenNewby

Respuesta

2

Utilice chroot para ejecutar las diversas piezas del software que está probando con un directorio específico como el directorio raíz. Configure una fabricación/modificación/proc/loadavg relativa a ese nuevo directorio raíz, también.

chroot le permitirá crear un archivo ficticio que aparece tener/proc/loadavg como su trayectoria, por lo que el software va a observar sus valores manufacturados, incluso si no se puede cambiar el código para buscar datos de carga en una ubicación diferente.

+0

Esto puede no modificar artificialmente la carga del servidor, pero la idea es tan inteligente que no puedo evitar recompensarla. – GoldenNewby

3

Usted puede utilizar el comando stress, ver http://weather.ou.edu/~apw/projects/stress/

Una herramienta para imponer la carga en y prueba de esfuerzo un sistema informático

sudo apt-get install stress 

Para evitar la tibia de la CPU, se puede instalar un Portal máquina con pequeña capacidad de CPU. virtualbox y qemu-kvm son gratuitos.

6

Una de las cosas más importantes que debe saber sobre los sistemas Linux (o Unix) es que todo es solo un archivo. Como acaba de leer desde el /proc/loadavg, lo más fácil era que lograra lo que buscaba simplemente haciendo un archivo de texto que contenga una línea de texto que vería al ejecutar cat /proc/loadavg. Luego haga que su programa lea de ese archivo que creó en lugar de /proc/loadavg y no será más inteligente. Si desea probar en diferentes situaciones "artificiales", simplemente cambie el texto en este archivo y guárdelo. Cuando termine la prueba, simplemente cambie su programa de nuevo a la lectura desde el /proc/loadavg y puede estar seguro de que funcionará como se espera.

Nota, puede hacer que este archivo de texto en cualquier lugar que desee ... en su directorio personal, en el directorio del programa, en cualquier lugar. Sin embargo, no debe hacerlo en /proc. Ese directorio está reservado para objetos del sistema.

+0

Puedo apreciar que puedo cambiar mi código. Tenía curiosidad si había una herramienta o método para hacer esto dentro de Linux. Como se trata de un sistema operativo de código abierto, es probable que sea posible cambiar los resultados de/proc/loadavg – GoldenNewby

+0

No realmente @GoldenNewby ... el contenido del directorio '/ proc' es creado por el kernel de Linux. En realidad, es un sistema de archivos completo (procfs) diseñado para proporcionar una especie de interfaz entre la información del nivel del núcleo (carga del sistema, datos RAM, procesos en ejecución, etc.) y los programas a nivel del usuario (es decir, su terminal). Entonces, realmente no se puede "escribir" en archivos dentro de '/ proc /' como se puede en otros lugares. E incluso si pudieras (puedes hacerlo con permisos de root), sería perjudicial para tu sistema, porque muchos procesos del sistema usan la información en este directorio. – austin1howard

+0

Sí, entiendo que muchos procesos usan el valor de/proc/loadavg para mostrar información. También entiendo que el directorio/proc no es un área estándar del sistema de archivos (y realmente ni siquiera son archivos). Estaba buscando más explicaciones sobre cómo podría interactuar con el kernel para cambiar estos valores, o si ya había herramientas que le permitían hacerlo. Supongo que en este punto no hay, pero esperaré un poco por si acaso. – GoldenNewby

0

Dado que usted no quiere en realidad/literalmente tensionar la máquina, algo así como stress no es lo que está buscando.

Según lo indicado,/proc/loadavg sería el lugar para set system load averages (cargas falsas).

Pero si eso tampoco es la carne de lo que está buscando, sugeriría absolutamente

getloadavg

watchdog

e incluso posibles Munin plugins

+0

Bueno, así es como se obtiene el promedio de la carga, no cómo se establece. Las otras sugerencias no son útiles porque estoy usando esto para probar el software de monitoreo. – GoldenNewby

0

hay dos métodos.

de Hacking/proc/loadavg

  • La máquina no sufre esfuerzos excesivos
  • Su programa lee Valus carga desde un archivo

Todo: hackear Linux reportar el valor de la carga falsa

Modifique su prg

  • La máquina no sufre esfuerzos excesivos
  • Su programa lee Valus carga desde un archivo

Todo: cambio de 4 caracteres en su PRG: sustituir /proc/loadavg con /tmp/loadavg

Usted puede decidir ahora. Calcule los costos;)

+0

"Entiendo que sería más fácil simplemente hacer que mi programa lea una versión falsa de/proc/loadavg, pero estoy interesado en una solución que realmente cambie los informes de Linux". – GoldenNewby

+0

No hay diferencia entre leer un archivo de texto y leer un archivo de texto.Además, si falsifica la carga de alguna manera, producirá valores/tendencias/cambios falsos, por lo que no podrá usarse para probar el escenario de la vida real. El problema no es cómo hacer que Linux reporte valores falsos, sino que produce valores que parecen reales. – ern0

+0

No realmente. Estoy intentando comparar cómo mi software maneja un aumento en la carga del servidor en comparación con otras herramientas binarias ya empaquetadas. A los que no tengo acceso para cambiar de donde leen el promedio de carga. – GoldenNewby

Cuestiones relacionadas