TManager 2.5.4 (PPC and Intel) user documentation

(Olivier Wittenberg, witt@micro-video.fr)


Table of contents


Introduction
TManager's main window
Actions on teams
Actions on threads
Actions on ports
Actions on semaphores
Other commands
TManager's settings panel
The MultiGauge replicant
Things to be known
Do you wish to register ?
Feedback
What's new ?
Credits

TManager's small glossary

Introduction -- what is TManager ?

TManager is a powerful system managing utility for BeOS. It enables you to be aware of what is going on in the system, and to act on some parts of it. It works on an important amount of data: teams, threads, ports, semaphores, areas, images. For instance, you can often clean up a crashed application by killing its threads or its team, or you can adjust a thread priority so that it is executed in the background.

If you do not know what a team, a thread, a semaphore, a port, an area or an image is, please check this glossary page.

It is also a useful tool if you are a developer, since it can help you know if there are any problems with the resources you are using (is there a memory leak, a thread not cleanly shutting down, a port getting flooded by messages, a problem with the add-ons, a semaphore not correctly acquired ?).


TManager's main window

TManager's main window is composed of two parts. The upper part is the team list. On each line is displayed the name of the team, a number and two gauges (only one if you are using the unregistered version). The number is the amount of memory that is being used by the team, in kilobytes. The two gauges display the percentage of memory it represents, and the percentage of active CPU time the team is using. This is a global percentage, i.e. if you have a dual-processor machine, 100% means that the two processors are totally active. Beneath the list are displayed the full team path and the signature of the application.

Between the upper part and the lower part of the window, there is a horizontal separator, that looks like the border of a window. You can drag it with the mouse, in order to make one of the parts more visible.

The lower part consists of several lists, in a tab view. The initial lists are empty, because they display information about the selected team. Click on a team in the team list, and you will be able to get the list of running threads in this team, the list of semaphores and ports owned by this team, the list of areas used by it and the list of loaded images. Each list is multicolumn. You can choose which column you want to be displayed in the settings panel, as explained later. If you want to know more about the meaning of one of the terms used in these lists, follow the links.



Actions on teams

Several actions can be taken on a team, and there are two ways to do that. Either use the pop-up menu (right-click on an item in the team list), or use the main menu ("action" in the menu bar). You can:

Telling a team to quit has much the same effect as selecting the "Quit" option of the application. The application cleanly quits, saving files if necessary. If the team has crashed, or if it's in an unstable state, this command is likely not to work. Then, maybe you will want to kill the team. Killing a team frees any resources assigned to this team (like ports, areas, and the such), so that the system (theoretically) stays clean. However, if there were any open documents in the team, the changes are lost, etc... Activating an application activates one of its windows. This has no effect on applications that do not have windows.

Actions on threads

You are also able to act on the threads. First, select the team whose threads you want to alter. Then, either in the pop-up menu, either in the main menu, you have several commands:

Killing a thread has unpredictable effects. The team may immediately stop working, or it may also continue as if nothing had happened. Waking a thread up needs more explanation. It only affects those threads whose state is "waiting", "suspended" or "asleep". If the thread is waiting for a semaphore, waking it up will make the acquiring fail. If it is suspended, the thread will be resumed. If it is asleep, it will be literally woken up. No matter its state, as soon as TManager wakes a thread up, the thread will be executed, even though it may as well return to a passive state right after. If it was waiting for a semaphore and if it's poor code, maybe the thread will also crash if you wake it up, so be careful with this option. Eventually you can alter its priority by selecting the option, or simply by clicking on the priority. A box appears around it, which lets you enter the new priority. Be careful, it seems that negative priorities make threads freeze forever !

If you use the "debug a thread" command, the debugger will appear when the thread exits the kernel. If the thread stays in the kernel, it's maybe in the process of acquiring a semaphore. Just use the "wake up" command and you'll enter the debugger.


Actions on ports

There is only one thing you can do with ports: delete them. Use either the pop-up menu or the main menu for that purpose.

In particular, if you have tried to debug a thread but the debugger crashed, the team usually cannot be killed. It often works to delete the port named "team xxx debugtask".


