Using System Information views
|To:||Use this view:|
|Control your system information session||Target Navigator|
|Examine your target system's attributes||System Summary|
|Manage processes on the device||Process Information|
|Examine process signals||Signal Information|
|Get channel information||System Blocking Graph|
|Track file descriptors||Connection Information|
|Track resource usage||System Resources|
|Check the standby monitor log file||Target File System Navigator|
Some of the views that are associated with the System Information perspective can add a significant processing load to your computer. You can improve its performance by:
- Closing the System Information perspective when you're not using it
- Closing or minimizing unneeded views in the perspective (you can reopen closed views by selecting Reset Perspective on the Window menu)
- Reducing the refresh rate
Control your system information session
The selections that you make in the Target Navigator view control the information that you see in the System Information perspective. You can customize the Target Navigator view to:
- Sort processes by process ID (PID) or by name
- Group processes by PID family
- Control the refresh rate
To access the Target Navigator view's customization menu, click in the Target Navigator view's title bar.
You can reverse a selected sort order by clicking in the view's title bar. You can enable or disable the automatic refresh by clicking in the view's title bar.
Entries in the Target Navigator view are unavailable when their data is stale and needs refreshing. If you've disabled automatic refresh, you can refresh the Target Navigator view by right-clicking in the view, and then clicking Refresh in the context menu.
The Target Navigator view also lets you control the information that is shown in the following views:
- Connection Information
- Malloc Information
- Memory Information
- Process Information
- Signal Information
To control what's shown in the Information views, in the Target Navigator view, expand a target and select a process. The Information view that's currently displayed is updated to show information about the selected process.
Update the views
To update the views in the System Information perspective, in the Target Navigator view, expand a target and select a process. You can also select groups of processes by using Ctrl or Shift. The views reflect your selection.
The data shown in the System Information perspective is updated automatically whenever new data is available.
By default, some views don't appear in the System Information perspective. To add a view to the perspective:
- On the Window menu, click Show View, and then select a view. The view appears in your perspective.
- To save a customized set of views as a new perspective, on the Window menu, click Save Perspective As.
Examine your target system's attributes
The System Summary view shows a listing of your target's system attributes, including your target's processors, memory, active servers, and processes.
In addition to the System Summary view, the other views include the following:
- System Specifications pane
- The System Specifications pane shows your target's host name, board type, OS version, boot date, and CPU information. If your target is a multicore system, the pane lists CPU information for each core or processor.
- System Memory pane
- The System Memory pane shows your target's total memory and free memory in numerical and graphical form.
- Processes panes
- The Processes panes show the process name, code and data size, data usage delta, total CPU usage since starting, CPU usage delta, and start date and time for the processes running on your selected target. The panes let you see application processes, server processes, or both. Server processes have a session ID of 1, and application processes have a session ID greater than 1.
Click in the view's toolbar to highlight changes to the information since the last update.
You can change the highlight color in the Colors and Fonts preferences (on the Window menu, click Window > Preferences > General > Appearance > Colors and Fonts).
Manage processes on the device
The Process Information view shows information about the processes that you select in the Target Navigator view. The view shows the name of the process, its arguments, environment variables, and more. The view also shows the threads in the process and the state of each thread:
The Process Information view includes the following panes:
Click in the view's toolbar to highlight changes to each pane since the last update.
You can change the highlight color in the Colors and Fonts preferences (on the Window menu, clickPreferences > General > Appearance > Colors and Fonts).
Thread Details pane
The Thread Details pane shows information about your selected process's threads, including the thread's ID, priority, scheduling policy, state, and stack usage.
The Thread Details pane shows a substantial amount of information about your threads, but some of the column entries aren't shown by default.
To configure the information that is shown in the Thread Details pane:
- In the Process Information view, click .
- Click Configure. The
Configure dialog box appears:
- Do one of the following:
- To add entries to the pane, select items from the Available Items list, and then click Add.
- To remove entries from the pane, select items in the New Items list, and then click Remove.
- To adjust the order of the entries, select items in the New Items list, and then click Shift Up or Shift Down.
- Click OK. The pane shows the entries that you specified in the New Items list.
If you right-click a thread in the Thread Details pane, the menu includes items that let you specify the thread's priority and scheduling algorithm, name, CPU affinity, and inherited CPU affinity:
You can set the priority and scheduling algorithm:
For more information about the available priorities and scheduling algorithms, see Thread scheduling.
You can give the thread a name:
You can also set the runmask that the thread's children will inherit and its own runmask:
For more information, see Multicore processing.
If you right-click a process in the Target Navigator view or the Thread Details pane, you get similar options, except for the option to set the thread name. The Thread Details pane allows you to change thread and process information for individual threads.
Environment Variables pane
The Environment Variables pane provides the values of the environment variables that are set for your selected process.
Process Properties pane
The Process Properties pane shows the process's start-up arguments and the values of the process's IDs: real user, effective user, real group, and effective group.
The process arguments are the arguments that were used to start your selected process as they were passed to your process, but not necessarily as you typed them. For example, if you type ws *.c, the pane might show ws cursor.c io.c my.c phditto.c swaprelay.c because the shell expands the *.c before launching the process.
The process ID values determine which permissions are used for your process. For example, if you start a process as root, but you use the seteuid() and setegid() functions to run the process as the user "jsmith", the process runs with jsmith's permissions. By default, all processes that are launched from the Momentics IDE for BlackBerry run as root.
Examine process signals
The Signal Information view shows the signals for the processes that are selected in the Target Navigator view.
The view shows signals that are:
- Blocked (applies to individual threads)
- Ignored (applies to the entire process)
The Target Navigator view lets you send signals to any process on your target. For example, you can terminate a process by sending it a SIGTERM signal.
To send a signal to a process:
- In the Target Navigator view, right-click a process, and then click Deliver Signal.
- Select a signal from the drop-down list.
- Click OK. The Momentics IDE delivers the signal to your selected process.
Delivering a signal to a process usually causes that process to terminate.
Get channel information
The System Blocking Graph view presents a color-coded representation of all of the active channels in the target and illustrates the interaction of threads with those channels.
Interactions with resource objects are such that a thread can be blocked waiting for access to the resource or waiting for servicing (that is, the thread is SEND-blocked on a channel).
The thread could also be blocked waiting for a resource to be released back to the thread or waiting for servicing to terminate (that is, the thread is REPLY-blocked).
Client apps in such conditions are shown on the left side of the graph, and the resource under examination is in the middle. Threads that are waiting to service a request, are active owners of a resource, or are actively servicing a request are shown on the right side of the graph:
|Legend item||Thread state|
|Servicing request||Not RECEIVE-blocked (for example, RUNNING, blocked on a mutex, and so on)|
|Waiting for request||RECEIVE-blocked|
|Waiting for reply||REPLY-blocked|
|Waiting for service||SEND-blocked|
Track file descriptors
The Connection Information view shows the file descriptors, server, and connection flags related to your selected process's connections. This view also shows (where applicable) the path name of the resource that the process accesses through the connection:
The information in this view comes from the individual resource manager servers that provide the connection. Certain resource managers may not be able to return all of the requested information, so some fields are left blank.
The IOFlags column describes the read (r) and write (w) status of the file. A double dash (--) indicates no read or write permission, and a blank indicates that the information isn't available.
The Seek Offset column indicates the connector's offset from the start of the file.
In some file descriptors (FDs), an "s" appears beside the number. This flag indicates that the FD in question was created using a side channel. The connection ID is returned from a different space than file descriptors, so the ID is greater than any valid file descriptor. For more information on side channels, see the ConnectAttach() function.
To see the full side channel number:
- In the Connection Information view, click .
- Click Full Side Channels.
Track resource usage
The System Resources view shows various pieces of information about your target's processes. The System Resources view appears based on the profile that you set for your current workspace. Profiles allow you to enable or disable various product components.
If the System Resources view is not available in the System Information perspective, on the Window menu, click Preferences. Click QNX > Profiles, select the BlackBerry System Developer profile, and click Apply.
The System Resources view appears when you click Window > Show View > Other, type System Resources in the filter field, and click OK.
To select which display you want to see, click in the System Resources view.
Click in the view's toolbar to highlight changes to the display since the last update.
You can change the highlight color in the Colors and Fonts preferences (on the Window menu, click Preferences > General > Appearance > Colors and Fonts).
System Uptime display
The System Uptime display provides information about the start time, CPU usage time, and usage as a percent of the total uptime for each process that is running on your selected target.
General Resources display
The General Resources display provides information about CPU usage, heap size, and the number of open file descriptors for each process that is running on your selected target.
Memory Resources display
The Memory Resources display provides information about the heap, program, library, and stack usage for each process that is running on your selected target.
Check the standby monitor log file
To check the standby monitor log file:
- On the device, enable Development Mode.
- Start the app, let the device enter standby, and wait 5-10 minutes.
- Connect the device to your computer.
- Start the Momentics IDE.
- On the toolbar, from the Launch Target drop-down list, select the device.
- In Windows and Linux, on the Window menu, select Show View > QNX Targets > Target File System Navigator. In Mac OS, on the Momentics menu, select Show View > QNX Targets > Target File System Navigator.
- Click OK.
- On the left side of the Target File System Navigator view, expand the device.
- In /system/accounts/1000/shared/misc, open standby.log. If the app is behaved, it doesn't have any log file entries.
Here is sample output from the standby monitor, followed by information to help you interpret it.
standbymon ======== Begin analysis phase ======== standbymon Window stats: configured 60s, actual 60.15s, sleep time 60.15s, sleep percentage 100.00% standbymon Module 'data usage' reported the following culprits: standbymon lo0: in 0/ 11M out 0/ 11M standbymon bcm0: in 550/ 65M out 1.1K/ 29M standbymon rndis0: in 29K/8.1M out 25K/6.5M standbymon msm0: in 5.3K/ 15M out 2.8K/6.4M standbymon bptp0: in 139/ 41K out 282/ 85K standbymon Module 'sleep states' reported the following culprits: standbymon IDLE CPU 1 MODE [0x20 3/2/0] [0x15 60/0/60] standbymon IDLE CPU 0 MODE [0x15 389/21/368] standbymon DVFS CPU 1 MODE [1000 1/1/0] standbymon DVFS CPU 0 MODE [1500 1/1/0] [1000 3/3/0] [800 2/2/0] [600 2/2/0] [300 1/1/0] standbymon Module 'wakeups' reported 12 culprits: standbymon [59, 3, 2/2ms, 2/2ms, 6/6ms] Process 6680723 (base/usr/bin/python3.2) Thread 22 (bbm) standbymon [52, 8, 2/2ms, 11/29ms, 26/55ms] Process 204817 (proc/boot/battmgr) Thread 3 (Unknown) standbymon [35, 6, 2/4ms, 4/13ms, 17/44ms] Process 196623 (proc/boot/lagavulin) Thread 2 (Unknown) standbymon [21, 5, 2/4ms, 3/14ms, 12/43ms] Process 249874 (proc/boot/thermal) Thread 1 (Unknown) standbymon [20, 0, 0/0ms, 0/0ms, 0/0ms] Process 6680723 (base/usr/bin/python3.2) Thread 47 (QuitableThread) standbymon [8, 0, 0/0ms, 0/0ms, 0/0ms] Process 299029 (proc/boot/devb-sdmmc-rim-omap) Thread 9 (fsys_resmgr) standbymon [5, 0, 0/0ms, 0/0ms, 0/0ms] Process 7458976 (accounts/1000/appdata/sys.navigator/app/navigator) Thread 1 (render) standbymon [4, 0, 0/0ms, 0/0ms, 0/0ms] Process 204817 (proc/boot/battmgr) Thread 1 (Unknown) standbymon [3, 0, 0/0ms, 0/0ms, 0/0ms] Process 20484 (proc/boot/devc-seromap) Thread 1 (Unknown) standbymon [2, 0, 0/0ms, 0/0ms, 0/0ms] Process 2736171 (base/usr/sbin/coreServices) Thread 1 (Unknown) standbymon [2, 0, 0/0ms, 0/0ms, 0/0ms] Process 57355 (proc/boot/i2c-omap35xx-omap4) Thread 1 (Unknown) standbymon [2, 0, 0/0ms, 0/0ms, 0/0ms] Process 299029 (proc/boot/devb-sdmmc-rim-omap) Thread 15 (fsys_resmgr) standbymon 
Examine data usage
The data usage module monitors the data use of each interface. For each 60-second window, it reports the amount of data in and out during that window and since reboot. The data usage module runs regardless of whether the device is in standby mode.
The output format for the data usage module is:
1 2 3 4 5 standbymon rndis0: in 29K/8.1M out 25K/6.5M
- The interface name
- Total bytes in during the last window
- Total bytes in since reboot
- Total bytes out during the last window
- Total bytes out since reboot
Examine trace events
The sleep states module looks at trace events that the CPU DLL emits to determine which IDLE and dynamic voltage and frequency scaling (DVFS) modes have been entered during the analysis window. The module logs attempts, successes, and failures for each mode.
The output format for the sleep states module is:
1 2 3 4 5 6 standbymon IDLE CPU 1 MODE [0x20 3/2/0] [0x15 60/0/60]
- IDLE or DVFS mode for the CPU
- CPU number
- Mode number entered (as set up in the .pm file for your platform, for example: /etc/system/config/london.pm)
- Attempts to enter this mode
- Successes entering this mode
- Failures entering this mode
The wakeup module uses event handlers to monitor wakeups and analyzes this data for each collection window. The module emits a log message when a wakeup exceeds an allowable rate. The allowable wakeup rate is configurable system-wide, per process, and per thread.
The output format for the wakeup module is:
1 2 3 4 5 6 7 8 9 standbymon [52, 8, 2/2ms, 11/29ms, 26/55ms] Process 204817 (proc/boot/battmgr) Thread 3 (Unknown)
- Total number of wakeups
- Total number of wakeup clusters (a cluster is a collection of two or more wakeups that occur less than 10 milliseconds apart)
- Shortest cluster with total wakeups and time elapsed between the start and end of the cluster
- Longest cluster with total wakeups and time elapsed between the start and end of the cluster
- Total wakeups and cumulative time for all clusters
- PID of offending process
- Process name (or "Unknown")
- TID of offending thread
- Thread name (or "Unknown")
By default, the analysis window length is one minute and the allowed number of wakeups in that window is one. If a process exceeds one wakeup in a one-minute period, the wakeup module emits a log message.
The standby monitor analyzes trace data only if the device was in standby for 30% of its 60-second analysis window. If not enough time was spent in standby, you see a message in the log file output:
May 15 09:13:42 2 22 100 standbymon ======== Begin analysis phase ======== May 15 09:13:42 2 22 100 standbymon Not enough time spent in user_standby during this window to perform analysis.
If there are no wakeups during the analysis window, you see a message in the log file output:
May 15 09:03:44 2 22 100 standbymon ======== Begin analysis phase ======== May 15 09:03:44 2 22 100 standbymon Module 'wakeups' reported 0 culprits during the last 60 seconds:
Last modified: 2015-04-30