Giter Site home page Giter Site logo

ubuntuser2012 / remotetaskmonitor Goto Github PK

View Code? Open in Web Editor NEW
0.0 0.0 0.0 70.65 MB

A Windows PC application that discovers and connects to remote embedded devices on the network and monitors CPU, memory and crashes. Sends alerts, and generates graphs, reports, and lets you automate monitoring tasks using Python scripts

License: Other

C++ 5.08% CMake 0.01% C 1.33% Python 89.62% Shell 0.01% Batchfile 0.01% CSS 0.01% Makefile 0.06% Inno Setup 0.05% JavaScript 3.66% Clarion 0.13% HTML 0.05%

remotetaskmonitor's Introduction

Remote Task Monitor

A Task Manager for Windows Embedded Devices

logo.png

Have you been struggling to monitor your apps on Windows embedded devices? Do you wish there was an easy way to check their CPU and memory usage?

Now there is!

slides.png

Now there is!

Get Real Time CPU Load, Memory Usage, Alerts & Reports About Your Device

  • Lets you see the CPU usage of each process and thread on the device in real time
  • See memory usage of processes
  • Plot graphs in real time for the memory and CPU usage of processes and threads
  • Generate reports for offline viewing
  • Send you email alerts when CPU is high, memory is low, or if a process on target device crashes
  • Gives you the call stack of a crashing process to help you locate the offending code

remote_task_monitor_device_tab.jpg

Automatically Discovers and Connects to Device

  1. Run the CEmon server on your device
  2. Run RTM client on your PC
  3. RTM client will automatically discover the device and connect to it
  4. RTM will start collecting CPU and memory usage data from the remote device and display it to you on your PC.

Supported Platforms

ARM and x86 platforms

Source Code Available

The download package also includes the source code you can use to build for your specific device. (You will need Visual Studio and your Platform SDK to compile)

Supported OS's

WinCE 5, WinCE 6, Windows Embedded Compact 7 (WEC 7)

CPU and Memory Utilization

remote_task_monitor_processes_tab.jpg

Processes & Threads

remote_task_monitor_threads.jpg

Select one or more processes or threads, and right click, to see a list of operations you can perform.

remote_task_monitor_context_menu.jpg

Operations

  • Kill a process
  • Start a new process
  • Clone a process
  • Restart a process
  • Kill a thread
  • Suspend thread
  • Resume thread
  • Change thread priority at runtime
  • View real time plots of CPU usage per process and thread
  • Record CPU usage in the HTML report
  • Alert you by email when a process on watch crashes
  • Give you call stack of the process when it crashes (The call stack lets you identify the functions that were called just before the process crashed)
  • Alert you when a process or thread exceeds a set CPU threshold
  • Alert you when memory falls below a set threshold

Real Time Plots

The graph shows the overall CPU and memory usage as a function of time. You can also add and remove individual processes and threads.

remote_task_monitor_cpu_graphs_real_time

Reports

A report is generated in HTML at the end of each session.

This lets you collect statistics about your device by monitoring it for several days or weeks at a time, allowing you to make a decision how well your app behaves over a long run.

In the Processes tab, right click on the process or thread to add it to the report.

remote_task_monitor_html_report.jpg

You can select from the drop down list individual processes or threads and view their CPU usage.

The log.csv file conatins all the CPU usage statistics for the session.

history.jpg

Crash Watch

Make your app stable by monitoring it for a crash, and quickly determining the cause of crash.

The crash watch tool in RTM monitors your app for any kind of violation that would cause it to crash. You can set it to email you the crash report when that happens. It will identify the type of violation, the address of code where the process crashed, and the call stack. If you provide a map file from VS2005 for your app, then you could even see the function names in the call stack.

crash1.png

crash2.png

CPU Watch

You can put a process or thread on CPU watch, when process takes CPU more than the set value, you can get an alert and an email notification.

pscpuwatch.png

There is also an overall CPU watch, when the total CPU exceeds the set value, you can get the alert and email notification.

cpuwatch.png

Memory Watch

You can also put a process on memory watch, when process consumes more memory than the set value, you can get an alert and an email notification.

memwatch.png

Remote Task Monitor Automation using Python

Remote Task Monitor can be programmed through Python scripts. That means you can write scripts for most of the things you would do through the Remote Task Monitor.

remote_task_monitor_python_script_automa

Here is an example script that opens a connections to target device, starts capturing snapshots, and prints the CPU and memory usage, then emails the location of the report.

import rtm
def main():
if(0==rtm.connect("162.96.0.9", 8291)):
print("Check IP and port, and check that you are not already connected.")
else:
loop = True
count = 0
connected = False

Get 20 snapshots of the target device

while (loop and count < 20):
r = rtm.wait(-1)
#print(r)
if (r['reason'] == 'quit' or r['reason'] == 'disconnected'):
loop = False
connected = False
print("Could not connect to target. Check your IP/Port, cemon is running on target device and a TCP/IP connection is available.")
elif (r['reason'] == 'connected'):
rtm.startcapture()
rtm.enablepsmemstats(1)
count = 0
connected = True
print("Connected")
elif (r['reason'] == 'gotsnapshot'):
process_snapshot()
count=count+1

Disconnect and get the report for the session

report = ''
if(connected):
rtm.disconnect()
print("Disconnecting")
r = rtm.wait(-1) # Wait to be disconnected
if(r['reason'] == 'disconnected'):
report = r['report']
print(report)

Send an email with path to the report file

rtm.email("[email protected]", "RTM Report", "Report is here: " + report)

return 0;
def process_snapshot():
msg = 'Total CPU '+ str(rtm.gettotalcpu()) + '%, Total memory ' + str(rtm.getavailmem()) + ' Bytes'
print(msg)

#Get list of all processes
pss = rtm.getpss()
#print(pss)
if(pss):
for ps in pss: # Iterate though each process in the list
#print(ps)
if(ps['name'] == 'cemon.arm5.exe'):
print('cemon.arm5.exe CPU usage: ' + str(ps['cpu']) + '%')
#Get list of all threads in this process
ths = rtm.getthreads(ps['pid'])
if(ths):
for th in ths: # Iterate though each thread in the list
#print(th)
if(th):
print('Running at priority ' + str(th['priority']))
return 0;

Write your script in Python 3.2, and load the .py file in the Python tab of Remote Task Monitor. Then hit the Run button.

Who has Used Remote Task Monitor

www.wmf.de.jpgwww.komatsu.pngwww.westint.com.jpgwww.traka.com.pngwww.tox-de.com.jpgwww.touchstargroup.com.jpgwww.t-online.de.jpgwww.spec.fr.jpgwww.saitweb.info.jpgwww.robocom.com.jpgwww.oxymat.sk.jpgwww.melittassytemservice.de.jpgwww.macio.de.jpgwww.jdmconsulting.com.jpgwww.ikerlan.es.jpgwww.ge.com.jpgwww.gdstatcom.com.jpgwww.emerson.com.jpgwww.deere.com.jpgwww.danphone.com.jpgwww.cummins.com.jpgwww.cat.com.jpgwww.beckhoff.com.jpgwww.aditus.de.jpgthermalproductsolutions.com.pngscr.co.il.pngreiland.de.jpgmtdata.com.au.jpgloadrite-trimble-logo.pngerkadi.com.jpg

remotetaskmonitor's People

Contributors

jambamamba avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.