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

You can also track heap usage and examine target system memory by using the System Information perspective. For more information, see Minimizing memory usage.

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 The Menu dropdown icon in the Target Navigator view's title bar.

You can reverse a selected sort order by clicking The Reverse sort icon in the view's title bar. You can enable or disable the automatic refresh by clicking The Automatic Refresh icon in the view's title bar.

Screen showing the Target Navigator view, which shows the system information.

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.

Screen showing a selected process in the Target Navigator view.

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.

Add views

By default, some views don't appear in the System Information perspective. To add a view to the perspective:

  1. On the Window menu, click Show View, and then select a view. The view appears in your perspective.
  2. 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.

Screen showing the System Summary view, which shows the attributes for the target.

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 The Highlight button 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:

Screen showing the Process Information view, which shows process-specific information.

The Process Information view includes the following panes:

Click The Highlight button 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:

  1. In the Process Information view, click The Menu icon.
  2. Click Configure. The Configure dialog box appears:

    Screen showing the Configure dialog box in the Process Information view.

  3. 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.
  4. 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:

Screen showing thread options.

You can set the priority and scheduling algorithm:

Screen showing priority and scheduling.

For more information about the available priorities and scheduling algorithms, see Thread scheduling.

You can give the thread a name:

Screen showing setting the thread name.

You can also set the runmask that the thread's children will inherit and its own runmask:

Screen showing inherited CPU affinity. Screen showing CPU affinity.

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.

Screen showing the Signal Information view

The view shows signals that are:

  • Blocked (applies to individual threads)
  • Ignored (applies to the entire process)
  • Pending

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:

  1. Screen showing the Deliver Signal dialog box in the Target Navigator view.In the Target Navigator view, right-click a process, and then click Deliver Signal.
  2. Select a signal from the drop-down list.
  3. 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:

Screen showing a system blocking 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:

Screen showing the Connection Information view.

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:

  1. In the Connection Information view, click The Menu icon.
  2. 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 The Menu icon in the System Resources view.

Click The Highlight button 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.

Screen showing the System Uptime in the System Resources view.

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.

Screen showing the General resources in the System Resources view.

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.

Screen showing the Memory resources in the System Resources view.

Check the standby monitor log file

To check the standby monitor log file:

  1. On the device, enable Development Mode.
  2. Start the app, let the device enter standby, and wait 5-10 minutes.
  3. Connect the device to your computer.
  4. Start the Momentics IDE.
  5. On the toolbar, from the Launch Target drop-down list, select the device.
  6. 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.
  7. Click OK.
  8. On the left side of the Target File System Navigator view, expand the device.
  9. 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 [213]

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
  1. The interface name
  2. Total bytes in during the last window
  3. Total bytes in since reboot
  4. Total bytes out during the last window
  5. 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]
  1. IDLE or DVFS mode for the CPU
  2. CPU number
  3. Mode number entered (as set up in the .pm file for your platform, for example: /etc/system/config/london.pm)
  4. Attempts to enter this mode
  5. Successes entering this mode
  6. Failures entering this mode

Examine wakeups

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)
  1. Total number of wakeups
  2. Total number of wakeup clusters (a cluster is a collection of two or more wakeups that occur less than 10 milliseconds apart)
  3. Shortest cluster with total wakeups and time elapsed between the start and end of the cluster
  4. Longest cluster with total wakeups and time elapsed between the start and end of the cluster
  5. Total wakeups and cumulative time for all clusters
  6. PID of offending process
  7. Process name (or "Unknown")
  8. TID of offending thread
  9. 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



Got questions about leaving a comment? Get answers from our Disqus FAQ.

comments powered by Disqus