There are many performance monitoring/analyzing tools for different bottleneck conditions of resources. From my experience, I can’t use these tools always to analyze, because I need a prevailing condition where I can use these tools. But, readymade condition is not available always. So I thought of investing some time to create one WPF application, DeepInTrouble (DIT) which will simulate stress on different local resources. You can easily create one such condition and turn on your favorite tool; investigate the patterns arising from it. Currently DIT addresses four different areas. Processor, Memory, Disk and Thread Contention .
This will keep the processor occupied at least for the duration mentioned below. The start button will be disabled until the request is completed. This is to prevent users from submitting repeated request of the same kind to the system.
Number of seconds/thread to keep the processor busy
No of workers:
Number of threads to be competing for CPU scheduling each to keep processor/core keep 100% busy for the “Duration”.
If selected, all the threads will run only on the first core. Rest of the cores will be idle. By default it will occupy all the cores.
This will simulate a memory leak into the DIT process space. It can be slow or fast, depending on the value of Alloc Interval.
Value in Kbytes that will determine the size of each allocation unit
Number of allocations to be made. Alloc intervals: It controls the speed of allocation.
If selected, memory will be occupied only from the unmanaged/native area. By default it will allocate from the managed space.
This will generate a lot of disk IO. Right now it will generate each file with 97MB of data. Depending on the number of files and thread count the traffic can be controlled
Number of files:
This will determine how many files to be created by each of the thread..
This will control number of thread each creating file count of “Number of files”
This will create a number of threads (thread count) and enter inside a critical section which serilizes the operation while rest of the threads will be waiting.
The number of seconds each thread will be inside the critical section.
Number of threads waiting for the shared object.