Actions on semaphores

If a semaphore is in a blocking state (i.e. its count is not positive), you might want to perform releases so that the count goes all the way to zero. It may be useful if you are debugging your own code. You can do that with either menu (pop-up and main).


Other commands

In the "action" menu, you will find three additional commands:

With a terminal, you can do almost everything, so if you keep a running instance of TManager around, you will always be able to do anything, even if the system is in an unstable state. The two other commands are useful since they make it easy to get a new running Tracker or Deskbar if the previous one has crashed. They don't have any effect if they are already running, but for safety they are never disabled (it's impossible to tell whether the Tracker or the Deskbar are properly working or not, from a programmatic point of view).

TManager's settings panel

From the "TManager" menu, you can trigger TManager's settings panel. It also consists of two parts. The lower one lets you choose which column you want to be displayed in the different lists. Note that not all columns are enabled by default. The changes take effect as soon as a data update is done, you don't have to push any "use settings" button or to close the window.

The upper part lets you adjust the refresh rate of the data updates. The default rate is 0.33 Hz. You can adjust the rate from 0.2 Hz to 2 Hz.

Eventually, you can use sounds in TManager (I know I'm making some people happy ;-). Currently the names are hardcoded. You need to set the path to the sounds in the corresponding box (upper part of the settings panel). In this directory, sounds will be played if TManager finds any of the following files:

Each sound is played when the corresponding action occurs. I think these formats are supported: wave files (.wav), unix files (.au), and aiff files (.aiff).

The MultiGauge replicant

The MultiGauge is a global CPU activity status bar. Instead of just showing a CPU usage percentage, it uses several colors on the same bar. The colors are:

You can open the MultiGauge from the main menu. It is a replicant: for instance you may drag a copy to the bottom of the desktop. Only the window is resizable, you cannot resize a replicated MultiGauge (sorry). TManager must be running for the MultiGauge replicant to work.

Things to be known

Finally, before I let you go, there are a few things you should know. First of all, when TManager is minimized, it sleeps. This makes it handy to have a running an instance of TManager all the time: if there is no active MultiGauge replicant it doesn't use any CPU time while minimized, otherwise its CPU usage will be a lot decreased any way.

Also, if you want TManager to be launched on startup, add to your UserBootscript (which should be in "/boot/home/config/boot/UserBootscript") something like this:

/boot/apps/TManager minimized &

The "minimized" command-line option will make TManager start in a minimized state.

You can also set the priority of the main thread by adding a number in the command-line. For instance:

/boot/apps/TManager minimized 5 &


Do you wish to register ?

TManager is shareware. The registered version has no time limit on the MultiGauge and it enables you to replicate the MultiGauge. Moreover in the unregistered version, the CPU gauges are disabled and the settings aren't saved.

The price is US$10. If it's easier for you, you can pay with another currency (I can process anything).

Send a cheque (or cash if you dare) to:

Olivier Wittenberg
16 rue des Grands Maîtres
37400 Amboise
FRANCE


Please send comments, bug reports, and the such to witt@micro-video.fr, assuredly I will reply. As you know, feedback is always appreciated. You can check my page on the web if you are connected to the internet.


What's new ?

Since 2.5.3: 2.5.4 is the first R4 release; few changes in the application.

What is new since TManager 2.5.2:

There is no difference between TManager 2.5.1 and TManager 2.5.2 apart from the settings file format, which has been changed to ensure compatibility with the Intel version. 2.5.2 is the first Intel release (hope you like it :-).

What is new since TManager 2.5.0:


Here is a rough list of what is new since TManager 2.42: New things are still planned though, including further optimization.

Credits

Credits: I'd like to thank all of you who have sent feedback, it's great to know that you do use TManager. Thanks to those who have registered. Thanks again to R'alf for the Intel port.

The author does not take any responsibility concerning this program. Be warned, it is very easy to make BeOS crash with it, although it is unlikely to corrupt files. In any case, I cannot be held responsible for any damage done to your computer by TManager.

(hey, this is not meant to be frightening :-)



TManager user documentation.

Copyright © 1997-1998 Olivier Wittenberg. All rights reserved.