2009-02-27 8 views
13

Problema: Tengo una máquina de desarrolladores (léase: rápido, mucha memoria), pero el usuario tiene una máquina de usuarios (léase: lenta, no mucha memoria).¿Hay alguna manera de estrangular la CPU/memoria de un proceso?

que puede simular una red lenta utilizando Fiddler (http://www.fiddler2.com/fiddler2/) puedo ver cómo se utiliza la CPU en el tiempo para un proceso que utiliza el explorador de procesos (http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx).

¿Hay alguna forma en que pueda restringir la cantidad de CPU que puede tener un proceso, o la cantidad de memoria que puede tener un proceso para simular la máquina de un usuario de manera más efectiva? (Para aislar problemas de rendimiento, por ejemplo)

Supongo que podría usar una VM, pero estoy buscando algo un poco más ligero.

Estoy usando Windows XP, pero una solución para cualquier máquina con Windows sería bienvenida. Gracias.

+0

1 Sí, me gustaría saber esto también. –

Respuesta

5

La plataforma SDK solía venir con herramientas de estrés para hacer esto en los viejos tiempos (STRESS.EXE, CPUSTRESS.EXE en el SDK), pero aún pueden estar allí (consulte la instalación de SDK y/o Visual Studio de su plataforma estos dos archivos - por desgracia no tengo niether la PSDK ni VS instalados en la máquina estoy escribiendo desde)

Otras herramientas:

  • memoria: & rendimiento de fiabilidad (por ejemplo, el manejo de la asignación de memoria.): puede usar EatMem
  • CPU: rendimiento & fiabilidad (por ej. condiciones de carrera): puede usar CPU Burn, Prime95, etc.
  • maneja (GDI, User): fiabilidad (por ejemplo, manejo de asignación de recursos GDI fallida): ??? Puede que tenga que escribir el suyo propio, pero quedarse sin controladores GDI (las aplicaciones GTK defectuosas generalmente se los comerían todos hasta que todas las demás aplicaciones en el sistema empiecen a caer como moscas) es una prueba real para cualquier aplicación de Windows
  • disco: rendimiento & fiabilidad (por ejemplo, el manejo de disco completo): DiskFiller, etc.

véase también this existing thread.

+0

He intentado quemar la CPU, parece funcionar bien. Aunque es un poco como un mazo. Aunque no he probado el eatmem. Marcado como la respuesta aceptada. –

1

Puede ejecutar MemAlloc para masticar RAM, posiblemente algunas copias a la vez.

1

me encontré con una pregunta relacionada:

Set Windows process (or user) memory limit

La respuesta aceptada por la pregunta tiene un enlace a la API de Windows SetProcessWorkingSetSize, así que no es exactamente una herramienta que puede limitar la cantidad de memoria que un proceso puedo usar.

En términos de cambiar la cantidad de recursos de CPU que un proceso puede usar, si no le importa la granularidad de la limitación por núcleo de recursos, el Administrador de tareas puede cambiar la afinidad del procesador de un proceso.

En el Administrador de tareas, haga clic con el botón derecho en un proceso y seleccione "Establecer afinidad ...", luego seleccione los núcleos de procesador a los que se puede asignar el proceso.

Si la máquina de desarrollo tiene muchos núcleos pero la máquina del usuario solo tiene uno, entonces, en lugar de permitir que el proceso se ejecute en todos los núcleos disponibles, establezca la afinidad del procesador en solo un núcleo.

3

AppVerifier tiene una función de simulación de pocos recursos.

También podría intentar establecer la prioridad de su proceso para que sea muy baja.

0

No tiene nada que ver con SetProcessWorkingSetSize

sólo tiene que utilizar las API de Win32 internas del núcleo para restringir uso de la CPU

+0

¿Qué apis ofrecen la opción de restringir el uso de la CPU? –

Cuestiones relacionadas