Logproc is a "remote-top" application which allows the user to examine the CPU and memory usage of each application in a running IP-STB. A server which accepts connections from clients (one at a time) is run in the box.
To enable the logproc server in an IP-STB, include the
kreatv-tool-logproc
installation package to the boot image:
kreatv-tool-logproc:[port=<port>]
If no port is specified, the default port 19998 is used.
logprocclient
application. The application is available in the SDK. Run
logprocclient -h
to see a list of available options.
While running, the logprocclient can sort the processes in three different ways:
Col # | Format | Meaning |
1 | YYYY/MM/DD:HH:MM:SS |
The time when the sample was generated. |
2 | HH:MM:SS |
Relative time when the sample was generated, measured from when the logprocclient was started. |
3 | string | Name of application. The client tries to collect processes into applications, so multithreaded applications appear only once. Note! If several instances of an application (single or multithreaded) is run, then several rows with the same application name appears in the log file. |
4 | integer | Memory usage, in kB. |
5 | float | CPU usage, in %. If the application is multi threaded, then this value is the total CPU usage of all threads. |
6 | integer | Number of threads in application. |
7 | integer | Process ID of application. If the application is multi threaded, then the lowest PID of all threads is shown. |
System information rows look a bit different:
Col # | Format | Meaning |
1 | YYYY/MM/DD:HH:MM:SS |
The time when the sample was generated. |
2 | HH:MM:SS |
Relative time when the sample was generated, measured from when the logprocclient was started. |
3 | System |
A constant which shows that this row shows system information, not application information. |
4 | integer | Free system memory, in kB. |
5 | float | Total CPU usage, in % |
6 | float | Load average the last minute, in %. May be > 100% |
7 | float | Load average the last five minutes, in %. May be > 100% |
8 | float | Load average the last 15 minutes, in %. May be > 100% |
logprocplot
script, which is also provided with the
SDK, can:
logprocclient
and store
data for each application in a file. This is gnuplot friendly.
Running the logprocplot
script with only the log file as
argument will simply split the log file into a number of files which
can then be shown using gnuplot
. The format of each row
will be as described above. The name of each file will either be
System.data
for system data, or
<application>-<pid>.data
for all other components /
applications.
logprocplot
will try to be a bit clever and avoid parsing the
log file if it has already been parsed to the given output
directory. To force parsing the file, remove the files from the output
directory.
Run logprocplot -h
for all options.
Note! logprocplot
requires that gnuplot
is installed on the client computer.
# ./logprocclient -f /tmp/processlog.txt 192.168.5.155 19998
Show the memory usage of the streamers and CPU usage of the system, the infobroker and the streamers:
# ./logprocplot -C -m streamer -c streamer -c infobroker -p /tmp/processlog.txt
The DIY version; first split the log file, then run gnuplot. For instance, to show a graph of X memory usage and free system memory, measured relative to the start of the log file, do:
# ./logprocplot /tmp/processlog.txt
# gnuplot
gnuplot> set timefmt "%H:%M:%S"
gnuplot> set xdata time
gnuplot> set autoscale x
gnuplot> set autoscale y
gnuplot> set grid
gnuplot> set ylabel "Kb"
gnuplot> plot "./logprocplot_output/X.data" using 2:4 title "X mem" with lines, "./logprocplot_output/System.data" using 2:4 title "System free" with lines
Note the columns: 2 is relative time, 4 is memory usage for normal
applications, and 4 is free system memory for the system.